From 47e2a8b16b0ab46b0ad78911fcfa5ed27da51c6f Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 3 Jun 2026 16:31:54 +0200 Subject: [PATCH 01/81] Add BERT configs --- src/sequifier/config/probabilities.py | 81 +++++++++++++++++++++++++++ src/sequifier/config/train_config.py | 66 +++++++++++++++++++++- src/sequifier/make.py | 1 + tests/unit/test_train.py | 1 + 4 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 src/sequifier/config/probabilities.py diff --git a/src/sequifier/config/probabilities.py b/src/sequifier/config/probabilities.py new file mode 100644 index 00000000..2591cc97 --- /dev/null +++ b/src/sequifier/config/probabilities.py @@ -0,0 +1,81 @@ +import math +import random +from abc import ABC, abstractmethod +from typing import Annotated, Literal, Union + +from pydantic import BaseModel, Field + +epsilon = 1e-20 + + +class ProbabilityDistributionBaseClass(ABC): + """ + Abstract base class for all probability distributions. + """ + + @abstractmethod + def sample(self) -> Union[int, float]: + pass + + +class GeometricDistribution(BaseModel, ProbabilityDistributionBaseClass): + type: Literal["GeometricDistribution"] = "GeometricDistribution" + p: float = Field(..., gt=0.0, le=1.0) + + def sample(self) -> int: + if self.p == 1.0: + return 1 + return math.ceil(math.log(random.random() + epsilon) / math.log(1.0 - self.p)) + + +class NormalDistributionDiscretizedFloor(BaseModel, ProbabilityDistributionBaseClass): + type: Literal["NormalDistributionDiscretizedFloor"] = ( + "NormalDistributionDiscretizedFloor" + ) + mean: float + standard_deviation: float = Field(..., gt=0.0) + + def sample(self) -> int: + val = random.gauss(self.mean, self.standard_deviation) + return max(round(val), 0) + 1 + + +class LogNormalDistributionDistcretizedFloor( + BaseModel, ProbabilityDistributionBaseClass +): + type: Literal["LogNormalDistributionDistcretizedFloor"] = ( + "LogNormalDistributionDistcretizedFloor" + ) + mean: float + standard_deviation: float = Field(..., gt=0.0) + + def sample(self) -> int: + val = random.lognormvariate(self.mean, self.standard_deviation) + return round(val) + 1 + + +class PoissonDistributionFloor(BaseModel, ProbabilityDistributionBaseClass): + type: Literal["PoissonDistributionFloor"] = "PoissonDistributionFloor" + rate: float = Field(..., gt=0.0) + + def sample(self) -> int: + L = math.exp(-self.rate) + k = 0 + p = 1.0 + + while p > L: + k += 1 + p *= random.random() + + return k + + +ProbabilityDistribution = Annotated[ + Union[ + GeometricDistribution, + NormalDistributionDiscretizedFloor, + LogNormalDistributionDistcretizedFloor, + PoissonDistributionFloor, + ], + Field(discriminator="type"), +] diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index b37b1f76..eb095ab3 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -1,5 +1,6 @@ import copy import json +import math import os import warnings from typing import Any, Optional, Union @@ -10,9 +11,10 @@ import yaml from beartype import beartype from loguru import logger -from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator import sequifier +from sequifier.config.probabilities import ProbabilityDistribution from sequifier.helpers import normalize_path, try_catch_excess_keys AnyType = str | int | float @@ -310,6 +312,27 @@ def validate_data_parallelism(cls, v): return v +class ReplacementDistribution(BaseModel): + masked: float = Field(..., gt=0.0, le=1.0) + random: float = Field(..., gt=0.0, le=1.0) + identical: float = Field(..., gt=0.0, le=1.0) + + @model_validator(mode="after") + def validate_sum(self): + total = self.masked + self.random + self.identical + if not math.isclose(total, 1.0, abs_tol=1e-5): + raise ValueError( + f"Replacement distribution probabilities must sum to 1.0, got {total}" + ) + return self + + +class BERTSpecModel(BaseModel): + masking_probability: float = Field(..., gt=0.0, le=1.0) + replacement_distribution: ReplacementDistribution + span_masking: ProbabilityDistribution + + class ModelSpecModel(BaseModel): """Pydantic model for model specifications. @@ -324,6 +347,7 @@ class ModelSpecModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") + training_objective: str = "causal" initial_embedding_dim: int feature_embedding_dims: Optional[dict[str, int]] = None joint_embedding_dim: Optional[int] = None @@ -344,6 +368,28 @@ class ModelSpecModel(BaseModel): rope_theta: float = 10000.0 prediction_length: int + bert_spec: Optional[BERTSpecModel] = None + + @field_validator("training_objective") + @classmethod + def validate_training_objective(cls, v): + if v not in ["causal", "bert"]: + raise ValueError(f"Only 'causal' and 'bert' are allowed, found {v}") + return v + + @field_validator("bert_spec") + @classmethod + def validate_bert_spec(cls, v, info): + training_objective = info.data.get("training_objective") + if v and not training_objective == "bert": + raise ValueError( + "The BERT hyperparameters should only be configured if the training objective is 'bert'" + ) + if not v and training_objective == "bert": + raise ValueError( + "If the training_objective is 'bert', the BERT hyperparameters must be set" + ) + return v @field_validator("dim_model") @classmethod @@ -463,6 +509,7 @@ class TrainModel(BaseModel): n_classes: The number of classes for each categorical column. inference_batch_size: The batch size to be used for inference after model export. seed: The random seed for numpy and PyTorch. + model_type: Causal or BERT model type export_generative_model: If True, exports the generative model. export_embedding_model: If True, exports the embedding model. export_onnx: If True, exports the model in ONNX format. @@ -666,4 +713,21 @@ def validate_model_spec(cls, v, info): f"initial_embedding_dim ({embedding_size}) must be a multiple of the number of categorical variables ({n_categorical}: {categorical_columns})." ) + export_generative_model = info.data.get("export_generative_model") + export_embedding_model = info.data.get("export_embedding_model") + if v.training_objective == "bert": + if export_generative_model: + raise ValueError( + "'training_objective: bert' is incompatible with generative model export" + ) + if not export_embedding_model: + raise ValueError( + "'training_objective: bert' requires embedding model export" + ) + if v.training_objective == "causal": + if not export_generative_model and not export_embedding_model: + warnings.warn( + "At least one of 'export_generative_model' and 'export_embedding_model' should be true" + ) + return v diff --git a/src/sequifier/make.py b/src/sequifier/make.py index fdc29a7a..8943d861 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -36,6 +36,7 @@ export_onnx: true model_spec: + training_objective: causal initial_embedding_dim: 128 feature_embedding_dims: # the size of the embedding of individual variables, must sum to dim_model EXAMPLE_INPUT_COLUMN_NAME: # can be left out if either all input variables are real or all are categorical diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 2f8397b7..cf140984 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -14,6 +14,7 @@ def model_config(tmp_path): (tmp_path / "logs").mkdir(exist_ok=True) model_spec = ModelSpecModel( + training_objective="causal", initial_embedding_dim=16, dim_model=16, n_head=4, From 8fd1493b8d0359f90ffafc6b1efd38a963c17d4e Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 3 Jun 2026 18:31:04 +0200 Subject: [PATCH 02/81] Introduce mask token --- src/sequifier/helpers.py | 14 +- src/sequifier/preprocess.py | 8 +- tests/configs/train-test-categorical.yaml | 2 +- .../configs/train-test-resume-mid-epoch.yaml | 2 +- tests/integration/test_inference.py | 13 +- tests/integration/test_preprocessing.py | 4 +- .../source_configs/id_maps/itemId.json | 2 +- ...orical-1-best-embedding-3-0-embeddings.csv | 2 +- ...orical-1-best-embedding-3-1-embeddings.csv | 2 +- ...orical-1-best-embedding-3-2-embeddings.csv | 2 +- ...orical-1-best-embedding-3-3-embeddings.csv | 4 +- ...orical-1-best-embedding-3-4-embeddings.csv | 2 +- ...orical-1-best-embedding-3-5-embeddings.csv | 4 +- ...orical-1-best-embedding-3-6-embeddings.csv | 2 +- ...orical-1-best-embedding-3-7-embeddings.csv | 2 +- ...inf-size-best-embedding-3-0-embeddings.csv | 6 +- ...inf-size-best-embedding-3-1-embeddings.csv | 6 +- ...inf-size-best-embedding-3-2-embeddings.csv | 6 +- ...inf-size-best-embedding-3-3-embeddings.csv | 12 +- ...inf-size-best-embedding-3-4-embeddings.csv | 6 +- ...inf-size-best-embedding-3-5-embeddings.csv | 12 +- ...inf-size-best-embedding-3-6-embeddings.csv | 6 +- ...inf-size-best-embedding-3-7-embeddings.csv | 6 +- ...-1-best-3-autoregression-1-predictions.csv | 2 +- ...-1-best-3-autoregression-2-predictions.csv | 40 +- ...-1-best-3-autoregression-3-predictions.csv | 4 +- ...-1-best-3-autoregression-4-predictions.csv | 38 +- ...-1-best-3-autoregression-5-predictions.csv | 78 ++-- ...-1-best-3-autoregression-6-predictions.csv | 40 +- ...-1-best-3-autoregression-7-predictions.csv | 4 +- ...del-categorical-1-best-3-2-predictions.csv | 2 +- ...del-categorical-1-best-3-3-predictions.csv | 2 +- ...del-categorical-1-best-3-4-predictions.csv | 2 +- ...del-categorical-1-best-3-5-predictions.csv | 4 +- ...del-categorical-1-best-3-6-predictions.csv | 2 +- ...del-categorical-1-best-3-7-predictions.csv | 2 +- ...orical-1-inf-size-best-3-1-predictions.csv | 4 +- ...orical-1-inf-size-best-3-2-predictions.csv | 2 +- ...orical-1-inf-size-best-3-3-predictions.csv | 4 +- ...orical-1-inf-size-best-3-5-predictions.csv | 6 +- ...orical-1-inf-size-best-3-6-predictions.csv | 4 +- ...orical-1-inf-size-best-3-7-predictions.csv | 2 +- ...del-categorical-3-best-3-3-predictions.csv | 2 +- ...orical-3-inf-size-best-3-0-predictions.csv | 6 +- ...orical-3-inf-size-best-3-1-predictions.csv | 6 +- ...orical-3-inf-size-best-3-2-predictions.csv | 4 +- ...orical-3-inf-size-best-3-3-predictions.csv | 8 +- ...orical-3-inf-size-best-3-4-predictions.csv | 4 +- ...orical-3-inf-size-best-3-5-predictions.csv | 10 +- ...orical-3-inf-size-best-3-6-predictions.csv | 4 +- ...orical-3-inf-size-best-3-7-predictions.csv | 4 +- ...el-categorical-50-best-3-0-predictions.csv | 2 +- ...el-categorical-50-best-3-1-predictions.csv | 2 +- ...el-categorical-50-best-3-2-predictions.csv | 2 +- ...el-categorical-50-best-3-3-predictions.csv | 4 +- ...el-categorical-50-best-3-5-predictions.csv | 2 +- ...el-categorical-50-best-3-6-predictions.csv | 2 +- ...rical-distributed-best-3-0-predictions.csv | 2 +- ...rical-distributed-best-3-1-predictions.csv | 2 +- ...rical-distributed-best-3-2-predictions.csv | 2 +- ...rical-distributed-best-3-3-predictions.csv | 4 +- ...rical-distributed-best-3-4-predictions.csv | 2 +- ...rical-distributed-best-3-5-predictions.csv | 4 +- ...rical-distributed-best-3-7-predictions.csv | 2 +- ...-categorical-lazy-best-3-0-predictions.csv | 2 +- ...-categorical-lazy-best-3-2-predictions.csv | 2 +- ...-categorical-lazy-best-3-3-predictions.csv | 4 +- ...-categorical-lazy-best-3-4-predictions.csv | 2 +- ...-categorical-lazy-best-3-5-predictions.csv | 4 +- ...-categorical-lazy-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-best-3-0-predictions.csv | 2 +- ...cal-multitarget-5-best-3-1-predictions.csv | 2 +- ...cal-multitarget-5-best-3-2-predictions.csv | 2 +- ...cal-multitarget-5-best-3-3-predictions.csv | 4 +- ...cal-multitarget-5-best-3-4-predictions.csv | 2 +- ...cal-multitarget-5-best-3-5-predictions.csv | 4 +- ...cal-multitarget-5-best-3-6-predictions.csv | 2 +- ...cal-multitarget-5-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-last-3-0-predictions.csv | 2 +- ...cal-multitarget-5-last-3-1-predictions.csv | 2 +- ...cal-multitarget-5-last-3-2-predictions.csv | 2 +- ...cal-multitarget-5-last-3-3-predictions.csv | 4 +- ...cal-multitarget-5-last-3-4-predictions.csv | 2 +- ...cal-multitarget-5-last-3-5-predictions.csv | 4 +- ...cal-multitarget-5-last-3-6-predictions.csv | 2 +- ...cal-multitarget-5-last-3-7-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 58 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-7-predictions.csv | 58 +-- ...l-categorical-1-best-3-0-probabilities.csv | 4 +- ...l-categorical-1-best-3-1-probabilities.csv | 4 +- ...l-categorical-1-best-3-2-probabilities.csv | 4 +- ...l-categorical-1-best-3-3-probabilities.csv | 6 +- ...l-categorical-1-best-3-4-probabilities.csv | 4 +- ...l-categorical-1-best-3-5-probabilities.csv | 6 +- ...l-categorical-1-best-3-6-probabilities.csv | 4 +- ...l-categorical-1-best-3-7-probabilities.csv | 4 +- ...l-categorical-3-best-3-0-probabilities.csv | 4 +- ...l-categorical-3-best-3-1-probabilities.csv | 4 +- ...l-categorical-3-best-3-2-probabilities.csv | 4 +- ...l-categorical-3-best-3-3-probabilities.csv | 6 +- ...l-categorical-3-best-3-4-probabilities.csv | 4 +- ...l-categorical-3-best-3-5-probabilities.csv | 6 +- ...l-categorical-3-best-3-6-probabilities.csv | 4 +- ...l-categorical-3-best-3-7-probabilities.csv | 4 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 14 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 8 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 8 +- ...l-categorical-5-best-3-0-probabilities.csv | 4 +- ...l-categorical-5-best-3-1-probabilities.csv | 4 +- ...l-categorical-5-best-3-2-probabilities.csv | 4 +- ...l-categorical-5-best-3-3-probabilities.csv | 6 +- ...l-categorical-5-best-3-4-probabilities.csv | 4 +- ...l-categorical-5-best-3-5-probabilities.csv | 6 +- ...l-categorical-5-best-3-6-probabilities.csv | 4 +- ...l-categorical-5-best-3-7-probabilities.csv | 4 +- ...-categorical-50-best-3-0-probabilities.csv | 4 +- ...-categorical-50-best-3-1-probabilities.csv | 4 +- ...-categorical-50-best-3-2-probabilities.csv | 4 +- ...-categorical-50-best-3-3-probabilities.csv | 6 +- ...-categorical-50-best-3-4-probabilities.csv | 4 +- ...-categorical-50-best-3-5-probabilities.csv | 6 +- ...-categorical-50-best-3-6-probabilities.csv | 4 +- ...-categorical-50-best-3-7-probabilities.csv | 4 +- ...l-multitarget-5-best-3-0-probabilities.csv | 4 +- ...l-multitarget-5-best-3-1-probabilities.csv | 4 +- ...l-multitarget-5-best-3-2-probabilities.csv | 4 +- ...l-multitarget-5-best-3-3-probabilities.csv | 6 +- ...l-multitarget-5-best-3-4-probabilities.csv | 4 +- ...l-multitarget-5-best-3-5-probabilities.csv | 6 +- ...l-multitarget-5-best-3-6-probabilities.csv | 4 +- ...l-multitarget-5-best-3-7-probabilities.csv | 4 +- ...l-multitarget-5-best-3-0-probabilities.csv | 4 +- ...l-multitarget-5-best-3-1-probabilities.csv | 4 +- ...l-multitarget-5-best-3-2-probabilities.csv | 4 +- ...l-multitarget-5-best-3-3-probabilities.csv | 6 +- ...l-multitarget-5-best-3-4-probabilities.csv | 4 +- ...l-multitarget-5-best-3-5-probabilities.csv | 6 +- ...l-multitarget-5-best-3-6-probabilities.csv | 4 +- ...l-multitarget-5-best-3-7-probabilities.csv | 4 +- tests/unit/test_helpers.py | 18 +- tests/unit/test_preprocess.py | 6 +- 193 files changed, 1889 insertions(+), 1878 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index f2097548..84e39b0c 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -83,11 +83,13 @@ def construct_index_maps( the original string or integer identifiers. It only performs this operation if `map_to_id` is True and `id_maps` is provided. - A special mapping for index 0 is added: + A special mapping for these indices are added: - If original IDs are strings, 0 maps to "unknown". - If original IDs are strings, 1 maps to "other". - - If original IDs are integers, 0 maps to (minimum original ID) - 2. - - If original IDs are integers, 1 maps to (minimum original ID) - 1. + - If original IDs are strings, 2 maps to "unknown". + - If original IDs are integers, 0 maps to (minimum original ID) - 3. + - If original IDs are integers, 1 maps to (minimum original ID) - 2. + - If original IDs are integers, 2 maps to (minimum original ID) - 1. Args: id_maps: A nested dictionary mapping column names to their @@ -120,12 +122,14 @@ def construct_index_maps( if isinstance(val, str): map_[0] = "unknown" map_[1] = "other" + map_[2] = "mask" else: if not isinstance(val, int): raise TypeError(f"Expected integer ID in map, got {type(val)}") min_id = int(min(map_.values())) - map_[0] = min_id - 2 # type: ignore - map_[1] = min_id - 1 + map_[0] = min_id - 3 # type: ignore + map_[1] = min_id - 2 # type: ignore + map_[2] = min_id - 1 # type: ignore index_map[target_column] = map_ return index_map diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index f25dc721..dacb92f6 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -973,9 +973,9 @@ def load_precomputed_id_maps( if not len(m) > 0: raise ValueError(f"map in {file} does not contain any values") min_val = min(m.values()) - if min_val != 2: + if min_val != 3: raise ValueError( - f"minimum value in map {file} is {min_val}, must be 2." + f"minimum value in map {file} is {min_val}, must be 3." ) custom_maps[col_name] = m if required_maps: @@ -1461,7 +1461,7 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] ids = sorted( [int(x) if not isinstance(x, str) else x for x in np.unique(data[column])] ) # type: ignore - id_map = {id_: i + 2 for i, id_ in enumerate(ids)} + id_map = {id_: i + 3 for i, id_ in enumerate(ids)} return dict(id_map) @@ -1529,7 +1529,7 @@ def combine_maps( A new, combined, and re-indexed ID map. """ combined_keys = sorted(list(set(list(map1.keys())).union(list(set(map2.keys()))))) - id_map = {id_: i + 2 for i, id_ in enumerate(combined_keys)} + id_map = {id_: i + 3 for i, id_ in enumerate(combined_keys)} return id_map diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml index 2da9eace..468aab70 100644 --- a/tests/configs/train-test-categorical.yaml +++ b/tests/configs/train-test-categorical.yaml @@ -47,7 +47,7 @@ training_spec: loss_weights: itemId: 1.0 class_weights: - itemId: [1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] + itemId: [1.0, 1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] optimizer: name: QHAdam scheduler: diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml index 17ec8f9e..b0449d91 100644 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ b/tests/configs/train-test-resume-mid-epoch.yaml @@ -48,7 +48,7 @@ training_spec: itemId: 1.0 supCat1: 1.0 class_weights: - itemId: [1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] + itemId: [1.0, 1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] optimizer: name: QHAdam scheduler: diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 10f885c7..540c8e1f 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -26,7 +26,7 @@ def test_predictions_real(predictions): def test_predictions_cat(predictions): - valid_values = [str(x) for x in np.arange(100, 130)] + ["unknown"] + valid_values = [str(x) for x in np.arange(100, 130)] + ["unknown", "other", "mask"] for model_name, model_predictions in predictions.items(): if "categorical" in model_name or "multitarget" in model_name: assert np.all( @@ -42,6 +42,7 @@ def test_predictions_cat(predictions): admssible_vals = [str(x) for x in np.arange(0, 10)] + [ "unknown", "other", + "mask", ] assert np.all( [ @@ -81,9 +82,9 @@ def test_predictions_cat(predictions): def test_probabilities(probabilities): for model_name, model_probabilities in probabilities.items(): if "itemId" in model_name: - assert model_probabilities.shape[1] == 32 + assert model_probabilities.shape[1] == 33 elif "supCat1" in model_name: - assert model_probabilities.shape[1] == 12 + assert model_probabilities.shape[1] == 13 np.testing.assert_almost_equal( model_probabilities.sum_horizontal(), @@ -101,7 +102,11 @@ def test_multi_pred(predictions): assert preds.shape[0] > 0, f"{model_name} has no predictions" assert preds.shape[1] == 5, f"{model_name} should have 5 columns" - admssible_vals = [str(x) for x in np.arange(0, 10)] + ["unknown", "other"] + admssible_vals = [str(x) for x in np.arange(0, 10)] + [ + "unknown", + "other", + "mask", + ] assert np.all( [v in admssible_vals for v in preds["supCat1"]] diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 209ad49c..79e13b1f 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -45,7 +45,7 @@ def test_metadata_config(metadata_configs): if "itemId" in metadata_config["n_classes"]: assert len(metadata_config["id_maps"]["itemId"]) == 30 - assert metadata_config["n_classes"]["itemId"] == 32 + assert metadata_config["n_classes"]["itemId"] == 33 id_map_keys = np.array( sorted(list(metadata_config["id_maps"]["itemId"].keys())) @@ -59,7 +59,7 @@ def test_metadata_config(metadata_configs): ) # assert False, id_map_values assert np.all( - id_map_values == np.arange(2, len(id_map_values) + 2) + id_map_values == np.arange(3, len(id_map_values) + 3) ), id_map_values if "itemValue" in metadata_config["selected_columns_statistics"]: diff --git a/tests/resources/source_configs/id_maps/itemId.json b/tests/resources/source_configs/id_maps/itemId.json index 20ff05d6..77d5f018 100644 --- a/tests/resources/source_configs/id_maps/itemId.json +++ b/tests/resources/source_configs/id_maps/itemId.json @@ -1 +1 @@ -{"100": 2, "101": 3, "102": 4, "103": 5, "104": 6, "105": 7, "106": 8, "107": 9, "108": 10, "109": 11, "110": 12, "111": 13, "112": 14, "113": 15, "114": 16, "115": 17, "116": 18, "117": 19, "118": 20, "119": 21, "120": 22, "121": 23, "122": 24, "123": 25, "124": 26, "125": 27, "126": 28, "127": 29, "128": 30, "129": 31} +{"100": 3, "101": 4, "102": 5, "103": 6, "104": 7, "105": 8, "106": 9, "107": 10, "108": 11, "109": 12, "110": 13, "111": 14, "112": 15, "113": 16, "114": 17, "115": 18, "116": 19, "117": 20, "118": 21, "119": 22, "120": 23, "121": 24, "122": 25, "123": 26, "124": 27, "125": 28, "126": 29, "127": 30, "128": 31, "129": 32} diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv index 76bd77d7..d63e16f0 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,7,0.8649381,0.24562168,-0.47390407,0.26047117,-0.24761012,1.3031981,0.95492613,-0.36946228,-0.91278917,-0.7628124,1.0646838,-0.84439635,0.16634521,-0.007354275,-1.7519352,-0.033109475,-0.45459607,0.115075,1.1531727,0.9546873,1.2859629,-1.0329498,1.2402246,2.6194525,-0.55354816,-0.63395625,-2.1362736,0.8346781,-1.0040193,-1.0341624,-0.8379355,0.057529,1.3040087,0.12587658,0.8301326,-0.5306769,-1.623395,0.36828652,1.856288,0.320922,-1.8282198,-1.3440526,-0.9354176,0.24922973,1.2998884,-1.236273,-0.055613205,-0.8205791,-0.4832966,1.8687013,-1.4167951,-1.1055189,1.6474618,0.9178678,-0.94887453,1.1648152,0.03853327,-0.36139467,-0.66810036,-1.3988649,-0.1772363,-0.077192,-0.42204562,1.8334289,1.367824,-0.21193206,-0.16146825,-1.3633878,1.9045291,0.64752847,-0.5658707,-1.9270079,-0.7966031,-0.4969335,-1.1129528,-0.3014826,-1.2423565,0.99004376,-0.5590482,0.210285,1.45484,0.78570837,0.4753621,-2.9085505,-0.41873848,-0.30167663,-0.785309,-0.31538683,-0.9972849,0.013730815,-0.4415555,0.761963,-1.4535736,1.3455216,0.027025485,1.8463998,1.8265476,0.24507502,0.7862814,-0.902054,0.41721246,0.29755303,0.40205243,2.0839143,0.08692597,-0.7652936,-1.7749745,0.7529008,-2.0421607,-0.78219783,-0.539601,-0.8647213,0.6763834,0.54173374,1.1983194,0.9964866,0.35037822,1.9535118,-0.9696219,1.1370679,1.1510953,0.2664108,-0.06128295,-0.7830806,-0.050288465,1.0513953,0.33808768,-0.23930782,-0.6178605,0.55309016,-1.3475106,-1.2853458,-0.20373966,-2.6442385,1.2245853,0.4053069,-0.67187744,0.47685108,1.4946405,-0.057367213,0.5233804,-0.41413814,-0.38341537,1.4250722,1.7166282,-0.8751589,-0.07256896,-1.6518211,-0.09111433,0.9957127,0.033603884,0.6290189,-0.51680666,-0.6019538,-1.1488315,0.6561611,-0.9112413,0.5100694,-0.010201941,-0.41575626,-0.99573976,0.51400137,-0.13324496,0.6003735,0.90858644,-1.756543,-0.56579715,-1.2166046,-0.4743553,0.6017386,0.7139283,0.6312486,-0.22448407,0.010416127,1.5952412,-0.31673738,-0.08042968,-1.1402948,-0.39998963,-0.92721313,-1.572918,-0.34202433,1.4257507,-0.44051456,1.3233937,0.4287483,-1.2166924,-0.44838187,0.6182652,-0.20860778,0.8979676,-0.8103249,1.3890587,-1.2660643,0.34599945,0.12778881,1.0039934,0.5634353,0.49836227,-0.8949199 +0,0,7,0.41149214,-0.7849847,-0.28549865,0.4135578,-1.5136797,0.28504756,-0.2592171,0.3586638,0.0096122995,0.68446684,0.27280936,1.1332684,-0.9290369,1.6734341,0.96415323,1.5616682,0.6196785,-0.47138083,-1.7291825,0.6455711,-0.30171967,0.43178305,0.0013747738,-0.076876126,-0.26705164,0.09099751,-1.0307256,0.8569853,0.077619076,0.80527884,-0.3927059,-0.48262763,0.77014446,-1.2891862,-0.6874516,-0.18790592,1.2064557,-0.4788146,1.7160684,-0.37874106,-1.8563964,0.94303226,0.9052338,-0.8621848,-0.46681213,-2.1950614,-0.69286275,0.12579149,0.017325861,-1.8529755,-1.4810988,-1.7104719,-0.908732,1.3428756,1.6590891,1.4576144,-2.0680587,2.074148,0.1254711,-1.3453596,-0.150765,-0.31348786,-0.03713879,0.7493652,-0.09301235,-0.70159227,0.36488333,-1.3442415,-0.74384296,-1.0073787,0.5603107,1.5509155,-1.1920458,0.18350546,-0.26176476,-0.46722165,-0.17439422,0.7131231,0.48848873,-0.995511,0.1133322,-1.4447079,-0.022810481,-0.91964275,0.9241803,-0.87918293,0.80785894,-0.8586497,0.55474204,-0.09638581,-0.28760654,0.24903235,0.24263471,-1.3331411,2.1252306,-1.6045873,0.092501745,1.4959875,-0.7847978,-0.07687911,-1.3790759,-1.2054987,-0.4129643,1.175199,1.6125137,-0.15670183,-0.0052074674,-2.0629342,0.41843984,1.343122,1.3168796,0.4892252,0.8831178,-0.56325597,-0.40071782,-0.2586007,0.8234577,0.3491471,-2.5417411,1.2765507,1.3083528,0.13020971,0.56978697,-1.4101067,-0.31448993,-0.09979597,0.82165474,0.16443604,1.0280895,-0.22518575,-0.7565461,0.22468717,-1.430905,0.5723812,1.408025,-0.66557765,-1.2709581,-0.47722962,-1.0509661,2.1456828,0.35895014,-0.3888584,-2.3072958,0.28834087,0.9454994,1.2007508,0.13654324,-1.0512546,1.1556263,0.28248435,1.1180621,-2.4063637,-0.049587123,-0.4283151,0.34162042,1.1140897,0.74316895,-0.07375317,1.7339555,0.06241791,-0.14042361,-2.4541376,0.76050717,1.1560489,-0.81901497,-1.2859453,-0.049847722,1.0361446,-1.1722547,1.2732593,0.5962597,-0.30993164,-0.031384904,0.20975727,-0.23721394,0.710139,-1.6749394,-0.05069577,1.013451,-0.03550218,0.873963,-1.3086079,-0.043819394,-0.0068593933,0.054935377,2.020619,0.013108201,-1.2887985,-0.85200655,0.054864895,-0.44489822,-1.6583155,-0.63917583,1.483576,-0.23919883,1.4165703,-0.97365326,-1.2111417,0.5758731,0.2508152 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv index db25681f..3e39464b 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,7,0.8438418,0.1794473,-1.0610754,0.49876413,-0.18509679,1.2684177,0.7748202,0.42714408,-0.32632595,0.30871361,1.0232624,-0.531747,0.6962955,0.31235534,-0.97006154,0.4374414,-0.6124084,0.8816563,0.69690573,1.8744665,0.8528751,-1.2626123,1.3722603,2.5256085,-0.5358826,-1.2145865,-1.0444467,1.2561449,-0.30111277,-1.5428085,-0.7596274,0.93373644,1.1946712,0.8260702,0.21434239,0.16956076,-1.6884155,0.5569528,1.8079216,0.4667857,-2.5842013,-1.2288795,-0.69257486,-0.3466202,1.6240005,-0.17097999,-0.021782674,-0.7709626,0.14133824,1.3214102,-1.152685,-1.4690636,1.647548,0.30679667,-1.4932691,1.687439,0.48392302,-1.2188569,-0.082943715,-1.1727151,-0.24080916,-0.48152798,-0.54473346,1.1660991,1.0062953,-0.45552832,-0.66909534,-1.3224851,1.9710338,0.89391387,-0.83821976,-1.2250444,-0.9232601,-0.89614505,-0.1337835,-0.1138566,-0.741236,1.4156529,-0.5768202,-0.19710043,1.0930521,0.9971356,0.41112706,-2.1113818,-0.41081738,-1.1549268,-0.37958524,0.0063747503,-1.3508683,0.07076833,-0.3163995,0.5410095,-0.72964126,0.90011233,-0.29304907,1.7490932,1.6180183,-0.04848024,1.211592,-0.6006584,0.61566734,0.31913698,0.67258716,2.4460082,0.35291326,-1.0352191,-1.1832807,0.51288897,-2.5279958,-1.15038,-0.41004008,-0.3320385,0.3593691,-0.031581197,1.248297,0.87027967,0.4268465,1.9122381,-1.6881752,1.4497418,0.5821907,0.3530083,0.07751833,-0.87054706,-0.10214504,0.92046994,1.1150131,-0.62742823,-0.60133314,0.70472723,-1.2772338,-0.63218576,-0.8797032,-2.7727962,1.1135479,1.0888294,-1.2965524,0.4657736,1.8480299,-0.12805218,0.7858551,0.11978366,-0.9293707,1.4585854,1.1101878,-0.82679045,-0.4033856,-1.705105,-0.119805895,0.92903,-0.5818992,0.87437165,0.041271035,0.010319752,-1.7818887,0.45985395,-0.9583002,1.2992034,-0.17113139,-0.28721648,-1.5636964,-0.015204845,0.24306999,0.60780245,0.8181639,-1.1685832,0.26470146,-0.7132485,-0.5549229,0.40392053,0.9555501,0.25418147,-0.77363104,0.24352336,1.8109292,0.20031126,0.13125075,-1.3413204,0.03766993,-1.3070565,-1.0881963,-0.6965358,1.3141092,-0.7294182,0.76772827,0.016266245,-1.7116737,-1.1352007,0.61998254,-0.58296555,0.80039984,-0.14008771,0.9584638,-0.6666944,0.15143473,-0.16964145,1.2095227,0.10272378,0.3348041,-0.2182458 +1,0,7,0.42257375,-0.17903732,-0.20059693,0.29945794,-1.3389122,0.03707557,-0.299859,0.40720436,0.15333666,0.64613265,-0.47270918,0.8683621,-1.0405228,1.8252618,1.1951929,0.98608077,0.6486402,-0.27345127,-1.749177,0.3916777,-0.06327997,0.5837565,-0.029801903,-0.4157889,-0.8207295,0.56711143,-0.9630651,0.7541865,0.040734746,0.6285889,-0.0074708797,-0.26125398,0.5846216,-1.6676134,-0.6075296,0.39818704,1.1361198,-0.14915793,1.784923,-0.2994867,-1.1560175,1.0586625,0.8207005,-1.4820725,-0.59732884,-2.1600444,-1.0302081,-0.14026557,-0.16139339,-1.6454352,-2.011675,-1.9869673,-0.7221869,1.3151264,1.5895944,1.3244375,-1.8021666,1.6869603,0.08559678,-1.2588723,-0.07605097,0.048324257,-0.35193312,0.9454642,0.104382835,-0.9171362,0.35889798,-0.6452473,-0.6342578,-1.0011637,0.2077998,1.4437941,-0.9567251,0.14908887,-0.24294905,-0.687203,0.05336324,1.0594568,-0.07940463,-1.1028723,-0.08218197,-1.3812248,0.22032668,-0.9392466,1.3229952,-1.090876,1.0943706,-0.5451269,0.12716077,0.06487062,0.0940708,0.37863347,-0.3223036,-1.1197766,1.7777491,-1.5668588,0.25907642,1.4157779,-0.7196445,-0.38355565,-1.5430949,-1.3738754,-0.7312654,1.3590227,1.652726,-0.31939238,-0.023165464,-2.2086487,-0.1569172,1.3741649,0.9475051,0.48269206,0.6875285,-0.534931,-0.24520622,0.24692726,1.1467029,-0.025945317,-2.077082,1.548747,1.3998401,-0.09173701,0.60546964,-1.7211899,-0.32520935,-0.6385531,0.58607954,0.63349676,1.2241516,-0.115974545,-1.2130051,0.3455885,-1.230523,0.3379228,1.3327022,-0.7980125,-1.4078081,-0.5755934,-1.0106425,1.8490473,0.6007134,-0.49850124,-2.4873343,0.3709469,1.0519376,1.3123273,-0.014704171,-1.0918032,0.4931872,0.14534308,1.087156,-2.4626598,0.4272686,-0.5852703,0.11401402,1.3979368,0.96870464,0.11613599,2.0814247,0.08643781,-0.25604638,-2.6740973,0.7021289,1.4160581,-0.9518831,-0.9351058,0.3818723,0.64308923,-1.4009758,0.878512,0.3460209,-0.6776031,0.16450398,-0.31286997,-0.18456456,0.3714644,-1.7571229,0.3403873,1.3923695,-0.17252812,0.6139845,-1.0345956,-0.1693556,-0.044252478,-0.30749786,1.657718,0.78084534,-1.4596986,-1.1058352,0.1094069,-0.053861905,-1.9468046,-0.2616004,1.6512417,-0.49316752,0.82700384,-0.6377279,-0.76203316,0.432102,0.4528831 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv index 5284467d..891aca89 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,7,0.52204627,-0.038092855,-0.82732695,0.52709055,0.06611072,1.0820338,0.6271256,-0.7258145,-1.0272309,0.21715637,1.1717758,-0.38762644,0.54010385,-0.33218145,-1.6269217,0.23357184,-0.8224511,0.7772591,1.2175651,1.905813,1.5552422,-0.47752312,1.6528003,2.6848164,-0.7099252,-0.78975856,-0.9663611,0.39896625,-0.5068774,-0.76180744,-0.22029436,0.49096388,1.3501009,0.4508182,0.6573443,-0.2667651,-1.7489359,0.6311765,2.0538185,-0.38108113,-2.1136858,-1.5755099,-1.4845366,-0.056731053,1.4559208,-0.87732655,0.11649373,-0.31365696,-0.968069,1.8460219,-1.2417718,-0.44821975,1.495183,0.39649376,-1.0719526,1.417287,1.2832841,-0.7492332,-0.40597665,-1.1388721,0.5925744,-0.65348125,-0.08980144,1.4410766,1.9072348,-0.4337984,0.2681212,-0.8927501,1.7772413,0.36656567,-0.4058805,-1.738713,-1.3288599,-0.72347444,-0.014828365,-0.124502756,-0.84998757,0.30157983,0.49887928,-0.1615823,0.41461873,0.18497966,0.69440186,-2.075491,-0.8384113,-1.0419928,-0.9347767,-0.67896277,-0.69964796,-0.4201842,-0.70845145,0.9878649,-1.3933247,1.8833025,0.6312973,1.695937,1.71965,0.10518575,0.3091634,-1.6875365,0.79602194,-0.057294976,0.88798237,2.0516448,0.08196111,-0.44834742,-2.015611,0.43115285,-1.5257589,-1.0001528,-0.7601532,-0.86637354,0.5525021,0.10951839,1.535792,1.4130329,0.1467389,1.818903,-1.1924548,0.6846707,0.49561536,0.82903117,-0.45645127,-0.9932831,-0.903748,0.8548094,1.3870052,-0.24820147,-0.2833696,0.53783894,-0.29969555,-0.42618462,-0.42249247,-2.6975384,0.9544928,0.89196867,-0.7268504,-0.3831172,0.40872112,-0.5766559,0.8267256,0.44900906,-0.20187785,1.2164347,1.406283,-1.4030226,0.24202895,-1.3471564,0.38567412,-0.14396489,-0.02556357,0.8743769,-0.22310354,-0.13754714,-1.4840792,0.9863184,-0.67454904,0.81428856,0.57713085,-0.9858999,-0.8832908,0.30878907,-0.0063148057,0.31424287,1.0139408,-1.8677388,-0.78900766,-1.0641052,-0.9655488,0.4306992,1.3903565,0.5520786,-0.39177105,-0.4996559,1.8079237,-0.34591374,-0.5728688,-1.5090452,-0.07140037,0.038317777,-1.3744234,-0.78208166,0.9468176,-1.0600139,1.9171584,-0.02225734,-1.8697608,-0.7089237,1.139994,-0.06938327,0.06805763,-0.57662845,0.54992193,-0.04600769,-0.17940713,-0.19065502,1.2973483,0.87212723,-0.09027165,0.08437479 +2,0,7,0.34137836,-0.54560816,-0.34839255,0.5934387,-1.4561145,-0.3552921,1.236413,0.2230994,0.52624667,0.35157225,1.0009108,1.453514,-0.99844396,0.52108085,0.99309534,0.9884845,-0.49107695,-0.44872406,-2.3321922,1.2099328,0.02559154,-0.15125763,-0.25792414,1.148591,0.34748212,-0.7123179,-0.9918085,0.72194755,-0.57125664,-0.5386358,-1.4469051,-1.0329736,0.2649161,-1.8303887,-0.22947203,-0.22510229,0.4087416,-0.6991921,0.27918908,0.2699201,-2.0308623,0.73651797,1.1014013,0.28801918,-0.043545906,-1.3224466,-0.728169,1.3165932,-0.38451204,-1.2290868,-0.3865898,-0.82043016,-0.15159693,0.95450556,0.720509,0.58943474,-0.96818477,2.4339142,-0.045729626,-2.2731185,-0.69900125,-0.72985935,-1.0451107,0.16168666,1.275655,0.0921365,-1.3980165,-1.8175794,-1.2656915,-1.2789646,0.65161574,2.2280807,-1.0717951,0.7397777,-0.35529038,0.13295835,-1.1914927,0.17240041,1.2711916,-1.2801683,-0.7685431,-0.809741,-0.24176663,-0.520219,1.2797531,-1.700323,0.7044165,-0.28107253,-0.3459173,-0.61043745,0.52076197,0.051599972,-0.45293874,-0.06818946,0.8897772,0.097269796,0.41846913,1.6724628,-0.749013,0.34057495,-0.7477783,-0.06767678,-1.2013714,0.9092441,1.5504543,0.3554491,1.1866004,-1.1053133,0.1902895,1.1757743,1.115244,0.25665316,0.61796343,-0.47255665,-1.0932264,-1.2121068,0.3602891,1.3848262,-2.0418153,-0.25206277,0.64594483,0.06378719,0.63946444,-1.0031189,0.08267042,0.7659137,0.8319407,-0.17579815,0.7439447,-1.1327,-0.6398448,0.55752283,-1.4105185,0.6037283,0.882441,0.2301522,0.016749382,-0.097922415,-1.7987541,-0.056111883,0.7459678,-0.4149461,-1.682275,0.67691326,-0.4379247,0.76354676,1.4371464,-0.36294943,2.097733,0.2694331,1.5530957,-1.4040655,-0.9152303,-0.5327291,0.41197965,1.040547,-1.1637155,-0.59128654,1.9143434,0.75515777,-0.5771012,-1.1852001,-0.2920808,0.5541353,-1.050848,-0.79349184,0.107663386,0.108831875,0.8791816,2.1749172,-0.9475491,-0.28542468,-0.5886931,0.441553,-0.010180896,0.54911983,-0.48679575,0.46939653,0.29680255,-0.33886543,1.8130943,-1.2549541,-1.0724515,0.56288785,-0.12585218,2.9909089,-1.5593657,-0.92594236,-0.9341071,-0.14739718,-1.5810376,-0.5024728,-1.707612,2.2963934,1.5836017,2.0804906,-0.6040425,0.7326207,0.4728579,-0.083124615 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv index b176d111..d8417f89 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,7,0.5811147,-0.032513455,-0.47977856,0.13629222,-0.26297802,1.0946103,0.70547986,0.2546013,-0.5609061,-1.0476835,0.25876504,-0.47654045,0.6124765,-0.62587225,-2.3766463,-0.87987435,-1.1483063,-0.08349529,0.058731697,2.3143327,1.4411461,-0.7700864,1.6809956,2.562706,-1.1312455,-1.919516,-2.5979652,0.97807324,-0.58193874,-0.4056123,0.100295246,0.10704158,0.4826064,-0.3876764,1.1518319,0.3071064,-1.0756433,1.348694,1.2538676,0.8821212,-3.0179098,-1.1350209,-0.6724623,-0.84317905,2.1001053,-0.8851265,-0.45266476,-0.15717253,0.020399736,0.5467559,-1.436141,-1.0484979,1.1574883,0.36959058,-1.3153619,1.9301816,0.9880461,-0.8081846,0.796931,-0.7006053,-0.043729685,0.29161018,-0.17788444,2.3002772,1.6774901,-0.9066579,-0.12004822,-0.7499011,0.9292784,0.55876046,-1.5865698,-1.2220012,-1.0178283,-0.6064322,-0.17501302,-0.52628666,0.8076905,1.1616044,-0.3377207,-0.054776378,-0.07740326,1.052842,-0.1103256,-1.4683763,-0.9702077,-0.23154487,0.37362558,-1.6633947,-1.0713861,-0.2937544,-0.40128285,1.0818906,-1.1223569,1.1332817,-0.7912049,0.80717605,1.2827631,-0.46637723,0.97363174,-0.8316934,1.044962,0.06701209,0.36239144,1.3466328,0.17860873,-0.8557746,-1.2067758,-0.083446786,-2.647533,-1.4590422,0.3115786,-1.1877053,0.34800985,0.0067028324,1.0329384,0.6848961,0.7815907,0.70181257,-0.31994092,1.1682042,1.5868865,-0.1021363,0.20299423,-0.18094988,0.058076646,0.35854048,1.38783,0.17383336,-0.66786546,0.53052557,-0.8849052,-0.264605,-0.46346378,-2.4525568,0.87664086,1.8091627,-0.887404,-0.5623806,1.4447385,-0.614229,1.0334789,0.23856685,-0.57881784,0.8717396,1.1144764,-0.84959036,-0.7336873,-0.6120007,0.49778894,0.20692903,-0.1316462,0.57095027,0.07802366,-0.045190286,-1.3658072,0.44326764,-0.95905554,0.6394518,-0.5813267,-1.3264008,-0.718985,0.1745243,0.75313646,-0.32120827,1.118506,-0.969537,-0.62831134,-1.4774725,-0.9432864,1.0576622,1.6772305,-0.6164494,-0.5101229,-0.8483868,2.2736018,0.5569865,0.12856804,-1.1824113,0.72462106,-1.1923324,-0.3833196,-0.8572979,1.0559568,-1.1587551,0.47620925,0.71898955,-1.4884728,-1.4193738,1.1060739,0.34149924,-0.081969894,0.7028209,0.4915076,-0.47154474,1.1152692,0.46461847,0.74368006,-0.28396526,0.040208068,0.38362354 -4,0,7,-0.40144852,0.4484332,-1.9290444,0.67508656,-0.35645357,0.58294165,1.0673926,0.32582113,-1.0179955,-0.5669628,1.6901405,-0.597517,0.57684857,0.6212512,-1.3812616,-0.0031751008,-1.4166527,0.31889653,0.8719765,0.92417514,1.434082,-0.9677904,1.0067217,2.4912894,-0.5054417,-0.091208264,-1.6230117,0.6646005,0.14070033,-0.4588424,-2.0376508,0.20500316,0.6994927,0.4712299,-0.017884562,-0.041826397,-1.9103551,-0.8554847,0.9786731,0.5541552,-2.017602,-0.60309106,-0.12291661,-0.078420684,1.9937975,-1.4203902,-0.6049179,-0.4561434,-1.3776398,0.7715638,-1.5148757,-1.4664235,1.4948455,0.59697,-1.5645903,1.4915609,-0.16028762,-0.21107581,-0.6521816,-1.9952201,-0.12593468,-0.0323758,-0.73676616,1.6785882,0.386853,0.30982378,-0.23634642,-0.7451515,1.9966604,0.29396093,-0.4427039,-1.1439474,-1.4322784,-0.86600333,-0.47581324,-0.32586938,-0.4229079,1.7753755,-0.29973793,-0.80312866,0.83222604,0.6190816,0.8152262,-2.184811,-0.36325434,-0.44522017,-0.8133582,0.14973828,-0.54611415,-0.26411292,-1.6611116,0.8977264,-1.8963674,0.6349306,-0.06896561,0.85603106,1.2678437,0.65789634,1.2733372,-1.8506087,0.80270076,0.7760959,0.14549729,1.809624,-0.35460156,-1.1367061,-1.11971,0.44256684,-1.9340838,-1.3446312,-0.52430373,-0.6890866,0.25105867,-0.16935606,1.5000091,1.6533798,0.40652713,1.940414,-0.7145079,0.7842815,0.7231326,0.6299073,0.20868257,-0.022947172,0.0590606,0.015217416,-0.14524586,0.5871516,-0.20919175,0.8956564,-1.2955273,-0.28790218,0.23210756,-2.3776908,1.9674141,0.8105194,-0.7433918,-0.15029533,1.3930359,0.55439985,1.0334952,-0.16596296,-0.87932885,1.2013986,1.6930834,-1.1102449,-0.4110713,-0.88066155,0.48112375,1.262018,0.5744189,-0.23829386,-0.17633875,0.25621903,-1.2790095,0.26927826,-0.4251639,1.4009678,-0.68966246,-0.57853395,-1.9202563,0.73328453,-0.1512125,0.99056023,0.7747929,-1.3844789,-0.92885804,-1.2573935,-0.69143796,0.6731172,0.8143503,0.11032579,-0.865953,0.15180536,0.2987957,-0.6535276,0.73512334,-1.3143648,0.45279935,-0.48555213,-0.52440286,-1.1472527,1.0770756,0.40460247,0.71095395,0.8498973,-1.0886842,-0.76816595,2.1436665,-1.6361245,1.3135405,-0.39040008,0.43102646,-1.0228053,0.79288054,-0.43767598,-0.025315946,0.5831925,-0.122284114,-0.5308977 +3,0,7,0.13949223,-0.8288385,-0.011691158,0.6978597,-1.7423092,-0.41049773,0.4738875,0.43795598,-0.13211526,0.83174855,0.18503393,0.8696095,-0.98063534,1.320197,1.2542927,0.804681,0.4159498,-0.5308098,-2.063883,0.7713375,-0.040647052,0.50756997,-0.47521272,-0.050390225,-0.41869515,0.15082894,-0.91570437,1.1039559,-0.119457014,0.630291,-0.78385514,-0.26605347,0.30441046,-1.7381796,-0.3145166,-0.09518902,0.98777574,-0.5672071,1.5451479,-0.5920584,-1.8862137,0.73404765,0.76614827,-1.2776103,-0.5546785,-1.6537995,-1.1388252,0.5387951,-0.04569923,-1.8089854,-1.3872888,-2.010136,-0.32747167,1.414386,1.5741073,1.1150281,-1.6234998,2.3318863,0.09676073,-1.2265372,-0.32222414,0.23237921,-0.34041348,0.7922307,0.6937952,-0.47161567,0.18344484,-1.5619589,-1.089482,-1.4129832,0.28963518,1.6352048,-1.1390606,0.18842995,-0.38225302,-0.65850925,-0.33246985,0.6151895,0.6373732,-1.5749953,-0.327212,-1.2576468,0.2955655,-0.5931339,1.2506938,-1.0565152,0.96414435,-0.8558795,0.34775218,-0.5049455,0.26373684,-0.20436549,-0.080223046,-0.94886553,1.4435066,-0.92269295,0.47257257,1.7526731,-0.9398457,-0.03447294,-1.2984382,-1.0528736,-1.0664232,0.9039165,1.928867,-0.4283627,0.48781595,-1.5944821,0.19360305,1.8330988,1.3015158,-0.05350088,0.53769165,-0.29242146,-0.8438974,-0.069205664,0.82746214,0.84352636,-1.9790401,0.94773203,1.0971557,0.038646087,0.88122386,-1.4750324,-0.11020492,-0.09284775,0.32929987,-0.14679804,1.1929734,-0.6901023,-0.6029133,0.21264303,-1.3289111,0.8272518,1.2592579,-0.38540855,-1.034611,-0.0327922,-1.550678,1.1788012,0.53695285,-0.36779112,-1.9978998,0.6491437,0.62098545,1.3861,0.43899333,-1.0762482,1.1092504,0.23858577,1.405184,-2.151006,-0.51262474,-0.6709533,0.47459316,1.2390981,0.41524518,0.045998752,2.0420544,0.5617183,-0.0899196,-2.7423296,-0.106221266,1.0869207,-0.7299839,-1.148185,0.08723943,0.6347005,-0.4051242,1.4006757,0.099802785,-0.47955215,-0.47176704,0.27028126,-0.8404873,0.59273887,-1.5649644,0.14975634,0.9384124,-0.36595413,1.3495317,-1.2204468,-0.33850634,0.27997792,-0.07943602,2.6751914,-0.09228743,-1.481454,-0.97814053,0.20486094,-0.731338,-1.5517998,-0.83328533,2.0616615,-0.18377517,1.3525189,-0.7911948,-1.0217361,0.5704211,0.053546384 +4,0,7,1.1079531,0.56694883,-0.51460046,-0.44087544,-0.43843356,0.25955358,0.13465126,-0.19686213,-0.0069119474,1.2750784,-0.36285907,0.29798138,0.2409469,1.3927422,0.2650472,0.2537195,-0.099152684,1.1273077,-1.4502947,-0.10494784,-1.1681588,1.3679986,0.028042292,-0.14520136,-0.9369158,1.5287392,-0.46746886,1.6174921,0.15947264,1.0661743,0.06785149,0.16602738,0.6872166,-0.90826625,-1.1785315,0.49854565,-0.70833915,-0.57204914,2.0476813,-1.371946,-1.3191279,0.64045453,1.1497461,-1.2700158,-0.91564953,-3.0730312,-0.0084550865,1.1021385,-0.20811193,-0.9027882,-1.3729584,-2.1781166,-0.82236534,0.14685307,0.39046445,-0.108870916,-0.63499683,1.680812,1.4627557,0.48326835,-0.4139974,0.048960343,0.16166344,1.8954678,-0.5226412,0.20060515,-0.04435112,-0.754301,-0.71545064,-1.4038323,0.069040895,1.1398026,-1.154028,-0.43103975,0.54638636,-0.74899,-0.14519033,0.9119781,0.7352537,-0.1921951,-0.4378232,-1.6286504,1.354772,-1.0531448,1.8048595,-1.1451042,0.80384815,0.22715564,-0.24490066,0.5841813,-1.1601851,0.73505855,-0.39013195,-0.18186606,1.2028245,-1.022498,1.2703432,2.3782692,-0.9626023,0.44522825,-1.4234884,-1.6156629,-0.5665078,0.95502675,1.4593245,0.47318575,-0.8122251,-1.0151421,-0.82546866,0.6082922,1.1691772,-0.5170128,0.067346595,-0.6556871,-0.5575009,-0.0006836925,2.0677729,-0.63626707,-1.0719508,0.08163928,1.2308236,0.3763118,0.33964872,-1.3674697,0.8556785,-0.69404805,0.6134989,1.0646461,0.9832764,-0.34057733,-0.12112485,0.23851065,-0.026012735,0.8402205,1.8853765,0.90379107,-1.7303153,-0.17408463,-0.7569175,1.1544394,0.10548308,-0.58828104,-2.2133024,0.76151407,0.9882251,-0.33799013,-0.36300513,-0.32815427,-0.16083471,-0.7817147,-0.15756014,-2.7104619,0.73015183,-1.8245586,0.12698413,2.2169824,0.95323753,0.43615663,1.2318543,0.45343706,-0.06706062,-1.7847573,1.080589,2.519145,-0.86268,-0.17361444,1.168513,-0.91562283,-1.569328,1.259442,0.037228383,0.30334857,-0.23501681,-0.49459893,0.3947516,-0.39016256,-0.7743366,0.74605846,0.21725878,1.8476028,0.54618216,-1.5716995,0.9664981,0.12692592,0.3307412,1.9256802,1.494507,-1.164124,-0.9523818,-0.61173975,0.45403442,-1.0929524,-0.046263948,1.1769654,-0.009714122,-0.049784996,-0.15999958,-0.46489516,0.8143899,-0.30355412 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv index 45d59f99..5144f594 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,7,0.4836214,0.15431057,-0.8040745,0.29091778,-0.055900697,1.2060295,0.3452758,-0.8614426,-0.9362209,0.34898758,1.1721082,-0.4112888,0.3945304,0.2336385,-1.4738886,0.73230135,-0.5247049,0.6479498,1.5893649,1.6185886,1.3388404,-0.48648638,1.4070816,2.6896753,-0.5802976,-0.7131316,-0.4670565,0.63593763,-0.47043854,-0.74653304,-0.44683897,0.52990055,1.5743597,0.62231994,0.36112452,-0.41805673,-1.6092434,0.117180616,2.251997,-0.4125149,-1.6764935,-1.4553155,-1.3477093,0.588175,1.2021706,-0.8264717,0.13591708,-0.5834153,-0.6440799,1.8806185,-1.564533,-0.5116288,1.3243208,0.3408409,-0.9232263,1.1233313,1.1755381,-0.87264514,-0.381421,-1.2161983,0.029331272,-0.6922146,-0.08794284,1.609424,1.6640897,-0.5114714,-0.031018924,-0.7680615,1.8714914,0.6504967,-0.3274704,-1.8043759,-1.1517804,-0.81753194,-0.16838285,-0.15660566,-1.4273182,0.27939737,0.25196457,-0.15733546,0.599071,0.2938215,0.43453452,-2.450483,-0.6304489,-1.01529,-0.91700906,-0.041178755,-0.8448184,-0.22622812,-0.7264896,0.9366097,-1.4195501,2.0062637,0.6819727,1.9392235,1.7529082,0.1502222,0.32664576,-1.3147435,0.55803806,0.20468958,0.9131472,2.2310262,-0.1215383,-0.5964191,-2.0484083,0.43182093,-1.5355808,-1.2749287,-0.9757672,-0.9061006,0.8016716,0.12147521,1.4375226,1.4464892,0.098983355,1.8112254,-1.96104,0.54458094,0.40790206,0.6800015,-0.55492187,-1.3341256,-0.56690305,1.023294,1.0548493,-0.70494395,-0.26114026,0.37238428,-0.5541062,-0.5526852,-0.5225235,-2.4509475,1.124607,0.48349783,-0.8573671,0.11351146,0.65686464,-0.6089635,0.48230767,0.38274416,-0.42615348,1.0773033,1.5329567,-1.329324,0.10873803,-1.7785066,0.26635838,0.39991972,-0.10376236,0.7763999,-0.4305313,-0.23850553,-1.2875695,0.73188037,-0.58677316,0.9893427,0.1941753,-0.56284344,-1.1522082,0.4671607,0.093474194,1.139886,1.052885,-1.7801507,-0.3854622,-0.67583334,-0.81050724,0.4004889,0.7293054,0.6006033,-0.7552659,-0.325302,1.7445861,-0.48890847,-0.58957654,-1.4742821,-0.15116952,-0.10655272,-1.2754749,-0.5283034,1.1386613,-0.8321361,1.7763195,-0.21586367,-1.6490741,-0.57824636,0.8866336,-0.26279575,0.35519692,-1.1262823,1.2348262,-0.02918719,-0.45923397,-0.7515425,1.6313766,1.0427995,-0.014255836,0.1959896 +5,0,7,0.30457106,-1.0499812,-0.2708557,0.6033656,-2.1559174,-0.014660421,0.40023395,0.35113475,0.0902287,0.7888887,-0.34383535,0.93346864,-1.0638552,1.6174538,1.5091573,0.9228686,0.086696744,-0.50717336,-2.0618286,0.39436528,-0.021834815,0.6010914,-0.47710696,0.17810024,-0.91974175,-0.12123473,-1.365223,0.79932564,0.19411209,1.1538398,-0.63365114,-0.39145467,0.2746975,-1.130279,-0.6916063,-0.12119007,1.0064207,-0.330205,1.6648016,-0.45908698,-1.8615019,1.1402794,0.75518245,-1.5022097,-0.9118628,-2.2375493,-0.902504,0.6392769,-0.21022926,-1.8474433,-1.5057714,-1.960203,-0.3685194,1.2326003,1.5652041,1.0757546,-1.4903946,2.2756448,-0.32394972,-1.1672122,-0.059360582,-0.04470684,-0.8703109,1.0302415,-0.0895821,-0.403575,-0.37002468,-0.8056304,-1.1433159,-1.2743354,0.85718685,1.1835376,-0.6666402,-0.14671929,-0.04834712,-0.98218584,-0.13421746,0.78738457,0.38280028,-1.2351733,-0.48965338,-1.6121022,0.42098215,-0.85432166,0.9951741,-0.12262745,0.9710562,-0.5171932,0.16173087,0.17513205,-0.07830988,-0.34751597,-0.012498501,-0.66930187,1.9089013,-1.4641144,0.5140048,1.7203206,-0.9557444,0.13077603,-1.1026406,-0.9473788,-0.31690073,0.97551376,1.9448526,-0.476878,0.7957327,-1.8465495,0.67249143,1.7720664,1.2585933,0.45854238,0.5997015,-0.6044482,-0.76524645,-0.30329454,0.5679286,0.5396677,-1.7696911,1.5391197,1.026936,-0.31885958,0.50461066,-1.7645643,-0.50854623,-0.4742418,0.77532613,0.09777384,0.54422975,-0.1796674,-0.8478994,0.0031664053,-1.1256933,0.77754414,1.3871409,-0.26337987,-0.8610575,-0.51069754,-1.2064705,1.7107098,0.7312288,-0.28927425,-2.1887672,0.9429601,0.9586188,1.8643379,0.19833568,-1.2076133,1.2674617,0.3626933,1.0161105,-2.1542332,0.07333201,-0.60430324,0.2051994,0.90605885,0.19795726,0.60270673,2.1178296,0.3766683,-0.5104417,-2.3974814,0.124425165,1.0825484,-0.41810575,-1.0645667,0.04239827,0.48415333,-1.4814224,1.1013521,-0.101820946,-0.6659215,-0.4296166,0.30863544,0.20719278,0.43899494,-1.6712543,0.00065493764,0.7002628,-0.41546488,1.3948044,-1.0820502,-0.11341275,-0.15781793,-0.2200905,1.9745494,-0.07587735,-1.6396667,-0.65765786,-0.13210705,-0.30101702,-1.8123761,-0.7385888,1.5914155,-0.37091118,0.9381928,-1.189511,-0.54202545,0.30190322,-0.34896195 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv index 9a30653c..9f0978c3 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,7,0.6047183,0.61474156,-0.85807425,0.1360568,-0.47004148,1.3154823,0.85255265,-0.2758797,-0.94348884,-0.46887586,1.2464497,-0.17505822,0.22009045,-0.5281095,-1.6458,-0.2863077,-0.7895708,-0.032991536,0.6482207,1.1479981,1.6235281,-0.8318479,1.2820829,2.5700314,-0.74509114,-0.956326,-1.8435808,0.50691956,-0.42929974,-0.82176375,-0.688462,-0.16810319,1.0948266,0.04102623,1.1152531,-0.29527077,-1.4508649,0.15333177,1.8691535,0.65497345,-2.3797927,-1.5487301,-0.8639569,-0.12066294,2.1302707,-1.1985978,-0.4929019,-0.9896101,-0.38555038,1.4556348,-1.5805736,-1.253294,1.9447695,0.7381123,-0.87177855,1.6145153,0.29667908,-0.54530835,-0.6368157,-1.3141624,-0.17360605,0.09582736,-0.50669295,1.6515435,1.0648893,-0.32638404,-0.30910656,-1.0866282,1.7825578,0.1281249,-1.2656724,-1.9909875,-0.67408943,-0.47530064,-0.6126794,-0.78917897,-0.7749392,0.95389134,-0.13919069,0.37404194,1.517078,0.837784,0.7876206,-2.7127264,-0.9797122,0.22331813,-0.5448298,-0.37922773,-0.85313463,0.29169962,-0.72657126,0.6292672,-1.6658629,1.0823836,-0.3303371,1.5071089,1.7243761,0.09441604,0.78559613,-0.8699731,0.83902586,0.43403652,0.27791783,1.5322093,0.39030224,-1.0829405,-1.1652853,0.4393425,-2.4266343,-1.1654254,-0.8020692,-1.2343247,-0.02799856,0.082993135,1.4820228,0.81963,0.81295073,1.5777001,-0.74838066,1.0510573,1.142717,0.67160773,-0.22292933,-0.5321122,0.073675826,0.8971168,0.5200968,0.2786284,-0.6427973,0.5132947,-1.2613649,-1.1026112,-0.2773738,-2.553699,1.4465657,1.2948054,-0.9990521,-0.10682497,1.5314655,0.27273822,1.0103928,0.21165001,-0.5424684,1.0398483,1.2868812,-0.9073566,-0.4446297,-0.86511356,0.28190532,1.1098244,-0.050390765,0.50629246,-0.4595085,-0.39918143,-1.5425367,0.8516377,-0.5174903,0.82666886,-0.24608938,-0.55887544,-1.367161,0.31737787,0.38218778,0.6614556,0.62725943,-1.8203161,-0.7528492,-2.0896697,-0.8917504,0.34349948,1.1796234,0.4355885,0.14362016,-0.1739353,1.5831403,-0.103192456,-0.020828791,-1.1002008,0.052845396,-0.7443734,-1.1041548,-0.86692,1.290353,-0.6568599,0.8881055,0.80793345,-1.1829001,-0.648108,0.781555,-0.75571537,0.790254,-0.30762485,0.82678217,-1.2168562,0.5863828,0.29487747,0.7162153,0.18510085,0.6786084,-0.55795467 -7,0,7,0.6299754,0.050378714,-1.0953621,0.40204868,-0.20064756,1.2504606,0.64857304,-0.5956721,-1.1048201,0.08307071,1.2121466,-0.74361223,0.40176916,-0.19288543,-1.5207201,0.18478414,-0.75672543,0.6516608,1.2947527,1.4226474,1.5715213,-0.7016897,1.537614,2.4972186,-0.66829467,-0.7722992,-1.0611916,0.84529483,-0.6867521,-0.8948152,-0.83675677,0.5516693,1.4557326,0.597971,0.52972084,-0.3124734,-1.4932187,0.23769754,2.1977735,-0.23013769,-2.2219017,-1.3230104,-1.2486353,-0.076617986,1.3280454,-1.2714481,0.05504124,-0.5108662,-0.7244996,1.7406578,-1.2521456,-1.0216031,1.3594753,0.49166912,-1.0463053,1.4819757,0.8894106,-0.78244185,-0.44918662,-1.2543783,0.06708226,-0.60776013,-0.45414528,1.8482741,1.4049805,-0.51085305,0.007999584,-0.81303686,1.9179218,0.6898083,-0.68716633,-1.6860543,-1.1650369,-1.0256021,-0.27775717,-0.43408686,-1.197075,0.7731409,0.45193902,0.13899827,0.5074849,0.6706757,0.6787472,-2.57881,-0.58425534,-0.8426904,-0.9324049,-0.3311055,-0.9196865,-0.534395,-0.88145584,0.8438232,-1.2858,1.7702929,0.14992192,2.1282425,1.7167776,0.39477825,0.50257206,-1.4573762,0.5586969,0.08780366,0.50719386,1.8912692,-0.06565876,-0.49146792,-1.8407304,0.48491526,-1.819101,-0.97141093,-0.6114753,-0.940766,0.5585653,0.06410881,1.4343958,1.449382,0.06305862,1.8221257,-1.2712216,0.8074854,0.7395423,0.63117987,-0.38569003,-0.9561888,-0.34065723,0.9483605,0.6962596,-0.16962893,-0.6836114,0.4338564,-1.3348165,-0.5754306,-0.37627304,-2.8389518,1.3089486,0.59520245,-0.78578126,0.22991493,1.1825001,-0.4132581,0.46656233,0.17132021,-0.51955664,1.1751152,1.520865,-1.29063,-0.16482846,-1.6479331,0.20740972,0.5557091,0.031369217,0.3343893,-0.26854822,-0.23717512,-1.1977962,0.7109176,-0.8197224,0.85080427,0.07489285,-0.57192963,-1.1184924,0.9720554,0.31332842,0.8337498,1.2144716,-1.7497374,-0.4055033,-0.97871673,-0.52501994,0.294604,1.0116265,0.7438575,-0.32010132,-0.2937276,1.6995173,-0.4956802,-0.16089632,-1.3082268,0.05458243,-0.33528122,-1.3450384,-0.57403374,1.2334722,-0.7604033,1.5351142,-0.18204713,-1.5558845,-0.4553292,1.076027,-0.46304265,0.69380623,-0.6540957,1.0922314,-0.59123945,-0.09509767,-0.0446557,1.2391702,1.0227808,-0.0018399156,-0.16837811 +6,0,7,0.7273449,0.009315487,-0.5659161,0.0539636,-1.1747422,0.11731785,-0.24878183,-0.34799668,-0.39417046,1.5134698,0.180432,0.45988694,-0.48523727,1.8745505,1.0106969,0.83485544,0.46109983,0.18401664,-1.8427206,0.5820249,-0.9933856,0.57772356,-0.27879953,-0.88057303,-0.9495125,0.27947068,-0.98555374,0.65584594,-0.7251935,0.63879484,0.27707863,-0.23204361,0.8994904,-1.6550843,-0.41345245,-0.13837196,0.25872716,0.28248805,1.929113,-0.9793597,-1.2198358,1.0012894,0.7334509,-1.2398807,-0.88356876,-2.096589,-0.55407935,0.06886668,-0.776487,-0.90201944,-2.001808,-2.458255,-1.0559742,1.7568047,1.9512438,1.0935278,-1.6113944,1.89258,1.1544857,-0.70098376,-0.571621,0.7649165,-0.5899035,1.3507531,-0.7255975,0.17241018,0.50311905,-0.6263059,-0.36380523,-0.38990656,-0.27967066,1.416065,-1.308391,-0.352508,0.26046076,-0.18396786,0.50395614,0.2636389,0.86980325,-0.877985,0.18548113,-1.2215562,0.33346045,-0.9510769,1.7036265,-1.5579641,0.6795726,-0.18158613,0.011276826,-0.1970394,-0.26797757,0.3612404,-0.5695245,-1.4026842,1.758898,-1.2169626,0.73240304,1.9216541,-0.5449494,-0.14847618,-1.4680748,-1.6136966,-0.1330753,2.083131,2.207608,-0.20060927,-1.1179813,-1.3244749,-0.3105317,1.1410857,1.0294605,0.12662466,0.8479376,-0.43145418,0.2132454,-0.025244722,1.6760103,-0.2850787,-1.5536851,0.5495985,1.1164563,0.2283902,1.3229661,-1.758217,-0.4295333,-0.5159716,0.14204884,0.31548834,1.3842486,-0.54636705,-0.62329435,0.13254096,-0.53141403,0.2421158,1.3180143,0.27180845,-0.8231482,0.23262133,-1.0528578,1.495885,0.19461124,-1.0369684,-2.0902848,-0.4222444,1.0143939,0.5824076,-0.20892456,-0.4718485,0.06580811,-0.58581954,0.8422832,-2.566362,1.0881084,-0.64552516,0.3792994,2.2656064,1.8036302,0.2566192,1.7502713,0.65841585,0.25055784,-2.5194345,0.84616184,1.1300479,-0.60688585,-0.82479155,0.24982473,0.5697576,-0.6672031,1.3321275,0.23418252,0.32546026,0.52113616,0.41371918,-0.2717294,0.47879305,-1.3640656,-0.10326316,1.3061558,0.70007694,0.5445003,-1.2608218,0.51818657,-0.36812475,0.9051562,1.1091714,0.82054716,-1.0394655,-1.0836576,-0.22977057,0.17767808,-1.7726516,0.3174601,1.4640669,-0.17567706,1.0871913,0.17054728,-1.0595478,0.054115366,0.44907287 +7,0,7,0.19220954,-0.49153456,-0.04641067,0.18849212,-1.5853618,0.12341867,-0.11363969,0.13727675,-0.06847534,0.76124924,-0.28678593,0.8900653,-1.0943688,1.5146927,1.2307183,1.5759242,0.80081123,-1.0552121,-1.5437708,0.8671235,-0.33835396,0.6237686,0.060264308,-0.4205532,-0.569102,0.31872287,-1.1516503,0.56125844,0.025306754,0.6017618,-0.29687238,-0.3951651,0.7847005,-1.504742,-0.2827757,-0.21072185,1.2361257,-0.2929404,1.6530923,-0.54373467,-1.6885573,0.8691418,0.6955893,-1.2405534,-0.5988692,-1.744112,-1.3133477,0.17552854,0.058676194,-1.7747884,-1.4241207,-1.7917409,-0.62875485,1.7578604,1.5654361,1.3629228,-1.6896278,1.6548164,-0.14070357,-1.9311712,-0.15432832,-0.25670385,-0.4815931,0.8380533,0.28672034,-0.9617282,0.51135164,-1.1442822,-0.4330058,-0.7627599,0.6438905,1.7754638,-0.89877915,0.2844743,-0.36010924,-0.62290066,0.05098487,0.43144348,0.37151685,-1.350735,-0.3010244,-1.2662656,-0.017898949,-0.89459026,1.0812829,-1.0964411,0.66727376,-0.4757698,0.45214677,-0.045206342,0.10654671,-0.018967189,-0.5759011,-0.76332796,1.7140834,-1.397187,0.37946275,1.4883934,-0.9071629,-0.39879188,-1.280823,-1.1647131,-1.0890014,1.5997056,1.4125903,-0.36653465,0.25216198,-2.067858,0.7692397,1.5507644,1.0313568,0.47055215,1.0971524,-0.27837852,-0.19586825,-0.053837664,0.94147635,0.6782325,-1.8499793,1.3899486,1.4842832,-0.20198905,0.9118752,-1.3156699,-0.32807803,-0.46155733,0.59480095,-0.001722204,0.80457634,-0.21580535,-1.2434112,0.56428885,-1.0542293,0.7155026,1.2230334,-0.9761847,-1.017852,-0.1672411,-1.4611741,2.0070598,0.71912134,-0.6476812,-2.0907934,0.44325376,1.0635188,1.3988785,0.15533331,-0.9266868,1.1053526,0.25385013,1.2198808,-2.3114061,-0.13443123,-0.2354869,0.25447476,0.91357034,0.8403027,-0.059212927,1.9575791,0.24892993,-0.31545094,-2.6089191,0.80578184,1.2054881,-0.7192824,-1.2654837,-0.09570098,0.94349724,-0.8900375,1.2061056,-0.01412794,-0.66192263,-0.2441078,0.041381236,-0.2976183,0.9883735,-1.9825552,0.07066407,1.6886215,-0.68948716,0.5837726,-1.1841415,-0.10145782,-0.008195412,-0.1493982,1.5905204,0.13115445,-1.1599777,-1.202373,0.2164183,-0.3614637,-2.1209643,-0.1951186,1.9769924,-0.68308234,1.2002243,-0.90931207,-0.6301795,0.1339641,0.01462584 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv index 9b428c4a..d965bd46 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,7,0.26348084,0.1233009,-0.9510862,0.46851432,-0.06629313,0.8160627,0.5431626,-0.9199505,-1.360739,-0.2538705,1.1684657,-0.14489299,0.10989469,-0.2309123,-1.7760984,0.3490349,-1.0261083,0.1856724,1.4605979,1.6237235,1.7129359,-0.5611574,1.6723084,2.8874109,-0.98691314,-0.65485513,-1.0679046,0.44296682,-0.5673327,-0.2541984,-0.4929436,0.35431877,1.1681324,0.25615126,0.8050912,-0.35653836,-1.7087184,0.043991115,1.7704822,-0.08917144,-1.9798214,-1.8724368,-1.4108714,0.26632398,1.5392265,-1.3474573,-0.10791889,-0.567187,-0.96988684,1.7185776,-1.6027321,-0.33695924,1.4299693,0.46550983,-0.89209276,1.3031094,1.5477902,-0.6060929,-0.40710664,-1.2166933,0.41607055,-0.3897111,-0.08740451,1.7933946,1.7434844,0.009654752,-0.067560725,-0.5996982,1.7986253,0.3483771,-0.16625577,-1.9332577,-1.0659667,-0.59093297,-0.25158393,-0.40012267,-1.1106377,0.071712896,0.39155295,-0.039082322,0.38537106,0.21039137,0.69452846,-2.3482246,-0.79463667,-0.4639145,-0.52193904,-0.5554572,-0.5127063,-0.5268354,-0.9455389,1.341622,-2.0886319,1.58943,1.0482309,1.3858846,1.7408938,0.02892668,0.5694529,-1.5788714,0.9006992,0.118018724,0.7638617,2.0551603,-0.32436588,-0.6434378,-1.8908632,0.18551913,-1.5123209,-1.4987677,-0.7352275,-0.9231083,0.4445965,0.17023665,1.6077462,1.7081463,0.22440022,1.6947187,-1.0983723,0.48353592,0.5596647,0.8932061,-0.29618305,-0.6437828,-0.31312457,0.5083116,1.2900065,-0.33875406,-0.32123098,0.313723,-0.4940811,-0.8215438,-0.10663929,-2.3547385,1.1263422,0.68281025,-0.9162914,-0.43100452,0.49630877,-0.394641,0.5690176,0.45832327,-0.61618537,1.2726052,1.3995229,-1.3063124,0.4918943,-1.4364437,0.24002609,0.3745131,0.049085103,0.45316574,-0.453979,-0.018170724,-1.1888833,1.0507466,-0.4225001,0.8939625,0.40870383,-0.8803912,-0.66381943,0.4014866,-0.33330816,1.1037079,1.3088257,-1.8285968,-1.0561757,-0.80511665,-1.1772425,0.8244654,1.09275,0.4883135,-0.6731263,-0.55346674,1.5592078,-0.95583314,-0.41993904,-1.1939453,0.3556415,0.42150888,-1.353197,-0.4794684,1.0955988,-0.4739728,1.6267781,0.053663608,-1.6591601,-0.5589501,1.5400091,-0.4875693,-0.023662472,-0.7958585,0.68492943,-0.0061785085,0.0073458375,-0.25019705,0.9735828,0.9391158,0.18115312,-0.13106072 +8,0,7,1.8829988,0.5603056,-0.6805401,0.873459,-0.75400966,0.6241306,-0.022826796,-0.65359944,0.45811382,1.1624973,-0.36711055,1.1964695,-0.9203239,1.9030054,0.92825997,1.2234915,0.3935566,-0.10803351,-1.7747352,1.0153017,-0.22650294,0.07317609,0.7041025,0.083895385,-0.5787242,-1.1430625,-1.0159122,0.3586008,-0.81441945,0.12919727,-0.23688294,-0.8359273,1.0575047,-0.58928937,-0.19002041,-0.26165125,0.6974495,-0.35162425,1.4806678,-0.91830134,-1.5502017,1.193903,1.0963876,-1.9676751,0.075405344,-2.0842352,-0.2591765,1.1972393,-0.45678777,-1.2595507,0.0008469863,-1.209172,-0.04429603,0.6055306,1.2668537,-0.2412063,0.19914478,1.9480219,1.0576845,-1.475916,0.17119397,-0.6035175,-1.7098999,-0.37294888,0.419368,0.268539,-0.70104766,-1.7786356,0.5031316,-1.5002457,0.9026701,0.80984163,-1.2359964,0.22069247,-0.42576674,-0.39630565,-1.4970282,2.616495,0.6003689,-1.1450349,-2.02723,-1.7124385,0.30198652,-0.6123571,1.4489877,-1.4337479,0.3514351,-0.39667892,-0.68725485,0.8674336,-0.02994205,1.0586603,-0.8096146,-1.0183178,0.82786477,0.15899718,1.4175017,1.6423237,-0.7518763,0.46193466,-1.7427615,-0.89581615,0.25311762,1.9719808,0.84027904,0.5098649,0.69561577,-2.01775,0.16369472,0.09517597,0.4123239,0.43099934,-0.5587974,-2.099149,-1.5859907,-0.90635055,-0.023114711,0.15737575,-1.1646839,-0.39253628,1.4398996,1.0370032,-0.44213772,-0.64347506,0.49100915,-0.8488655,0.52995205,-0.12177242,0.4132956,-0.117767714,-0.041891925,1.1423306,-0.9095124,-0.7704257,0.6956402,1.2622151,-1.6017178,1.253087,-0.88926196,0.024840193,-0.6669459,-0.84649396,-1.5089233,0.5503707,1.0900313,0.52742964,1.4928386,1.0869912,0.35689026,-0.5618133,-0.1295253,-2.3059578,0.9978885,-0.25662556,0.12965643,1.9835927,-1.0982833,-0.09509576,1.6303843,-0.04004063,0.85300845,-2.1637661,0.115972474,0.8912982,-1.8220121,-0.67457515,0.4750627,-0.7254808,-1.0370337,1.8635073,-0.7830165,-0.7419083,-0.59229213,0.36369795,0.009352995,-0.652557,-0.9893492,0.13321461,0.05142843,-0.173441,1.0776938,-1.6504616,-0.21089926,0.84927285,-0.2011813,1.2290883,-0.25737432,0.17806257,-0.74700785,-0.22532028,-0.73679703,-1.1095785,-1.5106932,1.1296397,0.6030286,0.907326,-0.8425243,0.72134006,1.3058224,0.4379919 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv index 7701bce1..ea9dd586 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,7,0.76275426,0.18214901,-0.57188916,0.059701614,-0.28557384,1.2528464,0.79763407,-0.63960886,-0.96146375,-0.0512549,0.8373615,-0.3810237,0.24112543,-0.20450255,-1.7736192,0.36160433,-0.7304003,0.41004166,1.2904602,1.6976061,1.2359073,-0.87983704,1.8318158,2.488492,-0.795438,-1.1328822,-1.5530977,1.0552738,-0.77631116,-0.88773954,-0.4693062,0.16485235,1.0138454,0.17359263,0.7859901,-0.23536894,-1.4138858,0.38051438,2.14049,0.16130738,-1.9554428,-1.4978547,-1.225305,-0.007534434,1.8237702,-1.0094837,0.08617119,-0.4849619,-0.25551113,1.6335402,-1.7301743,-0.73824334,1.371595,0.8042116,-0.9446179,1.2468611,0.8701763,-0.7954289,-0.5617317,-1.1564339,-0.08375406,-0.4792437,-0.45387352,1.6733506,1.8638924,-0.5079436,-0.1641803,-1.058204,1.876411,0.6470958,-0.5844382,-2.1348605,-1.0387065,-0.6489218,-0.38448277,-0.53584003,-1.0877233,0.89465255,-0.070738666,0.4274419,0.9511695,0.727988,0.68438584,-2.3704088,-0.6923841,-0.68775594,-0.59505486,-0.51203656,-1.1223544,-0.11988432,-0.28750613,0.5628186,-1.4707938,1.4209483,0.17336716,1.5996127,1.5890402,0.4437642,0.9046561,-1.1071699,0.63461745,0.06332244,0.69563353,2.2999492,0.38046426,-0.77210474,-1.8445017,0.47982848,-2.1513295,-1.4039284,-0.7259288,-0.89535034,0.7229532,0.38970834,1.1962795,1.1890666,0.22372073,1.7938012,-1.1250141,0.9569801,0.8552448,0.5728794,-0.105201356,-1.0274678,0.068610765,1.1812729,0.73605824,-0.69981444,-0.71209633,0.503375,-1.2361196,-1.1348834,-0.5413534,-2.8409722,1.1658453,0.535366,-0.8362626,0.4911523,0.9966621,-0.16169278,0.5466709,0.065419264,-0.50554013,1.3522164,1.6981294,-1.1887987,-0.18314654,-1.4414601,0.17046571,0.5640569,-0.04139424,0.71503925,-0.32278606,-0.39535967,-1.3595438,0.8323629,-0.99404913,0.8279306,0.15347865,-0.36941954,-0.90245074,0.32202348,0.21524166,0.4956704,1.0135361,-1.5879138,-0.6533115,-0.97604185,-0.7554835,0.48038816,0.99044883,0.53412485,-0.16621038,-0.14424634,2.0332005,-0.21379094,-0.06764341,-1.2983478,-0.312222,-0.9194852,-1.2916971,-0.36260626,1.1965542,-0.7213257,1.3095983,-0.08372764,-1.4751688,-0.62356883,0.7289247,-0.069254085,0.41077098,-0.49018452,1.1164718,-0.7885649,0.029319612,-0.09494034,1.3525505,0.58701926,0.36867285,-0.38973525 +9,0,7,0.1209258,-0.7836567,-0.3029543,0.2785893,-1.0025321,0.037851073,0.048571438,0.33848727,-0.3773915,0.7844221,0.24281782,1.148343,-0.13137017,1.279799,0.97056156,1.0246092,0.80062383,-0.3923224,-1.8497859,1.1537666,-0.38878572,0.5604603,-0.58034015,-0.02841155,-0.48242685,0.8719435,-0.9715767,0.86573464,-0.0033297834,1.0148878,-0.93299323,-0.20949924,0.95323825,-1.5853611,-0.5756929,0.1248061,0.5185648,-0.11291537,1.8827963,-0.75403863,-1.9923172,0.3773292,0.76919514,-1.0892999,-0.5601977,-2.0243154,-0.80850774,0.68828875,0.8130654,-1.7597806,-1.9047588,-2.6262157,-1.1613489,1.2342267,1.8630753,0.9635703,-1.9320338,1.985816,-0.055163626,-0.7479937,-0.36713076,0.07263066,-0.35597026,0.9809213,0.099624224,-0.22642994,0.59534913,-1.3628237,-1.0601852,-1.4001173,0.26098126,1.0985968,-1.100743,0.23194666,-0.3807315,-1.1726305,-0.24944744,0.57557213,0.2954017,-1.1652223,0.08526788,-1.5450522,0.21617737,-0.8069991,0.8448825,-0.76840484,0.887578,-0.55467606,0.28331083,0.06474368,-0.70855623,-0.25272217,0.19233815,-1.6127638,1.925872,-1.4058347,0.109641865,2.0278912,-1.168832,-0.40527755,-1.4968951,-0.9538667,-0.92621404,1.25343,1.4133275,0.07042062,-0.17381254,-1.4111978,0.36360025,1.3456023,1.6989193,0.42588353,0.9820415,0.12705263,-0.5005522,0.054737598,0.76003623,0.84157014,-1.7930596,1.0273554,0.44291124,0.082684554,0.61543924,-1.5382718,-0.26630726,-0.56344163,0.47257867,0.62037295,1.3090107,-0.49892786,-0.3358481,-0.06688593,-0.927906,0.33645353,1.4333607,-0.5287842,-1.4776187,0.023554774,-1.1187627,1.6363778,0.19606885,-0.41932362,-2.4530096,0.52753305,1.0463974,1.1490204,0.4760272,-1.2210376,0.7896005,-0.003464025,0.8981069,-2.112449,0.16817431,-0.64763904,0.200444,1.2383525,0.66687185,-0.045646884,1.3314408,0.10086164,0.30638647,-2.6051254,0.5737982,1.2559868,-0.6507682,-1.2285036,0.194903,0.7337301,-0.36549726,1.3863009,0.23165633,-0.05751545,-0.071033075,0.66757375,-1.0468653,0.9908146,-1.5330824,-0.010820814,0.87953395,0.21151483,0.9051806,-1.0364068,-0.45686463,0.33169436,0.61652184,2.6955714,0.38302016,-1.3782058,-0.8940241,0.33452165,-0.84705555,-1.7417383,-0.18060239,1.1929514,-0.091192424,1.401481,-1.0531416,-1.0770215,0.70313454,-0.3485591 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv index 428d289b..04665ca6 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,5,1.7890625,0.41992188,-1.796875,0.6953125,-0.14941406,-0.0019836426,-1.9765625,-0.31445312,0.76953125,-0.75,-1.109375,-1.25,-1.484375,0.765625,-0.36914062,0.71875,-0.046875,0.29296875,0.32617188,0.73046875,0.6640625,0.39453125,1.203125,0.86328125,-0.85546875,0.51953125,-1.0703125,-0.63671875,-0.84765625,0.35546875,-0.7109375,0.8046875,-1.4609375,0.42578125,0.9921875,0.6171875,0.515625,-1.9453125,-1.34375,0.65625,0.24902344,0.48632812,0.80859375,-0.28125,0.37109375,-0.234375,-0.921875,-1.328125,1.84375,-0.41992188,2.078125,0.80078125,-0.6796875,-0.20703125,1.03125,1.9140625,0.23242188,-0.5390625,-0.7734375,-0.734375,1.3984375,-0.038085938,-0.20898438,0.56640625,-1.1484375,1.0390625,-0.31835938,-0.2578125,-1.0234375,-0.921875,1.65625,-0.24707031,-0.021606445,0.46484375,-0.15722656,-1.3671875,-0.60546875,-0.000015974045,-0.3046875,0.546875,-0.36132812,1.953125,-0.41992188,0.110839844,0.5703125,0.09863281,-0.5703125,-0.60546875,-2.453125,1.0859375,-1.515625,-0.94921875,-2.109375,0.796875,1.734375,-0.84765625,1.0625,-0.61328125,-1.25,0.51171875,-1.4453125,1.046875,1.5546875,-1.359375,0.26367188,0.10205078,-0.053222656,-0.65625,0.19628906,2.578125,1.265625,0.671875,-0.02368164,-1.03125,0.17480469,1.0,-1.21875,0.37109375,-0.81640625,-1.359375,-2.1875,0.94140625,0.12158203,0.765625,0.8046875,-0.17773438,0.625,1.0390625,0.28320312,-0.051513672,-1.1875,-0.4921875,0.32421875,0.37890625,-0.50390625,-0.91015625,2.0,-0.13964844,0.33398438,-0.7890625,-0.33984375,-0.81640625,0.828125,0.31835938,-1.2109375,-1.7734375,-1.578125,-0.72265625,0.47460938,-0.91796875,0.3515625,-0.51953125,-1.2109375,-0.57421875,-0.7421875,-1.3203125,-0.2734375,1.1953125,0.16796875,-0.3203125,-0.67578125,-0.43164062,-1.015625,-1.2421875,0.51171875,-0.08154297,-0.36914062,-0.546875,0.12988281,-1.21875,0.2265625,-0.033203125,1.2421875,0.82421875,2.578125,1.109375,1.2421875,-0.21972656,-0.18652344,2.546875,1.6796875,0.33203125,-1.59375,-1.2890625,0.72265625,1.609375,-0.12402344,-1.6484375,1.0390625,-0.23242188,0.4140625,0.69140625,-0.064941406,0.890625,0.17089844,1.21875,2.359375,-0.31054688,-0.51171875,1.390625 -0,0,6,0.16113281,1.0703125,1.09375,0.796875,1.359375,0.56640625,-0.75,-1.1328125,1.875,-2.265625,1.1484375,-0.50390625,-2.078125,0.052001953,-1.0703125,-0.0625,0.73828125,-0.96484375,0.3828125,0.25195312,1.75,0.41796875,0.5625,0.34570312,-0.19140625,-0.33789062,-1.421875,0.45117188,0.056884766,1.71875,0.3203125,0.6953125,0.77734375,-2.09375,-0.58203125,0.96484375,-0.9765625,1.484375,-0.5859375,0.5703125,0.78125,-0.11621094,0.25585938,-0.828125,0.8046875,0.65625,0.22363281,0.50390625,-0.74609375,-1.1640625,0.36914062,0.47265625,-0.6875,-0.10253906,0.46679688,2.1875,-1.4140625,0.25195312,0.51171875,0.5234375,-0.3984375,-0.041748047,-0.18457031,-0.78515625,-0.080566406,1.203125,1.3671875,-0.984375,1.8046875,-0.46875,-1.0234375,0.23046875,0.375,-1.0703125,0.7578125,-0.26367188,1.4140625,-0.37695312,-1.296875,1.7890625,1.2109375,1.5078125,0.765625,-0.35546875,1.09375,-0.32226562,0.11230469,-2.578125,-0.60546875,-0.65234375,-0.30859375,1.3671875,0.61328125,-1.4140625,-1.5625,-1.09375,-0.2578125,-2.90625,0.1484375,-0.6796875,0.45117188,-0.49609375,-0.69921875,-0.46875,1.375,0.21289062,1.4765625,-0.62890625,-2.328125,0.18945312,1.046875,1.359375,-0.39257812,-0.25195312,1.953125,2.109375,-0.05859375,1.1953125,0.31835938,-0.49609375,-0.359375,0.037841797,-0.3046875,0.43359375,-0.921875,-1.0078125,-0.42578125,-0.032714844,1.0546875,0.8359375,-0.8359375,0.107910156,1.015625,0.7890625,0.62890625,-0.6953125,0.33398438,-1.078125,-0.51953125,-1.265625,1.0625,-0.43164062,0.24414062,0.87890625,-0.81640625,0.890625,-0.78125,0.51953125,-1.0625,1.25,-0.26171875,-0.18066406,0.26757812,0.04296875,-1.3046875,-0.6796875,-1.1015625,1.28125,1.0,0.41796875,-0.86328125,-1.09375,-0.25976562,-1.2109375,-1.4296875,0.67578125,-0.011413574,-0.515625,-3.5,-0.56640625,1.1484375,0.47851562,1.0234375,1.015625,0.796875,-1.671875,-0.6484375,0.39453125,1.0078125,-0.5703125,1.1328125,0.40429688,-2.15625,0.74609375,0.51171875,1.5390625,0.796875,-0.546875,-0.18359375,-1.609375,-0.60546875,0.17285156,-0.30078125,0.90234375,-1.125,0.24316406,-0.35546875,-1.34375,-0.16503906,-0.7421875 -0,0,7,-0.71875,-2.15625,-0.546875,1.4375,1.1015625,0.45507812,0.056640625,-1.125,1.0078125,0.859375,2.03125,-1.2265625,-1.71875,0.123046875,1.3984375,-0.9765625,0.7578125,-1.03125,0.40234375,-0.37695312,1.453125,0.045410156,-0.33789062,0.43554688,1.4609375,0.7265625,-0.3984375,0.28710938,-0.70703125,-0.27734375,0.07373047,0.14355469,1.5546875,0.28515625,0.4765625,0.45898438,1.890625,0.65625,-0.6640625,-1.2578125,-1.4609375,0.703125,-2.046875,0.49804688,0.10888672,0.203125,1.7890625,-1.75,-2.34375,-1.203125,0.14746094,-0.0119018555,-1.1953125,1.7890625,0.1875,0.8359375,-0.22070312,-1.1328125,-0.22265625,1.6015625,-0.19726562,-0.14648438,1.109375,-0.13378906,1.5234375,-0.62890625,1.6953125,-1.4140625,0.12158203,-1.3203125,0.8828125,0.17089844,1.28125,0.75,-0.55078125,0.828125,-0.65625,0.859375,-1.4375,1.1953125,-0.55078125,1.078125,-1.4609375,-1.375,-0.19335938,-1.21875,-1.890625,0.11230469,0.77734375,1.390625,-2.015625,0.4609375,0.45507812,-0.22558594,0.10595703,0.83984375,0.81640625,0.23046875,-0.052490234,0.44140625,-0.104003906,-1.1015625,1.1015625,0.6171875,0.87109375,-1.1484375,0.66015625,-0.140625,-0.092285156,-0.92578125,1.625,0.032470703,-0.9296875,0.41210938,0.58203125,-1.3359375,-0.47070312,-0.28710938,0.031982422,0.12207031,-0.8125,0.026977539,0.17578125,1.9453125,0.63671875,-0.6953125,0.25390625,-0.29101562,0.78515625,1.4296875,0.39648438,0.88671875,-0.16308594,0.94140625,-2.109375,0.8984375,1.9453125,0.37109375,-1.015625,0.5546875,1.5,-0.33007812,-0.4765625,-0.20703125,-1.875,-1.5546875,-0.71875,1.375,-0.18261719,-1.4453125,1.546875,-2.40625,-0.9921875,0.44726562,-0.22460938,-0.59375,-0.953125,0.12011719,0.21289062,0.0035095215,-1.1171875,-0.15625,-0.640625,0.23339844,-0.20507812,1.890625,0.4140625,-0.75390625,-1.21875,0.041259766,0.33984375,-0.1796875,-0.20214844,0.07714844,0.04272461,0.91015625,1.625,0.69921875,1.3046875,1.0859375,-0.018676758,0.8515625,-0.38867188,-1.5234375,0.11328125,0.0859375,-2.109375,-1.7734375,0.16992188,-1.15625,1.9921875,-0.21289062,0.35546875,-1.296875,0.4375,0.072753906,-0.51953125,-0.3046875,-1.03125,-0.99609375 +0,0,5,0.99609375,0.23242188,-0.5625,-0.53515625,1.359375,0.578125,-0.7109375,0.4609375,1.2265625,-0.52734375,0.734375,2.5625,0.026000977,0.6171875,-0.11767578,-0.09326172,-0.80859375,0.23925781,2.96875,1.59375,0.6640625,-1.09375,0.49414062,0.060791016,-0.17675781,1.203125,-0.1171875,-0.61328125,-1.765625,-1.46875,-0.15820312,0.8203125,-0.796875,1.34375,-0.6953125,-0.18359375,0.28125,0.734375,0.33203125,0.16992188,0.74609375,-0.34765625,0.31835938,-0.27734375,-0.08642578,0.15820312,0.080566406,-1.7890625,-0.34375,-0.67578125,0.7578125,-1.1875,0.41992188,0.13671875,-1.59375,0.30859375,0.3046875,-0.44921875,1.1484375,-1.109375,-0.12695312,-0.15039062,1.46875,-0.7734375,-0.6171875,-1.25,0.20898438,-1.78125,0.53515625,0.71875,-0.52734375,1.3515625,-0.73828125,-0.76953125,0.81640625,2.46875,-0.80078125,-0.06591797,-1.9296875,-0.19042969,-0.033935547,-0.19824219,0.45117188,-0.26367188,0.83203125,-0.73046875,-0.35351562,-1.9375,0.12988281,1.2421875,0.59765625,0.42578125,-1.46875,1.65625,-0.24609375,-0.08496094,0.008178711,1.2890625,-0.5703125,0.091796875,0.50390625,0.28125,0.6953125,-1.0546875,-1.0703125,-0.13476562,0.060546875,0.8515625,-0.09277344,-0.11279297,1.2734375,0.6875,0.28320312,-0.09716797,1.875,-0.8984375,-0.90234375,-0.94140625,0.27539062,-0.15917969,-0.421875,0.37695312,0.38671875,0.33398438,-1.40625,2.15625,-0.26367188,-1.1953125,1.7734375,1.921875,0.8671875,-2.078125,-1.140625,0.47851562,-1.9140625,0.171875,-1.421875,-0.24023438,0.35351562,-0.984375,1.3515625,-1.40625,-1.671875,2.078125,-0.47070312,-0.41992188,-0.55859375,1.5703125,0.21777344,0.47265625,0.83203125,-1.375,0.6484375,-0.8671875,-1.578125,0.76953125,1.1640625,0.18359375,-0.05810547,-1.171875,0.20117188,1.4375,0.484375,2.296875,1.046875,0.13085938,-0.9921875,-2.859375,1.09375,0.14160156,0.76171875,-0.63671875,-0.19140625,0.546875,-0.5546875,-0.49609375,-0.92578125,-0.52734375,-0.4375,0.76953125,-0.4765625,-0.51171875,-0.3515625,0.7734375,-1.4765625,1.2109375,-1.0,-1.921875,1.875,-1.0546875,-0.859375,-1.03125,-0.6875,-0.38867188,0.021728516,1.46875,-1.6328125,0.27734375,0.15917969,1.0859375 +0,0,6,1.1015625,0.88671875,1.1875,-0.51171875,0.19824219,-0.25,0.55078125,-1.09375,0.76953125,-0.87890625,0.91796875,-0.039794922,1.1015625,-0.43359375,0.59765625,-0.4453125,-0.24804688,-0.140625,2.328125,-0.010864258,-0.47070312,-1.296875,0.25,-0.12890625,-0.6484375,-0.734375,0.859375,-0.5859375,-0.9921875,1.265625,0.45898438,-0.6875,0.78515625,-1.3671875,0.70703125,-0.0072021484,0.11621094,-0.5703125,-0.625,1.109375,-1.421875,0.032470703,-0.5625,-0.08251953,-0.22167969,-1.296875,0.5703125,-1.109375,1.234375,-0.3671875,-0.78515625,0.58203125,-0.71875,1.34375,0.16210938,-0.043945312,0.75390625,-0.73046875,-1.421875,-0.71484375,1.1953125,0.7109375,-0.84375,1.140625,-0.21679688,0.051757812,0.35742188,-2.1875,-0.6640625,1.40625,-1.0546875,0.39257812,0.4453125,0.025634766,0.17382812,1.4609375,1.0390625,1.2109375,-0.828125,-0.265625,-1.3984375,-0.48242188,0.734375,-0.65625,0.11425781,-1.0546875,-0.6640625,-2.46875,1.546875,-1.03125,0.49804688,0.8203125,-0.73828125,0.5859375,-1.21875,-0.65625,-1.9765625,-0.046142578,-1.421875,0.43164062,-0.59765625,1.1015625,1.6015625,0.029663086,1.140625,2.15625,-0.515625,0.72265625,0.40625,-0.64453125,0.95703125,1.484375,0.76953125,0.33203125,0.83203125,0.46484375,-0.140625,-0.30273438,-0.40039062,1.0234375,0.29492188,-0.74609375,1.4140625,-0.640625,-1.5546875,1.3359375,-1.65625,-1.203125,-0.64453125,0.29882812,1.5625,-0.59375,-0.30273438,-0.984375,0.38671875,0.01586914,0.40625,-0.10205078,0.48828125,-1.7421875,2.421875,0.796875,-1.21875,2.296875,0.040771484,-1.84375,2.09375,-0.58203125,-0.61328125,0.98828125,-1.1640625,-0.28125,1.5390625,-1.3125,-0.8984375,0.71875,1.5703125,-1.3046875,0.58203125,0.43359375,-0.35546875,-0.28320312,2.484375,2.078125,0.060058594,-0.87890625,-1.2578125,0.69140625,0.5,-0.24121094,-0.24414062,-0.22265625,-1.7109375,-1.40625,-0.5859375,0.234375,1.3203125,-0.9921875,0.6015625,0.020507812,-1.8828125,-1.2734375,0.546875,-0.35742188,-1.890625,-0.375,0.26953125,-0.79296875,-0.57421875,-0.1875,-1.53125,1.3046875,0.24316406,-0.58984375,-0.90234375,1.3046875,1.2421875,-0.609375,1.5546875,1.1484375 +0,0,7,1.390625,1.453125,-0.890625,-1.4140625,-0.546875,-2.125,0.17285156,1.1171875,-0.43359375,-1.171875,0.104003906,-1.3359375,-2.234375,-0.20605469,-0.25390625,1.15625,-0.24511719,0.6171875,-0.15625,0.0019226074,0.6640625,-0.234375,-0.23242188,1.046875,-1.7109375,-0.34765625,-2.0,0.5859375,1.34375,0.51953125,0.5,1.875,-2.34375,-0.18847656,1.2578125,-0.25390625,1.1640625,2.046875,0.111328125,0.8125,-1.46875,-0.38476562,0.4453125,2.171875,0.5390625,1.6171875,0.43164062,0.63671875,-0.13183594,0.34375,0.36914062,-0.10253906,-0.8984375,-1.234375,-0.30078125,-0.296875,-0.34375,-0.01574707,-0.14160156,-0.546875,-0.24609375,0.88671875,-0.4375,-0.35742188,1.390625,0.0025939941,0.46484375,-0.1328125,-0.26757812,0.4140625,-0.515625,-0.24414062,0.13769531,-0.7734375,0.53125,0.07421875,2.234375,-0.078125,-0.265625,-0.19824219,0.88671875,0.7734375,1.6796875,0.48632812,0.67578125,0.59375,-0.77734375,0.34765625,-1.984375,0.25195312,0.484375,1.8046875,2.078125,-0.26367188,-0.05493164,-1.46875,-0.0390625,0.26953125,1.2265625,1.5234375,1.484375,-0.14941406,0.8515625,-0.28515625,-0.76171875,-0.91796875,-1.015625,-1.28125,-0.6796875,-0.032470703,-0.15234375,-0.25585938,2.6875,-0.6875,-0.076171875,-0.703125,-0.34179688,-1.5703125,0.7265625,0.48046875,1.90625,-2.046875,-0.85546875,-2.578125,-0.41601562,0.08105469,-0.80078125,1.375,0.04638672,-1.734375,0.97265625,-0.48242188,1.0,-0.45117188,-2.046875,0.2578125,0.56640625,-0.20996094,0.29101562,-2.34375,0.32421875,0.9609375,1.296875,1.109375,-0.6171875,-0.44921875,-1.921875,1.6796875,0.46484375,0.10546875,-0.26367188,-1.8828125,-0.58203125,1.5390625,-0.049316406,-0.071777344,-0.49023438,0.84375,-0.7265625,2.09375,-2.0625,0.94921875,-0.59375,0.0859375,-0.51953125,-0.25195312,-0.21875,-0.032714844,0.04711914,-0.5546875,-0.25976562,0.5078125,-1.1953125,0.9140625,1.265625,-0.15917969,1.1953125,-1.1796875,0.052246094,-0.42578125,1.125,0.5234375,-0.20507812,-1.375,-0.45703125,-0.12792969,-0.4140625,-0.37304688,-0.31445312,-0.953125,-0.890625,-0.2890625,-0.74609375,-0.7890625,1.4140625,0.53515625,1.1796875,-0.3984375,0.0047912598,0.24609375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv index a6d6cd23..855bd8e8 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,5,-0.8203125,0.5703125,1.25,1.2265625,0.125,-0.82421875,0.037841797,0.77734375,1.9296875,-2.65625,-0.11425781,-0.12451172,-0.6015625,1.171875,-0.34765625,-0.7890625,-0.4921875,-1.2109375,-0.7890625,-0.22949219,-0.5625,-1.5859375,0.27929688,-2.234375,0.123535156,-2.421875,1.7890625,-1.671875,0.07714844,-0.0859375,-1.65625,1.5859375,0.21679688,-0.921875,0.1015625,-1.046875,0.546875,0.26171875,0.39453125,-0.38085938,0.27148438,1.40625,-1.109375,-1.4375,-0.04711914,-0.7421875,-1.03125,0.45898438,-1.5703125,-2.34375,-0.98046875,1.234375,-0.48828125,-0.6640625,0.9140625,2.0,-0.921875,-0.30859375,1.734375,0.5234375,-0.875,-1.96875,0.27734375,-1.296875,-0.42382812,0.14257812,0.9140625,-1.828125,-0.76953125,-0.27929688,-1.265625,1.171875,-0.234375,0.65625,1.5,-0.72265625,0.83984375,-0.25390625,-0.71484375,1.2265625,1.75,0.70703125,1.109375,-0.5234375,0.21386719,0.671875,0.021362305,0.43945312,-0.8828125,0.28320312,0.80078125,0.421875,2.546875,-0.62890625,-0.48632812,0.24804688,0.9453125,0.15234375,-0.9765625,2.21875,-0.33789062,0.67578125,0.46484375,-1.015625,0.6484375,-0.123535156,-0.140625,0.46484375,-1.9375,0.26757812,0.029296875,-0.14746094,0.5546875,0.66796875,0.35351562,-0.56640625,0.1640625,0.6171875,0.92578125,-0.96484375,0.14257812,1.625,0.28320312,2.515625,-0.6484375,-1.7734375,-0.5703125,0.19628906,0.40820312,1.0625,0.3828125,-0.78125,0.11425781,1.0,1.1875,0.41210938,-0.796875,-0.890625,-0.76171875,0.45117188,2.140625,-0.29296875,-0.546875,0.63671875,0.0037384033,-1.0859375,-0.609375,0.26953125,-0.33398438,1.1875,1.1953125,0.31835938,0.004760742,0.65625,0.44140625,-1.703125,-0.8359375,0.828125,0.24902344,-1.1796875,0.17773438,0.31054688,1.625,0.22070312,-0.17773438,0.484375,-1.109375,-0.546875,-1.0078125,-1.1875,0.13378906,1.3125,-0.65625,-0.14355469,0.24707031,1.5390625,1.3515625,1.4296875,-0.6328125,0.28515625,-0.14160156,0.19042969,-0.11669922,-0.84375,1.1953125,1.15625,-1.3125,-1.296875,0.67578125,-1.8359375,-1.578125,-0.85546875,2.0,1.125,0.41796875,0.33398438,-0.5234375,-0.067871094,-0.41601562,-0.22363281 -1,0,6,-1.3125,-0.34960938,-0.38671875,1.65625,1.3984375,-0.6953125,-1.078125,0.061035156,-0.19335938,0.0146484375,0.53125,-0.6015625,-0.6171875,-1.3046875,0.80078125,0.25976562,-0.36132812,-1.046875,0.5546875,-0.44921875,0.67578125,-1.1015625,-0.15625,0.68359375,-0.25585938,-1.2734375,-0.61328125,0.65234375,-1.578125,-0.6484375,0.30859375,0.53515625,0.7578125,-0.6171875,-0.06982422,0.13769531,0.75,0.21386719,-0.47460938,-0.80078125,-0.47265625,0.62109375,-1.59375,-0.52734375,-0.4609375,0.014709473,0.5390625,-0.83984375,-0.875,-1.140625,0.88671875,1.421875,-2.125,2.21875,0.75390625,1.34375,0.86328125,0.30664062,0.69921875,0.3203125,-0.703125,0.578125,0.9140625,-1.328125,0.66015625,-0.30273438,0.671875,-0.2890625,-0.609375,-0.7421875,1.0078125,-0.7734375,-0.16699219,1.0078125,-0.484375,-0.296875,0.17089844,0.46289062,-2.078125,0.77734375,-0.59765625,0.36132812,-0.13085938,-2.328125,-0.28320312,-0.625,-0.578125,-0.76953125,-0.18945312,0.453125,-1.3515625,0.6171875,1.0859375,-0.6328125,-0.8515625,0.30664062,-0.29296875,-0.59765625,-1.1484375,0.79296875,1.6953125,0.10839844,1.390625,1.4296875,1.6640625,-1.015625,2.140625,0.20898438,0.34179688,-0.21972656,1.4296875,0.49023438,-0.84375,-0.18554688,1.0703125,-0.057861328,0.26367188,1.796875,0.546875,0.5390625,-0.54296875,1.5390625,-0.57421875,3.25,2.015625,-1.6015625,0.2421875,-0.3359375,0.49609375,1.1796875,-0.9140625,1.296875,-1.15625,-0.36132812,-1.828125,1.1484375,1.625,-0.33789062,-0.4765625,-1.7109375,0.8046875,-0.49414062,0.3984375,0.34765625,-0.7734375,0.24121094,-0.578125,1.625,-0.546875,-0.2265625,0.66796875,-1.8515625,-1.8828125,2.125,-0.106933594,-1.9140625,-1.9140625,-0.35546875,1.0390625,0.40234375,-0.19628906,-1.2109375,1.1640625,0.23535156,0.6171875,0.5703125,0.48242188,-1.984375,-0.06347656,1.515625,-0.07861328,0.30273438,1.1484375,0.022705078,-0.049072266,-0.6640625,1.0703125,1.34375,2.203125,0.122558594,0.9609375,-0.70703125,-0.29101562,-1.9453125,0.26171875,-0.3125,-1.6015625,-0.58203125,0.515625,-1.90625,-0.43359375,-0.23730469,1.734375,1.2734375,-0.70703125,-0.7265625,0.055908203,-0.4765625,-1.1796875,-0.734375 -1,0,7,0.76953125,0.265625,-0.25195312,1.2890625,0.87890625,-0.98046875,-0.09375,-1.21875,0.73828125,-0.092285156,0.1484375,-0.8984375,-1.125,-0.64453125,0.6875,0.65625,0.8046875,-0.26367188,1.0234375,-0.39648438,0.26171875,-0.625,-2.171875,1.34375,1.7265625,0.39648438,-0.94140625,1.2109375,0.6796875,-0.62890625,-0.75,0.30273438,0.58203125,-1.078125,-1.875,0.15722656,0.96484375,-1.828125,-0.8125,-1.6328125,-0.78515625,0.6875,-1.0703125,1.1328125,-0.61328125,-0.41796875,1.09375,-0.375,-1.0546875,-0.27734375,2.53125,0.7890625,0.484375,2.03125,-0.8046875,0.17773438,-1.1171875,-0.59765625,-0.24902344,0.013977051,1.265625,1.515625,-0.83203125,-0.515625,0.07421875,-0.81640625,0.48046875,-0.60546875,1.484375,0.19726562,-0.55859375,0.0008087158,-1.546875,0.86328125,-1.4609375,0.0006942749,1.1171875,0.51171875,-1.953125,0.004272461,1.2109375,1.3828125,-0.80078125,-1.4375,0.69140625,1.40625,-1.6640625,0.02709961,0.041259766,0.33398438,0.55078125,0.61328125,0.06542969,-0.12792969,-1.4375,0.19433594,-0.19238281,0.16308594,-1.6640625,-0.38867188,0.12988281,0.5625,-1.390625,1.984375,-0.6796875,1.40625,0.35742188,-0.5078125,-0.45703125,0.9765625,1.640625,0.953125,-1.015625,0.546875,0.33984375,0.8203125,-1.09375,1.0625,-0.7265625,-0.45117188,-1.2421875,2.359375,-1.71875,0.3671875,0.72265625,0.21777344,1.3359375,-0.59375,0.43554688,1.046875,-0.119140625,1.3046875,-0.34179688,0.07714844,-0.25,0.007019043,2.703125,-0.1953125,-0.23925781,-0.77734375,0.06591797,0.12988281,-0.6171875,-0.100097656,0.24707031,-1.484375,-0.30859375,-0.9296875,0.20800781,-1.7734375,-0.62109375,-2.15625,0.68359375,1.78125,-0.50390625,-0.49023438,-1.5625,0.3046875,-0.25976562,0.91015625,-0.671875,0.111328125,-0.578125,-0.5859375,0.90625,0.9296875,0.91015625,-0.32421875,-0.6953125,-0.7109375,-1.1484375,0.012512207,2.296875,-1.5234375,-0.033691406,0.75,0.546875,-0.671875,2.359375,1.7734375,2.34375,-0.31835938,-0.91796875,-0.15234375,0.671875,-1.2734375,0.3984375,-1.3671875,-0.73046875,-0.5390625,0.296875,-0.13671875,0.29492188,1.3828125,-1.8359375,-0.29296875,-1.1171875,-0.44726562,0.44921875,0.1640625 +1,0,5,1.703125,1.15625,-0.33398438,0.65234375,-1.03125,0.07519531,1.015625,1.7890625,0.23632812,-1.8828125,0.053466797,0.5625,0.203125,0.107421875,-0.71875,0.7890625,-0.37304688,0.578125,0.546875,-0.578125,0.45507812,-0.86328125,-0.21875,-0.5390625,0.24707031,-0.18554688,-1.09375,-0.265625,-2.171875,-0.69921875,0.24316406,-0.71484375,0.796875,0.765625,0.66796875,-1.671875,0.546875,-0.765625,-0.55078125,-0.3203125,-0.421875,-1.0234375,-0.89453125,0.75,-2.4375,0.4140625,0.8203125,0.671875,1.203125,0.39257812,-0.95703125,-0.34179688,-0.17578125,1.5078125,-1.0859375,0.66796875,1.7265625,0.42578125,0.071777344,-0.49609375,-0.083984375,0.91796875,-0.41992188,0.15039062,0.359375,-1.0390625,-0.62890625,-0.78125,0.15136719,-0.35351562,0.69140625,-2.09375,0.035888672,-0.76953125,1.8515625,2.703125,1.734375,1.03125,-0.6484375,-0.9375,-0.90234375,-0.984375,-0.74609375,-2.125,1.75,-1.015625,1.8046875,0.09765625,-0.96875,1.7109375,1.6953125,-1.4921875,0.53125,0.921875,-1.2109375,0.42773438,0.48632812,-0.22363281,0.23925781,1.09375,-0.63671875,1.1875,0.90234375,-0.3828125,2.484375,-0.78125,0.47460938,1.1171875,0.9765625,1.4453125,0.58984375,0.515625,0.27929688,0.04711914,1.9296875,-0.033203125,-1.5078125,-0.2578125,-0.5078125,-0.6484375,-0.38867188,-0.9765625,0.8515625,-0.20117188,-1.1328125,0.6484375,0.66015625,-0.44921875,-0.6328125,-0.61328125,0.09326172,-0.18847656,-0.25,-0.37109375,-1.9609375,-1.015625,0.1328125,0.48046875,-0.359375,-1.9296875,2.171875,-0.71484375,-0.640625,-1.7265625,-0.011352539,-0.47070312,-0.890625,-0.46484375,1.2890625,4.03125,-0.69140625,0.15820312,-1.8046875,0.69921875,-0.75390625,-0.61328125,-0.30078125,0.515625,-0.31640625,-0.55859375,0.15625,0.087402344,-0.40820312,0.24316406,-0.41992188,0.9140625,0.14355469,1.03125,1.6875,-1.6796875,-0.21191406,0.107910156,-0.39453125,-0.3671875,0.546875,0.78515625,1.0078125,1.0078125,-0.90234375,-0.54296875,-0.66015625,1.265625,-0.029785156,-0.515625,-0.28320312,-1.203125,1.109375,0.7109375,-0.7890625,-0.30273438,-0.53125,-1.609375,0.30273438,-0.38476562,-1.5,1.859375,-0.35546875,-0.04272461,-0.30273438,-0.111328125 +1,0,6,-0.032958984,1.6171875,-1.140625,-1.5625,0.23144531,-1.4921875,0.41796875,1.671875,1.5625,-0.859375,1.0078125,1.0390625,-1.4609375,0.54296875,-0.5078125,0.70703125,0.020874023,0.046875,-0.18945312,-0.17480469,-0.01928711,-0.37890625,1.4609375,0.07910156,-0.7578125,0.007659912,-1.953125,0.796875,0.59765625,-0.7109375,0.63671875,0.7265625,-1.9140625,0.05029297,1.96875,-1.171875,1.296875,1.734375,-0.33984375,1.6328125,-0.828125,0.625,0.29492188,0.15527344,-0.70703125,2.390625,0.11230469,1.375,1.1015625,0.24609375,-0.59375,1.046875,-0.099609375,-0.40429688,-1.3828125,0.0078125,0.08984375,0.21777344,-0.953125,1.2265625,0.23632812,1.1953125,-0.82421875,0.67578125,0.35351562,-1.421875,0.27539062,0.29101562,-0.85546875,0.7734375,-0.2890625,0.609375,1.6875,-0.57421875,0.20117188,2.078125,0.7578125,0.625,-1.15625,-0.21972656,0.026000977,-0.16992188,0.50390625,-0.78125,0.890625,1.1328125,-0.9921875,-0.734375,-1.3984375,-0.49414062,0.07324219,1.421875,1.234375,0.0016174316,0.43945312,-1.9296875,-0.24121094,0.052490234,0.6796875,-0.07373047,0.9375,0.76953125,0.84375,-0.1484375,-0.58203125,-0.46679688,-0.7890625,0.0003528595,0.008300781,0.49023438,-1.078125,0.29101562,1.625,-1.6796875,1.34375,0.02709961,-1.484375,-0.90625,0.52734375,-0.41015625,1.328125,-2.6875,0.53515625,-1.5546875,-0.072753906,0.921875,-0.33203125,-1.328125,0.73828125,-0.15527344,-1.015625,-1.3125,-0.35546875,1.3828125,-1.9140625,0.94140625,1.671875,0.19921875,1.0,-2.046875,1.3828125,0.37304688,0.38671875,1.0546875,-1.0546875,-1.4765625,-0.94140625,-0.734375,-0.68359375,-0.69921875,0.41015625,-1.734375,-0.25390625,0.71875,-1.421875,2.234375,0.1640625,-0.123046875,0.00065612793,0.515625,-0.30664062,0.8671875,0.3984375,0.78125,0.51171875,-0.49804688,-0.33398438,0.66796875,-0.75390625,-1.71875,-0.9375,-0.15136719,-1.671875,-0.64453125,0.9609375,-0.55859375,1.0625,0.75,-0.57421875,-0.734375,0.3359375,-1.3046875,-0.515625,-0.51953125,-0.032226562,0.21875,-1.140625,-1.21875,-1.0625,-1.1015625,0.31640625,0.23535156,-1.375,0.32421875,-0.66015625,3.34375,1.5625,0.119140625,-0.84765625,-0.39453125 +1,0,7,1.5703125,0.671875,-0.91015625,0.052734375,-1.5078125,0.123046875,0.4375,1.0703125,-1.25,-1.6796875,0.25976562,-0.296875,-0.80078125,0.23828125,-1.171875,-0.7734375,-1.1640625,0.115234375,-0.97265625,-0.46875,0.49023438,-0.42578125,-0.58984375,-0.4296875,-0.02746582,-1.4453125,-1.921875,-0.65234375,-0.81640625,0.055664062,-0.91796875,-1.125,-0.36914062,0.94921875,0.049072266,-0.515625,0.34960938,-1.7578125,0.59765625,0.50390625,1.2109375,0.0015792847,-0.39648438,1.6015625,0.67578125,-0.06225586,-0.82421875,0.3046875,-0.14453125,-0.09082031,0.26171875,-0.33203125,-1.0625,0.40039062,-1.2890625,-0.58203125,0.1640625,1.1875,-1.0078125,-1.3828125,-0.4453125,0.98046875,0.6953125,0.953125,1.6484375,-0.39648438,0.16210938,-0.953125,-1.34375,0.10498047,0.54296875,-0.5078125,1.328125,-0.66796875,0.78515625,0.9140625,2.75,1.3125,0.51171875,0.076660156,-0.98046875,-0.1640625,0.24902344,-1.859375,0.43359375,1.171875,0.47070312,-0.828125,0.099121094,1.1953125,0.114746094,1.1953125,0.58984375,0.5703125,-1.234375,-1.328125,-0.609375,-0.0012664795,1.359375,1.4609375,0.953125,1.3515625,-0.29296875,-1.625,1.2890625,-1.4921875,-0.43945312,1.1015625,0.4921875,-0.40429688,-0.3046875,1.2421875,1.6015625,0.515625,0.72265625,0.46484375,-0.30078125,-0.016967773,-0.13769531,1.609375,0.36914062,-2.265625,-0.81640625,-0.58984375,-0.33203125,-1.3046875,0.21777344,-0.875,-0.044921875,-0.18847656,0.90234375,-0.9296875,-0.018676758,0.58203125,-1.171875,2.265625,-0.47460938,-1.3359375,1.4609375,-2.28125,0.7421875,-0.47265625,-0.49609375,-0.625,1.078125,0.359375,0.28320312,0.77734375,2.71875,3.46875,0.13476562,-0.58203125,-1.4609375,0.8984375,-0.5078125,0.51953125,0.44140625,0.671875,-1.3671875,0.828125,0.8359375,1.53125,0.4140625,-0.40234375,0.080566406,-0.4375,-0.17382812,1.6484375,0.24414062,-1.5703125,-0.53515625,-1.15625,0.09277344,-0.6640625,0.8671875,1.15625,-0.30078125,1.1328125,1.1015625,-0.859375,0.096191406,0.20605469,0.6875,-1.078125,0.20996094,-0.064941406,0.31445312,1.40625,0.5546875,-1.4296875,0.16601562,-2.234375,0.13574219,-2.125,-0.78125,1.84375,-0.037841797,-1.140625,-1.0625,-0.1796875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv index 34da42cc..a4049a56 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,5,-1.140625,-1.0546875,-0.25390625,-0.48242188,0.87109375,0.18457031,0.69921875,-0.37695312,0.9453125,-0.88671875,-0.58984375,-1.2734375,-1.0625,0.084472656,-0.52734375,-0.80078125,0.515625,1.59375,1.4296875,0.65625,0.86328125,0.50390625,-0.32226562,0.9140625,0.28515625,0.55859375,0.49804688,1.28125,0.95703125,-0.40429688,-1.078125,0.100097656,0.41210938,-0.44921875,-0.47265625,-0.4296875,0.8984375,-1.6015625,-0.34375,-0.27148438,0.18945312,-0.048828125,-1.0,0.45898438,0.73828125,-1.2109375,-0.84375,0.98828125,-1.21875,-1.484375,0.453125,0.6640625,-1.40625,0.5234375,0.515625,0.4921875,-0.57421875,0.5546875,0.10888672,0.71875,-1.59375,-0.50390625,0.70703125,0.765625,-0.14355469,0.19628906,1.46875,0.48242188,0.6328125,-1.2109375,0.2109375,-1.0859375,-0.26367188,1.3125,-2.09375,0.390625,0.18261719,1.09375,-1.03125,-1.34375,-0.13378906,2.15625,-0.86328125,-0.55859375,0.94140625,0.06933594,-0.76953125,-1.8515625,0.16992188,0.53515625,-0.74609375,-0.58984375,1.140625,-0.359375,-0.19238281,0.78125,0.90625,-1.0390625,-0.9140625,1.203125,-1.328125,0.33007812,-0.66015625,0.8828125,-0.609375,1.6328125,-0.56640625,0.33984375,-2.359375,-0.70703125,2.84375,0.26367188,1.8046875,-0.92578125,0.8828125,-0.6640625,-1.0078125,-0.5859375,0.49804688,0.51171875,1.1015625,0.23339844,0.7109375,1.25,0.6015625,0.73046875,-0.37304688,-0.70703125,0.84375,1.09375,-1.2578125,-2.171875,0.74609375,1.390625,-0.6953125,-0.52734375,1.59375,-1.1171875,-1.140625,0.24609375,-0.14257812,0.44921875,-0.83984375,-0.8515625,-1.734375,-2.21875,-0.06933594,0.9609375,-1.25,-0.6640625,-0.41992188,-0.984375,0.64453125,0.20800781,-0.43164062,-0.265625,0.80859375,0.69921875,-1.109375,-0.7734375,-0.17382812,0.1015625,-1.8515625,-0.6796875,1.546875,1.3203125,-0.55078125,0.79296875,-1.8203125,2.109375,-1.203125,2.328125,1.7890625,1.2578125,0.515625,0.3125,0.83203125,0.07861328,0.057128906,3.109375,1.09375,2.015625,-1.0390625,-2.03125,-0.26171875,-0.8984375,-0.72265625,-0.38867188,0.20605469,-0.6640625,0.36132812,-1.546875,0.4296875,0.671875,0.43164062,0.29882812,0.5703125,-1.078125,-0.008300781,0.37695312 -2,0,6,-1.984375,0.23242188,-0.41210938,0.8359375,0.40429688,0.859375,-0.28320312,0.55859375,0.28515625,-0.57421875,0.43554688,-1.1484375,-1.0546875,0.66796875,-0.625,-0.41601562,-0.29296875,0.734375,1.21875,0.92578125,-0.20507812,-0.28125,1.5,0.44335938,1.5546875,-0.66796875,0.59375,-0.010253906,-0.03930664,0.2578125,-1.5546875,1.4375,-0.76953125,-1.09375,1.171875,-0.828125,0.15136719,-0.32617188,-1.1484375,0.1484375,-0.45507812,-0.59375,-0.23144531,-0.6640625,0.61328125,0.010803223,0.15429688,-0.20898438,-0.6484375,-0.60546875,0.47265625,0.18652344,-1.484375,-0.23242188,0.1171875,2.578125,-0.8671875,-1.3359375,1.9921875,1.6640625,0.578125,-0.27539062,0.62109375,0.068847656,0.71484375,0.29101562,0.19335938,-0.75,-1.4609375,-2.28125,-2.3125,0.34179688,0.6171875,-1.28125,0.62109375,-0.75390625,0.34960938,-0.43359375,-1.0078125,0.84765625,0.0065612793,1.796875,-0.25976562,-1.65625,0.42382812,-0.024169922,-2.109375,-0.83203125,0.45703125,1.5078125,0.88671875,0.8828125,1.140625,-0.72265625,-0.82421875,-0.22460938,0.84765625,-1.3125,-1.390625,1.796875,-0.22363281,-0.52734375,-0.27148438,0.27148438,-0.5703125,0.59765625,1.828125,-0.5,-1.21875,-0.46679688,-0.83984375,0.8359375,-0.72265625,-1.4140625,0.40234375,0.25195312,-1.8046875,1.2734375,-0.18261719,-0.7890625,0.32421875,-0.123535156,-1.0703125,1.5,0.47070312,-0.82421875,-0.25390625,0.5546875,0.6328125,0.86328125,-0.06591797,-0.13378906,0.18359375,0.4609375,0.1640625,-1.953125,0.23535156,-0.5859375,-1.125,-0.016967773,1.625,-0.07373047,0.29296875,1.0859375,-0.32617188,-1.3671875,-1.8046875,-0.060791016,-0.43164062,0.25976562,0.734375,-0.19433594,0.05810547,0.546875,-1.5,0.6328125,0.69921875,-0.41992188,0.6796875,-1.3515625,-1.3359375,-0.96484375,-1.21875,-0.41015625,0.15136719,-1.3515625,-0.7734375,-0.03930664,-0.98828125,-0.50390625,0.14453125,0.87890625,0.37304688,0.34765625,0.90625,1.6484375,2.359375,-0.15234375,1.0,2.109375,1.453125,2.59375,-0.859375,-2.15625,2.296875,1.828125,0.20019531,-0.51171875,1.4375,-1.453125,-0.33398438,-0.82421875,-0.16699219,2.390625,0.7421875,0.36523438,0.8671875,-0.66796875,1.171875,-1.046875 -2,0,7,1.1640625,-0.16113281,-0.31054688,0.09472656,0.9140625,-0.62109375,0.076171875,-0.022338867,-0.3828125,-0.31640625,-1.5,-3.078125,-1.546875,-0.5625,-0.06689453,0.515625,0.6484375,0.796875,0.76953125,-0.5234375,0.12988281,-0.2734375,-0.33007812,0.62890625,0.6171875,0.86328125,-1.4296875,0.37890625,-0.119140625,0.4375,-1.15625,-0.88671875,-0.6875,-0.91796875,0.23242188,-0.90234375,-0.5703125,-1.5859375,-1.0703125,-0.055908203,0.38085938,-0.578125,-0.203125,0.071777344,0.03112793,0.34765625,0.46679688,0.27148438,0.016357422,-0.8046875,0.92578125,0.68359375,-0.828125,0.30859375,1.4140625,1.3984375,-0.8125,-1.1015625,-0.40039062,0.3671875,0.66015625,0.28710938,-0.23632812,-0.13769531,0.40039062,1.21875,2.546875,0.42382812,-0.0546875,-0.75,0.640625,-1.0390625,-0.7109375,-0.14160156,1.3125,-0.14550781,-0.12988281,0.17285156,-1.828125,-0.6484375,0.31054688,3.0625,-0.7109375,-1.3359375,-0.24804688,0.58984375,-1.9765625,1.0703125,-0.10449219,0.95703125,-0.65234375,-1.1640625,1.6875,0.42578125,-0.006958008,0.5625,-0.022583008,-0.64453125,-1.6484375,-0.34179688,1.609375,0.07470703,0.97265625,0.95703125,0.859375,-0.51171875,0.1796875,-2.1875,-0.390625,-0.8046875,1.4296875,-0.08300781,0.079589844,-1.3125,0.6328125,0.68359375,0.31835938,0.8515625,0.13769531,0.45117188,0.1328125,0.75,-0.84765625,1.7265625,1.3984375,-0.23242188,0.171875,0.14648438,-0.38085938,0.42382812,-0.578125,-0.5390625,-1.1640625,-0.69140625,0.100097656,-2.15625,1.015625,-1.859375,-0.7265625,0.5859375,0.625,-1.171875,0.69921875,0.27734375,-1.421875,-2.0,-1.078125,0.30078125,-0.57421875,-1.28125,0.49414062,-1.8828125,-0.21386719,1.234375,-0.26757812,-1.3828125,0.91015625,0.38476562,1.2265625,-1.234375,-1.6171875,-0.47070312,0.12988281,-0.6875,-1.2421875,-1.1015625,-1.234375,-0.27734375,-0.32226562,1.1328125,-0.41992188,1.34375,1.0703125,1.28125,0.22167969,1.09375,0.91796875,-0.9296875,1.203125,2.3125,3.5,-0.12011719,-2.15625,-0.515625,0.7890625,-0.16699219,0.83203125,-0.17480469,1.4375,0.24902344,0.34960938,-0.04736328,0.24316406,2.359375,-0.42382812,1.0234375,2.125,-0.19238281,0.74609375,0.076171875 +2,0,5,1.7734375,0.96875,-0.4609375,-0.78125,1.203125,-0.75,-0.22753906,1.953125,-0.38671875,-1.609375,0.796875,0.68359375,-1.3359375,-0.5234375,-0.109375,2.40625,-0.0047912598,-1.6796875,-0.3046875,0.029785156,-1.03125,-0.9765625,-0.04248047,1.375,0.21289062,1.390625,-2.5,-0.6953125,-1.6796875,-0.48828125,-0.22753906,1.8203125,-0.025268555,1.0703125,0.97265625,-1.3515625,1.40625,0.859375,0.80859375,1.3515625,1.1796875,0.34179688,1.1640625,-0.32226562,-0.65234375,0.056396484,-0.5546875,0.24707031,-0.20703125,0.06982422,0.10498047,-1.9375,-0.5859375,-0.42773438,-0.95703125,0.44921875,1.625,-0.022583008,0.6796875,-0.51953125,-0.21679688,1.4296875,-0.9375,0.83203125,-0.13964844,-0.95703125,0.58984375,1.0546875,0.77734375,-0.73828125,-1.0390625,-0.16503906,0.5078125,-0.53125,1.875,1.7578125,1.2890625,0.7109375,-0.36914062,-0.28125,0.55859375,0.44726562,0.16210938,-1.296875,1.0859375,-1.53125,1.1015625,1.015625,0.24414062,1.4765625,0.40234375,-0.69140625,-0.84375,1.046875,-0.42773438,-0.13574219,-1.6484375,-0.06640625,-0.83984375,-0.076171875,0.012207031,-0.3671875,0.6640625,0.22363281,0.083984375,-0.60546875,-1.546875,-0.053466797,-0.30664062,0.022338867,-0.203125,-1.546875,1.8515625,-1.1640625,1.4609375,0.75,-2.125,-0.013977051,-0.484375,-1.578125,0.57421875,-1.0234375,-0.52734375,-0.875,-0.4140625,2.46875,-0.95703125,0.13671875,0.1875,-1.3984375,-0.6953125,-1.59375,0.29882812,0.17285156,-1.3203125,-0.26367188,1.3984375,0.890625,0.27539062,-1.234375,1.5625,-1.734375,-0.90234375,0.7734375,-0.65234375,-0.072265625,-0.64453125,1.125,0.7734375,0.53125,-0.84375,-2.234375,0.98046875,-0.59765625,-0.42773438,0.26171875,0.30859375,-0.89453125,0.62109375,1.1328125,-0.76171875,1.515625,1.03125,1.5546875,-0.092285156,1.4765625,0.53125,0.90625,0.2890625,0.5,-0.69140625,-0.19824219,-0.041503906,0.890625,-0.38671875,0.39453125,0.44726562,-0.46289062,0.083984375,-1.09375,0.83984375,-0.265625,-1.015625,-1.9375,-0.45703125,0.36132812,-1.890625,-0.81640625,0.31054688,-2.046875,0.39648438,1.0234375,-1.4765625,-0.38671875,0.071777344,2.359375,-0.5703125,0.671875,-0.88671875,0.515625 +2,0,6,0.92578125,0.53125,-0.47851562,-0.29296875,0.23242188,-0.30859375,0.5390625,0.94921875,-0.23144531,-0.5078125,-0.17089844,-1.015625,0.13867188,0.93359375,-1.0546875,0.89453125,-0.515625,-2.171875,0.359375,-1.046875,0.8359375,-0.67578125,-0.52734375,-0.27539062,-1.203125,-1.0859375,-1.5546875,-0.37890625,-3.03125,0.26757812,-1.09375,-0.5390625,0.010498047,0.46875,1.2734375,1.3984375,1.078125,-0.65625,-1.84375,2.125,-0.41210938,0.68359375,0.0035552979,0.734375,-0.08642578,0.31835938,0.74609375,-0.76953125,0.74609375,0.013366699,-1.71875,-1.03125,-0.86328125,0.875,-2.921875,0.82421875,0.81640625,-1.09375,-0.03466797,-2.0625,1.15625,-0.29882812,-0.4609375,0.13964844,0.014038086,-0.9296875,-0.61328125,-0.53515625,0.38867188,1.3671875,0.5390625,-1.96875,-1.1796875,-0.87109375,0.020263672,2.078125,1.484375,1.3125,-0.84375,-0.8125,1.0234375,0.41601562,0.09814453,-1.484375,0.21191406,-0.13671875,0.5546875,0.625,-0.98828125,0.6796875,1.1484375,-0.19433594,0.515625,0.3828125,-1.859375,-0.52734375,-0.122558594,0.20019531,1.5234375,-0.19921875,-1.3984375,0.104003906,1.6796875,0.98046875,0.15136719,-0.9921875,2.109375,-0.31054688,0.4296875,0.71484375,0.8046875,0.81640625,1.125,-0.66796875,1.15625,0.020874023,0.2578125,-1.09375,-0.640625,-1.5,0.77734375,-1.0625,0.8671875,-1.25,-0.71484375,1.375,-0.95703125,-2.3125,-0.73046875,0.40820312,1.2109375,-0.31640625,0.47265625,-0.20996094,-1.5546875,-0.5546875,-0.24121094,-0.18457031,0.49414062,-1.6328125,3.125,-0.421875,-0.22460938,0.10107422,-0.106933594,1.796875,-1.671875,0.86328125,-0.91796875,2.140625,0.053710938,-0.34765625,1.078125,-0.9765625,-0.73828125,-0.14257812,0.10839844,0.62890625,0.96484375,1.09375,-0.36523438,1.4453125,1.4296875,1.1484375,-0.48046875,0.83203125,-1.015625,-0.734375,1.78125,-0.048583984,0.99609375,-0.09814453,-0.5703125,-0.609375,1.1796875,0.6015625,-1.0,-0.375,1.0625,-0.93359375,0.00065612793,-0.8828125,0.109375,-0.28125,-0.13085938,0.23925781,1.078125,0.2578125,0.2578125,-1.6875,-0.20703125,-0.40429688,0.8515625,-0.35351562,1.4921875,0.71484375,0.53125,-0.33398438,1.515625,-0.057128906 +2,0,7,1.2734375,0.94140625,-0.05908203,0.140625,-0.060302734,-0.80078125,0.24023438,1.0390625,0.39648438,-0.9609375,0.75390625,1.3359375,-0.6328125,1.140625,-1.40625,1.1015625,0.48632812,-1.375,-0.375,-0.15234375,1.2265625,-0.71875,-0.68359375,0.59765625,0.03466797,-0.06298828,-0.3125,-0.041748047,-1.671875,-0.47460938,-1.1953125,0.118652344,1.53125,-0.3359375,2.125,1.171875,1.3984375,0.625,-2.0,2.359375,-0.875,0.69140625,-0.39257812,0.5703125,0.26367188,0.15429688,-0.17089844,-0.4296875,0.047607422,0.76171875,-1.0703125,0.15625,-0.30078125,-0.0859375,-1.28125,0.9609375,1.015625,0.41015625,0.03540039,-1.0859375,1.71875,-0.24121094,1.3203125,-0.1796875,-2.28125,-0.06689453,-0.6015625,0.16796875,0.28320312,0.93359375,-0.7421875,-1.2578125,-0.6953125,0.3203125,-0.21484375,2.046875,1.7265625,0.40429688,-1.3125,-1.609375,1.234375,-0.43359375,0.65625,-2.203125,-0.89453125,-0.73828125,0.44921875,1.2890625,-1.4609375,0.29492188,1.359375,-0.18261719,-0.6640625,0.515625,-2.03125,0.8203125,0.16308594,1.5078125,0.7109375,1.4140625,-1.765625,-0.05859375,1.4140625,0.8515625,-0.86328125,-0.014404297,1.1875,-1.09375,-1.4609375,0.13476562,0.953125,-0.053955078,2.1875,-0.875,0.27734375,-0.9140625,1.0234375,-0.7890625,-0.31835938,-2.078125,1.8984375,0.23339844,-0.35742188,-1.046875,0.484375,0.56640625,-1.0703125,-2.078125,-0.4765625,-0.11376953,0.49609375,-1.5390625,-0.24707031,0.044433594,-1.90625,1.4921875,0.3046875,-0.48046875,-0.25976562,-0.875,1.765625,-1.6953125,-1.3359375,-0.15332031,-0.25976562,1.25,-1.0703125,1.34375,-1.8125,-0.1875,0.60546875,-0.01953125,0.84375,-1.5,-0.9296875,-0.19042969,0.61328125,-0.44140625,0.6953125,0.8359375,-0.25976562,0.32226562,-0.39257812,1.375,-0.921875,1.5703125,-1.296875,-0.67578125,1.0390625,0.5390625,-1.1484375,-0.6484375,-0.62109375,-0.2890625,0.96484375,0.421875,0.94140625,-0.0024261475,0.265625,-0.96484375,-0.41601562,-0.45117188,-0.18652344,-1.3671875,0.54296875,-1.2890625,0.14648438,0.22949219,0.8515625,-1.4609375,1.1484375,0.6953125,-0.37304688,-0.87890625,-0.41796875,0.12402344,1.265625,1.7421875,1.4921875,-0.45117188 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv index 916e7e56..f64c514e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,5,-0.5390625,-1.1171875,-0.26757812,-0.4453125,0.3984375,0.10986328,0.29492188,0.28515625,0.60546875,-0.703125,-1.421875,-1.4296875,-1.328125,-0.004211426,-0.671875,-0.90234375,0.49804688,0.609375,1.875,0.55859375,0.8203125,0.36328125,-0.13867188,0.78515625,0.32617188,1.125,-0.7421875,1.015625,0.83203125,0.5859375,-1.7265625,-0.06738281,-0.24414062,-0.49023438,0.484375,-0.7890625,-0.25,-1.4296875,-0.06298828,0.08886719,0.34570312,0.3515625,-0.578125,0.90625,0.83984375,-0.7890625,-0.80859375,1.5859375,-0.55859375,-1.796875,0.24804688,1.0,-1.3984375,0.6484375,0.8203125,0.8359375,-1.421875,0.11279297,-0.0005912781,0.16210938,-1.171875,-0.0061035156,1.4296875,0.93359375,-0.22363281,0.84375,0.9453125,0.51953125,0.15917969,-0.24414062,0.6171875,-1.40625,-0.30859375,1.0546875,-2.046875,0.45703125,0.90625,1.2578125,-1.6484375,-1.03125,-0.5,2.5625,-0.5,0.265625,1.046875,-0.24609375,-1.140625,-1.1875,0.003967285,0.7421875,-0.50390625,-0.34960938,0.89453125,-0.9609375,-0.35546875,-0.0390625,1.0625,-1.53125,-1.0234375,0.9453125,-0.7421875,0.9296875,-0.59375,0.94921875,-0.66015625,1.453125,-0.9375,0.087890625,-2.015625,-0.12597656,2.234375,0.27929688,2.125,-0.90234375,0.71484375,-0.03930664,-0.58203125,-0.5703125,0.115234375,0.8671875,0.78125,0.578125,0.34570312,1.3515625,0.6484375,1.125,-0.27929688,-0.11767578,1.15625,0.16015625,-1.0703125,-1.8984375,0.29101562,0.64453125,-0.43945312,-1.15625,1.5625,-0.828125,-1.125,0.14550781,-0.8125,0.41601562,-0.27148438,-0.27734375,-2.3125,-2.09375,0.047607422,0.6171875,-1.703125,-0.78125,-0.45703125,-1.1328125,0.31445312,-0.038085938,-0.77734375,-0.91796875,0.30078125,1.0625,-0.42382812,-0.51171875,0.3046875,0.100097656,-1.484375,-1.3046875,1.5,0.8671875,-0.13867188,0.2734375,-1.515625,2.125,-0.87890625,2.015625,1.8828125,1.1875,0.79296875,0.265625,0.6640625,-0.66796875,0.33984375,2.796875,2.140625,1.78125,-1.9140625,-2.171875,-0.37695312,-1.234375,-0.30273438,-1.328125,0.8671875,-0.29492188,0.032958984,-1.0390625,-0.33007812,0.9765625,0.35742188,0.421875,1.0078125,-1.0546875,0.87109375,0.09082031 -3,0,6,1.1171875,-0.46679688,-0.24707031,0.2578125,1.4296875,-2.078125,-1.5078125,-0.8046875,1.203125,0.011291504,-0.3203125,-0.58984375,-1.1640625,-1.4375,0.83203125,1.5,-0.2890625,0.3671875,0.1015625,-0.49414062,1.4453125,-0.5703125,0.515625,0.40820312,-0.28710938,-0.44726562,-1.7109375,0.23730469,0.33398438,0.036376953,-1.3671875,0.86328125,0.48242188,0.72265625,-0.3828125,0.34765625,0.81640625,-0.34179688,-0.29296875,-1.5625,-0.66796875,-0.40039062,0.65234375,-1.7109375,1.2265625,-1.40625,0.9140625,0.07373047,-0.5234375,-1.453125,2.015625,1.7265625,-0.67578125,-0.39453125,-0.52734375,-0.40039062,1.0234375,0.95703125,-0.73828125,-0.9453125,-0.00091171265,-0.52734375,-0.328125,-1.609375,0.029174805,1.4375,-0.09814453,-0.5859375,-0.64453125,-1.265625,1.125,0.8125,-1.5,0.515625,-1.3203125,-1.9296875,-0.265625,-1.84375,0.609375,1.234375,1.8125,1.8359375,0.45703125,-1.140625,0.06640625,0.050048828,-0.70703125,-0.29101562,-0.6328125,1.34375,-1.609375,1.1484375,0.421875,0.32421875,-0.8125,-0.73046875,1.3984375,-1.359375,0.3515625,0.16113281,1.1171875,0.3046875,-0.34960938,0.32421875,-0.87109375,1.75,1.4609375,0.32421875,0.796875,-0.47460938,1.0859375,0.4296875,-1.2421875,-1.1875,-0.10058594,-0.13183594,-0.8125,0.2421875,1.3125,0.59375,-0.68359375,1.1484375,1.46875,0.94140625,0.072753906,-0.62890625,-0.7578125,-1.5703125,0.66796875,1.4453125,0.27539062,-0.421875,-0.296875,0.640625,-0.81640625,-1.0,1.1875,0.007080078,-0.05102539,-0.609375,0.29492188,0.28710938,1.765625,0.7109375,-1.8984375,-0.018066406,-2.78125,1.234375,1.4921875,0.033203125,0.74609375,-1.078125,0.57421875,0.625,-0.22265625,-2.625,-1.2265625,1.3203125,0.75,0.51953125,-0.44921875,-0.4765625,0.4765625,-0.69921875,0.016723633,0.36914062,-0.22851562,0.29882812,0.25195312,0.30859375,1.1640625,0.41015625,0.55859375,0.9765625,-1.546875,-1.1484375,-0.2890625,1.921875,1.4453125,1.5390625,0.18945312,-0.83984375,-1.34375,-1.9296875,1.9765625,0.09814453,0.14648438,-0.3515625,-0.42773438,0.016723633,-0.45898438,-1.8984375,1.0859375,2.015625,-1.0859375,-0.17089844,1.1484375,-0.41601562,0.3515625,-0.5703125 -3,0,7,0.69921875,-0.6015625,-0.67578125,0.35546875,0.42578125,0.049072266,-0.7421875,0.34960938,0.671875,-1.171875,0.328125,-0.5234375,-0.6015625,0.87890625,0.87890625,-0.84375,0.8359375,-0.048583984,1.6171875,-0.75390625,1.5234375,-0.31054688,-0.16992188,1.5625,3.296875,0.95703125,-0.095703125,1.890625,1.2109375,2.15625,-0.65625,1.9609375,0.734375,-0.43164062,0.15625,0.47265625,-0.71484375,0.007080078,-0.65234375,0.890625,-1.09375,-0.2578125,-0.63671875,0.65625,2.03125,-0.62890625,0.6484375,0.078125,-1.828125,-0.671875,-0.98046875,0.24804688,-0.087890625,0.4375,0.12890625,-0.091308594,-2.078125,-0.16699219,-0.041748047,1.078125,-0.92578125,0.70703125,0.20019531,-0.016479492,0.06542969,0.48632812,1.28125,-1.0703125,-0.89453125,-0.49414062,1.03125,-0.7578125,-0.7109375,0.48242188,-0.9765625,-1.0546875,2.1875,-1.875,-1.7265625,1.578125,-0.078125,1.0546875,-0.7109375,-0.8828125,0.25195312,0.265625,-0.09277344,-0.94921875,-0.021728516,0.29296875,0.16796875,1.5703125,1.1796875,-1.3203125,-1.125,-0.8203125,1.7421875,-0.76171875,-1.5234375,0.40820312,-1.0390625,-0.59375,-1.546875,-0.89453125,-1.109375,0.58203125,0.11816406,1.5859375,0.64453125,-0.50390625,-0.095703125,-0.50390625,-1.1640625,0.91015625,1.609375,-1.40625,-1.3515625,-0.30273438,0.44140625,0.6796875,-0.20507812,0.3671875,0.69140625,-0.45117188,0.032958984,0.31640625,0.44140625,0.59765625,0.18945312,1.359375,0.6171875,-0.45898438,0.86328125,1.390625,-0.6484375,-1.5703125,0.671875,-1.0078125,-0.75390625,0.09375,1.78125,-0.53125,0.9921875,0.84375,-0.44140625,-0.9375,-0.890625,-1.5859375,-1.3125,-0.5390625,1.046875,-2.40625,1.7421875,-0.15234375,-0.21484375,-0.29101562,-1.15625,0.47070312,0.30859375,-1.3515625,-0.36328125,-0.33984375,-1.3515625,-0.609375,0.46484375,0.12890625,-1.5078125,1.4921875,-1.0234375,0.87109375,-0.10449219,1.8515625,0.91796875,0.23242188,-1.28125,0.22753906,0.984375,0.8046875,1.1875,1.109375,-0.14355469,1.6796875,-0.48046875,-2.75,1.6015625,-0.06347656,-1.4609375,-1.515625,-0.5703125,-0.34765625,0.3515625,-0.66015625,0.09423828,-0.72265625,0.796875,-1.078125,0.6796875,-0.41601562,0.31640625,-0.87109375 -4,0,5,0.421875,0.3125,-1.03125,0.5859375,-0.43359375,-1.0390625,-1.9453125,-0.5546875,1.125,-0.69921875,0.22167969,-0.18261719,-0.66015625,0.032958984,-0.6796875,0.52734375,0.25585938,0.47851562,0.65625,0.65625,1.6484375,-0.46484375,0.41992188,0.33203125,-0.9296875,-0.27539062,-1.3203125,0.16894531,-0.14160156,-0.5,-0.37109375,0.11328125,0.28320312,-0.38867188,-1.0,-0.07080078,-0.45703125,-0.75,-1.09375,-1.515625,-0.47851562,-0.18261719,-0.043701172,-1.0390625,0.53515625,-0.640625,0.5,-1.890625,0.46289062,-1.375,2.984375,1.359375,-1.2421875,1.1640625,-0.37304688,2.0,0.578125,-0.06640625,-0.52734375,0.13476562,1.640625,-0.095703125,0.55859375,-0.26367188,-0.296875,0.515625,-0.34179688,-0.75390625,1.7109375,-1.5390625,0.77734375,-0.265625,0.18457031,0.75,-2.484375,-0.33007812,-0.953125,-0.16308594,-0.54296875,0.47851562,1.703125,1.5390625,-0.89453125,-1.4921875,1.28125,1.2734375,-1.390625,-0.3359375,-1.6875,0.59375,-1.796875,0.51953125,-2.21875,0.49609375,0.03112793,-0.4140625,1.828125,-0.515625,-1.1328125,0.44726562,-0.48828125,1.2265625,0.31054688,0.4375,-0.34375,1.7578125,1.109375,-0.80078125,0.21875,1.1015625,1.8671875,0.9375,-1.34375,-1.5,0.65234375,0.59765625,-2.34375,0.765625,-0.021484375,-1.34375,-1.703125,1.3671875,-1.4140625,0.31835938,0.625,-0.05517578,0.82421875,0.34375,-0.22851562,1.34375,-1.1484375,0.33984375,0.063964844,0.7578125,-0.11035156,-0.37890625,2.671875,-0.040039062,0.3203125,-0.31835938,-0.7578125,-0.58203125,0.27734375,-0.10058594,-0.42382812,-1.671875,-1.3125,0.071777344,0.62890625,-1.2265625,0.6953125,-1.3046875,-1.0390625,1.21875,-1.5625,-0.53515625,-0.68359375,0.98828125,0.7421875,-0.36328125,-1.265625,-0.11669922,-0.52734375,-1.5390625,0.8671875,1.125,0.40625,-0.94140625,-1.1015625,-1.1875,0.41601562,0.34375,1.140625,0.115234375,1.3046875,-0.46289062,1.59375,0.59765625,1.6640625,2.40625,1.953125,0.05102539,-0.28125,-0.359375,0.52734375,0.94921875,-0.82421875,-1.3359375,-1.1484375,-0.07324219,1.1796875,0.80859375,0.28125,1.359375,-0.036376953,0.75,0.18554688,0.734375,0.15527344,0.74609375 -4,0,6,0.7421875,0.29101562,-1.859375,-0.060058594,1.2578125,0.11621094,-1.2578125,-0.5078125,-0.12792969,-1.046875,0.67578125,-2.953125,-1.8203125,0.45507812,0.6015625,0.83203125,1.1796875,0.63671875,0.12890625,0.38476562,1.109375,1.296875,1.3515625,0.6875,-1.1171875,-1.0078125,-1.125,0.45898438,-1.328125,1.0546875,-0.005706787,0.4296875,-0.30664062,-0.96484375,0.67578125,1.4765625,1.859375,-1.1328125,-0.8671875,-1.078125,-0.14648438,0.640625,0.8046875,0.30078125,0.26367188,0.050048828,-0.48828125,-1.3203125,0.96484375,-1.0859375,1.6015625,-0.30273438,-0.22851562,0.013977051,0.84375,1.4609375,0.19824219,-0.8359375,0.2578125,0.47851562,-1.0390625,-0.71484375,1.21875,-0.546875,0.91796875,0.4296875,2.0,-0.03466797,0.28320312,-1.6640625,0.18164062,1.5234375,1.1015625,0.18261719,0.82421875,-0.8671875,-0.78515625,-0.016967773,-0.37890625,1.421875,-0.29101562,-0.15429688,-0.515625,-0.75390625,1.015625,-0.9140625,0.46679688,-1.40625,-1.1328125,1.46875,-0.6484375,0.0016403198,-0.6796875,0.125,1.421875,0.47851562,0.6875,-1.8828125,-0.43945312,0.08935547,-0.4921875,-0.94921875,1.6953125,-0.8828125,1.5703125,0.17871094,1.1015625,-0.71484375,-1.59375,0.28710938,0.8359375,1.21875,0.60546875,0.18457031,0.14746094,1.328125,-0.87890625,1.53125,-0.76171875,0.36914062,-0.68359375,-1.7265625,0.27148438,0.30664062,0.10839844,0.5078125,0.58984375,0.15136719,0.14160156,-0.27148438,-0.8359375,-0.19921875,-0.671875,1.7109375,-0.921875,-0.4140625,0.765625,-0.28320312,0.109375,-1.1484375,-0.24316406,-0.57421875,1.4296875,0.671875,-1.40625,-0.2578125,-1.3984375,1.0390625,1.3203125,0.3984375,1.1640625,-0.87109375,-0.33203125,-0.66015625,-0.3359375,-1.3359375,-0.24707031,0.8828125,0.17871094,-0.34179688,-0.4921875,-2.015625,-0.97265625,-1.6953125,-1.578125,1.1953125,-0.6484375,-2.0625,-1.6953125,-0.25390625,0.55078125,-0.0071411133,0.20898438,1.234375,1.90625,0.24511719,-0.0045166016,-0.62109375,-0.22753906,1.75,1.1796875,0.4453125,-3.09375,-1.7734375,1.4375,2.21875,-0.17871094,-0.30078125,0.00680542,-0.8984375,-0.203125,-0.43359375,0.61328125,1.9921875,0.1640625,-0.02331543,1.25,-0.5859375,-1.75,0.12792969 -4,0,7,0.890625,-0.67578125,0.047851562,-0.083984375,0.5078125,0.9765625,-1.2734375,0.2890625,2.171875,-0.69921875,0.17285156,-0.49414062,-1.8203125,-1.375,-0.8515625,0.46484375,-0.029052734,-0.20605469,1.359375,-0.19335938,1.359375,-0.96484375,1.140625,0.5546875,1.7421875,-1.0703125,-0.98046875,-0.61328125,0.9609375,1.6875,-1.265625,-0.080078125,1.0390625,-1.3125,-0.076171875,0.017333984,-1.2421875,0.57421875,-0.15039062,0.35351562,-0.04321289,-1.0625,0.6171875,0.27734375,0.07763672,-1.3359375,0.61328125,2.71875,-0.953125,-0.087890625,1.1875,0.10839844,-1.1796875,-0.859375,-0.3359375,1.25,-0.4375,0.4609375,0.16992188,-0.734375,-1.171875,0.921875,0.47265625,-0.734375,0.703125,0.16699219,0.9921875,-0.7421875,0.38476562,-1.1171875,0.734375,0.9609375,0.087402344,0.98828125,0.14941406,-1.8984375,0.61328125,-1.0,-1.375,2.015625,0.01159668,1.1875,1.078125,-0.90625,-1.0390625,0.76953125,-0.796875,-1.3984375,-0.3046875,-0.106933594,0.6953125,0.91796875,0.9453125,-0.6328125,0.33984375,0.12792969,1.375,-1.7890625,-0.3828125,0.107421875,-1.0390625,-0.30859375,-0.15722656,0.64453125,-1.1484375,0.2890625,-0.1875,-0.8125,0.048339844,-0.34375,-0.5703125,1.6640625,0.7265625,-1.3046875,0.85546875,0.21777344,-0.3046875,-0.35546875,-0.11816406,-0.11425781,0.4921875,-1.0234375,-0.8984375,-0.7265625,-0.96484375,-1.1015625,-0.1796875,0.53125,-0.73046875,0.41210938,1.453125,-1.53125,0.58984375,0.68359375,1.71875,-0.28125,0.953125,-2.671875,-0.21484375,0.037841797,3.140625,0.001411438,-0.65234375,1.4453125,-0.28515625,0.859375,-2.40625,-2.3125,0.19042969,0.47070312,-1.1484375,-0.6796875,-1.2109375,0.44335938,-0.93359375,-1.3125,-0.109375,0.66015625,1.8515625,-1.8671875,-0.6171875,-0.83203125,0.11816406,-1.84375,-3.15625,0.296875,-0.23925781,0.53125,-0.91796875,1.0390625,1.140625,1.390625,0.18066406,1.703125,-0.6796875,-0.33789062,0.33398438,-0.13867188,-0.734375,0.41992188,1.5,1.3671875,-0.31640625,-0.08496094,1.078125,1.296875,-0.22265625,-0.31445312,0.6015625,-0.5546875,1.2890625,1.1015625,0.8671875,0.69921875,0.6328125,0.018920898,0.48046875,0.80078125,-0.70703125,-0.19140625 +3,0,5,1.5078125,0.8671875,-0.5859375,0.064941406,0.94140625,-0.8125,0.20703125,2.078125,-0.27734375,-0.875,0.91015625,1.6640625,-0.78515625,-0.12988281,-0.36914062,1.921875,0.6875,-1.421875,0.34179688,0.89453125,-0.060791016,-1.1328125,-0.36328125,0.92578125,0.8359375,1.8515625,-2.640625,-0.26953125,-1.1328125,-1.2890625,-0.10253906,1.203125,0.67578125,1.40625,1.828125,-0.8359375,0.7734375,0.37304688,-0.0008163452,0.87109375,0.890625,0.95703125,0.5546875,-0.6015625,-0.625,0.5078125,-1.5234375,-0.29882812,0.119628906,-0.55078125,0.087402344,-1.5625,-0.5703125,-1.40625,-0.5625,0.49609375,1.4296875,-0.033691406,0.051757812,-0.6015625,0.546875,0.640625,0.390625,0.5546875,-1.1875,-1.25,0.85546875,-0.20507812,0.15917969,-0.9453125,-0.6171875,-0.38867188,0.22949219,-0.55859375,2.25,2.390625,1.5859375,0.4375,-0.74609375,-0.39648438,0.53515625,0.515625,0.24902344,-2.125,1.21875,-0.66015625,0.21777344,0.65234375,0.099121094,2.078125,0.86328125,-0.875,-0.31835938,0.8359375,-1.1015625,-0.07080078,-1.3203125,0.71875,-0.1640625,1.2109375,0.51953125,0.103027344,-0.38867188,0.62109375,-0.5859375,-0.78125,-0.91015625,0.3046875,-1.3671875,-0.013793945,0.011352539,-1.0703125,2.109375,-0.97265625,1.375,0.60546875,-1.328125,-0.40429688,-0.44726562,-0.71875,0.6875,-0.40429688,-0.55859375,-0.7265625,-0.78125,2.546875,-1.0,-0.041748047,0.91015625,-1.3125,-0.38671875,-2.96875,0.04345703,0.296875,-1.5390625,-0.099121094,1.28125,0.19238281,0.12890625,-0.82421875,1.140625,-0.94921875,-1.1953125,0.546875,-0.55078125,0.34179688,-1.0,1.1875,0.75,-0.08935547,0.05078125,-2.125,0.18359375,-1.375,-0.60546875,0.84375,0.75,-0.609375,0.44335938,0.98046875,-0.20800781,2.03125,0.1640625,1.2265625,-0.0625,1.15625,0.4375,0.36132812,0.27539062,1.015625,-0.59375,-0.37695312,-1.078125,0.79296875,-0.59375,0.53515625,0.3984375,-0.5234375,0.32617188,-0.27148438,-0.13183594,-0.55859375,-0.57421875,-2.328125,-0.32617188,0.27539062,-1.3671875,-1.234375,-0.0390625,-1.8203125,0.65625,0.24609375,-1.65625,-0.90625,0.064941406,2.84375,-1.171875,0.5859375,-1.140625,-0.11230469 +3,0,6,0.0043640137,1.171875,-0.86328125,-0.65234375,-0.55078125,0.42773438,0.005432129,1.484375,0.734375,-0.37695312,2.28125,0.69921875,0.921875,0.040283203,0.37304688,1.125,0.16015625,-1.109375,0.5078125,-0.5234375,0.7421875,-0.23046875,0.7109375,0.90625,0.19238281,0.6796875,0.3515625,-0.44921875,-1.84375,-2.296875,-0.6953125,2.15625,0.02709961,2.4375,1.78125,-0.52734375,0.6484375,0.9375,0.91796875,0.765625,0.828125,-0.62109375,0.6015625,-1.2734375,-0.017578125,0.45507812,0.16210938,-0.0625,0.44726562,-1.7734375,-1.5859375,1.2109375,-0.6640625,0.328125,-1.4453125,-0.68359375,0.18847656,-1.015625,0.65234375,0.5859375,-0.09472656,1.109375,0.028198242,1.546875,1.421875,-0.71875,-0.640625,0.15039062,-0.17578125,0.359375,-1.0078125,0.14257812,0.20214844,-0.11816406,-0.33203125,2.109375,-0.42382812,0.31054688,-0.21289062,0.024169922,-1.6015625,-0.099121094,0.91015625,-1.3046875,1.8515625,0.030395508,-0.578125,-0.89453125,0.67578125,-0.49609375,0.099121094,-0.22460938,-0.5234375,0.515625,-0.26757812,-1.0546875,0.53125,-0.3359375,-1.2890625,-0.66015625,-0.47851562,0.6328125,2.671875,-1.015625,-0.54296875,-1.6875,-0.5078125,0.8203125,-0.32226562,0.8671875,0.23144531,0.26171875,1.375,-0.33984375,2.390625,-0.044189453,-0.67578125,-1.3203125,-0.51171875,-1.015625,-0.49023438,-0.98828125,0.81640625,-0.79296875,-1.7109375,1.421875,-1.28125,-1.484375,0.98828125,0.83984375,-0.22363281,-0.70703125,0.5234375,-0.10986328,-1.9609375,1.21875,0.76171875,0.5625,-0.47070312,-1.609375,2.234375,-1.046875,-0.96875,0.63671875,-0.5,-0.39257812,-0.32617188,-1.2734375,-0.265625,0.016723633,0.34765625,0.028930664,1.609375,-2.4375,-0.703125,0.4296875,0.21582031,-1.3984375,1.0,-0.41015625,0.70703125,-0.44921875,0.65234375,-0.37109375,1.015625,2.53125,-1.0390625,0.1796875,1.25,-0.22167969,-0.8984375,-0.8046875,-2.03125,-1.875,-0.026367188,0.609375,0.09277344,-0.08203125,-1.4921875,-1.5078125,0.41992188,-0.8671875,-0.19726562,-0.54296875,-0.21875,-0.66015625,-0.6484375,-0.42773438,-0.3828125,0.671875,1.671875,-0.94921875,-0.36328125,-0.68359375,-0.96484375,1.6015625,0.95703125,1.859375,0.7109375,1.515625 +3,0,7,1.09375,1.171875,-0.28320312,0.38476562,-1.5703125,-1.2421875,0.7890625,0.83203125,-0.3515625,-0.40039062,1.984375,0.8515625,0.39257812,0.55078125,0.7421875,0.9296875,-0.90234375,-0.44335938,0.81640625,-0.69140625,1.0625,-0.34570312,2.046875,1.96875,0.110839844,0.91796875,-0.15820312,-1.2421875,-0.82421875,-0.45703125,-0.06542969,0.84375,0.056152344,1.8125,0.57421875,-0.8125,-0.04638672,1.203125,0.80859375,-1.234375,-0.087402344,-1.8046875,1.28125,0.040039062,0.38085938,-0.3671875,0.33398438,-0.58203125,-2.578125,-1.2734375,0.36914062,0.55078125,-1.265625,0.90234375,1.1640625,0.016357422,-0.1796875,-0.18164062,-0.50390625,0.5078125,0.47070312,0.45898438,-2.203125,-1.40625,1.15625,0.59765625,-0.578125,-0.30859375,1.5546875,-0.064941406,-1.890625,0.8828125,-1.0234375,0.32226562,1.1484375,0.49414062,1.5390625,1.0234375,-0.6015625,0.38671875,-1.4453125,0.47265625,1.671875,-0.34570312,1.7578125,-0.9375,-0.16894531,1.1796875,-0.32226562,0.86328125,-0.012878418,-1.046875,-0.90625,0.43945312,-0.59765625,-0.73828125,1.5,0.33203125,-0.26171875,0.037841797,0.0011062622,-1.421875,1.9140625,-0.33789062,-1.4609375,-2.0625,1.140625,-1.328125,0.83984375,0.546875,0.55078125,-1.03125,1.3359375,-0.43554688,0.78515625,-0.32617188,-0.22753906,-0.34375,-0.10498047,-1.6796875,0.7890625,0.43359375,-0.03491211,-2.375,-0.18359375,1.859375,-1.0078125,0.18066406,1.2578125,-1.1328125,1.03125,1.2109375,1.546875,-1.8125,-2.453125,-0.5078125,-1.15625,0.5546875,0.03881836,-0.9921875,0.47070312,0.21875,-0.31054688,0.96875,-0.62109375,0.3125,-1.5859375,0.13574219,0.071777344,0.42773438,-0.06933594,-1.0234375,-0.60546875,-0.07373047,-0.9765625,-1.671875,-0.8671875,-0.73046875,-0.27929688,1.6484375,-0.3515625,-1.5625,-0.26757812,-0.296875,1.9296875,0.110839844,-2.140625,-1.21875,1.5390625,-0.6875,0.16699219,0.87890625,-1.171875,-0.609375,0.27539062,-0.17675781,1.6171875,0.07519531,-0.34570312,-0.17578125,0.8671875,1.3515625,-0.33007812,-0.66015625,-0.1328125,-0.5625,-0.4453125,-0.32226562,1.1953125,1.1796875,0.56640625,0.012329102,-1.3359375,-0.734375,0.34960938,-0.86328125,-0.10205078,0.33007812,1.8828125,0.09667969 +4,0,5,2.625,0.2265625,-0.76171875,1.46875,0.4453125,-0.65234375,-0.095214844,1.1875,-0.06591797,-1.1875,1.6171875,0.85546875,-0.3828125,-0.008972168,-0.828125,0.9140625,0.1875,-0.16210938,0.22851562,0.36328125,0.65234375,-0.25976562,-0.32617188,0.171875,0.54296875,1.0234375,-0.88671875,0.69140625,-2.078125,-0.24414062,-0.671875,1.0078125,-0.05029297,1.625,0.89453125,0.43554688,0.8671875,-0.39257812,0.48632812,1.1484375,1.3203125,0.40234375,0.25195312,0.2421875,0.010009766,-0.99609375,0.74609375,-0.66015625,-0.73046875,-1.9296875,-0.072753906,-0.8671875,-1.8125,-1.09375,-1.9453125,0.046142578,1.5859375,-0.20703125,0.07763672,-0.42773438,0.053710938,0.119140625,-0.79296875,0.9921875,-0.14453125,-2.046875,0.51171875,-0.21777344,0.47460938,-0.3671875,0.008972168,-2.671875,-0.48632812,-0.45898438,1.3125,1.703125,0.984375,0.0074157715,-0.26367188,-1.6015625,-0.9453125,0.484375,-0.33398438,-2.078125,1.9296875,0.43164062,0.27539062,-0.9140625,0.5859375,0.1875,0.84765625,0.5390625,0.5625,0.71875,-0.05444336,-1.59375,-0.78515625,-0.12011719,-0.57421875,0.22167969,-0.25390625,1.1484375,0.1953125,-0.32421875,0.20605469,-2.15625,-0.71484375,1.046875,-0.35351562,1.0234375,0.16894531,1.0,0.025390625,0.74609375,1.78125,1.421875,-0.42773438,-1.90625,-0.30664062,-0.49414062,-0.70703125,-0.90234375,-0.4296875,0.18261719,-1.5703125,1.5390625,-0.796875,-0.703125,0.22753906,-0.36523438,1.3984375,-0.9609375,0.018798828,0.44921875,-1.6328125,0.9765625,0.66015625,-0.2578125,0.58203125,-2.078125,1.625,-1.125,-1.2578125,1.1171875,0.8515625,0.73046875,-2.15625,1.4140625,1.484375,2.03125,-0.34179688,-0.35742188,0.27148438,-0.13964844,0.59375,1.6015625,-1.546875,-0.08251953,0.8046875,-0.43945312,-0.50390625,1.7421875,0.68359375,1.2265625,0.061279297,0.828125,-0.01977539,0.26953125,0.12597656,-0.94921875,-0.3671875,-1.1484375,-0.1015625,-1.75,-0.68359375,-0.3203125,0.23144531,-0.765625,0.37304688,-0.3046875,0.12597656,-1.4765625,-0.59375,-2.328125,0.22070312,1.046875,0.265625,-0.42773438,0.125,-2.15625,0.60546875,-0.6875,0.03149414,-1.0546875,0.5390625,3.1875,-0.7578125,-0.42382812,0.70703125,0.8359375 +4,0,6,0.9609375,1.21875,-0.484375,-1.4609375,1.328125,0.35351562,-1.1953125,0.75,1.1484375,-0.24414062,0.3515625,0.609375,-1.5,0.36523438,0.41601562,-0.72265625,-1.2109375,0.037841797,1.59375,1.2578125,0.42773438,-0.6875,0.34570312,0.28320312,-1.046875,0.036376953,-1.359375,-1.2578125,-2.578125,-0.6640625,-0.7265625,0.46289062,-1.1015625,1.015625,-0.31640625,-0.20214844,0.50390625,0.67578125,0.546875,1.0625,-0.068359375,0.58203125,0.9453125,0.875,0.35742188,-0.13476562,0.6328125,-1.640625,0.48828125,-0.31835938,1.0234375,-0.80078125,0.69921875,0.38085938,-2.140625,-0.21386719,0.40820312,-1.21875,0.32617188,-1.546875,0.19628906,0.78515625,1.359375,-1.0390625,0.625,-1.2265625,0.35546875,-1.7109375,0.15820312,0.93359375,-0.07519531,1.578125,-0.41210938,-1.25,0.11035156,0.671875,-0.048828125,0.5078125,-0.6171875,0.049316406,0.38867188,-1.03125,0.40820312,-0.625,0.20019531,-0.6953125,0.1328125,-1.96875,1.1796875,0.23535156,0.55859375,1.59375,-1.03125,1.75,-0.55078125,-0.6484375,-0.484375,0.65625,-0.88671875,0.014282227,0.05859375,1.3046875,1.421875,-1.453125,-0.53125,0.31835938,-0.3046875,0.75,0.515625,-0.30078125,0.51953125,0.66796875,-0.015625,0.76953125,1.3515625,-0.45507812,-0.39648438,-1.09375,0.18359375,-0.38671875,0.07324219,-0.10058594,-0.5625,0.16503906,-1.09375,1.921875,0.025268555,-1.9453125,1.109375,2.9375,1.2578125,-1.3515625,-1.5,1.3125,-2.0625,-0.78515625,-0.93359375,-0.81640625,0.47265625,-1.7265625,1.9921875,-1.9296875,-1.859375,2.171875,0.84375,-0.6640625,0.4453125,0.75,-0.034423828,1.4140625,0.28320312,-0.8203125,1.0625,-0.7890625,-0.38867188,1.4296875,1.796875,0.039794922,0.32226562,-1.7578125,0.69140625,1.6015625,0.8046875,2.265625,-0.095703125,0.62890625,-1.2890625,-1.828125,1.4609375,-0.65234375,0.9765625,-1.28125,-0.021972656,-0.3203125,-0.27148438,-0.8125,-0.6171875,-0.54296875,0.18359375,-0.030273438,-0.38867188,-0.90625,0.23632812,0.45703125,-0.78125,1.40625,-0.46679688,-0.87890625,1.2109375,-0.99609375,-1.046875,-0.6171875,-0.43164062,-0.53125,-0.75390625,2.140625,-0.45117188,0.6796875,-0.5234375,0.39453125 +4,0,7,1.734375,-0.51171875,-0.18066406,0.24902344,-0.5390625,-0.765625,-0.69140625,0.37695312,-0.92578125,-0.625,0.48632812,1.03125,0.5625,0.640625,-0.1328125,1.3984375,-0.018188477,-0.5078125,1.734375,-0.49804688,1.9140625,0.14355469,-1.1328125,0.060791016,2.578125,0.1640625,-0.5078125,-1.46875,-0.96484375,0.052734375,-0.79296875,1.1796875,0.25585938,0.03112793,-1.2890625,-0.546875,0.6796875,-0.9453125,-2.015625,-0.62890625,0.006866455,-0.82421875,-0.4453125,0.067871094,-0.17578125,0.088378906,0.11816406,-0.80078125,-1.296875,-1.1640625,-0.38671875,-0.84765625,-1.1640625,-0.60546875,-0.43945312,2.53125,1.2421875,-0.033447266,0.0020599365,-0.671875,1.25,-0.35351562,-0.23632812,1.6328125,0.39453125,-0.40234375,-0.19921875,-0.609375,2.9375,-0.4453125,-0.359375,-0.26757812,-0.99609375,0.359375,1.3671875,2.28125,-0.0013809204,0.28125,-1.5078125,-0.37304688,0.56640625,-0.42773438,-0.48828125,-0.50390625,1.6328125,-0.859375,0.82421875,1.328125,0.10888672,1.578125,0.49023438,-0.58984375,0.90234375,0.9296875,-1.921875,1.625,-0.94140625,0.5859375,0.4921875,0.15234375,0.22558594,0.020385742,-0.91796875,0.19726562,-0.34765625,-0.7265625,0.13085938,-2.34375,-0.86328125,0.056396484,0.703125,-0.6171875,0.6328125,-0.40039062,-0.27539062,0.11328125,-0.796875,0.578125,-0.6875,0.06689453,0.5234375,1.0546875,0.19238281,-1.6640625,-1.3828125,0.93359375,-1.34375,-0.45703125,-0.21289062,0.28515625,1.5078125,-0.44140625,0.005706787,-0.74609375,-0.953125,-0.16503906,2.21875,-0.4453125,-1.5703125,-2.234375,2.015625,0.78125,-1.625,0.068359375,-0.59765625,-0.234375,0.053710938,-0.35742188,0.9296875,1.8359375,-0.34765625,-0.80859375,1.34375,-2.359375,-1.2109375,-0.97265625,1.5,0.8671875,0.921875,-0.4609375,-0.5234375,-0.609375,0.0859375,-0.33984375,-0.0051574707,-0.092285156,0.265625,-1.2578125,1.2421875,-0.12695312,0.6875,-0.15332031,-1.234375,0.20019531,0.100097656,1.9453125,0.24414062,0.67578125,1.078125,-0.16699219,-1.0859375,-0.06689453,-0.7421875,-0.037841797,-0.55859375,-0.44726562,0.72265625,-0.78515625,1.8515625,-1.1875,-0.06298828,-1.3515625,0.29492188,-0.87109375,-0.34960938,0.85546875,-0.29296875,2.96875,2.421875,0.43945312 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv index 8e5eb006..c8ece4d5 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,5,0.23828125,-0.07763672,-0.24707031,-0.41210938,0.17773438,0.35742188,1.0,-0.984375,0.13183594,-0.008911133,-0.91796875,-3.046875,-1.890625,-0.22753906,0.40820312,-0.18945312,0.28515625,1.0546875,-0.25390625,-0.21484375,-0.12597656,-0.25585938,0.6015625,0.1875,0.017211914,-0.083496094,-0.057861328,-0.5859375,-1.0234375,-0.8984375,-0.5,0.51171875,-0.41601562,0.33789062,0.56640625,-0.8046875,1.0625,-0.98828125,-1.265625,-1.28125,0.35351562,0.84375,-0.44921875,-0.703125,-0.63671875,-0.40625,-0.20410156,0.26171875,-1.1171875,-0.65625,0.56640625,-0.10888672,-1.3984375,-0.017089844,2.71875,0.55859375,1.0,-0.90625,-0.24121094,0.58203125,-0.33203125,-0.36523438,-1.015625,0.765625,0.73046875,0.55859375,2.546875,-0.05102539,-0.70703125,-1.0703125,0.7421875,-0.23828125,0.24316406,-0.05029297,0.38671875,0.041748047,-1.0078125,0.52734375,0.020507812,-0.54296875,1.6171875,1.203125,-1.421875,-2.109375,0.46289062,0.609375,-1.2109375,0.08691406,-0.12207031,0.9765625,-1.8515625,-1.9765625,2.609375,1.4296875,-0.3515625,1.5703125,1.015625,0.4140625,-1.0546875,-0.14746094,0.044189453,-0.30859375,1.0625,0.7265625,1.703125,-1.15625,0.34765625,-1.359375,-1.3984375,-1.0,1.640625,-0.609375,-0.028686523,-0.58203125,0.69140625,-0.09423828,-0.44335938,0.578125,0.55859375,-0.94140625,1.296875,0.2265625,-0.6328125,2.953125,1.328125,-0.26757812,0.47460938,-0.75390625,-0.53515625,0.16894531,-0.29882812,-1.4140625,-1.6953125,0.34179688,-0.27929688,-0.34179688,1.1484375,-1.3359375,-0.53125,-0.10888672,0.05834961,-1.640625,-0.07519531,-0.39648438,-1.328125,-2.34375,-1.796875,0.20019531,0.24414062,-1.2578125,1.0625,-1.3984375,0.515625,1.578125,-0.25976562,-1.65625,0.12792969,0.65625,-0.13867188,-0.7109375,-0.39257812,-0.6015625,-0.43554688,1.0078125,0.875,-0.3515625,-0.9921875,-0.546875,0.22851562,0.87109375,-0.013793945,1.921875,-0.4140625,0.8203125,0.3203125,1.2890625,1.4921875,0.40234375,0.099609375,2.8125,0.34960938,0.625,-0.609375,-1.0859375,1.1953125,1.6484375,-0.29882812,-0.07861328,1.2265625,-0.4375,0.16113281,-1.3515625,1.328125,3.09375,-0.0008583069,0.74609375,1.4921875,0.21875,-0.41796875,0.05810547 -5,0,6,-0.68359375,0.19140625,0.78515625,1.40625,0.60546875,0.21484375,-1.390625,1.109375,0.9765625,-0.30078125,0.75390625,-0.061767578,-0.796875,-0.49023438,-0.6484375,-1.6015625,-1.5,-0.41992188,0.65625,1.8359375,0.5625,-0.93359375,2.203125,-0.421875,0.27148438,-1.2421875,0.91796875,-1.9921875,-0.81640625,0.97265625,-1.9609375,0.6875,0.0038146973,-1.078125,1.1875,0.578125,0.27929688,1.28125,0.09667969,-0.5703125,-0.4921875,0.64453125,-0.18066406,0.12890625,0.25976562,-0.9453125,0.734375,-1.421875,-2.34375,-0.48046875,-0.29101562,0.37890625,-0.953125,0.6640625,-0.34960938,1.328125,-0.43554688,-0.39453125,1.78125,1.90625,-0.103515625,-1.265625,0.95703125,-0.97265625,0.51953125,-0.50390625,-1.3828125,-0.50390625,0.23535156,-1.7890625,-0.375,1.203125,0.65625,-0.42382812,0.67578125,-0.62890625,-0.0035705566,-1.0546875,-1.296875,0.13378906,1.125,0.80078125,0.890625,-0.5078125,-0.107910156,-1.390625,-0.27539062,-1.3515625,0.69921875,0.80859375,-0.36328125,0.21386719,0.7890625,0.22851562,-0.44140625,-0.65625,0.62109375,-1.7890625,-0.9609375,1.2109375,0.099609375,-0.63671875,1.125,1.5546875,0.49414062,-0.71875,2.203125,0.029541016,-0.984375,0.29882812,-0.5546875,2.40625,-0.7734375,0.43945312,-0.083984375,1.421875,-0.88671875,0.64453125,-1.453125,-0.10253906,0.103515625,1.6875,0.0039367676,2.28125,0.067871094,-1.3515625,1.234375,1.4140625,0.96875,0.90234375,0.97265625,0.65234375,0.91015625,-0.625,-0.75390625,0.33984375,-0.06982422,0.6640625,-0.26757812,0.4453125,0.515625,-0.92578125,-0.24023438,1.0234375,-1.2421875,-0.6796875,-1.3203125,-0.890625,-0.123535156,0.6171875,0.375,-0.044921875,-1.03125,0.049072266,-1.8125,-0.50390625,-1.2421875,-0.4140625,1.1796875,-0.59765625,-0.765625,-1.0234375,-0.41796875,-1.125,-1.2578125,0.98046875,0.46679688,-1.34375,-1.03125,-1.6875,0.92578125,0.6328125,-0.53515625,1.296875,1.5390625,0.55859375,1.703125,0.578125,0.27929688,0.578125,-0.29296875,1.234375,-0.3046875,-1.46875,2.5,1.3828125,-0.36523438,-1.3125,2.171875,-2.109375,-0.3671875,0.29296875,0.15625,-1.1015625,0.30078125,-0.10986328,-1.171875,-0.328125,0.96875,-1.1875 -5,0,7,1.84375,0.55078125,0.58984375,1.203125,-0.5546875,1.4375,-0.88671875,0.75,2.875,-1.4375,0.48632812,1.21875,-1.21875,-0.33398438,-0.44140625,-1.140625,-1.234375,-1.2578125,-0.36132812,0.14746094,1.6484375,0.55078125,1.8203125,-0.27148438,-0.40429688,-0.828125,-0.51953125,-0.82421875,-0.78125,1.8203125,-1.03125,0.1875,1.4921875,-1.125,-0.49804688,-0.19726562,-0.953125,1.0078125,-0.72265625,1.265625,-0.25585938,-0.51171875,-1.71875,-0.61328125,0.08154297,-0.09765625,0.09716797,-0.4765625,-0.92578125,-0.20019531,-0.05493164,0.73046875,-2.25,-0.20507812,1.7265625,2.625,0.24902344,-0.46289062,0.31835938,-0.7734375,1.5703125,0.2890625,-0.40429688,-0.83203125,-0.578125,-0.88671875,0.51953125,-1.8046875,0.953125,-0.41796875,-0.49023438,0.8984375,-0.07324219,-0.15332031,0.51953125,-0.5703125,-0.17675781,0.3828125,-0.9765625,2.453125,0.43945312,-0.12597656,-0.13476562,-0.9453125,0.24511719,-0.65234375,0.096191406,-1.9609375,-0.546875,-0.095214844,-0.97265625,-0.34570312,-1.2734375,-0.29492188,-0.08251953,-0.63671875,0.19238281,-0.98828125,-0.8359375,-0.34960938,-1.890625,0.47851562,0.76171875,-1.546875,0.90625,0.21777344,1.4921875,-0.092285156,-0.33398438,0.5234375,0.77734375,0.7734375,-1.3671875,-0.94921875,1.8515625,0.39648438,-0.53125,0.3671875,1.2421875,-2.203125,-1.4765625,1.8125,-0.00079345703,-0.8125,-0.35351562,-1.6484375,0.00579834,-0.3203125,0.37695312,1.859375,-1.8203125,0.36328125,0.390625,0.025146484,-0.43554688,1.171875,1.203125,-0.43554688,-0.31054688,-0.73046875,1.4765625,-0.546875,-0.13574219,1.8984375,-0.48242188,-0.115234375,-0.51953125,-0.18847656,-0.44335938,0.37695312,0.038085938,1.4453125,-1.234375,0.96875,-1.6015625,-0.44921875,-0.42382812,0.9296875,0.096191406,-0.026977539,-1.5390625,0.3671875,-0.609375,-1.15625,-0.022338867,0.36523438,0.36523438,-0.70703125,-1.609375,-1.921875,0.77734375,0.3984375,0.5,0.6796875,1.484375,-0.24902344,-0.55859375,1.6171875,0.8203125,-0.8828125,0.53125,1.3046875,1.5546875,0.125,0.38085938,2.078125,0.15429688,-1.03125,-0.65234375,-1.1015625,0.546875,2.421875,0.39257812,1.546875,1.109375,-0.17089844,-0.48632812,0.1171875,-0.40234375,0.52734375 +5,0,5,1.890625,1.671875,-0.37304688,-0.3125,-0.74609375,-1.3984375,-0.87890625,0.22949219,0.5625,-1.1875,-0.19140625,-0.40039062,-2.421875,1.6015625,-0.6328125,1.2578125,0.546875,0.16992188,-1.4296875,0.5859375,1.7890625,0.5,-0.42773438,0.004333496,1.15625,-0.22167969,-1.609375,0.095703125,-2.140625,0.640625,-0.8828125,0.19726562,0.578125,0.75390625,0.29882812,0.24023438,1.046875,1.0078125,-0.62890625,0.55078125,-0.20605469,0.104003906,-0.33398438,0.8359375,-0.82421875,-0.03515625,1.0546875,-0.37304688,-0.46289062,-0.47460938,-0.33203125,-1.015625,-0.6328125,-0.390625,-0.5546875,2.375,1.6953125,-0.14257812,-0.15429688,-1.71875,0.56640625,0.7578125,0.38671875,0.37695312,0.98046875,0.4140625,-0.859375,1.0,1.640625,-0.6796875,-1.46875,-1.453125,-2.015625,-0.26757812,-0.19726562,0.47070312,1.0625,1.09375,0.107910156,-0.34765625,1.0234375,-1.3515625,0.9765625,-0.921875,0.45117188,-0.95703125,0.96875,0.42578125,-0.67578125,-0.66015625,2.84375,-0.4140625,1.5546875,1.1953125,-1.328125,0.72265625,-1.0234375,0.58203125,0.10253906,1.046875,-0.38671875,0.13378906,1.0703125,-1.6328125,0.546875,-0.578125,0.41601562,-0.44140625,-0.76171875,0.22265625,0.734375,-0.068847656,1.1953125,-0.05908203,0.53515625,-0.47460938,-0.17773438,0.07910156,0.18847656,-1.1015625,0.890625,-0.9921875,-0.4453125,-1.4140625,-1.3984375,2.484375,-0.40820312,-1.359375,-1.5078125,-1.203125,1.515625,-0.5546875,-1.5234375,0.28710938,-2.265625,1.5625,0.72265625,-0.4765625,-1.5390625,-2.3125,1.1640625,-2.234375,0.2109375,0.30273438,0.8203125,0.125,-1.0390625,0.34375,1.140625,1.828125,-1.2109375,-0.6953125,0.734375,-0.58203125,0.5625,0.15429688,0.41015625,0.06298828,0.21386719,0.49804688,-0.734375,-0.2734375,-0.765625,0.265625,-0.6796875,2.25,-0.107910156,0.19238281,1.515625,-0.57421875,-0.9609375,-1.125,-0.8515625,-1.3046875,0.33007812,1.2734375,1.15625,-0.33984375,-0.36328125,-1.6171875,0.69140625,1.34375,-0.5703125,-1.015625,0.234375,-1.109375,-0.06640625,1.0546875,0.6484375,-1.1171875,-0.1640625,0.34179688,0.10253906,-0.29882812,-0.52734375,1.203125,1.421875,0.23730469,0.73046875,1.1015625 +5,0,6,0.79296875,-0.24023438,-0.79296875,-1.0390625,0.19824219,-1.375,-1.296875,1.3125,-0.17578125,0.6328125,-0.9453125,-0.5078125,0.8359375,0.32421875,-0.8125,1.6328125,-0.18066406,-1.2109375,0.20214844,0.4140625,2.40625,-0.7109375,-1.265625,-0.02355957,0.77734375,-0.07763672,-1.640625,-1.1328125,-1.6640625,1.75,-0.28320312,1.4140625,-2.046875,1.1015625,-0.62890625,-0.13867188,-0.013183594,0.03491211,-0.3359375,-0.578125,0.5546875,0.03515625,-0.79296875,0.31835938,-0.33398438,1.5390625,-0.46484375,-0.71484375,1.0859375,-0.515625,-0.8671875,-3.375,-1.328125,0.2265625,-1.46875,2.03125,1.796875,-0.7421875,-0.65625,-2.03125,-1.0703125,-0.47851562,0.5,1.2734375,1.375,1.5859375,-1.3828125,1.0625,0.5546875,0.41015625,0.671875,-1.8515625,-1.5234375,-0.49023438,0.10595703,0.73046875,0.640625,0.08544922,0.59765625,-0.111328125,1.078125,0.11376953,0.103515625,0.67578125,0.22167969,-0.28320312,-0.23339844,-0.46875,0.060546875,-0.10595703,0.5390625,-0.47265625,2.765625,-0.26757812,-0.98046875,-0.28125,-1.625,1.0703125,-0.007293701,0.4140625,0.15820312,0.1640625,0.05029297,-0.104003906,0.8515625,0.38476562,-0.87109375,-1.6875,-1.1875,-0.91796875,0.60546875,1.0859375,-0.4453125,0.024414062,1.0078125,-2.609375,0.14648438,0.4921875,0.41992188,1.296875,0.24121094,-0.62109375,0.0070495605,-1.359375,-1.6875,0.9375,-1.5078125,-0.625,-0.78515625,0.75,2.328125,-1.546875,-0.76953125,0.5703125,-0.734375,0.1875,0.6484375,0.36132812,0.56640625,-2.015625,-0.12109375,2.46875,0.26367188,1.453125,0.6875,0.32421875,-1.1796875,1.3984375,0.7265625,1.40625,-0.122558594,-2.21875,0.68359375,-0.89453125,-0.38476562,0.40625,1.5234375,0.25390625,-0.07519531,0.59375,0.06347656,1.265625,0.15820312,0.65625,-0.11328125,1.296875,0.43945312,0.075683594,0.015197754,0.44140625,0.22851562,0.65625,-0.015258789,-0.34765625,-0.48632812,1.703125,-0.06982422,-1.2578125,-0.61328125,-0.75390625,-0.546875,0.83203125,-0.58984375,-0.5859375,-0.5390625,0.18554688,0.6953125,-0.15136719,0.14648438,-0.90625,-1.03125,-0.65625,0.53515625,-0.52734375,-0.048339844,1.171875,0.40820312,-0.19628906,1.8984375,1.5 +5,0,7,1.640625,0.83984375,0.90625,0.87109375,-1.1484375,-0.37109375,-1.3671875,-0.29492188,2.5625,-1.546875,1.96875,-0.04345703,-0.18457031,1.3125,0.07519531,-0.390625,-0.2734375,-0.016601562,2.171875,1.21875,0.044921875,-0.58984375,-0.4140625,0.37695312,-0.34765625,-0.1640625,1.078125,-0.48632812,0.4921875,0.013183594,-0.29882812,0.49023438,0.171875,-0.703125,0.9140625,0.42382812,1.296875,0.47070312,-0.104003906,1.34375,-1.7734375,-1.2109375,-1.4765625,1.015625,-0.49609375,-0.984375,0.59765625,-0.53125,0.8203125,-0.36914062,0.029541016,-0.33789062,-0.17578125,0.859375,0.8125,0.625,0.31054688,-0.66015625,-0.796875,0.92578125,1.2421875,-0.20507812,0.47070312,0.06640625,0.40429688,-0.06689453,0.31835938,-1.7890625,-0.75,0.16894531,-0.296875,1.40625,0.57421875,-0.8125,-0.53515625,0.6875,-0.34570312,0.7109375,-1.296875,0.65625,-2.53125,-0.71484375,0.984375,-1.8984375,-0.29492188,-0.22851562,0.17675781,-1.890625,0.37109375,0.16210938,0.69921875,1.015625,-0.31640625,1.0625,-0.53125,0.03930664,-1.6875,1.140625,-0.6015625,0.068359375,-1.265625,0.765625,0.6796875,-1.4921875,0.22070312,1.859375,-0.119140625,-0.064453125,-0.40429688,0.42382812,-0.22851562,0.5234375,1.734375,-0.31445312,0.89453125,0.34179688,-0.6953125,0.033691406,-0.71875,0.12988281,0.609375,-0.042236328,0.46679688,-1.3515625,-2.34375,0.921875,-0.072753906,0.13476562,-0.55859375,1.3203125,1.3203125,0.44335938,-0.8046875,0.22753906,-1.1484375,1.359375,0.26367188,-0.66015625,-0.27734375,-1.515625,1.75,-0.0234375,-1.1484375,1.625,-0.2265625,-0.11376953,1.1171875,-0.07910156,-0.375,0.26367188,-0.90625,-0.75390625,2.609375,-0.85546875,-1.296875,0.51171875,1.359375,-0.86328125,0.36914062,0.49023438,-0.796875,-0.14355469,1.28125,1.4765625,0.16503906,-0.59765625,-1.1015625,-0.7578125,0.50390625,-1.4921875,-1.703125,0.10205078,-3.078125,-0.75,-0.42578125,2.28125,0.875,-0.35351562,-0.62109375,-0.052001953,-0.21875,-0.1796875,-0.8203125,-1.359375,-1.703125,0.15527344,1.1015625,0.14453125,-0.37109375,-0.85546875,-1.5,-0.4453125,-0.18066406,-1.0390625,-2.609375,1.8984375,2.234375,0.2578125,0.69921875,1.2109375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv index a656e4e9..7fb3dcc2 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,5,-0.578125,0.38867188,-0.64453125,0.453125,0.37304688,0.51171875,-0.83984375,0.08105469,1.546875,-1.265625,1.140625,-0.53125,-0.546875,0.41992188,0.13183594,0.2421875,0.15722656,1.9375,1.2578125,0.5,0.828125,0.18261719,0.78125,0.93359375,1.359375,-0.66015625,0.46289062,0.85546875,0.45507812,0.100097656,-0.8515625,0.8046875,-0.5546875,-1.3125,0.11669922,-0.92578125,0.0546875,-0.53125,-1.5859375,0.44921875,-0.26953125,-1.484375,0.20507812,-0.74609375,0.36914062,-0.28320312,0.30078125,-0.65625,-0.71484375,-1.40625,2.0625,0.35742188,-0.90234375,-0.10595703,-1.0078125,2.1875,-1.2890625,-0.8515625,1.375,1.25,1.2890625,0.35351562,0.4453125,-0.44140625,0.85546875,-0.03100586,0.69140625,-0.047607422,-0.54296875,-2.59375,-2.09375,0.14453125,-0.30664062,-0.59375,0.25,-0.96484375,0.23144531,-0.71875,-1.515625,1.0,-0.24511719,2.25,-0.12402344,-1.640625,0.13964844,0.31835938,-1.546875,-1.28125,0.50390625,1.46875,0.84765625,1.234375,0.328125,-0.47070312,-0.82421875,-0.10546875,0.53125,-1.265625,-1.2890625,1.546875,-0.079589844,-0.41992188,-0.19433594,0.1328125,-0.9765625,1.1640625,1.2890625,-1.0546875,-0.44335938,-0.55078125,0.08300781,0.83203125,-1.2890625,-2.328125,0.5859375,-0.072265625,-1.671875,0.75390625,-0.05078125,-0.78125,-0.81640625,0.10253906,-1.1640625,0.73046875,-0.111328125,-0.9453125,-0.49804688,0.6796875,0.34765625,1.7578125,-0.87109375,-0.025512695,1.296875,0.54296875,0.734375,-2.046875,1.265625,-0.296875,-0.86328125,-0.02722168,2.390625,-0.25195312,0.55859375,1.40625,-0.25390625,-0.49414062,-1.9921875,-1.09375,-0.30859375,0.08691406,0.09375,-0.40429688,-0.29101562,0.2265625,-1.109375,1.296875,0.609375,-0.08935547,1.0,-1.9375,-1.9609375,-0.87890625,-1.3203125,-1.1640625,-0.45117188,-0.64453125,-0.671875,0.42382812,-1.6484375,-0.80859375,-0.061767578,0.92578125,1.4296875,1.078125,0.72265625,0.59375,1.6640625,-0.43164062,1.7109375,1.8671875,1.9609375,1.8828125,-1.015625,-1.71875,1.75,0.9453125,-0.001739502,-0.061035156,0.43945312,-1.3046875,0.7265625,-0.71484375,-0.13378906,1.9140625,0.43359375,0.3515625,0.53515625,-0.27539062,0.53125,-0.64453125 -6,0,6,0.51171875,0.107421875,-0.6796875,1.734375,-1.15625,1.6015625,-1.671875,0.1953125,2.953125,-1.34375,-0.010925293,-0.42773438,-1.6171875,-0.22851562,-0.421875,-0.35351562,0.26367188,0.9296875,0.095214844,-0.64453125,1.890625,1.1484375,0.17578125,-0.234375,0.8515625,-0.75390625,-1.46875,-0.66015625,-0.94140625,0.84375,-2.453125,0.58984375,-1.203125,-1.515625,-0.5625,-0.83203125,0.41015625,-0.546875,0.045898438,1.125,0.36523438,-0.15136719,0.4453125,-0.67578125,0.4296875,-0.13378906,-0.22167969,-0.00016403198,0.20117188,-0.80859375,0.90234375,1.7890625,-0.41210938,0.62109375,1.015625,2.125,0.47265625,-0.9765625,0.84765625,-0.06640625,1.9921875,0.013793945,1.2109375,0.11767578,-0.6484375,0.064941406,-0.2734375,-0.87109375,-0.24902344,-0.34765625,-0.39648438,1.5078125,-0.58203125,0.85546875,0.19921875,-1.6875,0.6015625,0.6640625,-1.4765625,0.828125,-0.15332031,2.234375,0.37695312,-0.3515625,0.34765625,0.13671875,-2.234375,-0.35742188,-0.97265625,1.2890625,1.6328125,-0.14257812,-1.875,-0.7578125,0.55078125,-0.640625,0.47070312,-1.234375,-0.08544922,0.59765625,0.578125,-0.27734375,0.41015625,-0.26171875,-0.44140625,0.123046875,0.890625,-0.859375,-0.73828125,2.453125,1.3984375,1.9453125,-0.42773438,-1.734375,-0.28320312,0.80859375,0.017578125,0.61328125,-0.546875,-1.5859375,-1.6015625,1.09375,-0.057861328,0.46289062,-0.23242188,-0.5078125,0.05078125,0.171875,0.8984375,1.0859375,-1.3984375,0.6484375,1.328125,0.31640625,-0.52734375,-0.6328125,1.0078125,0.5390625,-1.109375,-1.15625,0.55859375,0.70703125,-0.079589844,1.3515625,-1.6796875,-1.5703125,-1.3046875,-0.390625,-1.375,-0.09814453,-0.28710938,-0.14941406,-1.4921875,-0.31054688,-0.43164062,-0.9609375,-0.30664062,1.6328125,0.3125,-0.41601562,-0.42773438,0.35351562,0.13183594,-1.609375,-0.703125,1.84375,0.46679688,-0.54296875,-1.1796875,-1.640625,0.62109375,0.6640625,0.80078125,0.79296875,1.8515625,1.2421875,-0.14746094,-0.51953125,-0.33398438,0.890625,2.84375,0.53125,-1.1875,-1.59375,-0.016479492,0.03930664,0.45898438,-0.97265625,0.52734375,-0.19335938,-0.7421875,0.69921875,-0.921875,1.3046875,0.119628906,0.37109375,-1.484375,0.6484375,-1.6953125,0.609375 -6,0,7,1.3515625,-1.140625,1.8984375,0.6640625,-0.7578125,0.32226562,-0.9375,-0.578125,1.78125,-1.8203125,-1.1484375,0.059570312,-1.5703125,-1.0390625,-1.7421875,-0.796875,-1.0546875,-0.98828125,0.92578125,-0.28515625,1.625,-0.12207031,0.56640625,-0.25390625,-1.59375,0.5703125,0.82421875,-0.61328125,-0.6484375,0.68359375,-0.85546875,0.8515625,-1.1171875,-2.203125,-0.044189453,-0.49023438,-1.8359375,2.3125,-0.20410156,1.15625,0.9609375,-0.09326172,-1.2734375,0.4140625,0.88671875,-0.087402344,-1.2265625,0.765625,-1.5546875,-1.65625,-1.7578125,1.59375,-1.5703125,1.578125,1.5390625,1.0078125,-1.375,0.47460938,0.04663086,0.17871094,0.14160156,-0.36914062,1.4453125,-1.359375,-0.5,0.703125,-0.15136719,-0.38476562,1.5390625,1.3671875,0.359375,-0.46289062,0.0025634766,0.32421875,0.31445312,1.6953125,0.63671875,0.32226562,-0.5625,1.2578125,0.8359375,1.0703125,-0.14746094,-0.32617188,1.2421875,-0.91796875,0.73046875,-1.1640625,-0.87890625,-0.72265625,-0.82421875,-0.62890625,-0.9921875,-1.28125,0.52734375,-0.20019531,0.58203125,-0.13085938,0.7890625,-0.0028839111,-2.703125,0.66015625,0.05444336,1.3515625,1.59375,-0.17871094,1.078125,0.44140625,-0.70703125,-0.609375,1.0234375,0.16210938,1.5,-1.140625,1.2578125,0.45898438,0.3203125,-0.640625,-0.26953125,-2.625,0.21582031,0.67578125,0.27734375,0.65234375,-0.77734375,0.76953125,0.453125,1.3046875,1.75,-0.20507812,-1.28125,-0.96875,0.953125,0.671875,-0.26953125,0.6484375,0.44335938,0.05859375,-1.046875,-0.34570312,0.90234375,-0.13671875,-0.16894531,1.2734375,-0.8203125,-1.2734375,1.0546875,0.027709961,-1.671875,-0.140625,0.31445312,-0.45898438,-0.6015625,1.46875,-0.66015625,-1.109375,-0.11376953,1.390625,0.296875,0.0016860962,0.39648438,0.106933594,-0.796875,-0.796875,-0.05419922,0.41992188,1.5625,1.1640625,-2.09375,0.15625,-0.20996094,1.6171875,0.89453125,1.4921875,0.734375,-0.30664062,-0.115234375,1.0078125,0.54296875,0.5859375,-0.83203125,0.22949219,-0.375,-1.3046875,-0.15234375,-0.07324219,0.1484375,-0.38476562,-1.7421875,0.21289062,-0.18066406,1.5859375,-0.56640625,-1.2734375,0.47851562,1.515625,-1.15625,0.76953125,-1.078125,-1.328125 -7,0,5,2.015625,-1.09375,0.07714844,0.09716797,1.4140625,-0.8671875,-1.234375,-0.36328125,2.03125,-0.080566406,0.23632812,-0.48242188,-2.40625,-0.97265625,0.8984375,0.25390625,-0.2734375,0.34375,-0.07373047,0.14941406,2.28125,-0.1484375,1.6171875,0.96875,-0.91015625,0.16601562,-0.90625,-0.75390625,-0.203125,0.76953125,-1.125,0.609375,0.87109375,0.12158203,-0.118652344,0.20996094,0.69921875,0.8984375,-0.84375,-0.93359375,0.4296875,-0.15332031,0.37109375,-0.33398438,1.2734375,-1.46875,1.265625,-0.24121094,-0.921875,-0.9375,1.984375,0.7890625,-0.8515625,-0.96875,-0.625,0.58203125,-0.578125,-0.4296875,-0.41992188,0.515625,-0.6015625,-1.171875,0.33007812,-1.59375,1.4375,1.1328125,-0.31835938,-0.33007812,0.421875,-2.40625,1.1953125,1.2578125,-0.0703125,-0.02746582,-0.46484375,-0.6875,-1.578125,-0.58203125,-0.27734375,2.328125,0.8125,1.5859375,-0.032958984,-0.53515625,-0.09716797,-0.91796875,-0.734375,-0.7265625,-0.43554688,1.9609375,-1.140625,0.5234375,-0.13769531,-0.40429688,0.032714844,0.22265625,1.171875,-1.8984375,0.33984375,0.037597656,-0.421875,-0.625,-0.2265625,0.42773438,-1.453125,1.9140625,0.58984375,-0.51953125,0.36523438,-0.9296875,0.29101562,1.0859375,-0.48632812,-1.6484375,-0.23925781,-0.23144531,-1.359375,-0.13769531,0.29882812,-0.33007812,-0.87890625,-0.265625,1.328125,0.27734375,-0.14355469,-0.19628906,-0.7578125,0.032226562,0.375,1.0859375,0.390625,-0.96875,0.49609375,1.0625,-1.3515625,-1.0390625,1.2578125,0.96875,-0.07080078,0.8125,1.8828125,0.73046875,1.1953125,0.921875,-2.609375,-0.3359375,-2.90625,1.046875,2.0625,0.77734375,1.2265625,-0.51171875,-0.8203125,-0.5078125,-1.0,-1.3984375,-0.22070312,1.7734375,0.4140625,-0.515625,-2.046875,0.007171631,-0.984375,-1.546875,-1.828125,1.1640625,0.32617188,-0.09814453,-1.5,-0.45507812,0.69921875,0.33007812,-0.06640625,0.96875,0.06933594,-1.4453125,-0.51171875,0.65234375,1.2890625,1.7109375,1.1953125,0.7578125,-1.78125,-1.21875,1.390625,0.6328125,-0.25390625,-0.18652344,0.029052734,0.5078125,0.81640625,-0.77734375,-0.17578125,0.47070312,1.125,0.3203125,1.4765625,-0.4296875,0.15722656,-0.72265625 -7,0,6,0.0703125,-0.5078125,-0.34960938,0.5234375,0.58984375,-0.067871094,-1.5,0.4921875,1.109375,0.8515625,0.6796875,-0.5390625,-1.484375,-0.92578125,0.703125,-0.30273438,-0.008605957,-0.03540039,0.83984375,0.17871094,1.3828125,-0.013366699,0.6015625,1.1953125,1.171875,-0.109375,-0.9375,-0.578125,1.078125,1.578125,-1.0234375,-1.2421875,1.171875,-1.140625,-0.020385742,-1.09375,-0.76953125,1.1875,-1.421875,0.94140625,-0.075683594,-1.296875,-0.34960938,1.0234375,1.15625,-1.234375,1.65625,0.8671875,-0.93359375,-0.0046691895,0.9453125,0.99609375,-0.1484375,0.019165039,-0.421875,0.88671875,-0.4921875,-0.115234375,0.3984375,0.39648438,-0.765625,0.21972656,0.15917969,-0.78125,0.90234375,-0.859375,0.20019531,-0.8984375,0.6015625,-1.5625,1.1171875,-0.484375,-0.11425781,-0.65234375,0.69140625,-1.015625,-0.5078125,-0.15429688,-2.734375,0.94140625,0.08984375,1.9765625,0.90625,-0.89453125,-1.0078125,0.70703125,-2.140625,-1.7578125,-0.12988281,0.82421875,0.203125,1.7265625,0.98828125,-1.734375,-1.2421875,-0.8046875,0.44921875,-2.59375,0.3359375,1.7109375,0.40234375,-1.171875,-0.28320312,1.6875,-0.07519531,1.5234375,0.41015625,0.20703125,-1.0859375,-0.012207031,-0.328125,0.734375,0.12597656,-0.58203125,0.33007812,0.29101562,-1.0859375,-1.0546875,0.33789062,0.87890625,0.007873535,0.890625,-0.4375,-0.49023438,-1.8828125,-0.19921875,-0.25390625,0.056152344,-0.984375,1.15625,0.58984375,-1.8203125,0.04296875,-0.3359375,-0.26367188,-0.98828125,1.5234375,-0.57421875,-0.80859375,0.5078125,1.4140625,0.021484375,-0.036376953,0.953125,-1.2578125,-0.36523438,-2.0,-0.14160156,0.063964844,1.0,-0.703125,-1.4609375,-0.84765625,0.44335938,-1.265625,-1.96875,0.080078125,0.67578125,-0.015991211,0.14648438,-1.03125,0.32617188,-0.9296875,-0.71875,-2.390625,2.5,-1.3125,0.984375,0.6796875,1.4375,1.1328125,2.53125,1.4375,1.5625,0.5546875,-0.36132812,-0.578125,0.85546875,-0.06689453,0.8984375,2.515625,0.640625,-1.2734375,-1.34375,-0.16015625,1.21875,0.07470703,-1.1015625,1.0078125,-0.94921875,1.1796875,0.55078125,-0.028808594,0.76953125,-0.53125,0.36914062,0.86328125,-0.67578125,0.83984375,-0.72265625 -7,0,7,0.3046875,-0.51953125,0.060546875,1.0703125,0.26757812,1.125,0.16992188,-1.1484375,0.076171875,-2.203125,0.71484375,-1.765625,-1.3515625,0.6640625,-1.1171875,-0.81640625,2.03125,0.12597656,2.359375,-0.83984375,1.71875,-1.109375,-0.7578125,-0.075683594,1.625,-0.6875,-0.25195312,-0.1640625,-1.5,0.59765625,-0.88671875,1.65625,-0.65625,-1.046875,-0.25585938,-1.21875,0.26367188,-0.22460938,-0.19433594,-0.8984375,0.91015625,0.40429688,0.5078125,-0.36914062,0.18164062,0.110839844,-0.6484375,1.703125,-0.890625,-1.71875,0.65234375,0.69921875,-0.53515625,0.16894531,0.8203125,1.21875,-2.984375,-0.36914062,0.45117188,0.99609375,-0.85546875,0.5546875,0.9765625,-0.546875,0.40234375,1.1171875,1.46875,-0.5,-0.028442383,0.07470703,0.75,-0.33398438,0.6953125,1.3359375,0.022705078,0.68359375,2.25,0.099609375,-1.1328125,0.54296875,-0.24511719,1.5078125,0.203125,-1.0625,-1.03125,0.23925781,-1.8203125,-0.12792969,0.37695312,-0.12158203,-0.828125,-0.76953125,1.921875,0.16699219,-0.5546875,0.70703125,0.25585938,-0.1640625,-1.90625,-0.35546875,0.671875,-0.091796875,1.5,-0.080078125,0.0065307617,-0.9453125,-0.359375,-0.4296875,-0.07080078,-1.015625,0.640625,0.20898438,-0.64453125,0.4375,0.90234375,-0.076660156,-0.53125,-0.671875,-0.15429688,-0.042236328,0.46484375,-0.734375,0.032470703,1.171875,0.99609375,-1.140625,0.90234375,1.6796875,0.890625,-0.088378906,-0.22851562,-0.17578125,-0.19042969,-0.2109375,-0.83984375,-1.5390625,-0.11376953,-1.1328125,-0.7734375,-0.32226562,1.9140625,-0.94140625,-0.028686523,-1.0078125,-0.93359375,-1.8046875,-0.62890625,-1.4140625,-1.4453125,-0.32421875,0.06347656,-0.7578125,-0.6171875,0.15722656,-0.06201172,-1.2734375,-1.609375,1.265625,2.453125,-1.046875,0.7578125,0.17773438,0.11621094,-0.7734375,0.028686523,-0.22265625,0.3984375,-1.5625,-1.3828125,0.21484375,0.25390625,2.140625,1.03125,2.09375,-0.46289062,2.546875,1.2734375,-1.0625,1.2421875,1.2109375,2.1875,2.078125,-1.9921875,-0.32421875,0.20117188,0.7578125,-0.80859375,-1.234375,0.703125,-0.71484375,0.47460938,-0.19726562,0.95703125,-0.24609375,0.89453125,-0.43164062,-0.001914978,0.5390625,-0.0016326904,-1.2109375 +6,0,5,0.94921875,0.62890625,0.4921875,-1.28125,1.1796875,0.37304688,0.73828125,0.33007812,-0.4921875,-1.1328125,0.36328125,-0.44921875,0.33398438,0.9609375,-0.61328125,1.015625,-0.71484375,-2.4375,0.81640625,-1.0703125,-0.09716797,-0.78515625,0.71484375,0.34960938,-1.1015625,-0.48632812,-0.69140625,-0.8828125,-2.875,-0.049804688,-0.91015625,0.3828125,-0.671875,-0.04321289,-0.022094727,0.59375,1.21875,0.42578125,-1.2421875,2.390625,-0.48046875,-0.004211426,0.515625,0.58203125,0.18847656,-0.39453125,0.73046875,-0.83984375,0.5234375,0.55078125,-1.3671875,-0.89453125,-0.27734375,1.2734375,-2.90625,0.40039062,0.17871094,-0.84375,1.2890625,-2.046875,1.71875,0.19726562,-0.62109375,0.73828125,-0.87109375,-0.5078125,-0.87890625,-0.22851562,1.421875,1.4453125,-0.33789062,-0.62109375,0.01940918,-0.30859375,-0.56640625,2.203125,1.0546875,1.1796875,-1.796875,-0.6796875,0.81640625,0.75,-0.11621094,-0.7421875,0.08642578,-0.75390625,0.42382812,1.125,-0.8671875,0.6328125,0.51953125,-0.055419922,-1.015625,0.50390625,-1.6875,-0.12695312,-0.29882812,-0.041259766,0.77734375,-0.7734375,-1.6328125,-0.34375,2.109375,0.94921875,-0.15917969,-0.73046875,0.765625,-0.58203125,0.8359375,0.82421875,1.0234375,-0.13574219,1.0703125,-0.64453125,1.1796875,0.21777344,-0.4375,-1.0625,-0.64453125,-1.984375,0.42382812,-1.0703125,0.875,-1.0546875,-0.03881836,1.0234375,-1.640625,-2.359375,-0.41992188,0.33007812,-0.15332031,0.3125,0.49804688,-0.45507812,-1.078125,-0.111328125,-0.73046875,0.6875,0.73046875,-1.421875,3.28125,-0.60546875,-0.022705078,0.74609375,-1.2734375,1.15625,-0.9140625,0.421875,-1.7109375,1.0234375,-0.609375,-0.859375,1.21875,-0.9453125,-1.328125,-0.71875,0.140625,0.70703125,0.5390625,1.6953125,-0.12890625,-0.030151367,1.890625,1.734375,-0.51953125,1.453125,-1.4296875,-0.984375,1.6953125,0.15722656,0.9296875,-0.3203125,0.37695312,0.51953125,1.578125,-0.0546875,-0.80859375,-0.104003906,0.8984375,-1.03125,0.16113281,-1.2265625,-0.82421875,0.15917969,-0.33398438,0.5859375,-0.05419922,-0.64453125,1.484375,-2.15625,0.87109375,0.6796875,0.29882812,0.4375,1.140625,0.06933594,0.5,0.39453125,1.421875,0.18554688 +6,0,6,1.75,1.09375,-0.24414062,0.59765625,1.21875,0.36914062,-0.49414062,0.010375977,0.13769531,-1.6015625,1.46875,-0.21191406,-0.020385742,0.033447266,-0.34960938,-0.29492188,-0.95703125,-0.6875,1.0859375,1.3203125,0.06591797,-2.1875,-0.092285156,-0.032714844,-1.0078125,-0.74609375,-0.90234375,-0.36523438,-0.38476562,-0.59375,-0.40625,0.27539062,0.8828125,0.41015625,0.12109375,-0.57421875,0.5078125,0.40234375,-0.06542969,1.2890625,0.42773438,0.62109375,0.1875,1.859375,-0.640625,-0.19628906,-0.7890625,-1.34375,0.08886719,0.5703125,1.0625,-1.3125,0.13085938,-0.5625,-1.109375,-1.9609375,0.93359375,1.28125,-0.31445312,-1.0703125,1.6484375,1.734375,1.140625,-0.18066406,-1.2265625,-1.0546875,0.6171875,-2.5,0.12451172,0.40820312,-0.103027344,0.106933594,1.234375,-1.6484375,0.43359375,0.65234375,0.33984375,-0.41992188,-1.578125,0.3125,-0.8203125,0.58203125,0.13769531,-0.11425781,-0.20117188,0.55859375,-2.4375,0.048095703,1.1875,1.0859375,1.03125,0.8203125,1.25,0.44335938,-0.6640625,-1.0078125,-0.66796875,1.828125,-0.096191406,0.390625,0.061767578,-0.41992188,0.578125,0.02331543,-0.59375,0.30664062,-0.40625,0.21777344,-0.040039062,-0.43359375,0.49023438,1.8671875,0.30859375,-0.39648438,-0.13085938,1.0546875,-0.44726562,-0.29882812,-0.64453125,0.49609375,-0.016357422,-1.3125,-1.1171875,-0.12207031,-1.2421875,1.5859375,-0.75,-0.3046875,-0.6015625,0.76171875,0.010803223,-2.359375,-0.24902344,1.5859375,-1.2578125,2.703125,-0.47070312,0.55859375,2.25,-1.2890625,1.3671875,-0.625,-0.7734375,0.890625,0.71484375,-0.11230469,-0.28710938,0.5078125,0.31445312,-0.010009766,-0.01159668,-0.9765625,-1.640625,0.8359375,-1.296875,1.75,0.6875,-0.953125,-0.7109375,1.3515625,0.65625,1.0703125,0.87890625,3.484375,-1.84375,1.34375,-2.171875,0.57421875,-0.25195312,-0.022705078,-1.71875,-1.6953125,0.8203125,-0.78515625,0.92578125,0.20703125,-0.37890625,-1.546875,1.4453125,-0.515625,0.4296875,0.35546875,0.053710938,-0.7890625,-1.453125,1.6796875,-1.0078125,-0.73828125,0.6796875,-0.45117188,1.0390625,0.77734375,-1.1328125,-0.875,-0.6015625,-0.30078125,-1.5625,-0.29882812,0.23144531,0.37304688 +6,0,7,-0.34765625,0.27929688,0.10546875,0.8515625,1.1875,-0.13476562,-0.44726562,0.58203125,0.78515625,-0.734375,0.44726562,1.59375,-0.9296875,-0.20605469,-0.65625,0.22070312,0.03540039,-1.1171875,1.4765625,-0.43554688,-0.265625,-2.015625,-1.1328125,0.2421875,-0.052246094,-0.041748047,1.0546875,0.5703125,-0.17285156,-0.21191406,0.46289062,0.7734375,0.5,-0.29882812,2.796875,0.453125,1.2265625,-0.068359375,-0.9140625,0.9921875,0.44921875,-1.0625,-1.3125,-1.5390625,-0.97265625,0.38476562,-0.35742188,-1.046875,0.62890625,0.6875,1.140625,-0.27539062,-0.69921875,-0.0021362305,-0.18847656,-1.453125,0.8984375,1.34375,0.32226562,0.31054688,0.62890625,0.8515625,-0.9921875,1.578125,-1.0390625,0.08935547,-0.81640625,-2.203125,0.97265625,-0.49804688,0.36132812,1.4609375,1.640625,-1.6953125,0.78515625,0.9140625,0.080078125,-0.5078125,-0.08544922,0.80859375,-1.8203125,0.34375,-0.31054688,-1.4296875,0.55078125,-1.65625,-0.10498047,-0.5546875,1.0546875,0.67578125,0.78125,-0.56640625,0.1015625,1.03125,-0.25585938,-0.27929688,-0.75390625,-0.48828125,-0.828125,-0.003540039,0.80859375,0.36914062,0.75,1.2734375,-0.5625,0.75,1.25,0.53125,0.07128906,0.734375,1.2265625,0.80078125,2.65625,-1.4765625,1.1328125,-0.28320312,-1.65625,-0.1328125,-1.046875,-1.015625,1.1484375,0.58984375,-0.69140625,-0.44921875,-1.265625,2.046875,-0.033935547,1.25,0.6953125,-1.2421875,2.046875,-2.1875,0.52734375,0.8359375,-0.1640625,0.82421875,0.53125,0.14941406,0.4921875,-0.64453125,1.5234375,0.30859375,-1.984375,1.4140625,-0.47070312,-1.125,0.31054688,0.3671875,0.6015625,-1.40625,0.35742188,-0.27734375,2.796875,-0.765625,-0.859375,0.6640625,0.27734375,-2.046875,0.78125,0.296875,0.5234375,0.44335938,0.8984375,0.375,0.8671875,0.765625,0.006866455,0.68359375,-0.828125,0.026367188,-1.125,-1.1640625,-2.3125,-1.484375,-0.051513672,0.97265625,-0.18359375,-1.1015625,-1.671875,-1.0859375,1.1640625,0.33398438,-0.5,-1.765625,-0.94140625,-1.203125,-0.640625,-0.17285156,-1.0234375,1.046875,-0.92578125,-0.75390625,-1.6328125,-1.1640625,-1.296875,0.9609375,-0.984375,0.1640625,0.19726562,1.6484375 +7,0,5,1.5546875,1.359375,-0.57421875,-0.25390625,-0.94140625,-0.37890625,-0.95703125,0.921875,-0.9375,-0.21875,2.265625,-0.26757812,-0.33007812,-0.77734375,-0.72265625,1.9453125,0.22851562,-1.7734375,0.234375,-0.014099121,1.8984375,0.40429688,-0.16796875,0.6796875,0.875,-0.32226562,-0.33789062,-1.75,-2.203125,-0.8125,-1.0078125,2.953125,-0.625,2.265625,0.5078125,-0.14160156,0.41015625,0.140625,0.7734375,0.41015625,1.0703125,-0.119628906,0.6875,0.08886719,0.50390625,-0.14257812,0.04345703,-0.15820312,0.44335938,-2.25,-0.83984375,-0.30078125,-0.9921875,-1.4609375,-1.265625,1.0703125,1.1953125,-0.58984375,0.08642578,-0.3046875,0.014770508,-0.057861328,0.8828125,1.4609375,1.421875,0.19726562,-0.15820312,-0.6484375,0.81640625,-0.28320312,-0.4609375,-0.71875,-1.3203125,-0.48046875,0.16015625,0.6796875,0.20605469,0.20703125,-0.02368164,-0.20996094,-0.6015625,-0.40234375,1.0234375,-0.359375,1.59375,0.19238281,-0.16796875,0.37695312,0.91796875,-0.54296875,-0.040771484,-0.14648438,1.1796875,1.0625,0.06982422,-1.2421875,0.71484375,0.90234375,-1.109375,-0.10205078,0.024658203,0.74609375,1.734375,-1.7265625,-0.69140625,-2.140625,-1.71875,-0.53125,-0.76171875,0.37109375,0.63671875,-0.44921875,0.27539062,0.703125,1.421875,-0.13378906,-0.026855469,-1.2734375,-0.36523438,-0.10058594,-0.328125,-0.09765625,-0.6875,-1.6953125,-1.9609375,1.109375,-2.078125,0.119140625,0.41796875,0.94921875,1.1796875,-0.5859375,-0.09765625,0.024047852,-1.71875,0.53515625,1.796875,-0.008544922,-1.0625,-2.3125,1.046875,0.06591797,-0.6015625,0.68359375,-0.106933594,0.56640625,-1.125,-0.20996094,0.8359375,1.171875,-0.2890625,-0.81640625,1.2265625,-1.9296875,-0.08544922,0.234375,-0.080078125,-0.93359375,0.25585938,-0.3515625,1.015625,-0.28125,0.3125,-0.72265625,0.33789062,3.15625,-0.94140625,-0.41992188,0.41210938,-0.375,-0.012329102,-0.67578125,-0.83984375,-1.3125,0.20410156,1.3828125,0.24804688,-0.44921875,0.88671875,-1.3125,0.84765625,-0.12158203,-0.296875,-1.7890625,0.095214844,0.092285156,0.16210938,-0.032470703,0.48828125,-0.14453125,1.9921875,-1.7265625,-0.78515625,-2.0,0.45507812,1.59375,0.72265625,2.515625,1.328125,0.796875 +7,0,6,1.4296875,1.3984375,-0.46289062,-0.3515625,-1.6015625,-1.1328125,0.66015625,0.61328125,-0.21777344,0.21679688,0.2265625,0.37695312,-0.390625,-0.859375,0.28515625,1.875,-1.1875,-0.76953125,0.265625,0.82421875,1.0,-1.0546875,0.82421875,-0.076171875,1.4140625,0.0068969727,-1.4296875,-0.80078125,0.25585938,-0.5078125,-0.7109375,0.16503906,0.89453125,-0.63671875,-0.07714844,-0.5078125,0.5703125,-0.70703125,-0.76953125,-0.38476562,0.45703125,-0.084472656,0.20605469,-0.10205078,-1.2109375,-0.31640625,-0.056396484,0.34765625,-0.59375,-0.79296875,0.7890625,0.17382812,-3.15625,-0.18359375,1.1953125,2.140625,0.93359375,0.34570312,0.34179688,-0.025878906,-0.92578125,-0.328125,-0.07470703,0.5390625,1.390625,-1.078125,-0.052001953,-0.73046875,0.96484375,0.022583008,-0.7890625,1.2578125,-0.50390625,-1.0234375,2.65625,1.140625,1.2109375,0.1328125,-1.4296875,0.041503906,0.08496094,0.37109375,1.203125,-0.5390625,1.0546875,-1.0,-0.609375,1.0859375,1.203125,0.111328125,-0.27539062,-0.83984375,1.5859375,0.63671875,-1.640625,0.69921875,-0.9296875,1.7421875,-0.94140625,0.9140625,1.078125,1.0234375,-0.8828125,0.65625,-0.19921875,-0.58984375,-1.3515625,-1.421875,-0.38476562,-0.0058288574,-0.75390625,-2.0625,0.97265625,-0.13867188,-0.43164062,0.87890625,-0.45507812,0.7421875,-1.3828125,-0.9765625,-0.095214844,0.24414062,-0.93359375,-1.4453125,0.31640625,1.015625,-1.453125,0.5703125,-0.515625,-0.984375,1.3515625,-0.78125,0.5703125,-1.6171875,-0.39453125,-0.97265625,2.53125,0.09082031,-0.90625,-2.40625,1.140625,0.41796875,-1.1484375,-1.0546875,-0.4296875,-0.51171875,0.20605469,1.2421875,2.734375,1.90625,-0.625,-2.125,-0.07470703,-0.73046875,-1.0078125,-0.765625,1.0,-0.15136719,0.65234375,0.828125,-0.5390625,-0.16699219,-0.171875,-0.43164062,-0.3046875,0.33789062,-0.40820312,-0.8125,0.29492188,1.15625,1.5,0.31445312,-0.40625,0.76171875,-1.53125,1.078125,2.890625,-0.53515625,1.3515625,1.140625,-0.46484375,0.49804688,-0.13574219,-1.5390625,-0.890625,-1.0,0.58203125,-0.4375,1.0625,-0.35742188,-0.2734375,-0.04736328,-0.43554688,-0.36914062,-1.15625,0.52734375,-0.6484375,2.21875,1.7890625,0.079589844 +7,0,7,1.65625,0.68359375,-0.87890625,-1.0234375,0.41015625,-0.9375,-0.44335938,1.4765625,0.6015625,0.35351562,-1.234375,1.53125,-0.46679688,0.9296875,0.6171875,0.7890625,0.609375,-0.5546875,0.87890625,1.640625,0.36914062,-0.31054688,-0.6953125,-0.55859375,-0.8671875,1.75,-0.14941406,-0.041015625,0.3359375,-2.265625,0.7890625,2.140625,-0.20117188,0.049072266,-0.009765625,-0.81640625,0.21972656,1.9609375,0.009460449,0.118652344,-0.38476562,-0.18554688,-0.14355469,0.98046875,-0.10058594,-0.40625,-0.53125,-0.65625,-0.44140625,-0.34570312,0.11328125,-1.4375,0.17578125,-0.953125,-0.115722656,0.6640625,-0.94140625,0.13964844,0.19238281,-0.62109375,-1.0390625,-0.20605469,0.62890625,-0.45703125,0.33789062,0.095214844,0.48828125,-0.38085938,0.4140625,0.953125,-0.31054688,2.125,-0.875,-0.65625,0.734375,1.6796875,0.50390625,-0.5859375,-2.5,0.33203125,0.87890625,0.7421875,1.640625,1.609375,0.043945312,0.06542969,-0.04296875,-0.8984375,-0.859375,1.5234375,0.4921875,0.58984375,0.016113281,1.5078125,-0.0390625,0.000541687,-1.25,0.9765625,0.24023438,0.87109375,1.21875,-0.24609375,-0.4765625,-0.27929688,-0.33398438,0.609375,0.08642578,-0.58984375,-1.4296875,-0.921875,0.33789062,-0.20410156,2.09375,-0.796875,0.64453125,-0.91796875,0.16210938,-0.15625,0.31835938,0.40234375,1.125,0.025390625,-0.96875,-0.6015625,-0.44335938,0.70703125,0.040771484,0.16308594,0.99609375,-0.14160156,0.98046875,-1.9453125,0.95703125,-0.234375,-1.203125,0.55859375,-1.34375,0.3984375,0.58984375,-1.96875,0.053710938,0.16601562,-1.359375,1.5078125,-0.43164062,0.12890625,-0.83984375,2.265625,0.8125,-1.90625,1.2734375,-2.71875,0.19824219,0.09765625,-0.12597656,1.0859375,1.1015625,0.6328125,-1.0078125,0.5546875,-1.7421875,1.875,-1.0390625,0.83203125,1.890625,-0.953125,-0.40039062,-2.625,-0.027954102,1.3359375,-0.31445312,0.7265625,-0.99609375,1.1953125,0.2890625,1.2890625,0.18261719,-1.34375,-0.8828125,0.39257812,-0.31054688,0.43945312,-1.0625,0.14453125,-2.125,0.29492188,-1.6484375,-2.40625,1.34375,-1.2421875,-1.390625,-1.6640625,-2.125,0.39453125,0.059326172,0.625,-0.66015625,-0.23730469,-0.70703125,1.0546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv index d4afd773..28d6a225 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,5,0.6484375,-1.109375,-1.046875,0.515625,0.6015625,0.3203125,-1.4609375,1.8203125,1.2421875,0.6640625,0.265625,-0.5390625,-1.53125,-0.049560547,-0.8828125,0.06225586,0.59765625,-0.43164062,1.046875,0.7421875,0.91015625,-0.40820312,1.0234375,1.2421875,0.85546875,-1.4921875,-0.34375,-0.010437012,0.48046875,1.9453125,-1.1875,-1.46875,1.3671875,-0.42773438,0.30664062,0.57421875,-0.44726562,0.55859375,0.14941406,-0.18066406,-0.828125,-0.17089844,-0.5078125,0.75,0.64453125,-0.92578125,1.40625,-0.546875,-0.984375,-1.7265625,0.953125,0.71484375,-0.91015625,-1.046875,-0.43164062,1.046875,0.66796875,-0.35546875,0.59765625,1.0703125,-0.87890625,0.390625,1.359375,-0.48632812,0.1484375,-0.74609375,1.171875,-0.36523438,0.47070312,-1.0078125,0.62109375,1.2109375,1.0078125,0.17480469,0.19433594,-1.0546875,-0.66796875,0.4453125,-1.90625,0.42382812,0.51171875,1.4296875,0.06933594,-0.14160156,-0.66015625,0.36328125,-1.859375,-1.6875,0.14746094,0.015136719,-0.18945312,1.390625,0.19628906,-0.73828125,0.007385254,-1.1796875,1.4921875,-3.28125,-0.38476562,2.265625,0.1484375,-0.95703125,0.72265625,1.578125,-0.7109375,1.6171875,0.044677734,0.80859375,-0.41015625,0.47265625,0.91015625,1.625,-0.76953125,-1.4921875,0.62109375,-0.9296875,-0.57421875,-0.41796875,0.03955078,0.97265625,-0.22363281,0.44726562,-0.71875,0.98046875,-0.6171875,-0.609375,0.13183594,-0.26757812,-1.0078125,1.9140625,0.58203125,-2.53125,0.14160156,0.453125,-0.78515625,0.23828125,2.046875,-1.890625,-0.84765625,0.88671875,0.7421875,0.93359375,1.0703125,0.5546875,-2.734375,0.16992188,-2.53125,-0.115722656,0.08984375,0.80078125,-0.47265625,-1.2578125,-1.65625,-0.26757812,-0.4921875,-0.71875,0.90234375,-0.16015625,1.078125,0.00089263916,-1.2421875,-1.7734375,-0.3359375,-1.8203125,-2.65625,1.1171875,-0.69140625,-0.3984375,-0.12792969,1.078125,1.3359375,1.2578125,0.66015625,1.5,0.31445312,-0.55078125,0.84375,-0.19042969,-0.37695312,0.99609375,0.27929688,1.109375,-0.54296875,-1.7109375,-0.46484375,0.96484375,-0.11279297,-0.41210938,0.01361084,0.05908203,1.578125,-0.02758789,-0.19042969,0.57421875,1.2578125,-0.30078125,0.38476562,-0.75390625,-0.8671875,0.055419922 -8,0,6,-1.03125,-0.16796875,-0.26757812,-0.25585938,1.21875,0.37695312,0.5078125,0.85546875,0.2578125,-1.6796875,-0.23828125,-1.640625,-1.875,-0.28320312,-0.72265625,-0.33984375,1.1484375,-0.72265625,1.2421875,0.025146484,0.72265625,0.19335938,0.40820312,0.9296875,-0.578125,-0.44726562,-1.109375,0.75,-0.087890625,1.390625,0.063964844,-0.58984375,-0.12988281,-2.1875,-0.0004119873,0.22070312,-0.05419922,0.34960938,-0.40820312,0.40039062,0.87890625,0.17871094,-1.21875,0.7109375,0.65234375,0.34960938,0.16210938,0.6171875,-0.41210938,-2.3125,0.08984375,0.64453125,-1.265625,0.20410156,1.3828125,1.1953125,-0.5625,0.5,0.008605957,0.85546875,-1.6328125,-0.453125,1.1015625,0.012939453,0.10205078,0.5625,2.078125,-0.96484375,1.671875,-0.3515625,-0.08935547,-0.90234375,0.049560547,0.40234375,-0.6484375,0.4296875,0.671875,0.921875,-1.2734375,-0.296875,-0.19433594,1.75,-0.5078125,-0.5703125,1.1171875,-1.0078125,-0.39648438,-2.09375,-0.0023651123,-0.14355469,-1.0625,-0.59375,1.0,-0.796875,-0.87109375,0.53125,0.8203125,-2.546875,-1.5625,0.37890625,-0.12597656,-1.1875,-0.765625,-0.110839844,1.28125,0.93359375,1.09375,-0.3203125,-2.765625,-0.7578125,1.8515625,0.765625,1.25,0.060302734,2.015625,0.875,0.31445312,0.984375,1.296875,0.6875,0.82421875,0.27929688,-0.5078125,0.49414062,0.78125,0.55859375,-0.14746094,-0.87109375,0.6015625,1.0078125,-1.484375,-1.015625,0.42578125,0.66796875,-0.15429688,-1.1953125,0.032470703,-1.875,-0.6328125,0.38867188,0.004699707,0.045166016,0.51953125,0.40234375,-1.28125,-1.078125,-0.4765625,1.6328125,-0.7265625,0.49609375,-0.18652344,-1.5625,-0.29101562,0.55078125,0.035888672,-0.41796875,1.4921875,0.8828125,-0.20507812,0.453125,-1.21875,-0.9375,-1.5234375,-0.73046875,0.25976562,0.5,-0.66796875,-0.40234375,-3.71875,2.515625,0.43359375,1.0,1.9453125,1.1328125,1.3828125,0.056640625,0.90625,-0.13183594,0.96875,1.28125,1.984375,0.75390625,-2.359375,-1.0390625,-0.4296875,1.0234375,0.5625,-1.1484375,0.10839844,-1.171875,-0.80078125,-1.015625,0.07373047,1.84375,-0.030883789,-0.27539062,0.19628906,-1.203125,0.35742188,0.12109375 -8,0,7,1.34375,-1.4296875,-0.57421875,1.3046875,-0.796875,0.16308594,1.0,-0.24804688,3.359375,0.55859375,1.046875,-0.46875,-1.6953125,0.09863281,1.1484375,-1.8125,1.7578125,-1.078125,-1.3359375,-0.12695312,1.3515625,1.03125,0.78515625,-0.58984375,0.22363281,-0.20410156,0.12695312,-0.22070312,-0.13964844,1.7890625,-0.34960938,0.009216309,2.53125,-0.34375,1.109375,0.48046875,-0.390625,1.6875,0.046142578,0.045410156,-1.15625,0.6796875,-1.90625,-1.1875,-0.076171875,-0.33203125,1.0078125,0.030761719,-2.046875,-1.0078125,-0.76953125,0.13964844,-1.5,-0.69140625,1.15625,1.40625,0.5390625,-0.734375,-0.42382812,0.053955078,-0.22558594,0.064453125,0.59375,-0.4765625,0.19824219,-0.07080078,3.515625,-0.8671875,-0.008911133,-0.46875,-0.44140625,1.7109375,0.98828125,0.20117188,-0.6171875,-0.03955078,-0.61328125,0.9375,-1.9765625,2.84375,0.72265625,0.77734375,0.51953125,-0.52734375,-0.6328125,-1.4921875,0.4140625,-1.265625,-0.68359375,0.95703125,-0.24316406,0.110839844,0.28125,-0.53515625,0.671875,-0.2734375,1.1328125,-1.0390625,0.61328125,-0.640625,-1.46875,-0.84765625,0.7265625,-2.265625,0.049804688,-1.0625,0.40625,-1.3984375,-0.21777344,-0.71484375,1.15625,-0.33203125,-0.76171875,-1.2421875,1.0078125,-0.5546875,0.875,0.6484375,0.013244629,-1.0234375,-1.328125,-0.19726562,0.97265625,0.66015625,-1.3203125,-0.81640625,-0.31054688,-1.21875,-0.53125,1.3125,-0.53125,-0.18554688,0.04321289,1.015625,-0.80078125,0.34765625,1.046875,-0.0234375,-0.71484375,0.98828125,2.8125,0.50390625,0.23632812,0.11767578,-1.25,-0.44140625,-0.97265625,0.546875,0.83984375,0.3828125,1.2265625,0.859375,-0.65234375,0.10498047,-0.15332031,-0.1640625,-0.17773438,0.7421875,-0.14746094,-0.16210938,-0.25976562,0.55078125,-0.15625,-1.3359375,-1.375,1.5859375,-0.6796875,-0.671875,-2.265625,-0.765625,0.31054688,-0.23046875,-1.1328125,-0.057128906,-0.43359375,0.3515625,0.40039062,0.8671875,0.80859375,-0.095703125,0.103027344,1.375,0.33398438,-0.65234375,0.71484375,0.88671875,-0.24121094,-1.8125,-1.4765625,-1.0859375,1.0078125,0.47851562,0.86328125,1.4765625,1.0078125,-0.36328125,-0.390625,-0.296875,-1.609375,0.049560547 +8,0,5,1.7890625,0.8515625,0.26367188,-0.18652344,-0.059570312,-0.56640625,-1.6015625,0.59375,-0.08984375,0.57421875,0.33789062,0.31445312,-0.14648438,-0.13574219,-0.07714844,-0.35351562,-1.2109375,-2.171875,0.78515625,0.74609375,1.9453125,-1.28125,-1.265625,-0.16308594,1.609375,-0.068359375,-0.010253906,-0.359375,-0.515625,-0.36328125,-1.2109375,0.22558594,0.65234375,-0.60546875,0.52734375,-1.5234375,0.31640625,-0.52734375,-2.140625,-0.005493164,1.4609375,-0.8359375,-0.59375,0.43164062,-1.7734375,-0.20800781,-0.359375,0.34179688,1.953125,0.328125,0.14746094,-0.33984375,-1.484375,1.1171875,-0.78515625,0.8125,0.44726562,1.390625,0.7890625,-0.640625,-1.125,-1.0390625,-0.087402344,1.1875,1.2109375,0.4140625,-0.41992188,-2.0625,1.6796875,0.765625,0.28125,1.328125,-0.79296875,-1.109375,2.734375,1.625,-0.16113281,0.22949219,-0.35351562,-0.067871094,-1.0390625,0.3984375,-0.012390137,1.078125,0.27734375,-1.5390625,0.049804688,2.453125,0.109375,1.2734375,-0.296875,0.21386719,1.7578125,-0.41601562,-0.9921875,-0.30664062,0.70703125,1.46875,0.578125,-0.19824219,1.4609375,1.046875,-0.91015625,0.15527344,0.27734375,-0.08642578,-0.8125,-0.6796875,0.14453125,0.4609375,-0.24023438,0.10253906,0.008056641,-1.703125,-0.92578125,0.51171875,-0.875,0.58203125,-1.5625,0.203125,0.21582031,0.38476562,-2.171875,-0.984375,-1.1875,0.625,-0.36914062,1.0859375,0.42773438,-0.19824219,1.984375,-0.98828125,0.58984375,-0.546875,-0.65234375,0.23535156,1.015625,0.18164062,-0.21875,-1.953125,1.3515625,2.703125,-0.33007812,-0.671875,-1.484375,0.8203125,0.21777344,0.86328125,1.4921875,0.96484375,0.40039062,-0.24414062,0.95703125,-0.69921875,-1.7890625,-0.38085938,-0.045410156,-0.7890625,0.5703125,-0.20214844,0.37890625,0.33789062,-0.41210938,-1.2265625,1.7265625,0.119140625,0.29101562,-0.18261719,-1.828125,1.734375,0.32226562,0.8359375,-0.703125,-0.9140625,-1.2578125,1.8203125,0.25,-0.578125,0.35742188,-0.8828125,1.515625,0.734375,-0.19628906,-1.765625,-1.671875,-0.96484375,-0.21289062,-0.48046875,0.7890625,-0.14941406,-0.61328125,-1.421875,-0.49023438,-1.2890625,-0.16992188,-0.65625,-1.7109375,1.203125,1.2421875,0.9375 +8,0,6,1.46875,1.421875,0.018798828,0.24511719,0.045898438,-0.7265625,0.734375,0.81640625,1.0546875,-0.8203125,1.5703125,1.234375,-0.8359375,-0.89453125,0.21972656,0.265625,-0.671875,-0.91796875,0.71875,0.515625,-0.05517578,-0.74609375,-0.20214844,1.4765625,-0.029174805,0.58203125,-2.265625,-0.14355469,-0.2578125,0.51953125,-0.84375,-0.21972656,0.4375,-0.796875,1.2734375,0.09326172,0.6328125,-0.38867188,0.025390625,1.40625,-0.45117188,1.0859375,-0.17675781,-1.90625,-1.234375,-1.03125,0.1953125,-0.53515625,1.390625,0.65234375,0.734375,-0.7421875,-0.703125,0.61328125,0.3828125,0.48632812,0.7890625,-1.046875,-1.1796875,0.064453125,1.4453125,0.6484375,-0.18847656,0.96484375,0.44140625,-1.3125,0.51953125,0.21972656,-0.8203125,0.36914062,-0.5703125,0.6484375,0.94140625,-0.62109375,1.703125,0.703125,1.6171875,1.3125,-0.125,0.20117188,-0.4921875,-1.03125,0.7109375,-2.234375,0.31445312,0.020019531,0.46679688,-0.37890625,1.25,0.21484375,0.625,-0.76171875,-0.80078125,1.171875,-1.2109375,-0.65625,-2.71875,0.93359375,-0.73046875,-0.016357422,-0.8125,1.4375,0.13476562,0.091308594,-0.27929688,1.3828125,-0.49804688,0.46289062,-1.1328125,0.32617188,-0.20117188,-0.19433594,1.390625,-0.111816406,1.078125,2.03125,-0.5546875,-0.09765625,-0.46289062,-0.765625,0.328125,-0.78125,-0.35546875,-0.87109375,-1.6796875,2.5,-1.0859375,-0.68359375,0.33007812,-0.890625,1.5234375,-1.546875,-0.16894531,0.029541016,-1.53125,0.45507812,1.4140625,-0.29296875,0.22167969,-2.078125,1.96875,-0.765625,-1.6875,1.625,0.6875,-0.296875,0.83984375,-0.28515625,-0.25585938,1.078125,-1.5078125,-1.546875,0.92578125,-1.421875,0.5625,1.171875,1.4375,-1.3203125,0.7578125,0.092285156,-0.20605469,1.546875,2.0625,1.71875,-0.74609375,0.17480469,-0.56640625,0.34179688,0.31640625,0.23730469,-0.8203125,-0.0859375,-1.890625,-0.3203125,-1.3203125,0.94140625,1.3125,-0.96875,0.44726562,-0.14941406,-1.1328125,-1.4296875,-0.33203125,-1.859375,-0.8046875,0.33007812,-0.22753906,0.20117188,-1.4296875,-2.015625,-0.44335938,1.484375,-1.2890625,-1.1953125,-1.3046875,2.15625,0.875,0.9453125,-0.375,-0.4375 +8,0,7,1.640625,1.9765625,0.36132812,0.13574219,-1.796875,-0.22851562,-1.4921875,1.5546875,1.421875,-2.71875,2.03125,-0.84765625,-0.49609375,1.3125,-0.22363281,0.5234375,0.36523438,0.37304688,1.71875,0.08935547,-0.72265625,-0.111328125,-0.54296875,-0.234375,-0.703125,-0.5859375,-0.35742188,-0.31835938,-0.19824219,-0.6171875,-0.4765625,0.46679688,0.5703125,0.75,0.80078125,-0.14648438,1.7265625,0.68359375,-0.62109375,1.8515625,-1.578125,-0.22265625,0.19042969,2.328125,0.033447266,0.62890625,-0.71875,0.453125,0.052734375,-0.037841797,-0.56640625,-0.14257812,-0.22851562,-0.359375,-0.53125,-0.16796875,0.7265625,0.5546875,-1.1953125,0.33789062,0.38867188,0.875,1.1484375,-0.33984375,1.0703125,-0.11035156,0.3203125,-1.640625,-0.60546875,-0.15039062,-0.44921875,-0.27148438,0.38476562,-0.14746094,-0.94921875,0.734375,0.14453125,0.35546875,-1.6484375,1.2265625,-1.125,-0.75390625,1.078125,-1.8125,0.23242188,-0.12207031,0.48632812,-1.546875,-0.28515625,0.47265625,1.34375,1.53125,-0.12988281,1.0,-0.89453125,-0.23535156,-0.63671875,0.31835938,-0.04248047,-0.16503906,-1.875,0.83984375,1.5,-2.171875,0.53515625,1.3828125,-1.0390625,-0.12695312,-0.107910156,-0.0014190674,0.2265625,-0.15820312,1.6640625,-0.42578125,0.53515625,0.20214844,-0.51171875,-0.17089844,-0.48632812,0.65234375,1.3359375,-0.828125,-0.0040893555,-1.59375,-0.9765625,0.48632812,0.5390625,-1.328125,-0.421875,1.6953125,-0.67578125,1.0234375,-0.9921875,1.0859375,-2.21875,1.390625,0.98828125,-0.4609375,-0.66796875,-2.046875,1.5703125,-1.125,-0.9453125,0.09326172,-0.16699219,0.031982422,0.22851562,0.0035095215,0.0031433105,1.28125,-1.1875,-0.33789062,0.98046875,-0.375,-0.9453125,0.5625,1.0546875,-0.052734375,0.3359375,0.20703125,-0.71875,0.15820312,0.14355469,0.33007812,-0.41015625,0.8125,-0.7421875,0.7265625,0.5390625,-1.9609375,-1.984375,-1.0859375,-2.328125,-0.75,0.5625,2.296875,0.578125,-0.23632812,0.032470703,-0.76171875,0.69140625,-0.19628906,-0.8671875,-0.4140625,-0.734375,0.22460938,0.66796875,1.2109375,-0.23046875,-0.14550781,-0.18359375,-0.53515625,0.22753906,-1.546875,-3.125,2.109375,3.0625,0.58984375,-0.25195312,0.73046875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv index d999f205..4477b4bf 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,5,0.21875,0.12402344,0.19824219,-0.34765625,0.9453125,-0.2890625,-2.46875,-0.33203125,1.125,-1.0546875,-0.1171875,-1.78125,-0.98046875,-1.171875,0.94921875,1.578125,0.60546875,1.2421875,0.12207031,-1.046875,2.109375,-0.578125,-1.21875,1.59375,0.32226562,0.56640625,-0.39648438,1.0859375,-0.52734375,-0.47460938,-1.4921875,-0.10058594,0.33007812,0.19140625,-1.3671875,-0.107421875,1.046875,-0.86328125,-0.96484375,-0.5546875,-0.10986328,-0.421875,0.828125,0.061523438,0.5390625,0.14355469,0.22363281,-0.5234375,-0.4296875,-0.765625,2.703125,0.24316406,-0.13476562,1.9609375,-0.484375,0.91015625,-0.14355469,-0.31835938,-1.390625,-0.5625,0.50390625,-0.34960938,-1.296875,-0.9296875,0.48828125,0.21191406,-0.53125,-1.3125,0.15429688,0.33398438,-0.33398438,0.38867188,-0.5859375,-0.032958984,-1.5078125,-1.4765625,0.6015625,-1.296875,0.3671875,0.70703125,1.2421875,1.0859375,-0.42382812,-1.140625,0.21972656,-0.103027344,-1.1328125,-0.5234375,-0.69140625,0.578125,0.640625,0.84375,-1.0234375,0.68359375,-0.28320312,0.0015869141,1.3125,-0.41992188,-0.84765625,0.123046875,0.51171875,0.05493164,-1.515625,1.3359375,-1.9375,1.40625,-0.44921875,1.4375,0.52734375,0.796875,1.21875,0.42578125,-2.109375,0.62109375,0.55859375,0.66796875,-2.046875,-0.80859375,0.3828125,-0.71484375,-2.28125,2.328125,0.22851562,0.91015625,-0.15234375,0.049560547,0.18457031,0.24902344,-0.118652344,1.1328125,-0.048095703,0.50390625,0.13574219,-0.53515625,-0.40429688,0.28320312,2.375,0.8125,0.06738281,-0.22070312,0.20019531,-0.46289062,1.484375,-0.00014972687,-0.28710938,-1.3984375,-1.3046875,-0.99609375,0.83203125,-0.12597656,0.59765625,-2.84375,0.953125,-0.9453125,0.95703125,-1.25,-0.28515625,-0.390625,1.0078125,0.18847656,-0.37695312,0.16308594,-0.20410156,-0.96484375,-0.06689453,1.7734375,1.1640625,0.49609375,0.29296875,-1.5234375,0.7265625,0.6171875,1.7890625,0.0002937317,-0.953125,0.69140625,0.99609375,-0.453125,2.171875,2.234375,1.890625,-0.30078125,-2.078125,-1.234375,0.10839844,-0.096191406,1.3046875,-1.0078125,-0.40429688,-0.453125,0.41210938,-1.203125,0.47070312,1.734375,-1.9921875,-0.83203125,-1.078125,0.421875,1.234375,-0.03149414 -9,0,6,0.021850586,1.2890625,-0.671875,1.25,-2.15625,1.1953125,-2.15625,0.33007812,3.390625,-1.0390625,0.4609375,0.034423828,-0.92578125,-0.23925781,0.3671875,-0.078125,-0.004180908,1.265625,-1.5546875,-0.26757812,1.5703125,1.3671875,1.5625,-0.85546875,0.765625,-1.765625,-0.9765625,-0.87109375,0.38085938,-0.14355469,-1.734375,0.35351562,-0.88671875,-0.546875,-0.69921875,-0.23339844,0.15625,-0.6484375,-0.5703125,0.55078125,-0.64453125,0.16015625,-0.060058594,-1.671875,2.265625,-0.9609375,0.33398438,-0.33789062,-0.38671875,-0.12402344,0.46679688,1.65625,-0.49804688,-0.640625,1.234375,1.2421875,1.3046875,0.1953125,-0.03466797,-0.41796875,1.8359375,-0.14941406,1.28125,0.625,-0.22265625,-0.5625,1.6484375,-0.29101562,-0.8203125,-1.1328125,-1.0078125,1.8203125,-0.18457031,0.8203125,0.28320312,-1.828125,-0.53515625,0.17773438,-1.25,1.6015625,0.703125,1.078125,0.1015625,-0.39453125,0.37890625,0.90234375,-0.66796875,-0.98046875,-0.77734375,1.0703125,0.18066406,0.55078125,-1.4921875,0.052734375,0.15527344,-1.265625,0.45507812,0.25585938,0.00030136108,1.6640625,-0.44335938,-0.21679688,0.22070312,-1.0,0.20605469,0.484375,0.87109375,0.095703125,-0.37695312,0.39453125,1.359375,0.18164062,-1.6953125,-2.015625,0.078125,-0.26953125,-0.52734375,-0.86328125,0.50390625,-1.671875,-1.15625,0.49609375,0.32617188,0.671875,-0.7890625,0.123535156,0.62109375,-0.96875,-0.5078125,1.453125,-0.85546875,-0.028320312,1.7265625,1.6875,0.15527344,-0.45507812,0.09814453,-0.14648438,-0.76953125,-1.1015625,-0.20996094,-0.25,-0.14257812,0.57421875,-0.8046875,-1.0234375,-1.640625,-0.029296875,-0.49414062,0.38867188,-0.11425781,-0.51953125,-0.3359375,0.640625,-0.9921875,-0.5859375,-0.5234375,2.046875,-0.37304688,-0.86328125,-0.265625,0.18359375,0.25,-1.4296875,-0.12207031,3.171875,-0.053955078,0.60546875,-1.609375,-0.7578125,0.83984375,1.25,0.23046875,1.140625,1.03125,0.91015625,0.265625,1.3359375,-0.88671875,0.85546875,-0.12890625,0.011962891,1.1171875,-1.78125,0.42773438,1.125,-0.87109375,-0.57421875,-0.49609375,-0.55078125,-1.2890625,0.002532959,0.2890625,0.86328125,1.3984375,1.453125,-2.515625,1.25,-1.9453125,0.12792969 -9,0,7,-0.58984375,2.0,0.61328125,1.984375,1.2421875,0.34179688,-1.3671875,-0.65234375,1.5625,-0.8671875,0.5625,0.28515625,-1.09375,-0.29492188,-0.26367188,0.099121094,0.11767578,0.38085938,-0.703125,0.51171875,0.84375,0.65234375,0.17675781,-0.34765625,2.34375,0.24023438,-2.0625,1.046875,2.3125,0.62890625,-1.5390625,0.13964844,1.703125,-0.24804688,-1.1875,0.53125,-0.49023438,-0.109375,-0.44726562,0.24121094,-1.5078125,-0.54296875,0.33203125,-1.96875,1.5546875,-0.15136719,1.015625,-0.328125,-0.69921875,1.46875,0.076171875,1.0234375,-0.43945312,-0.22265625,-0.90625,2.515625,-0.5,-0.033447266,0.7578125,0.103515625,0.9375,0.14746094,-0.40429688,-0.82421875,-0.16503906,0.11621094,2.3125,-0.2578125,-0.38476562,-0.80859375,-1.90625,0.65625,0.16503906,-1.0,0.41210938,-1.2421875,1.21875,-0.73046875,-1.8671875,1.6328125,1.1640625,1.734375,0.025512695,-0.012268066,0.36914062,1.0078125,-1.25,-0.7734375,0.25195312,-0.15527344,1.2421875,2.703125,0.51171875,-1.171875,-1.75,-2.390625,-1.1484375,-1.1171875,-0.25,0.87890625,1.2265625,0.3046875,-0.828125,0.71875,-0.40039062,0.79296875,0.73046875,-0.23535156,-0.7421875,-0.7734375,0.828125,0.46484375,-1.90625,-0.6484375,0.48632812,1.328125,-1.3046875,0.421875,-0.47070312,0.08300781,-0.83203125,0.70703125,-0.35351562,0.5234375,-1.4375,-1.8671875,0.032470703,-0.921875,0.041503906,1.125,0.06347656,0.66015625,1.171875,0.6953125,0.87890625,-2.0625,0.8671875,-1.3515625,-0.95703125,-0.9296875,0.16894531,-0.703125,0.38476562,0.87890625,-0.7265625,0.44140625,-0.08300781,0.20410156,-1.6171875,1.140625,-0.6796875,-0.65625,1.25,0.8828125,-2.296875,-0.421875,-1.4765625,0.099609375,0.88671875,-0.046875,-0.6171875,-0.03491211,0.47460938,-1.1640625,-1.375,0.98046875,-0.25976562,0.58984375,-1.578125,-1.3203125,0.15722656,1.09375,0.98828125,-0.036376953,-0.34570312,-0.7265625,-0.014892578,1.6328125,0.66015625,0.25,0.68359375,0.78515625,0.5234375,-0.059326172,1.0859375,-0.39453125,-0.21875,-0.53515625,-0.69921875,-1.1796875,-0.74609375,1.1484375,-0.13085938,0.734375,-0.5234375,0.75390625,-0.65625,-1.1015625,0.8125,-1.125 +9,0,5,1.7421875,0.86328125,0.08642578,0.15820312,-0.040771484,-0.63671875,0.12792969,1.234375,0.028320312,-2.0,1.1875,0.027832031,-1.6875,-0.94921875,0.26953125,0.6015625,-1.03125,0.66796875,-0.765625,0.12792969,-0.055419922,0.2890625,-0.49804688,-0.484375,-0.30664062,-0.3125,-1.6875,0.110839844,-1.2265625,-0.2265625,-1.5390625,-0.38867188,-1.2421875,0.58984375,-0.061035156,-0.70703125,0.6015625,-0.100097656,0.34570312,0.9609375,0.8046875,0.328125,1.0859375,2.4375,-0.20410156,-0.33007812,-0.09033203,0.026245117,-2.28125,-0.984375,0.48242188,-1.203125,-1.53125,-0.26171875,-1.1171875,0.032226562,1.4609375,1.3046875,-0.7578125,-1.5546875,-0.27734375,1.453125,-0.9140625,0.33984375,0.984375,-0.46875,0.66796875,-0.63671875,0.74609375,0.21972656,-0.40429688,-1.7578125,-0.018676758,-1.15625,-0.053222656,1.4453125,2.109375,-0.07470703,0.27148438,-0.050048828,-0.24707031,0.68359375,-0.078125,-1.703125,0.9765625,0.640625,0.6015625,-2.0,-0.07421875,0.84765625,0.12060547,0.94921875,1.0546875,0.953125,-0.890625,-0.5390625,-1.046875,0.35546875,0.30664062,0.86328125,2.109375,0.41992188,-1.0703125,-0.53515625,0.9765625,-1.0859375,-0.484375,-0.36523438,0.73046875,-0.671875,-0.44140625,1.96875,0.41992188,1.0234375,0.63671875,0.47265625,-0.068359375,0.16503906,-0.51953125,0.875,0.92578125,-1.6953125,-0.74609375,-0.43554688,0.20117188,0.28320312,0.29492188,-0.71484375,-1.515625,-0.009338379,0.76953125,-1.0390625,-0.1640625,1.4453125,-0.64453125,1.0546875,0.12597656,-0.40039062,0.9375,-2.34375,1.6328125,-0.73046875,-1.2890625,0.15332031,1.59375,0.39453125,-1.0234375,0.76171875,2.90625,3.0,-0.89453125,-1.6015625,-2.421875,1.65625,-0.5078125,1.171875,0.0107421875,0.5625,-0.8359375,0.36132812,-0.94140625,0.828125,0.23046875,1.5625,-0.9609375,0.25195312,-0.82421875,0.37304688,0.56640625,-0.98046875,0.23339844,-1.265625,1.640625,-0.86328125,0.026611328,-0.091308594,0.55078125,-0.16699219,0.890625,-0.6875,-0.24023438,0.390625,0.58203125,-0.43945312,-0.34375,1.0703125,0.578125,0.36328125,1.5078125,-2.296875,-0.3203125,-0.671875,-0.24804688,-1.7578125,-1.265625,2.09375,0.09326172,-0.671875,-0.21484375,-0.4140625 +9,0,6,1.1328125,1.78125,0.05908203,-0.7734375,0.39453125,-0.114746094,0.078125,-1.1640625,2.09375,-1.5390625,2.453125,-1.359375,-1.0234375,0.3359375,0.5703125,-0.26171875,-0.88671875,-0.73046875,0.6015625,0.29101562,0.28320312,-0.859375,0.9296875,-0.28710938,-1.1015625,-1.28125,0.2578125,0.033447266,-0.8203125,0.43554688,0.43945312,0.041992188,0.087890625,1.015625,0.65625,-0.37890625,0.9453125,1.9140625,-0.4296875,0.35546875,0.65234375,0.07861328,1.015625,1.28125,-1.3046875,0.17480469,0.1875,-1.4140625,-1.515625,0.6328125,0.40234375,-0.49414062,-0.05517578,0.49609375,0.20214844,-0.32421875,0.84375,1.0078125,0.08691406,-0.32226562,0.83203125,2.09375,-0.84765625,0.87109375,1.2421875,-0.15332031,-0.27539062,-1.125,0.84375,0.875,-1.484375,0.5703125,0.052490234,-0.73046875,-0.44921875,-0.08935547,-0.16601562,-0.67578125,-0.2578125,1.0,0.053955078,0.23535156,0.57421875,1.625,1.0625,-0.6640625,-1.7109375,-0.9609375,0.8828125,-0.20996094,1.6875,-0.62890625,1.5859375,-0.111328125,-0.36914062,-0.19140625,-1.0625,0.47265625,-0.86328125,-1.078125,0.13476562,-0.70703125,1.46875,-0.5859375,0.10498047,0.15039062,-1.5390625,0.55859375,-0.0859375,-0.45507812,0.19628906,2.296875,-0.46484375,-2.0,0.14941406,0.8359375,-1.265625,-0.17773438,-0.36328125,-0.38085938,0.075683594,-1.3125,-0.26757812,-1.578125,-1.71875,2.421875,-1.5546875,-0.27539062,-0.66796875,-0.22851562,1.1796875,-0.032958984,-0.32421875,0.60546875,-1.40625,2.03125,-0.65234375,1.109375,1.046875,-0.8671875,1.359375,0.30859375,-0.55078125,2.234375,0.15234375,-1.5703125,-0.3125,0.029663086,-0.3359375,0.22753906,-0.6796875,-1.5390625,-0.1796875,0.0045166016,-1.140625,0.66015625,0.58984375,-0.8203125,-1.09375,2.15625,-0.28515625,-0.546875,1.3203125,1.6875,-0.94140625,1.890625,-1.0546875,1.4140625,-0.4921875,-0.076171875,-1.3203125,0.107910156,-0.26757812,-1.390625,1.0703125,0.1484375,0.14648438,-2.40625,-0.66015625,-2.03125,1.5234375,0.55078125,-0.48632812,0.1953125,-1.4765625,1.9140625,-1.734375,-1.28125,-0.296875,0.68359375,0.84765625,0.265625,-0.62890625,0.30664062,-0.022216797,-1.59375,-0.73828125,-0.08886719,1.5234375,0.953125 +9,0,7,0.546875,0.875,0.71484375,-2.0625,-0.20117188,0.33203125,1.6484375,-0.9140625,1.4296875,-0.85546875,1.375,-1.3515625,0.859375,-0.30664062,0.2578125,0.890625,-0.08251953,-1.1015625,2.09375,-1.171875,-0.91015625,-1.328125,0.96484375,-0.3828125,-2.203125,-1.1953125,0.83203125,-1.0234375,-1.078125,1.2578125,0.37695312,-0.57421875,-0.53125,0.34570312,1.6796875,0.55078125,0.21582031,0.54296875,-1.7890625,1.4765625,-0.9453125,0.18945312,1.0,1.34375,0.6796875,0.70703125,-0.83984375,-0.88671875,-0.75,0.37695312,-1.8984375,0.703125,-0.8828125,1.8046875,-0.6875,0.6171875,0.90625,0.17480469,-0.27929688,-0.41796875,0.31054688,0.20214844,-1.671875,0.875,0.51171875,1.0234375,-0.29882812,-1.40625,-0.35351562,2.125,-1.40625,-0.7890625,-0.29492188,0.6875,-0.4609375,1.109375,1.7421875,0.0859375,0.03100586,-0.052490234,0.40625,0.8359375,0.28320312,0.7109375,0.59375,-1.40625,-0.20703125,-1.5234375,-0.46875,-0.5625,0.41796875,-0.24121094,-0.78125,-0.58203125,-1.765625,0.40039062,-0.546875,-0.34765625,-0.50390625,-0.30859375,-0.796875,-0.029785156,2.40625,1.171875,0.94921875,1.0390625,-0.609375,-0.022583008,0.4609375,-0.80859375,0.890625,1.2734375,1.0859375,-2.203125,1.15625,-0.27734375,0.12792969,-0.48046875,-0.73828125,0.011169434,1.421875,-0.41015625,1.234375,-1.703125,0.47460938,0.33007812,-2.4375,-1.578125,-0.67578125,0.703125,0.8046875,0.40820312,0.8125,-1.2578125,0.734375,-0.08300781,-0.40820312,0.9375,0.15332031,-0.671875,2.453125,1.96875,-0.984375,1.6015625,-0.83203125,-0.75,0.1015625,0.6953125,-1.7890625,0.609375,-0.53125,-1.015625,0.22851562,-1.25,-1.796875,-0.34179688,0.68359375,-0.67578125,0.029663086,2.375,-1.8125,-0.24316406,1.296875,0.52734375,-0.57421875,-0.16992188,-0.359375,0.98046875,-0.3046875,0.65625,0.36523438,0.65625,-1.21875,-0.66015625,0.49414062,-0.22460938,1.0078125,-1.1015625,-0.25976562,-0.69921875,-0.40234375,-1.6015625,0.3203125,0.28320312,-1.109375,-0.018920898,0.09863281,-0.890625,-0.76171875,-0.020874023,-0.34570312,0.765625,0.13183594,0.0146484375,0.26953125,-0.15625,1.046875,-0.85546875,2.546875,0.60546875 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv index 645bdbe4..3841e07f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv @@ -4,7 +4,7 @@ sequenceId,itemPosition,itemId 1,10,124 1,11,124 1,12,124 -1,13,124 +1,13,113 1,14,124 1,15,124 1,16,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv index a040fdee..58d912fa 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -2,8,113 -2,9,113 -2,10,113 -2,11,113 -2,12,113 -2,13,113 -2,14,113 -2,15,113 -2,16,113 -2,17,113 -2,18,113 -2,19,113 -2,20,113 -2,21,113 -2,22,113 -2,23,113 -2,24,113 -2,25,113 -2,26,113 -2,27,113 +2,8,103 +2,9,124 +2,10,103 +2,11,124 +2,12,103 +2,13,124 +2,14,124 +2,15,124 +2,16,124 +2,17,124 +2,18,124 +2,19,124 +2,20,124 +2,21,124 +2,22,124 +2,23,124 +2,24,124 +2,25,124 +2,26,124 +2,27,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv index c64d261b..081f39f9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv @@ -19,8 +19,8 @@ sequenceId,itemPosition,itemId 3,25,124 3,26,124 3,27,124 -4,8,113 -4,9,113 +4,8,124 +4,9,124 4,10,113 4,11,113 4,12,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv index f86b83ee..da076443 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -5,8,113 -5,9,113 -5,10,113 -5,11,113 -5,12,113 -5,13,113 +5,8,124 +5,9,103 +5,10,124 +5,11,124 +5,12,124 +5,13,124 5,14,113 -5,15,113 -5,16,113 -5,17,113 -5,18,113 -5,19,113 -5,20,113 -5,21,113 -5,22,113 -5,23,113 -5,24,113 -5,25,113 -5,26,113 -5,27,113 +5,15,124 +5,16,124 +5,17,124 +5,18,124 +5,19,124 +5,20,124 +5,21,124 +5,22,124 +5,23,124 +5,24,124 +5,25,124 +5,26,124 +5,27,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv index 0acf1d86..541bd2be 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv @@ -1,41 +1,41 @@ sequenceId,itemPosition,itemId -6,8,113 -6,9,113 -6,10,113 -6,11,113 -6,12,113 -6,13,113 -6,14,113 -6,15,113 -6,16,113 -6,17,113 -6,18,113 -6,19,113 -6,20,113 -6,21,113 -6,22,113 -6,23,113 -6,24,113 -6,25,113 -6,26,113 -6,27,113 -7,8,113 -7,9,113 -7,10,113 -7,11,113 -7,12,113 -7,13,113 +6,8,124 +6,9,124 +6,10,124 +6,11,124 +6,12,124 +6,13,124 +6,14,124 +6,15,124 +6,16,124 +6,17,124 +6,18,124 +6,19,124 +6,20,124 +6,21,124 +6,22,124 +6,23,124 +6,24,124 +6,25,124 +6,26,124 +6,27,124 +7,8,124 +7,9,124 +7,10,124 +7,11,124 +7,12,124 +7,13,124 7,14,113 -7,15,113 -7,16,113 -7,17,113 -7,18,113 -7,19,113 -7,20,113 -7,21,113 -7,22,113 -7,23,113 -7,24,113 -7,25,113 -7,26,113 -7,27,113 +7,15,124 +7,16,124 +7,17,124 +7,18,124 +7,19,124 +7,20,124 +7,21,124 +7,22,124 +7,23,124 +7,24,124 +7,25,124 +7,26,124 +7,27,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv index 236a8361..79dc2ec9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -8,8,113 -8,9,113 -8,10,113 -8,11,113 -8,12,113 -8,13,113 -8,14,113 -8,15,113 -8,16,113 -8,17,113 -8,18,113 -8,19,113 -8,20,113 -8,21,113 -8,22,113 -8,23,113 -8,24,113 -8,25,113 -8,26,113 -8,27,113 +8,8,103 +8,9,124 +8,10,103 +8,11,122 +8,12,122 +8,13,122 +8,14,122 +8,15,122 +8,16,122 +8,17,122 +8,18,122 +8,19,122 +8,20,122 +8,21,122 +8,22,122 +8,23,122 +8,24,122 +8,25,122 +8,26,122 +8,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv index c97879eb..31db896c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId -9,8,113 -9,9,113 +9,8,103 +9,9,124 9,10,113 9,11,113 9,12,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv index 7e8daf90..460f1499 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,113 +2,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv index fc6d272e..d279d22f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 3,8,124 -4,8,113 +4,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv index 4e9004da..81899090 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,113 +5,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv index 953b3bbc..25ad0933 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,113 -7,8,113 +6,8,124 +7,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv index 346e8242..bc91b117 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,113 +8,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv index ba964099..b949bc17 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,113 +9,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv index 76b336da..8892a7bd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -1,6,102 +1,6,122 1,7,111 -1,8,121 +1,8,117 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv index 613c7045..8812ffc8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -2,6,121 +2,6,122 2,7,102 2,8,126 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv index 2d77f92b..60c4449f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId -3,6,121 +3,6,122 3,7,109 3,8,124 -4,6,103 +4,6,127 4,7,119 4,8,120 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv index 18bdec24..285c20cb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId 6,6,102 6,7,118 -6,8,118 +6,8,113 7,6,109 -7,7,121 -7,8,105 +7,7,103 +7,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv index c63e7d33..6475d519 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -8,6,121 -8,7,121 +8,6,104 +8,7,122 8,8,112 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv index 268a2feb..d566f05c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -9,6,110 +9,6,118 9,7,118 9,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv index 18e88ed1..52479655 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 3,8,113 -4,8,113 +4,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv index dd4911cc..799db1cf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -0,6,124,3,7 -0,7,118,4,7 -0,8,121,6,1 +0,6,119,5,7 +0,7,103,4,5 +0,8,111,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv index 056092e7..cbe044a8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -1,6,109,4,3 -1,7,104,9,1 -1,8,124,6,2 +1,6,122,6,1 +1,7,121,9,1 +1,8,108,9,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv index 735dfc03..c9b5b93b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 2,6,121,6,1 -2,7,102,3,0 -2,8,121,6,1 +2,7,102,6,5 +2,8,112,3,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv index 041a7dbb..c39abddc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 3,6,121,6,1 3,7,109,3,1 -3,8,102,0,0 -4,6,124,2,1 -4,7,111,3,1 -4,8,102,4,8 +3,8,110,2,6 +4,6,102,6,1 +4,7,119,1,1 +4,8,102,0,6 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv index 8631d3ed..f6da44a0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 5,6,126,6,1 -5,7,104,4,0 -5,8,112,4,5 +5,7,113,6,0 +5,8,121,4,5 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv index 1aa02270..71855096 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -6,6,102,4,8 -6,7,118,4,5 -6,8,102,4,6 +6,6,102,5,5 +6,7,118,5,1 +6,8,109,5,6 7,6,109,3,1 -7,7,121,4,8 -7,8,102,1,0 +7,7,121,2,6 +7,8,119,5,7 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv index 1f26c457..03e17fbc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -8,6,121,4,1 +8,6,102,8,6 8,7,121,6,1 -8,8,109,4,1 +8,8,121,3,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv index ff81b9fb..59439ca4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -9,6,124,3,1 -9,7,118,4,8 +9,6,122,6,1 +9,7,118,4,4 9,8,103,4,8 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv index 7acc0370..5aa808f6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,122 +0,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv index dea53fa9..c3d900b3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,122 +1,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv index 8302df2f..7e8daf90 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,122 +2,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv index c780b2f6..18e88ed1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,122 -4,8,122 +3,8,113 +4,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv index c71ccfa4..953b3bbc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 6,8,113 -7,8,122 +7,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv index f3ae7b5b..346e8242 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,122 +8,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv index 405b8711..9576f383 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,121 +0,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv index ac1c42b4..72fb79cf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,117 +1,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv index 04dd0078..598df3ba 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,121 +2,8,110 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv index 6aeaeb13..04c6c551 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,119 -4,8,102 +3,8,115 +4,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv index 431d8b95..3e9b1443 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,119 +5,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv index b8bead8a..f97711ff 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,119 -7,8,119 +6,8,115 +7,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv index 13695e6e..41144ce1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,119 +9,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv index 405b8711..9576f383 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,121 +0,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv index 04dd0078..598df3ba 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,121 +2,8,110 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv index 6aeaeb13..04c6c551 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,119 -4,8,102 +3,8,115 +4,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv index 431d8b95..3e9b1443 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,119 +5,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv index 8a664645..f97711ff 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,121 -7,8,122 +6,8,115 +7,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv index 13695e6e..41144ce1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,119 +9,8,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv index 4e261efe..a7c99704 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,110,4,-0.057408422 +0,8,109,6,0.035670765 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv index 0eefb672..d440d67e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,103,7,-0.21608433 +1,8,102,1,-0.094851345 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv index aa696c55..741217c7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,100,7,-0.20284554 +2,8,mask,9,-0.12064132 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv index 3ff84f45..fc5d931d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,103,0,0.074112006 -4,8,110,0,0.012103111 +3,8,103,4,0.08533255 +4,8,110,4,0.072973825 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv index 2003e2b9..7d6c2949 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,111,7,-0.1722543 +5,8,110,5,-0.04847882 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv index 45c54f06..9c8622d1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,122,3,-0.034481153 -7,8,114,4,-0.022850327 +6,8,122,7,-0.012625184 +7,8,113,4,0.0941027 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv index 7a2374cb..d71ac4b8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,111,3,-0.088609315 +8,8,110,7,-0.03440542 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv index 24299a0c..9a89327f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,115,4,-0.001879178 +9,8,114,6,0.0070434585 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv index 0c925c0a..b87c3693 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,113,4,-0.057408422 +0,8,102,6,0.035670765 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv index 97d2b3a3..d672e857 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,117,7,-0.21608433 +1,8,100,1,-0.094851345 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv index f91f4a65..cff9a2a5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,117,7,-0.20284554 +2,8,100,9,-0.12064132 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv index 38f40f6a..e3a13c6f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,108,0,0.074112006 -4,8,103,0,0.012103111 +3,8,111,4,0.08533255 +4,8,109,4,0.072973825 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv index 7413eb80..dcae774d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,104,7,-0.1722543 +5,8,102,5,-0.04847882 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv index 1ca260e9..0ab95c0d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,116,3,-0.034481153 -7,8,108,4,-0.022850327 +6,8,110,7,-0.012625184 +7,8,102,4,0.0941027 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv index b6ad1aac..ded1b8f0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,116,3,-0.088609315 +8,8,mask,7,-0.03440542 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv index fbb74fe9..b1aaa3c1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,113,4,-0.001879178 +9,8,111,6,0.0070434585 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index fb7b7172..08aef492 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.16013545 -0,22,0.40992618 -0,23,0.29611352 -0,24,0.63355803 -0,25,0.34203795 -0,26,0.21724334 -0,27,0.080967665 -0,28,-0.18309766 -0,29,0.05850465 -0,30,-0.018368812 -0,31,0.057256702 -0,32,0.11041919 -0,33,-0.06628993 -0,34,0.10592658 -0,35,-0.11471023 -0,36,-0.0600502 -0,37,-0.09773817 -0,38,0.24320062 -0,39,0.05201533 -0,40,-0.08925214 -1,19,0.027680388 -1,20,0.28413326 -1,21,0.091450416 -1,22,0.21424827 -1,23,0.2252302 -1,24,-0.029475529 -1,25,-0.039583888 -1,26,-0.05680554 -1,27,-0.0011637344 -1,28,0.11441261 -1,29,-0.03658882 -1,30,0.06798903 -1,31,-0.014063398 -1,32,-0.0034246612 -1,33,-0.16412888 -1,34,0.1493551 -1,35,0.1333814 -1,36,0.02555888 -1,37,-0.058053486 -1,38,-0.17211573 -2,17,0.29611352 -2,18,0.079470135 -2,19,0.02830436 -2,20,0.0124554485 -2,21,-0.044326082 -2,22,0.058255058 -2,23,-0.013876207 -2,24,0.1653288 -2,25,0.06798903 -2,26,0.0435293 -2,27,0.11541097 -2,28,-0.037836764 -2,29,-0.33484784 -2,30,0.067489855 -2,31,-0.07976775 -2,32,0.16832387 -2,33,-0.090749666 -2,34,0.07447835 -2,35,0.13837317 -2,36,-0.16712394 -3,17,0.07697424 -3,18,0.27215296 -3,19,0.21025485 -3,20,0.086957805 -3,21,-0.03658882 -3,22,0.26616284 -3,23,-0.041081425 -3,24,-0.026480459 -3,25,0.1079233 -3,26,0.02393655 -3,27,-0.12818804 -3,28,-0.052562527 -3,29,0.10542741 -3,30,0.16233373 -3,31,0.08346356 -3,32,0.23421541 -3,33,0.09644219 -3,34,0.0709841 -3,35,-0.13916996 -3,36,0.045526013 -4,14,0.1493551 -4,15,-0.08725542 -4,16,0.1353781 -4,17,0.00095874834 -4,18,0.23521377 -4,19,0.035792034 -4,20,-0.019242374 -4,21,-0.1501519 -4,22,0.053263277 -4,23,-0.27095303 -4,24,0.0021754955 -4,25,0.021815043 -4,26,0.16233373 -4,27,-0.16113381 -4,28,0.15035345 -4,29,0.07747342 -4,30,-0.04582362 -4,31,0.25018913 -4,32,-0.03409293 -4,33,-0.04282855 -5,14,0.24619569 -5,15,0.34203795 -5,16,0.122898646 -5,17,0.35601494 -5,18,0.33205438 -5,19,0.10592658 -5,20,0.11990357 -5,21,0.16732551 -5,22,-0.013065042 -5,23,-0.1521486 -5,24,-0.07327843 -5,25,0.090951234 -5,26,0.13737482 -5,27,-0.06054938 -5,28,-0.19208287 -5,29,-0.05156417 -5,30,-0.014312988 -5,31,0.063496426 -5,32,-0.061547734 -5,33,0.0939463 -6,18,0.3999426 -6,19,0.43987688 -6,20,0.20426472 -6,21,0.216245 -6,22,0.19328278 -6,23,0.039036695 -6,24,-0.007917265 -6,25,0.023187783 -6,26,0.085460275 -6,27,-0.0057957578 -6,28,-0.03359375 -6,29,-0.05430965 -6,30,-0.13517654 -6,31,-0.23401384 -6,32,-0.023111006 -6,33,0.035542447 -6,34,0.011644284 -6,35,-0.05430965 -6,36,-0.1221979 -6,37,0.20725977 -7,15,0.2182417 -7,16,0.06449478 -7,17,0.12339783 -7,18,0.21424827 -7,19,0.016074492 -7,20,0.15035345 -7,21,0.2322187 -7,22,-0.003292067 -7,23,-0.075275145 -7,24,0.15235017 -7,25,-0.14915353 -7,26,0.024560522 -7,27,-0.0133770285 -7,28,0.18629429 -7,29,-0.016122509 -7,30,-0.12369544 -7,31,-0.03658882 -7,32,-0.15314695 -7,33,-0.22103521 -7,34,-0.15115024 -8,20,0.02805477 -8,21,0.050018616 -8,22,-0.02435895 -8,23,0.062498074 -8,24,-0.0053745764 -8,25,0.10592658 -8,26,-0.013189836 -8,27,0.09594302 -8,28,-0.13517654 -8,29,-0.12369544 -8,30,0.12140111 -8,31,-0.040332656 -8,32,-0.10722256 -8,33,-0.008229252 -8,34,-0.013439426 -8,35,0.11890522 -8,36,-0.019491963 -8,37,-0.014749769 -8,38,-0.12369544 -8,39,0.17032059 -9,16,0.22722691 -9,17,0.36999193 -9,18,0.22223513 -9,19,0.36999193 -9,20,0.21524663 -9,21,0.18729265 -9,22,0.28812668 -9,23,0.0040006163 -9,24,-0.034841694 -9,25,-0.06504199 -9,26,0.06499396 -9,27,-0.009227608 -9,28,0.069486566 -9,29,-0.055557594 -9,30,0.11391344 -9,31,-0.10173159 -9,32,-0.15813874 -9,33,-0.07777103 -9,34,0.012954627 -9,35,0.011644284 +0,21,-0.22103521 +0,22,0.22123677 +0,23,0.31408396 +0,24,0.17531237 +0,25,0.18030415 +0,26,0.23421541 +0,27,-0.01312744 +0,28,0.17032059 +0,29,0.092947945 +0,30,-0.12020119 +0,31,0.013141819 +0,32,-0.08226364 +0,33,-0.096739806 +0,34,-0.10522584 +0,35,0.056258347 +0,36,0.14336495 +0,37,-0.044076495 +0,38,0.014576957 +0,39,-0.008042061 +0,40,-0.053061705 +1,19,0.17930579 +1,20,0.2741497 +1,21,0.30809382 +1,22,-0.013938604 +1,23,0.25418255 +1,24,0.053762455 +1,25,0.017072849 +1,26,-0.13018475 +1,27,-0.06404363 +1,28,0.014452162 +1,29,0.053762455 +1,30,0.038537517 +1,31,0.10343069 +1,32,-0.03608964 +1,33,-0.19008616 +1,34,0.084961094 +1,35,0.053512864 +1,36,-0.0055773673 +1,37,-0.0017945322 +1,38,-0.14016832 +2,17,0.43189004 +2,18,-0.035340875 +2,19,0.018819973 +2,20,0.114911795 +2,21,0.036041625 +2,22,-0.04806992 +2,23,0.029552305 +2,24,0.13837317 +2,25,-0.13717325 +2,26,0.12938796 +2,27,0.033046555 +2,28,0.026307646 +2,29,-0.083262 +2,30,0.28413326 +2,31,-0.034342516 +2,32,0.19128607 +2,33,-0.009321204 +2,34,-0.08575789 +2,35,0.17730908 +2,36,0.03778875 +3,17,0.059503004 +3,18,0.22423184 +3,19,0.5217421 +3,20,0.15235017 +3,21,0.15933867 +3,22,0.11441261 +3,23,0.0342945 +3,24,0.067489855 +3,25,0.2481924 +3,26,-0.11620776 +3,27,-0.10372831 +3,28,0.069486566 +3,29,0.042031765 +3,30,0.09594302 +3,31,0.01657367 +3,32,-0.1661256 +3,33,-0.021613471 +3,34,0.16033702 +3,35,0.06599232 +3,36,-0.02435895 +4,14,0.07847178 +4,15,0.13637646 +4,16,-0.03272019 +4,17,0.069486566 +4,18,0.062248483 +4,19,-0.098736525 +4,20,0.052264918 +4,21,0.16333209 +4,22,-0.1521486 +4,23,-0.15714039 +4,24,0.15534523 +4,25,-0.013751412 +4,26,0.04602519 +4,27,0.047522724 +4,28,-0.16512723 +4,29,-0.27694318 +4,30,-0.16113381 +4,31,-0.0625461 +4,32,0.04377889 +4,33,-0.08725542 +5,14,0.06798903 +5,15,0.42190647 +5,16,0.22622855 +5,17,0.18729265 +5,18,0.34203795 +5,19,0.41591632 +5,20,-0.03633923 +5,21,0.04677396 +5,22,-0.016871277 +5,23,0.033795323 +5,24,-0.19507794 +5,25,0.17830744 +5,26,-0.025107719 +5,27,0.07198246 +5,28,0.008586817 +5,29,0.07647506 +5,30,-0.1661256 +5,31,0.28213653 +5,32,-0.17411245 +5,33,-0.080766104 +6,18,0.45385388 +6,19,0.18529594 +6,20,0.36000836 +6,21,0.073479995 +6,22,0.22822526 +6,23,-0.06678911 +6,24,0.22722691 +6,25,0.06798903 +6,26,-0.029101145 +6,27,-0.019616757 +6,28,0.069486566 +6,29,0.045526013 +6,30,-0.21804014 +6,31,0.041532584 +6,32,0.06449478 +6,33,0.04951944 +6,34,-0.10522584 +6,35,-0.0037522472 +6,36,-0.16912067 +6,37,-0.06579076 +7,15,0.20526306 +7,16,0.2781431 +7,17,0.02693162 +7,18,0.042031765 +7,19,-0.023610184 +7,20,0.11591015 +7,21,-0.055557594 +7,22,0.07198246 +7,23,-0.18010259 +7,24,-0.1177053 +7,25,-0.08026692 +7,26,-0.0762735 +7,27,-0.07976775 +7,28,-0.16013545 +7,29,-0.01774484 +7,30,-0.08575789 +7,31,-0.0047038053 +7,32,-0.046821974 +7,33,-0.065291576 +7,34,0.2322187 +8,20,0.11291508 +8,21,0.025683673 +8,22,0.009335584 +8,23,0.08296438 +8,24,-0.038835123 +8,25,0.02693162 +8,26,0.08995288 +8,27,0.08795616 +8,28,-0.10722256 +8,29,-0.04282855 +8,30,-0.15614203 +8,31,-0.05156417 +8,32,-0.1431634 +8,33,-0.015685728 +8,34,-0.22802371 +8,35,-0.007917265 +8,36,-0.071281716 +8,37,-0.063294865 +8,38,-0.31687742 +8,39,0.062498074 +9,16,0.43987688 +9,17,0.43388674 +9,18,0.34203795 +9,19,0.22423184 +9,20,0.11740769 +9,21,0.15135181 +9,22,0.42789662 +9,23,-0.12269708 +9,24,-0.13916996 +9,25,0.13038632 +9,26,0.022439014 +9,27,0.1653288 +9,28,-0.047570743 +9,29,-0.082762815 +9,30,0.026557237 +9,31,0.10992001 +9,32,0.07597589 +9,33,-0.11371187 +9,34,-0.14615846 +9,35,0.09843891 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index 9c9a70fe..39c6e464 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,127,6,2,0,1 -0,9,118,6,2,0,1 -0,10,118,6,2,2,1 -0,11,118,6,2,2,1 -0,12,118,6,7,2,1 -0,13,118,6,3,2,1 -0,14,118,6,3,6,1 -0,15,118,6,3,6,1 -0,16,127,6,3,other,0 -0,17,127,6,3,0,1 -0,18,127,6,3,0,1 -0,19,127,6,3,0,1 -0,20,118,6,3,0,1 -0,21,118,6,3,0,1 -0,22,118,6,3,2,1 -0,23,118,6,3,2,1 -0,24,118,6,3,2,1 -0,25,124,6,3,0,1 -0,26,124,6,3,0,1 -0,27,124,6,3,0,1 -0,28,104,6,3,0,1 -0,29,104,6,3,1,1 -0,30,109,6,3,8,1 -0,31,109,6,3,1,1 -0,32,109,4,3,8,0 -0,33,113,3,3,0,1 -0,34,122,3,5,8,0 -0,35,118,3,5,0,1 -0,36,118,6,5,8,0 -0,37,118,6,5,2,1 +0,8,102,6,3,8,1 +0,9,121,6,3,8,1 +0,10,104,6,3,8,1 +0,11,121,6,3,8,1 +0,12,121,6,3,8,1 +0,13,104,6,3,8,0 +0,14,104,3,3,0,0 +0,15,104,3,3,0,0 +0,16,104,3,3,0,0 +0,17,104,3,3,0,0 +0,18,104,3,3,0,0 +0,19,104,3,3,0,0 +0,20,104,3,3,0,1 +0,21,103,6,3,0,1 +0,22,113,6,3,8,1 +0,23,113,6,3,8,1 +0,24,113,6,3,8,1 +0,25,104,6,3,8,1 +0,26,104,6,3,8,1 +0,27,104,6,3,8,1 +0,28,104,6,3,8,1 +0,29,104,6,3,8,1 +0,30,104,9,3,0,0 +0,31,104,3,3,0,1 +0,32,104,9,3,0,1 +0,33,104,9,3,0,1 +0,34,104,3,3,8,1 +0,35,104,6,3,8,0 +0,36,121,6,3,8,0 +0,37,121,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index 18c70481..b1f5c970 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,118,6,2,2,1 -1,9,118,6,9,0,1 -1,10,118,6,9,2,1 -1,11,118,6,9,2,1 -1,12,118,6,9,2,1 -1,13,118,6,3,2,1 -1,14,124,6,3,2,1 -1,15,104,6,3,8,1 -1,16,114,6,3,5,1 -1,17,114,6,3,5,1 -1,18,114,6,3,5,1 -1,19,114,6,3,5,1 -1,20,114,6,3,5,1 -1,21,109,6,3,5,1 -1,22,127,6,3,5,1 -1,23,127,6,9,5,1 -1,24,127,6,3,5,1 -1,25,118,6,3,5,1 -1,26,118,6,3,5,1 -1,27,118,6,3,5,1 -1,28,118,6,3,5,1 -1,29,118,6,3,9,1 -1,30,118,6,3,5,1 -1,31,127,6,3,5,1 -1,32,127,6,3,5,1 -1,33,127,6,3,5,1 -1,34,127,6,3,5,1 -1,35,127,6,3,5,1 -1,36,118,6,3,5,1 -1,37,118,6,3,0,1 +1,8,121,6,3,8,1 +1,9,121,6,3,8,0 +1,10,121,6,3,8,0 +1,11,121,6,3,8,0 +1,12,121,6,3,8,0 +1,13,104,3,3,8,0 +1,14,104,3,3,0,0 +1,15,104,3,3,0,0 +1,16,104,3,3,0,0 +1,17,104,3,3,0,0 +1,18,104,3,3,0,0 +1,19,104,3,3,0,0 +1,20,104,3,3,0,0 +1,21,121,6,3,0,1 +1,22,113,6,3,8,1 +1,23,121,6,3,8,1 +1,24,104,6,3,8,1 +1,25,104,6,3,8,0 +1,26,104,6,3,0,0 +1,27,104,9,3,0,1 +1,28,104,3,3,0,1 +1,29,104,9,3,0,1 +1,30,104,3,3,0,1 +1,31,104,3,3,0,1 +1,32,103,6,3,8,1 +1,33,113,6,3,8,1 +1,34,121,6,3,8,1 +1,35,121,6,3,8,1 +1,36,104,6,3,8,1 +1,37,104,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index cec8e864..b32ec715 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,127,6,2,0,1 -2,9,127,6,3,0,1 -2,10,127,6,3,0,1 -2,11,118,6,3,0,1 -2,12,118,6,5,2,1 -2,13,118,6,7,2,1 -2,14,118,6,7,2,1 -2,15,124,6,3,2,1 -2,16,124,6,3,2,1 -2,17,124,6,3,2,1 -2,18,124,6,3,0,1 -2,19,104,6,3,0,1 -2,20,104,6,3,1,1 -2,21,109,6,3,0,1 -2,22,109,6,3,0,1 -2,23,104,3,3,8,1 -2,24,113,6,3,8,1 -2,25,113,6,3,8,1 -2,26,113,4,3,8,0 -2,27,113,3,4,8,0 -2,28,unknown,4,4,8,2 -2,29,unknown,4,4,8,0 -2,30,109,4,4,8,2 -2,31,109,4,3,8,2 -2,32,127,3,6,8,1 -2,33,unknown,3,5,4,1 -2,34,unknown,3,9,4,1 -2,35,unknown,0,9,8,1 -2,36,127,4,3,8,0 -2,37,118,4,9,3,1 +2,8,102,6,3,8,1 +2,9,121,6,3,8,1 +2,10,104,6,3,8,1 +2,11,104,6,3,8,0 +2,12,104,6,3,8,0 +2,13,104,6,3,8,0 +2,14,104,6,3,0,0 +2,15,104,3,3,0,0 +2,16,104,3,3,0,0 +2,17,104,3,3,0,0 +2,18,104,3,3,0,1 +2,19,103,4,3,0,1 +2,20,102,6,3,8,1 +2,21,121,6,3,8,1 +2,22,104,6,3,8,1 +2,23,104,6,3,8,1 +2,24,104,6,3,8,0 +2,25,104,6,3,8,0 +2,26,104,6,3,0,0 +2,27,104,9,3,0,1 +2,28,104,3,3,0,0 +2,29,104,3,3,0,0 +2,30,104,3,3,0,1 +2,31,103,4,3,0,1 +2,32,102,6,3,8,1 +2,33,121,6,3,8,1 +2,34,121,6,3,8,1 +2,35,104,6,3,8,1 +2,36,104,6,3,8,0 +2,37,104,6,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index cd3c4c28..03dc6b54 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,127,2,2,2,1 -3,9,127,6,2,0,1 -3,10,127,6,3,2,1 -3,11,118,6,3,0,1 -3,12,118,6,3,2,1 -3,13,118,6,3,2,1 -3,14,118,6,3,2,1 -3,15,118,6,3,6,1 -3,16,109,6,3,8,1 -3,17,109,6,3,0,1 -3,18,109,6,3,0,1 -3,19,127,6,3,0,0 -3,20,109,6,3,0,1 -3,21,127,6,3,0,1 -3,22,118,6,3,0,1 -3,23,118,4,5,2,1 -3,24,118,6,5,2,1 -3,25,118,6,3,2,1 -3,26,118,6,3,2,1 -3,27,118,6,3,2,1 -3,28,118,6,3,0,1 -3,29,104,6,3,0,1 -3,30,104,6,3,1,1 -3,31,104,6,3,5,1 -3,32,104,6,3,1,1 -3,33,104,6,3,8,0 -3,34,109,6,3,5,1 -3,35,127,6,3,5,0 -3,36,118,6,9,8,0 -3,37,118,6,9,5,1 -4,8,127,6,2,0,1 -4,9,127,6,3,0,1 -4,10,127,6,3,0,1 -4,11,127,6,3,0,1 -4,12,118,6,3,0,1 -4,13,118,6,7,2,1 -4,14,118,1,7,2,1 -4,15,118,1,7,2,1 -4,16,118,6,5,2,1 -4,17,124,6,3,2,1 -4,18,124,6,3,2,1 -4,19,124,6,3,0,1 -4,20,109,6,3,0,1 -4,21,109,6,3,0,1 -4,22,109,6,3,0,1 -4,23,109,6,3,0,1 -4,24,109,6,3,8,1 -4,25,unknown,3,3,0,1 -4,26,124,3,5,8,1 -4,27,124,4,5,2,0 -4,28,124,6,7,2,1 -4,29,unknown,6,5,2,1 -4,30,124,6,3,2,1 -4,31,unknown,6,3,8,1 -4,32,unknown,6,3,8,1 -4,33,unknown,6,3,8,1 -4,34,104,6,3,8,1 -4,35,104,6,3,8,1 -4,36,104,6,3,8,1 -4,37,104,6,3,8,0 +3,8,121,6,3,8,1 +3,9,104,4,3,8,0 +3,10,121,3,3,8,0 +3,11,104,3,3,8,0 +3,12,121,3,3,8,0 +3,13,121,3,3,8,0 +3,14,104,3,3,8,0 +3,15,104,3,3,0,0 +3,16,104,3,3,0,0 +3,17,104,3,3,0,0 +3,18,104,3,3,0,0 +3,19,104,3,3,0,0 +3,20,104,3,3,0,0 +3,21,104,3,3,0,0 +3,22,121,6,3,0,1 +3,23,113,6,3,8,1 +3,24,121,6,3,8,1 +3,25,104,6,3,8,1 +3,26,104,6,3,8,0 +3,27,104,6,3,0,0 +3,28,104,9,3,0,1 +3,29,104,3,3,0,1 +3,30,104,9,3,0,1 +3,31,104,3,3,0,1 +3,32,104,3,3,0,1 +3,33,103,6,3,8,1 +3,34,113,6,3,8,1 +3,35,121,6,3,8,1 +3,36,121,6,3,8,1 +3,37,104,6,3,8,1 +4,8,102,6,9,8,1 +4,9,121,6,3,8,1 +4,10,121,6,3,8,1 +4,11,121,6,3,8,0 +4,12,121,6,3,8,0 +4,13,121,6,3,8,0 +4,14,104,3,3,8,0 +4,15,104,3,3,0,0 +4,16,104,3,3,0,0 +4,17,104,3,3,0,0 +4,18,104,3,3,0,0 +4,19,104,3,3,0,0 +4,20,104,3,3,0,0 +4,21,104,3,3,0,0 +4,22,121,6,3,0,1 +4,23,113,6,3,8,1 +4,24,121,6,3,8,1 +4,25,104,6,3,8,1 +4,26,104,6,3,8,0 +4,27,104,6,3,0,0 +4,28,104,9,3,0,1 +4,29,104,3,3,0,1 +4,30,104,9,3,0,1 +4,31,104,3,3,0,1 +4,32,104,3,3,0,1 +4,33,103,6,3,8,1 +4,34,113,6,3,8,1 +4,35,121,6,3,8,1 +4,36,121,6,3,8,1 +4,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index 16a159f1..549102b2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,127,6,2,2,0 -5,9,118,6,2,0,1 -5,10,127,6,2,0,1 -5,11,127,6,3,0,1 -5,12,118,6,3,0,1 -5,13,118,6,5,2,1 -5,14,118,6,3,2,1 -5,15,124,6,3,8,1 -5,16,118,6,3,2,1 -5,17,127,6,3,8,other -5,18,109,6,3,0,1 -5,19,109,6,3,0,other -5,20,109,6,3,0,1 -5,21,112,6,3,0,1 -5,22,118,6,3,8,1 -5,23,124,6,3,8,1 -5,24,124,4,3,2,1 -5,25,124,6,5,2,1 -5,26,124,6,3,2,1 -5,27,unknown,6,3,2,1 -5,28,104,6,3,8,1 -5,29,104,6,3,8,1 -5,30,104,6,3,8,1 -5,31,104,6,3,8,1 -5,32,104,6,3,5,1 -5,33,104,6,3,8,1 -5,34,127,6,3,5,0 -5,35,109,1,9,8,0 -5,36,127,1,9,5,2 -5,37,127,9,9,5,1 +5,8,113,4,9,8,1 +5,9,113,6,3,8,0 +5,10,104,6,3,8,0 +5,11,104,6,3,0,0 +5,12,104,9,3,0,0 +5,13,121,3,3,8,1 +5,14,121,6,3,8,0 +5,15,104,3,3,8,0 +5,16,104,3,3,0,0 +5,17,104,3,3,0,0 +5,18,104,3,3,0,0 +5,19,121,3,3,0,0 +5,20,104,3,3,0,0 +5,21,104,3,3,0,0 +5,22,104,3,3,0,0 +5,23,121,4,3,0,1 +5,24,121,6,3,8,1 +5,25,104,6,3,8,1 +5,26,104,6,3,8,0 +5,27,104,3,3,0,0 +5,28,104,3,3,0,1 +5,29,104,4,3,0,1 +5,30,104,9,3,0,1 +5,31,104,3,3,0,1 +5,32,104,3,3,0,1 +5,33,104,6,3,0,1 +5,34,113,6,3,8,1 +5,35,113,6,3,8,1 +5,36,113,6,3,8,1 +5,37,113,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index 07028e2d..68e5ec32 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,127,6,2,0,1 -6,9,127,6,3,0,1 -6,10,127,6,3,0,1 -6,11,127,4,3,0,1 -6,12,127,4,5,0,0 -6,13,112,1,7,2,1 -6,14,118,1,5,2,1 -6,15,118,1,7,2,1 -6,16,118,1,5,2,1 -6,17,118,6,3,2,1 -6,18,118,6,3,2,1 -6,19,118,6,3,2,1 -6,20,118,6,3,2,1 -6,21,109,6,3,0,1 -6,22,109,6,3,0,1 -6,23,109,6,3,0,1 -6,24,109,6,3,0,1 -6,25,109,6,3,0,1 -6,26,127,6,3,0,1 -6,27,118,6,3,0,1 -6,28,118,6,5,0,1 -6,29,118,4,5,other,0 -6,30,118,6,7,0,1 -6,31,118,4,5,2,0 -6,32,118,6,7,2,1 -6,33,118,6,3,2,1 -6,34,118,6,3,0,1 -6,35,127,6,3,0,1 -6,36,127,6,3,0,1 -6,37,127,6,3,2,1 -7,8,127,6,2,2,1 -7,9,127,6,3,0,1 -7,10,127,6,3,0,1 -7,11,118,6,3,0,1 -7,12,118,6,3,2,1 -7,13,118,6,3,2,1 -7,14,118,6,3,2,1 -7,15,118,6,3,2,1 -7,16,118,6,3,0,1 -7,17,124,6,3,8,1 -7,18,unknown,6,3,0,1 -7,19,109,6,3,1,1 -7,20,109,6,3,1,0 -7,21,109,6,3,0,1 -7,22,109,6,3,0,0 -7,23,109,6,5,0,1 -7,24,118,6,5,0,0 -7,25,118,3,7,2,1 -7,26,118,1,5,2,0 -7,27,118,6,7,2,1 -7,28,118,6,5,2,1 -7,29,118,6,3,2,1 -7,30,112,6,3,2,1 -7,31,112,6,3,0,1 -7,32,112,6,3,8,1 -7,33,109,6,3,8,1 -7,34,109,6,3,5,1 -7,35,109,6,3,1,1 -7,36,109,6,3,8,0 -7,37,109,6,3,0,1 +6,8,102,6,2,8,1 +6,9,113,6,3,8,1 +6,10,121,6,3,8,1 +6,11,121,6,3,8,1 +6,12,121,6,3,8,1 +6,13,121,6,3,8,0 +6,14,121,6,3,8,0 +6,15,104,3,3,8,0 +6,16,104,3,3,0,0 +6,17,104,3,3,0,0 +6,18,104,3,3,0,0 +6,19,104,3,3,0,0 +6,20,104,3,3,0,0 +6,21,104,3,3,0,0 +6,22,104,3,3,0,0 +6,23,121,6,3,0,1 +6,24,113,6,3,8,1 +6,25,121,6,3,8,1 +6,26,104,6,3,8,1 +6,27,104,6,3,8,0 +6,28,104,6,3,0,0 +6,29,104,9,3,0,1 +6,30,104,3,3,0,1 +6,31,104,9,3,0,1 +6,32,104,3,3,0,1 +6,33,104,3,3,0,1 +6,34,103,6,3,8,1 +6,35,113,6,3,8,1 +6,36,121,6,3,8,1 +6,37,121,6,3,8,1 +7,8,121,6,9,8,1 +7,9,104,6,3,8,1 +7,10,104,6,3,8,0 +7,11,104,6,3,0,0 +7,12,104,6,3,0,1 +7,13,121,6,3,8,1 +7,14,104,6,3,8,0 +7,15,104,3,3,0,0 +7,16,104,3,3,0,0 +7,17,104,3,3,0,1 +7,18,104,4,3,0,1 +7,19,103,6,3,8,1 +7,20,104,6,3,8,1 +7,21,104,9,3,0,0 +7,22,121,6,3,8,1 +7,23,104,6,3,8,1 +7,24,104,6,3,8,1 +7,25,104,6,3,8,1 +7,26,104,6,3,8,0 +7,27,104,3,3,0,0 +7,28,104,3,3,0,0 +7,29,104,3,3,0,0 +7,30,104,3,3,0,0 +7,31,104,3,3,0,1 +7,32,104,3,3,0,1 +7,33,103,4,3,0,1 +7,34,113,6,3,8,1 +7,35,113,6,3,8,1 +7,36,113,6,3,8,1 +7,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index bc2b4d05..84a9c524 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,127,6,2,0,1 -8,9,127,6,3,0,1 -8,10,127,6,3,0,1 -8,11,118,6,9,2,1 -8,12,118,6,7,2,1 -8,13,118,6,9,6,1 -8,14,127,6,3,8,1 -8,15,127,6,3,5,1 -8,16,118,6,3,0,1 -8,17,124,6,3,0,1 -8,18,124,6,3,2,1 -8,19,126,6,3,5,1 -8,20,127,6,3,5,1 -8,21,118,6,3,0,1 -8,22,118,6,3,8,1 -8,23,118,6,3,0,1 -8,24,118,6,3,8,1 -8,25,118,6,3,0,1 -8,26,104,6,3,0,1 -8,27,126,6,3,5,0 -8,28,109,6,3,0,1 -8,29,127,6,3,0,0 -8,30,109,6,3,0,1 -8,31,127,6,3,0,0 -8,32,118,3,5,0,1 -8,33,118,6,5,2,0 -8,34,118,6,7,2,1 -8,35,118,6,5,2,1 -8,36,118,6,3,2,1 -8,37,112,6,3,2,1 +8,8,113,6,3,8,1 +8,9,121,6,3,8,1 +8,10,104,6,3,8,1 +8,11,104,6,3,8,1 +8,12,121,6,3,8,1 +8,13,121,6,3,8,1 +8,14,104,6,3,8,0 +8,15,104,9,3,0,0 +8,16,104,3,3,0,0 +8,17,104,3,3,0,0 +8,18,104,3,3,0,0 +8,19,104,3,3,0,0 +8,20,104,3,3,0,0 +8,21,104,3,3,0,1 +8,22,103,6,3,8,1 +8,23,121,6,3,8,1 +8,24,104,6,3,8,1 +8,25,104,6,3,8,1 +8,26,104,6,3,8,0 +8,27,104,6,3,0,0 +8,28,104,9,3,0,1 +8,29,104,9,3,0,1 +8,30,104,3,3,0,1 +8,31,104,3,3,0,1 +8,32,104,6,3,0,1 +8,33,113,6,3,8,1 +8,34,121,6,3,8,1 +8,35,121,6,3,8,1 +8,36,121,6,3,8,1 +8,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index 940e8923..ad971442 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,127,6,2,other,1 -9,9,127,6,3,0,1 -9,10,127,6,3,0,1 -9,11,118,6,3,0,1 -9,12,118,6,3,other,1 -9,13,126,6,3,8,1 -9,14,113,6,3,8,0 -9,15,113,4,3,0,1 -9,16,118,6,3,0,1 -9,17,118,6,3,8,1 -9,18,118,6,3,0,1 -9,19,118,6,3,0,0 -9,20,118,6,3,0,1 -9,21,127,6,3,8,0 -9,22,118,6,3,0,1 -9,23,118,6,3,8,0 -9,24,109,6,3,0,1 -9,25,127,6,3,0,0 -9,26,112,6,5,0,1 -9,27,112,6,3,2,1 -9,28,118,6,3,8,1 -9,29,118,4,3,6,1 -9,30,124,6,3,8,1 -9,31,124,4,3,2,1 -9,32,124,6,3,2,1 -9,33,124,6,3,2,1 -9,34,104,6,3,1,1 -9,35,104,6,3,1,1 +9,8,113,6,3,0,0 +9,9,121,6,3,8,1 +9,10,104,6,3,8,1 +9,11,104,6,3,8,1 +9,12,104,6,3,8,1 +9,13,104,6,3,8,1 +9,14,104,6,3,8,0 +9,15,104,6,3,0,0 +9,16,104,9,3,0,2 +9,17,104,3,3,0,0 +9,18,104,3,3,0,1 +9,19,104,9,3,0,1 +9,20,103,6,3,8,1 +9,21,121,6,3,8,1 +9,22,104,6,3,8,1 +9,23,121,6,3,8,1 +9,24,121,6,3,8,1 +9,25,104,6,3,8,0 +9,26,104,9,3,0,0 +9,27,104,3,3,0,0 +9,28,104,3,3,0,0 +9,29,104,3,3,0,0 +9,30,104,3,3,0,0 +9,31,104,3,3,0,0 +9,32,104,3,3,0,1 +9,33,103,6,3,8,1 +9,34,121,6,3,8,1 +9,35,104,6,3,8,1 9,36,104,6,3,8,1 -9,37,104,6,3,5,1 +9,37,104,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index c5dc282f..4d68f099 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,6,3,6,0 -0,9,102,6,3,6,0 -0,10,102,6,3,6,0 -0,11,102,6,3,6,0 -0,12,121,6,3,6,0 -0,13,102,6,3,6,0 -0,14,102,6,3,6,0 -0,15,102,6,3,6,0 -0,16,102,6,3,6,0 -0,17,102,6,3,6,0 -0,18,102,6,3,6,0 -0,19,102,6,3,6,0 -0,20,102,6,3,6,0 -0,21,102,6,3,6,0 -0,22,102,6,3,6,0 -0,23,102,6,3,6,0 -0,24,102,6,3,6,0 -0,25,102,6,3,6,0 -0,26,102,6,3,6,0 -0,27,102,6,3,6,0 -0,28,102,6,3,6,0 -0,29,102,6,3,6,0 -0,30,102,6,3,6,0 -0,31,102,6,3,6,0 -0,32,102,6,3,6,0 -0,33,102,6,3,6,0 -0,34,102,6,3,6,0 -0,35,102,6,3,6,0 -0,36,102,6,3,6,0 -0,37,102,6,3,6,0 +0,8,121,1,1,2,1 +0,9,113,0,7,8,2 +0,10,121,1,1,6,0 +0,11,113,9,0,8,1 +0,12,121,1,0,2,0 +0,13,127,4,0,7,0 +0,14,127,4,0,7,1 +0,15,127,1,0,2,1 +0,16,127,4,7,7,1 +0,17,102,1,1,7,1 +0,18,105,8,7,7,1 +0,19,105,1,7,2,1 +0,20,113,mask,7,7,1 +0,21,113,1,7,2,1 +0,22,113,1,7,2,1 +0,23,113,1,7,7,1 +0,24,113,1,5,2,1 +0,25,113,1,7,2,1 +0,26,113,1,1,7,1 +0,27,113,1,0,7,1 +0,28,113,1,0,2,1 +0,29,113,1,0,7,1 +0,30,113,1,0,7,1 +0,31,113,1,7,7,1 +0,32,113,1,7,7,1 +0,33,113,1,7,7,1 +0,34,113,1,7,7,1 +0,35,113,6,7,7,1 +0,36,113,1,7,2,1 +0,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index e842b43e..1241eea1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,6,3,6,0 -1,9,121,6,3,6,0 -1,10,121,6,3,6,0 -1,11,121,6,3,6,0 -1,12,121,4,3,6,0 -1,13,121,6,3,8,0 -1,14,121,6,9,6,0 -1,15,121,6,9,6,0 -1,16,102,6,9,6,0 -1,17,102,6,3,6,0 -1,18,121,6,3,6,0 -1,19,121,6,9,6,0 -1,20,102,6,3,6,0 -1,21,121,6,3,6,0 -1,22,121,6,3,6,0 -1,23,121,6,3,6,0 -1,24,121,6,3,6,0 -1,25,121,6,3,6,0 -1,26,121,6,9,6,0 -1,27,102,6,3,6,0 -1,28,102,6,3,6,0 -1,29,102,6,9,6,0 -1,30,102,6,3,6,0 -1,31,102,6,3,6,0 -1,32,102,6,3,6,0 -1,33,102,6,3,6,0 -1,34,102,6,3,6,0 -1,35,102,6,3,6,0 -1,36,102,6,3,6,0 -1,37,102,6,3,6,0 +1,8,113,0,7,6,0 +1,9,121,8,9,2,1 +1,10,113,9,0,8,0 +1,11,121,3,0,2,1 +1,12,127,9,0,7,0 +1,13,121,6,0,7,1 +1,14,127,1,0,7,1 +1,15,127,1,0,7,1 +1,16,108,1,7,7,1 +1,17,105,8,7,7,1 +1,18,105,1,7,2,1 +1,19,113,2,7,2,1 +1,20,113,2,7,2,1 +1,21,113,1,7,2,1 +1,22,113,1,7,7,1 +1,23,113,1,7,7,1 +1,24,113,1,5,2,1 +1,25,113,1,0,8,1 +1,26,113,1,0,2,1 +1,27,113,1,0,2,1 +1,28,113,1,0,7,1 +1,29,108,1,0,7,1 +1,30,108,1,7,7,1 +1,31,113,1,7,7,1 +1,32,113,1,7,7,1 +1,33,113,6,7,7,1 +1,34,113,1,7,2,1 +1,35,113,6,7,7,1 +1,36,113,1,7,2,1 +1,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index 5ee56466..46b4436b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,102,6,3,6,0 -2,9,121,6,3,6,0 -2,10,102,6,3,6,0 -2,11,102,6,3,6,0 -2,12,102,6,3,6,0 -2,13,121,6,3,6,0 -2,14,102,6,3,6,0 -2,15,102,6,3,6,0 -2,16,102,6,3,6,0 -2,17,102,6,3,6,0 -2,18,102,6,3,6,0 -2,19,102,6,3,6,0 -2,20,102,6,3,6,0 -2,21,102,6,3,6,0 -2,22,102,6,3,6,0 -2,23,102,6,3,6,0 -2,24,102,6,3,6,0 -2,25,102,6,3,6,0 -2,26,102,6,3,6,0 -2,27,102,6,3,6,0 -2,28,102,6,3,6,0 -2,29,102,6,3,6,0 -2,30,102,6,3,6,0 -2,31,102,6,3,6,0 -2,32,102,6,3,6,0 -2,33,102,6,3,6,0 -2,34,102,6,3,6,0 -2,35,102,6,3,6,0 -2,36,102,6,3,6,0 -2,37,102,6,3,6,0 +2,8,121,1,7,6,0 +2,9,113,0,7,7,2 +2,10,121,8,9,6,1 +2,11,102,1,1,6,2 +2,12,105,1,7,8,0 +2,13,127,1,1,0,1 +2,14,127,1,7,0,1 +2,15,127,1,1,0,1 +2,16,127,1,7,7,1 +2,17,127,1,7,0,1 +2,18,113,1,7,0,1 +2,19,113,1,7,0,1 +2,20,113,1,7,7,1 +2,21,113,1,7,0,1 +2,22,113,1,7,7,1 +2,23,113,1,7,0,1 +2,24,113,1,7,2,1 +2,25,113,1,7,2,1 +2,26,113,1,1,7,1 +2,27,113,1,5,2,1 +2,28,113,1,2,8,1 +2,29,113,1,1,7,1 +2,30,113,1,0,7,1 +2,31,113,1,0,7,1 +2,32,113,1,0,7,1 +2,33,113,1,7,7,1 +2,34,113,1,7,7,1 +2,35,113,1,7,7,1 +2,36,113,1,7,7,1 +2,37,113,1,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index d549003f..f0150155 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,6,3,6,0 -3,9,121,6,3,6,0 -3,10,121,6,3,6,0 -3,11,102,6,3,6,0 -3,12,102,6,3,6,0 -3,13,121,6,3,6,0 -3,14,102,6,9,6,0 -3,15,102,6,3,6,0 -3,16,102,6,3,6,0 -3,17,102,6,3,6,0 -3,18,102,6,3,6,0 -3,19,102,6,3,6,0 -3,20,102,6,3,6,0 -3,21,102,6,3,6,0 -3,22,102,6,3,6,0 -3,23,102,6,3,6,0 -3,24,102,6,3,6,0 -3,25,102,6,3,6,0 -3,26,102,6,3,6,0 -3,27,102,6,3,6,0 -3,28,102,6,3,6,0 -3,29,102,6,3,6,0 -3,30,102,6,3,6,0 -3,31,102,6,3,6,0 -3,32,102,6,3,6,0 -3,33,102,6,3,6,0 -3,34,102,6,3,6,0 -3,35,102,6,3,6,0 -3,36,102,6,3,6,0 -3,37,102,6,3,6,0 -4,8,102,6,3,6,0 -4,9,121,6,3,6,0 -4,10,121,6,3,6,0 -4,11,121,6,3,6,0 -4,12,121,6,3,6,0 -4,13,121,6,3,6,0 -4,14,102,6,3,6,0 -4,15,102,6,3,6,0 -4,16,102,6,3,6,0 -4,17,102,6,3,6,0 -4,18,102,6,3,6,0 -4,19,102,6,3,6,0 -4,20,102,6,3,6,0 -4,21,102,6,3,6,0 -4,22,102,6,3,6,0 -4,23,102,6,3,6,0 -4,24,102,6,3,6,0 -4,25,102,6,3,6,0 -4,26,102,6,3,6,0 -4,27,102,6,3,6,0 -4,28,102,6,3,6,0 -4,29,102,6,3,6,0 -4,30,102,6,3,6,0 -4,31,102,6,3,6,0 -4,32,102,6,3,6,0 -4,33,102,6,3,6,0 -4,34,102,6,3,6,0 -4,35,102,6,3,6,0 -4,36,102,6,3,6,0 -4,37,102,6,3,6,0 +3,8,109,3,0,6,0 +3,9,121,3,9,8,0 +3,10,121,3,1,8,0 +3,11,121,0,1,8,0 +3,12,127,0,0,6,0 +3,13,127,4,8,7,0 +3,14,127,4,1,7,1 +3,15,127,1,1,7,1 +3,16,127,0,7,0,1 +3,17,127,5,1,0,1 +3,18,127,1,7,0,1 +3,19,113,1,7,0,1 +3,20,113,1,7,7,1 +3,21,113,1,7,0,1 +3,22,113,1,7,0,1 +3,23,113,1,7,7,1 +3,24,113,1,7,0,1 +3,25,113,1,7,2,1 +3,26,113,1,7,2,1 +3,27,113,1,7,7,1 +3,28,113,1,5,7,1 +3,29,113,1,7,2,1 +3,30,113,1,1,7,1 +3,31,113,1,0,7,1 +3,32,113,1,7,7,1 +3,33,113,1,7,7,1 +3,34,113,1,5,7,1 +3,35,113,1,7,2,1 +3,36,113,1,7,7,1 +3,37,113,1,5,7,1 +4,8,113,3,7,4,1 +4,9,113,1,7,2,1 +4,10,113,3,7,2,1 +4,11,113,1,1,2,1 +4,12,127,1,0,2,1 +4,13,127,1,0,2,1 +4,14,127,4,0,7,1 +4,15,102,1,0,2,1 +4,16,113,1,0,7,1 +4,17,108,1,7,7,1 +4,18,108,1,7,7,1 +4,19,113,1,7,7,1 +4,20,113,8,7,7,1 +4,21,113,1,7,2,1 +4,22,113,6,7,2,1 +4,23,113,1,7,2,1 +4,24,113,6,7,2,1 +4,25,113,1,1,2,1 +4,26,113,1,0,8,1 +4,27,113,1,0,2,1 +4,28,113,1,0,2,1 +4,29,113,1,0,7,1 +4,30,108,1,0,7,1 +4,31,108,1,0,7,1 +4,32,108,1,0,7,1 +4,33,108,1,7,7,1 +4,34,113,6,7,7,1 +4,35,113,1,7,7,1 +4,36,113,6,7,7,1 +4,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index ee14eff8..f2cf6b66 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,102,6,3,6,0 -5,9,102,6,3,6,0 -5,10,102,6,3,6,0 -5,11,102,6,3,6,0 -5,12,102,6,3,6,0 -5,13,102,6,3,8,0 -5,14,102,6,3,6,0 -5,15,102,6,3,6,0 -5,16,102,6,3,6,0 -5,17,102,6,3,6,0 -5,18,102,6,3,6,0 -5,19,102,6,3,6,0 -5,20,102,6,3,6,0 -5,21,102,6,3,6,0 -5,22,102,6,3,6,0 -5,23,102,6,3,6,0 -5,24,102,6,3,6,0 -5,25,102,6,3,6,0 -5,26,102,6,3,6,0 -5,27,102,6,3,6,0 -5,28,102,6,3,6,0 -5,29,102,6,3,6,0 -5,30,102,6,3,6,0 -5,31,102,6,3,6,0 -5,32,102,6,3,6,0 -5,33,102,6,3,6,0 -5,34,102,6,3,6,0 -5,35,102,6,3,6,0 -5,36,102,6,3,6,0 -5,37,102,6,3,6,0 +5,8,113,3,7,4,1 +5,9,113,1,9,6,1 +5,10,113,1,7,0,1 +5,11,113,1,7,2,1 +5,12,113,1,1,2,1 +5,13,113,1,0,2,1 +5,14,113,1,0,2,1 +5,15,113,1,0,2,1 +5,16,113,1,8,7,1 +5,17,113,1,8,7,1 +5,18,113,1,7,7,1 +5,19,113,1,7,7,1 +5,20,113,1,7,7,1 +5,21,113,1,7,7,1 +5,22,113,1,7,7,1 +5,23,113,1,7,2,1 +5,24,113,1,7,2,1 +5,25,113,1,7,2,1 +5,26,113,1,1,7,1 +5,27,113,1,5,2,1 +5,28,113,1,2,8,1 +5,29,113,1,1,7,1 +5,30,113,1,0,7,1 +5,31,113,1,0,7,1 +5,32,113,1,0,7,1 +5,33,113,1,7,7,1 +5,34,113,1,7,7,1 +5,35,113,1,7,7,1 +5,36,113,1,7,7,1 +5,37,113,1,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 89e13f1d..650c1470 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,6,3,6,0 -6,9,121,6,3,6,0 -6,10,121,6,3,6,0 -6,11,121,6,3,6,0 -6,12,121,6,3,6,0 -6,13,121,6,9,6,0 -6,14,121,6,9,6,0 -6,15,102,6,9,6,0 -6,16,102,6,3,6,0 -6,17,121,6,3,6,0 -6,18,121,6,9,6,0 -6,19,102,6,3,6,0 -6,20,121,6,3,6,0 -6,21,121,6,3,6,0 -6,22,121,6,3,6,0 -6,23,121,6,3,6,0 -6,24,121,6,3,6,0 -6,25,121,6,9,6,0 -6,26,102,6,3,6,0 -6,27,102,6,3,6,0 -6,28,102,6,9,6,0 -6,29,102,6,3,6,0 -6,30,102,6,3,6,0 -6,31,102,6,3,6,0 -6,32,102,6,3,6,0 -6,33,102,6,3,6,0 -6,34,102,6,3,6,0 -6,35,102,6,3,6,0 -6,36,102,6,3,6,0 -6,37,102,6,3,6,0 -7,8,121,6,3,6,0 -7,9,121,6,3,6,0 -7,10,121,6,9,6,0 -7,11,102,6,9,6,0 -7,12,102,6,3,6,0 -7,13,102,6,9,6,0 -7,14,102,6,3,6,0 -7,15,102,6,3,6,0 -7,16,121,6,3,6,0 -7,17,121,6,3,6,0 -7,18,121,6,3,6,0 -7,19,121,6,3,6,0 -7,20,121,6,3,6,0 -7,21,121,6,3,6,0 -7,22,102,6,9,6,0 -7,23,102,6,3,6,0 -7,24,102,6,9,6,0 -7,25,102,6,3,6,0 -7,26,102,6,3,6,0 -7,27,102,6,3,6,0 -7,28,102,6,3,6,0 -7,29,102,6,3,6,0 -7,30,121,6,3,6,0 -7,31,102,6,3,6,0 -7,32,102,6,3,6,0 -7,33,102,6,3,6,0 -7,34,102,6,3,6,0 -7,35,102,6,3,6,0 -7,36,102,6,3,6,0 -7,37,102,6,3,6,0 +6,8,122,4,7,4,1 +6,9,113,1,7,2,0 +6,10,113,3,7,4,1 +6,11,113,1,7,2,1 +6,12,113,6,7,7,1 +6,13,102,1,1,2,1 +6,14,127,4,7,8,1 +6,15,102,1,1,0,1 +6,16,113,1,7,7,1 +6,17,102,1,1,7,1 +6,18,105,1,7,7,1 +6,19,113,1,7,0,1 +6,20,113,1,7,7,1 +6,21,113,1,5,7,1 +6,22,113,1,5,2,1 +6,23,113,1,7,2,1 +6,24,113,1,7,7,1 +6,25,113,1,5,7,1 +6,26,113,1,7,8,1 +6,27,113,1,1,7,1 +6,28,113,1,5,7,1 +6,29,113,1,7,7,1 +6,30,113,1,5,7,1 +6,31,113,1,5,7,1 +6,32,113,1,2,7,1 +6,33,113,1,5,7,1 +6,34,113,1,2,7,1 +6,35,113,1,5,7,1 +6,36,113,1,2,8,1 +6,37,113,1,1,7,1 +7,8,121,1,9,6,0 +7,9,105,0,9,1,2 +7,10,121,0,9,6,0 +7,11,121,0,1,6,0 +7,12,121,0,3,8,0 +7,13,127,0,0,6,0 +7,14,127,4,0,7,0 +7,15,127,4,0,2,1 +7,16,127,4,0,2,0 +7,17,127,4,0,8,0 +7,18,127,4,1,2,0 +7,19,127,4,1,8,1 +7,20,127,4,1,8,1 +7,21,127,1,1,8,1 +7,22,113,1,7,0,1 +7,23,113,1,7,7,1 +7,24,113,1,9,0,1 +7,25,113,1,7,7,1 +7,26,113,1,9,0,1 +7,27,113,1,7,7,1 +7,28,113,1,5,0,1 +7,29,113,1,2,2,1 +7,30,113,1,7,7,1 +7,31,113,1,5,7,1 +7,32,113,1,2,2,1 +7,33,113,1,5,7,1 +7,34,113,1,2,7,1 +7,35,113,1,5,7,1 +7,36,108,1,2,8,1 +7,37,113,1,0,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index 0988fb6a..2cdb2be9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,102,6,3,6,0 -8,9,102,6,3,6,0 -8,10,102,6,3,6,0 -8,11,102,6,3,6,0 -8,12,102,6,3,6,0 -8,13,102,6,3,6,0 -8,14,102,6,3,6,0 -8,15,102,6,3,6,0 -8,16,102,6,3,6,0 -8,17,102,6,3,6,0 -8,18,102,6,3,6,0 -8,19,102,6,3,6,0 -8,20,102,6,3,6,0 -8,21,102,6,3,6,0 -8,22,102,6,3,6,0 -8,23,102,6,3,6,0 -8,24,102,6,3,6,0 -8,25,102,6,3,6,0 -8,26,102,6,3,6,0 -8,27,102,6,3,6,0 -8,28,102,6,3,6,0 -8,29,102,6,3,6,0 -8,30,102,6,3,6,0 -8,31,102,6,3,6,0 -8,32,102,6,3,6,0 -8,33,102,6,3,6,0 -8,34,102,6,3,6,0 -8,35,102,6,3,6,0 -8,36,102,6,3,6,0 -8,37,102,6,3,6,0 +8,8,113,1,3,2,0 +8,9,113,3,7,7,1 +8,10,121,1,7,2,1 +8,11,113,4,7,7,2 +8,12,121,1,1,2,1 +8,13,127,1,0,8,0 +8,14,109,1,0,8,1 +8,15,127,1,0,7,0 +8,16,127,1,0,7,1 +8,17,127,1,7,7,1 +8,18,127,1,7,7,1 +8,19,113,1,7,0,1 +8,20,113,1,7,7,1 +8,21,113,8,7,7,1 +8,22,113,1,5,2,1 +8,23,113,1,7,8,1 +8,24,113,1,7,0,1 +8,25,113,1,7,7,1 +8,26,113,1,5,7,1 +8,27,113,1,2,2,1 +8,28,113,1,1,7,1 +8,29,108,1,0,2,1 +8,30,113,1,0,7,1 +8,31,113,1,0,7,1 +8,32,113,1,7,7,1 +8,33,113,1,7,7,1 +8,34,113,1,7,7,1 +8,35,113,1,7,7,1 +8,36,113,6,7,7,1 +8,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index f032d896..1c08eb2a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,3,6,0 -9,9,102,6,3,6,0 -9,10,102,6,3,6,0 -9,11,102,6,3,6,0 -9,12,102,6,3,6,0 -9,13,121,6,3,8,0 -9,14,102,6,3,6,0 -9,15,102,6,3,6,0 -9,16,102,6,3,6,0 -9,17,102,6,3,6,0 -9,18,102,6,3,6,0 -9,19,102,6,3,6,0 -9,20,102,6,3,6,0 -9,21,102,6,3,6,0 -9,22,102,6,3,6,0 -9,23,102,6,3,6,0 -9,24,102,6,3,6,0 -9,25,102,6,3,6,0 -9,26,102,6,3,6,0 -9,27,102,6,3,6,0 -9,28,102,6,3,6,0 -9,29,102,6,3,6,0 -9,30,102,6,3,6,0 -9,31,102,6,3,6,0 -9,32,102,6,3,6,0 -9,33,102,6,3,6,0 -9,34,102,6,3,6,0 -9,35,102,6,3,6,0 -9,36,102,6,3,6,0 -9,37,102,6,3,6,0 +9,8,121,1,7,2,0 +9,9,113,3,7,1,2 +9,10,113,1,9,6,1 +9,11,113,1,7,7,1 +9,12,113,1,7,7,1 +9,13,113,1,7,7,1 +9,14,113,1,7,7,1 +9,15,113,1,7,2,1 +9,16,113,1,1,2,1 +9,17,113,1,0,2,1 +9,18,113,1,0,2,1 +9,19,113,1,0,2,1 +9,20,113,1,0,7,1 +9,21,113,1,0,7,1 +9,22,108,1,0,7,1 +9,23,108,1,7,7,1 +9,24,113,1,7,7,1 +9,25,113,1,7,7,1 +9,26,113,6,7,7,1 +9,27,113,1,7,2,1 +9,28,113,6,7,7,1 +9,29,113,1,7,2,1 +9,30,113,6,7,2,1 +9,31,113,1,1,2,1 +9,32,113,1,0,2,1 +9,33,113,1,0,2,1 +9,34,113,1,0,2,1 +9,35,113,1,0,7,1 +9,36,108,1,0,2,1 +9,37,113,1,0,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index 261bca34..105792b4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,115,7,0,3,0 -0,9,107,1,2,5,1 -0,10,103,6,2,3,1 -0,11,126,6,2,0,0 -0,12,112,4,9,5,0 -0,13,112,6,3,0,0 -0,14,112,6,2,0,0 -0,15,112,6,2,0,0 -0,16,100,6,2,0,0 -0,17,110,6,2,0,2 -0,18,115,6,1,0,2 -0,19,107,6,2,0,2 -0,20,100,6,2,6,2 -0,21,112,6,2,6,2 -0,22,107,6,2,0,2 -0,23,107,6,2,0,2 -0,24,100,6,2,0,2 -0,25,100,9,2,0,2 -0,26,115,6,2,0,1 -0,27,107,9,2,0,2 -0,28,115,5,2,0,1 -0,29,107,6,2,0,1 -0,30,110,6,2,0,2 -0,31,113,9,2,0,1 -0,32,115,6,2,0,1 -0,33,103,0,2,0,1 -0,34,113,0,2,0,0 -0,35,113,4,2,0,1 -0,36,110,6,2,0,1 -0,37,110,5,2,0,1 +0,8,113,6,2,0,1 +0,9,102,6,2,0,1 +0,10,102,6,2,0,1 +0,11,121,6,2,0,1 +0,12,121,6,5,6,1 +0,13,121,6,2,6,1 +0,14,121,6,2,6,1 +0,15,121,6,2,6,1 +0,16,121,6,2,6,1 +0,17,121,6,5,6,1 +0,18,121,3,5,6,1 +0,19,121,3,5,6,1 +0,20,121,3,5,6,1 +0,21,121,3,5,6,1 +0,22,121,3,5,6,1 +0,23,121,3,5,6,1 +0,24,121,3,5,6,1 +0,25,121,3,5,6,0 +0,26,121,3,5,6,0 +0,27,121,3,5,6,0 +0,28,121,3,5,6,0 +0,29,121,3,5,6,0 +0,30,121,3,5,6,0 +0,31,121,3,5,6,0 +0,32,121,3,5,6,0 +0,33,121,3,5,6,0 +0,34,121,3,5,6,0 +0,35,121,3,5,6,0 +0,36,121,3,5,6,0 +0,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index cdaed10b..350e2f2f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,107,7,2,7,0 -1,9,107,7,2,0,0 -1,10,110,9,2,0,0 -1,11,121,6,2,0,1 -1,12,121,4,9,8,0 -1,13,112,4,9,5,0 -1,14,112,6,3,5,0 -1,15,112,4,3,5,0 -1,16,112,6,2,4,0 -1,17,112,4,9,0,0 -1,18,112,6,9,0,0 -1,19,112,6,9,5,0 -1,20,112,6,9,5,0 -1,21,112,6,9,0,0 -1,22,100,6,9,6,0 -1,23,100,6,9,5,0 -1,24,100,6,9,5,0 -1,25,100,6,9,5,0 -1,26,100,6,9,5,0 -1,27,100,1,9,5,0 -1,28,100,6,9,5,0 -1,29,100,4,9,5,0 -1,30,100,1,9,5,0 -1,31,100,6,9,5,0 -1,32,100,4,9,5,0 -1,33,112,4,9,5,0 -1,34,112,4,9,5,0 -1,35,112,4,9,5,0 -1,36,112,4,9,5,0 -1,37,112,4,9,5,0 +1,8,113,6,2,0,0 +1,9,121,6,5,0,1 +1,10,121,4,9,6,0 +1,11,121,4,5,6,1 +1,12,121,4,5,6,1 +1,13,121,3,2,6,1 +1,14,121,3,2,6,1 +1,15,121,4,5,6,1 +1,16,121,3,5,6,1 +1,17,121,3,5,6,1 +1,18,121,3,2,6,1 +1,19,121,3,2,6,1 +1,20,121,3,2,6,1 +1,21,121,3,5,6,1 +1,22,121,3,5,6,1 +1,23,121,3,5,6,1 +1,24,121,3,5,6,1 +1,25,121,3,5,6,1 +1,26,121,3,5,6,1 +1,27,121,3,5,6,1 +1,28,121,3,5,6,1 +1,29,121,3,5,6,0 +1,30,121,3,5,6,0 +1,31,121,3,5,6,0 +1,32,121,3,5,6,0 +1,33,121,3,5,6,0 +1,34,121,3,5,6,0 +1,35,121,3,5,6,0 +1,36,121,3,5,6,0 +1,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index f74eed86..7cb7ee53 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,107,1,0,9,1 -2,9,108,0,2,5,1 -2,10,110,0,2,8,1 -2,11,110,0,2,0,1 -2,12,110,0,2,0,1 -2,13,103,6,8,0,0 -2,14,112,4,8,8,0 -2,15,112,6,2,8,0 -2,16,112,4,2,0,0 -2,17,112,6,2,0,0 -2,18,110,4,2,0,0 -2,19,102,6,1,0,0 -2,20,110,6,1,0,0 -2,21,122,6,9,0,0 -2,22,112,6,9,6,0 -2,23,110,6,2,0,0 -2,24,110,6,2,0,0 -2,25,110,4,2,0,0 -2,26,110,4,2,0,0 -2,27,102,4,0,0,1 -2,28,108,6,0,5,1 -2,29,108,6,0,5,0 -2,30,108,6,9,4,0 -2,31,112,6,9,5,0 -2,32,108,6,9,0,0 -2,33,112,6,9,5,0 -2,34,112,6,9,0,0 -2,35,100,6,9,5,0 -2,36,100,6,9,5,0 -2,37,100,6,9,5,0 +2,8,105,5,3,0,0 +2,9,102,6,1,0,1 +2,10,121,6,2,0,1 +2,11,121,6,2,6,1 +2,12,121,6,2,6,1 +2,13,121,6,2,6,1 +2,14,121,6,2,6,1 +2,15,121,6,2,6,1 +2,16,121,6,5,6,1 +2,17,121,6,5,6,1 +2,18,121,3,5,6,1 +2,19,121,3,5,6,1 +2,20,121,3,5,6,1 +2,21,121,3,5,6,1 +2,22,121,3,5,6,1 +2,23,121,3,5,6,1 +2,24,121,3,5,6,1 +2,25,121,3,5,6,0 +2,26,121,3,5,6,0 +2,27,121,3,5,6,0 +2,28,121,3,5,6,0 +2,29,121,3,5,6,0 +2,30,121,3,5,6,0 +2,31,121,3,5,6,0 +2,32,121,3,5,6,0 +2,33,121,3,5,6,0 +2,34,121,3,5,6,0 +2,35,121,3,5,6,0 +2,36,121,3,5,6,0 +2,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 8ce16f14..e82f6f8a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,110,1,2,7,1 -3,9,107,1,2,3,1 -3,10,110,0,2,3,1 -3,11,110,1,7,0,1 -3,12,108,0,7,5,1 -3,13,112,6,7,8,1 -3,14,112,6,2,0,0 -3,15,113,6,2,0,0 -3,16,110,6,2,0,0 -3,17,110,6,2,0,1 -3,18,102,6,2,0,1 -3,19,110,6,2,0,1 -3,20,102,6,2,0,1 -3,21,110,6,2,0,1 -3,22,110,6,2,0,1 -3,23,110,6,2,0,1 -3,24,110,6,2,0,1 -3,25,102,6,2,0,1 -3,26,110,6,2,0,1 -3,27,102,6,2,0,1 -3,28,110,6,2,0,1 -3,29,102,6,2,0,1 -3,30,110,6,2,0,1 -3,31,102,6,2,0,1 -3,32,110,6,2,0,1 -3,33,110,6,2,0,1 -3,34,102,6,2,0,1 -3,35,110,6,2,0,1 -3,36,102,6,2,0,1 -3,37,110,6,2,0,1 -4,8,107,7,0,3,0 -4,9,110,1,2,9,0 -4,10,119,7,0,4,0 -4,11,107,7,0,5,0 -4,12,103,6,9,5,0 -4,13,112,6,9,5,0 -4,14,112,6,9,0,0 -4,15,112,4,9,0,0 -4,16,112,6,9,5,0 -4,17,112,6,9,0,0 -4,18,100,4,9,5,0 -4,19,112,6,9,5,0 -4,20,100,6,9,0,0 -4,21,100,4,9,5,0 -4,22,112,6,9,5,0 -4,23,100,6,9,5,0 -4,24,100,4,9,5,0 -4,25,112,6,9,5,0 -4,26,100,4,9,5,0 -4,27,112,6,9,5,0 -4,28,100,4,9,5,0 -4,29,112,9,9,5,0 -4,30,112,6,9,5,0 -4,31,100,4,9,5,0 -4,32,112,9,9,5,0 -4,33,112,6,9,5,0 -4,34,112,9,9,5,0 -4,35,112,6,9,5,0 -4,36,112,9,9,5,0 -4,37,112,6,9,5,0 +3,8,113,6,2,0,0 +3,9,102,6,2,0,1 +3,10,121,6,2,0,1 +3,11,121,6,5,6,1 +3,12,121,6,5,6,1 +3,13,121,4,5,6,1 +3,14,121,3,5,6,1 +3,15,121,4,5,6,1 +3,16,121,3,5,6,1 +3,17,121,3,2,6,1 +3,18,121,3,2,6,1 +3,19,121,3,2,6,1 +3,20,121,3,5,6,1 +3,21,121,3,5,6,1 +3,22,121,3,5,6,1 +3,23,121,3,5,6,1 +3,24,121,3,5,6,1 +3,25,121,3,5,6,1 +3,26,121,3,5,6,1 +3,27,121,3,5,6,1 +3,28,121,3,5,6,0 +3,29,121,3,5,6,0 +3,30,121,3,5,6,0 +3,31,121,3,5,6,0 +3,32,121,3,5,6,0 +3,33,121,3,5,6,0 +3,34,121,3,5,6,0 +3,35,121,3,5,6,0 +3,36,121,3,5,6,0 +3,37,121,3,5,6,0 +4,8,105,5,8,2,0 +4,9,102,6,3,0,1 +4,10,121,6,3,0,1 +4,11,121,4,9,6,1 +4,12,121,6,5,6,1 +4,13,121,4,2,6,1 +4,14,121,4,2,6,1 +4,15,121,3,2,6,1 +4,16,121,6,2,6,1 +4,17,121,6,2,6,1 +4,18,121,6,5,6,1 +4,19,121,6,5,6,1 +4,20,121,3,5,6,1 +4,21,121,3,2,6,1 +4,22,121,3,5,6,1 +4,23,121,3,5,6,1 +4,24,121,3,5,6,1 +4,25,121,3,5,6,1 +4,26,121,3,5,6,1 +4,27,121,3,5,6,1 +4,28,121,3,5,6,1 +4,29,121,3,5,6,1 +4,30,121,3,5,6,0 +4,31,121,3,5,6,0 +4,32,121,3,5,6,0 +4,33,121,3,5,6,0 +4,34,121,3,5,6,0 +4,35,121,3,5,6,0 +4,36,121,3,5,6,0 +4,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index e2d9465c..7ee664d5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,107,7,2,5,0 -5,9,119,7,2,9,0 -5,10,119,7,2,0,0 -5,11,119,9,0,0,0 -5,12,103,6,0,5,0 -5,13,103,4,9,0,0 -5,14,112,4,9,5,0 -5,15,112,6,9,5,0 -5,16,112,6,9,0,0 -5,17,112,4,9,5,0 -5,18,112,6,9,5,0 -5,19,112,6,9,5,0 -5,20,100,6,9,0,0 -5,21,100,4,9,5,0 -5,22,112,6,9,5,0 -5,23,100,6,9,0,0 -5,24,100,4,9,5,0 -5,25,112,6,9,5,0 -5,26,100,4,9,5,0 -5,27,112,6,9,5,0 -5,28,100,4,9,5,0 -5,29,112,4,9,5,0 -5,30,112,6,9,5,0 -5,31,112,4,9,5,0 -5,32,112,9,9,5,0 -5,33,112,6,9,5,0 -5,34,112,9,9,5,0 -5,35,112,6,9,5,0 -5,36,112,9,9,5,0 -5,37,112,6,9,5,0 +5,8,122,6,8,2,0 +5,9,113,6,2,0,1 +5,10,113,6,3,0,1 +5,11,121,6,2,0,1 +5,12,121,6,2,6,1 +5,13,121,6,2,6,1 +5,14,121,6,2,6,1 +5,15,121,6,5,6,1 +5,16,121,6,5,6,1 +5,17,121,6,5,6,1 +5,18,121,3,5,6,1 +5,19,121,3,5,6,1 +5,20,121,3,5,6,1 +5,21,121,3,5,6,1 +5,22,121,3,5,6,1 +5,23,121,3,5,6,1 +5,24,121,3,5,6,1 +5,25,121,3,5,6,0 +5,26,121,3,5,6,0 +5,27,121,3,5,6,0 +5,28,121,3,5,6,0 +5,29,121,3,5,6,0 +5,30,121,3,5,6,0 +5,31,121,3,5,6,0 +5,32,121,3,5,6,0 +5,33,121,3,5,6,0 +5,34,121,3,5,6,0 +5,35,121,3,5,6,0 +5,36,121,3,5,6,0 +5,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index 328eac11..e3ab2a3d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,107,1,7,8,0 -6,9,110,6,7,5,1 -6,10,107,6,2,0,0 -6,11,110,6,9,0,0 -6,12,108,6,9,5,0 -6,13,112,6,9,8,0 -6,14,108,6,9,0,0 -6,15,112,6,9,0,0 -6,16,108,6,0,0,0 -6,17,110,6,9,0,0 -6,18,108,6,0,5,0 -6,19,110,6,9,5,0 -6,20,108,6,9,5,0 -6,21,112,6,9,5,0 -6,22,112,1,9,5,0 -6,23,112,6,0,5,0 -6,24,112,1,9,5,0 -6,25,112,6,0,5,0 -6,26,112,1,9,0,0 -6,27,112,6,0,5,0 -6,28,100,6,9,0,0 -6,29,100,4,9,5,0 -6,30,112,6,9,5,0 -6,31,100,6,9,5,0 -6,32,112,6,9,5,0 -6,33,100,6,9,5,0 -6,34,100,6,9,5,0 -6,35,100,4,9,5,0 -6,36,112,6,9,5,0 -6,37,100,9,9,5,0 -7,8,110,7,2,7,0 -7,9,119,1,2,0,0 -7,10,119,7,0,5,1 -7,11,107,6,0,5,0 -7,12,103,6,9,5,0 -7,13,112,6,9,8,0 -7,14,112,6,9,5,0 -7,15,112,6,9,0,0 -7,16,112,6,9,0,0 -7,17,100,4,9,0,0 -7,18,100,9,9,5,0 -7,19,112,6,9,5,0 -7,20,100,6,9,5,0 -7,21,100,6,9,5,0 -7,22,100,6,9,5,0 -7,23,100,6,9,5,0 -7,24,100,4,9,5,0 -7,25,112,4,9,5,0 -7,26,112,9,9,5,0 -7,27,112,6,9,5,0 -7,28,100,4,9,5,0 -7,29,112,9,9,5,0 -7,30,112,6,9,5,0 -7,31,112,9,9,5,0 -7,32,112,6,9,5,0 -7,33,112,6,9,5,0 -7,34,112,6,9,5,0 -7,35,100,6,9,5,0 -7,36,112,6,9,5,0 -7,37,100,6,9,8,0 +6,8,121,6,3,0,0 +6,9,121,4,9,6,1 +6,10,121,6,5,6,0 +6,11,121,4,5,6,1 +6,12,121,4,5,6,1 +6,13,121,4,5,6,1 +6,14,121,4,5,6,0 +6,15,121,3,5,6,1 +6,16,121,3,5,6,1 +6,17,121,3,5,6,1 +6,18,121,3,5,6,1 +6,19,121,3,2,6,1 +6,20,121,3,2,6,1 +6,21,121,3,5,6,1 +6,22,121,3,5,6,0 +6,23,121,3,5,6,1 +6,24,121,3,5,6,0 +6,25,121,3,5,6,1 +6,26,121,3,5,6,0 +6,27,121,3,5,6,1 +6,28,121,3,5,6,0 +6,29,121,3,5,6,0 +6,30,121,3,5,6,0 +6,31,121,3,5,6,0 +6,32,121,3,5,6,0 +6,33,121,3,5,6,0 +6,34,121,3,5,6,0 +6,35,121,3,5,6,0 +6,36,121,3,5,6,0 +6,37,121,3,5,6,0 +7,8,121,4,9,5,0 +7,9,121,4,3,6,0 +7,10,121,4,5,6,0 +7,11,121,4,5,6,0 +7,12,121,4,9,6,0 +7,13,121,4,9,6,0 +7,14,121,4,5,6,0 +7,15,121,3,5,6,1 +7,16,121,3,5,6,1 +7,17,121,3,5,6,1 +7,18,121,3,5,6,0 +7,19,121,3,5,6,1 +7,20,121,3,5,6,0 +7,21,121,3,5,6,0 +7,22,121,3,5,6,0 +7,23,121,3,5,6,0 +7,24,121,3,5,6,0 +7,25,121,3,5,6,0 +7,26,121,3,5,6,0 +7,27,121,3,5,6,0 +7,28,121,3,5,6,0 +7,29,121,3,5,6,0 +7,30,121,3,5,6,0 +7,31,121,3,5,6,0 +7,32,121,3,5,6,0 +7,33,121,3,5,6,0 +7,34,121,3,5,6,0 +7,35,121,3,5,6,0 +7,36,121,3,5,6,0 +7,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index 648373ce..7306d67d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,107,1,2,0,0 -8,9,119,6,2,7,1 -8,10,107,7,2,0,0 -8,11,103,6,2,0,0 -8,12,121,4,9,0,0 -8,13,112,6,9,5,0 -8,14,108,6,9,0,0 -8,15,108,6,9,0,0 -8,16,108,6,0,0,0 -8,17,110,6,0,0,0 -8,18,110,6,9,0,0 -8,19,108,6,9,5,0 -8,20,112,6,9,5,0 -8,21,112,6,9,4,0 -8,22,112,6,9,5,0 -8,23,112,6,9,5,0 -8,24,112,6,9,5,0 -8,25,112,1,9,5,0 -8,26,112,6,9,5,0 -8,27,100,1,9,0,0 -8,28,100,6,9,5,0 -8,29,100,6,9,5,0 -8,30,100,1,9,5,0 -8,31,100,6,9,5,0 -8,32,100,4,9,5,0 -8,33,112,4,9,5,0 -8,34,112,4,9,5,0 -8,35,112,4,9,5,0 -8,36,112,9,9,5,0 -8,37,112,6,9,5,0 +8,8,102,6,3,0,0 +8,9,121,6,3,0,0 +8,10,121,4,5,6,0 +8,11,121,3,5,6,0 +8,12,121,4,5,6,1 +8,13,121,4,9,6,0 +8,14,121,3,5,6,1 +8,15,121,3,5,6,1 +8,16,121,3,5,6,0 +8,17,121,3,5,6,0 +8,18,121,3,5,6,0 +8,19,121,3,5,6,0 +8,20,121,3,5,6,0 +8,21,121,3,5,6,0 +8,22,121,3,5,6,0 +8,23,121,3,5,6,0 +8,24,121,3,5,6,0 +8,25,121,3,5,6,0 +8,26,121,3,5,6,0 +8,27,121,3,5,6,0 +8,28,121,3,5,6,0 +8,29,121,3,5,6,0 +8,30,121,3,5,6,0 +8,31,121,3,5,6,0 +8,32,121,3,5,6,0 +8,33,121,3,5,6,0 +8,34,121,3,5,6,0 +8,35,121,3,5,6,0 +8,36,121,3,5,6,0 +8,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index fe16cefa..b3e95b3e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,107,1,2,7,1 -9,9,107,1,2,3,1 -9,10,110,0,2,3,1 -9,11,110,1,2,0,1 -9,12,103,0,7,0,1 -9,13,103,6,7,0,0 -9,14,112,6,9,0,0 -9,15,113,6,7,0,0 -9,16,110,6,2,0,0 -9,17,110,6,2,0,0 -9,18,102,6,2,0,0 -9,19,110,6,2,0,0 -9,20,102,6,2,0,1 -9,21,110,6,2,0,1 -9,22,110,6,2,0,1 -9,23,110,6,2,0,1 -9,24,110,6,2,0,1 -9,25,110,6,2,0,1 -9,26,110,6,2,0,1 -9,27,102,6,2,0,1 -9,28,110,6,2,0,1 -9,29,102,6,2,0,1 -9,30,110,6,2,0,1 -9,31,102,6,2,0,1 -9,32,110,6,2,0,1 -9,33,102,6,2,0,1 -9,34,110,6,2,0,1 -9,35,110,6,2,0,1 -9,36,102,6,2,0,1 -9,37,110,6,2,0,1 +9,8,113,6,3,2,0 +9,9,102,6,3,0,0 +9,10,121,6,2,0,1 +9,11,121,4,5,6,0 +9,12,121,3,5,6,1 +9,13,121,4,5,6,1 +9,14,121,3,5,6,1 +9,15,121,3,5,6,1 +9,16,121,3,5,6,1 +9,17,121,3,5,6,1 +9,18,121,3,5,6,1 +9,19,121,3,5,6,0 +9,20,121,3,5,6,0 +9,21,121,3,5,6,0 +9,22,121,3,5,6,0 +9,23,121,3,5,6,0 +9,24,121,3,5,6,0 +9,25,121,3,5,6,0 +9,26,121,3,5,6,0 +9,27,121,3,5,6,0 +9,28,121,3,5,6,0 +9,29,121,3,5,6,0 +9,30,121,3,5,6,0 +9,31,121,3,5,6,0 +9,32,121,3,5,6,0 +9,33,121,3,5,6,0 +9,34,121,3,5,6,0 +9,35,121,3,5,6,0 +9,36,121,3,5,6,0 +9,37,121,3,5,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 9c9a70fe..39c6e464 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,127,6,2,0,1 -0,9,118,6,2,0,1 -0,10,118,6,2,2,1 -0,11,118,6,2,2,1 -0,12,118,6,7,2,1 -0,13,118,6,3,2,1 -0,14,118,6,3,6,1 -0,15,118,6,3,6,1 -0,16,127,6,3,other,0 -0,17,127,6,3,0,1 -0,18,127,6,3,0,1 -0,19,127,6,3,0,1 -0,20,118,6,3,0,1 -0,21,118,6,3,0,1 -0,22,118,6,3,2,1 -0,23,118,6,3,2,1 -0,24,118,6,3,2,1 -0,25,124,6,3,0,1 -0,26,124,6,3,0,1 -0,27,124,6,3,0,1 -0,28,104,6,3,0,1 -0,29,104,6,3,1,1 -0,30,109,6,3,8,1 -0,31,109,6,3,1,1 -0,32,109,4,3,8,0 -0,33,113,3,3,0,1 -0,34,122,3,5,8,0 -0,35,118,3,5,0,1 -0,36,118,6,5,8,0 -0,37,118,6,5,2,1 +0,8,102,6,3,8,1 +0,9,121,6,3,8,1 +0,10,104,6,3,8,1 +0,11,121,6,3,8,1 +0,12,121,6,3,8,1 +0,13,104,6,3,8,0 +0,14,104,3,3,0,0 +0,15,104,3,3,0,0 +0,16,104,3,3,0,0 +0,17,104,3,3,0,0 +0,18,104,3,3,0,0 +0,19,104,3,3,0,0 +0,20,104,3,3,0,1 +0,21,103,6,3,0,1 +0,22,113,6,3,8,1 +0,23,113,6,3,8,1 +0,24,113,6,3,8,1 +0,25,104,6,3,8,1 +0,26,104,6,3,8,1 +0,27,104,6,3,8,1 +0,28,104,6,3,8,1 +0,29,104,6,3,8,1 +0,30,104,9,3,0,0 +0,31,104,3,3,0,1 +0,32,104,9,3,0,1 +0,33,104,9,3,0,1 +0,34,104,3,3,8,1 +0,35,104,6,3,8,0 +0,36,121,6,3,8,0 +0,37,121,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index 18c70481..b1f5c970 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,118,6,2,2,1 -1,9,118,6,9,0,1 -1,10,118,6,9,2,1 -1,11,118,6,9,2,1 -1,12,118,6,9,2,1 -1,13,118,6,3,2,1 -1,14,124,6,3,2,1 -1,15,104,6,3,8,1 -1,16,114,6,3,5,1 -1,17,114,6,3,5,1 -1,18,114,6,3,5,1 -1,19,114,6,3,5,1 -1,20,114,6,3,5,1 -1,21,109,6,3,5,1 -1,22,127,6,3,5,1 -1,23,127,6,9,5,1 -1,24,127,6,3,5,1 -1,25,118,6,3,5,1 -1,26,118,6,3,5,1 -1,27,118,6,3,5,1 -1,28,118,6,3,5,1 -1,29,118,6,3,9,1 -1,30,118,6,3,5,1 -1,31,127,6,3,5,1 -1,32,127,6,3,5,1 -1,33,127,6,3,5,1 -1,34,127,6,3,5,1 -1,35,127,6,3,5,1 -1,36,118,6,3,5,1 -1,37,118,6,3,0,1 +1,8,121,6,3,8,1 +1,9,121,6,3,8,0 +1,10,121,6,3,8,0 +1,11,121,6,3,8,0 +1,12,121,6,3,8,0 +1,13,104,3,3,8,0 +1,14,104,3,3,0,0 +1,15,104,3,3,0,0 +1,16,104,3,3,0,0 +1,17,104,3,3,0,0 +1,18,104,3,3,0,0 +1,19,104,3,3,0,0 +1,20,104,3,3,0,0 +1,21,121,6,3,0,1 +1,22,113,6,3,8,1 +1,23,121,6,3,8,1 +1,24,104,6,3,8,1 +1,25,104,6,3,8,0 +1,26,104,6,3,0,0 +1,27,104,9,3,0,1 +1,28,104,3,3,0,1 +1,29,104,9,3,0,1 +1,30,104,3,3,0,1 +1,31,104,3,3,0,1 +1,32,103,6,3,8,1 +1,33,113,6,3,8,1 +1,34,121,6,3,8,1 +1,35,121,6,3,8,1 +1,36,104,6,3,8,1 +1,37,104,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index cec8e864..b32ec715 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,127,6,2,0,1 -2,9,127,6,3,0,1 -2,10,127,6,3,0,1 -2,11,118,6,3,0,1 -2,12,118,6,5,2,1 -2,13,118,6,7,2,1 -2,14,118,6,7,2,1 -2,15,124,6,3,2,1 -2,16,124,6,3,2,1 -2,17,124,6,3,2,1 -2,18,124,6,3,0,1 -2,19,104,6,3,0,1 -2,20,104,6,3,1,1 -2,21,109,6,3,0,1 -2,22,109,6,3,0,1 -2,23,104,3,3,8,1 -2,24,113,6,3,8,1 -2,25,113,6,3,8,1 -2,26,113,4,3,8,0 -2,27,113,3,4,8,0 -2,28,unknown,4,4,8,2 -2,29,unknown,4,4,8,0 -2,30,109,4,4,8,2 -2,31,109,4,3,8,2 -2,32,127,3,6,8,1 -2,33,unknown,3,5,4,1 -2,34,unknown,3,9,4,1 -2,35,unknown,0,9,8,1 -2,36,127,4,3,8,0 -2,37,118,4,9,3,1 +2,8,102,6,3,8,1 +2,9,121,6,3,8,1 +2,10,104,6,3,8,1 +2,11,104,6,3,8,0 +2,12,104,6,3,8,0 +2,13,104,6,3,8,0 +2,14,104,6,3,0,0 +2,15,104,3,3,0,0 +2,16,104,3,3,0,0 +2,17,104,3,3,0,0 +2,18,104,3,3,0,1 +2,19,103,4,3,0,1 +2,20,102,6,3,8,1 +2,21,121,6,3,8,1 +2,22,104,6,3,8,1 +2,23,104,6,3,8,1 +2,24,104,6,3,8,0 +2,25,104,6,3,8,0 +2,26,104,6,3,0,0 +2,27,104,9,3,0,1 +2,28,104,3,3,0,0 +2,29,104,3,3,0,0 +2,30,104,3,3,0,1 +2,31,103,4,3,0,1 +2,32,102,6,3,8,1 +2,33,121,6,3,8,1 +2,34,121,6,3,8,1 +2,35,104,6,3,8,1 +2,36,104,6,3,8,0 +2,37,104,6,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index cd3c4c28..03dc6b54 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,127,2,2,2,1 -3,9,127,6,2,0,1 -3,10,127,6,3,2,1 -3,11,118,6,3,0,1 -3,12,118,6,3,2,1 -3,13,118,6,3,2,1 -3,14,118,6,3,2,1 -3,15,118,6,3,6,1 -3,16,109,6,3,8,1 -3,17,109,6,3,0,1 -3,18,109,6,3,0,1 -3,19,127,6,3,0,0 -3,20,109,6,3,0,1 -3,21,127,6,3,0,1 -3,22,118,6,3,0,1 -3,23,118,4,5,2,1 -3,24,118,6,5,2,1 -3,25,118,6,3,2,1 -3,26,118,6,3,2,1 -3,27,118,6,3,2,1 -3,28,118,6,3,0,1 -3,29,104,6,3,0,1 -3,30,104,6,3,1,1 -3,31,104,6,3,5,1 -3,32,104,6,3,1,1 -3,33,104,6,3,8,0 -3,34,109,6,3,5,1 -3,35,127,6,3,5,0 -3,36,118,6,9,8,0 -3,37,118,6,9,5,1 -4,8,127,6,2,0,1 -4,9,127,6,3,0,1 -4,10,127,6,3,0,1 -4,11,127,6,3,0,1 -4,12,118,6,3,0,1 -4,13,118,6,7,2,1 -4,14,118,1,7,2,1 -4,15,118,1,7,2,1 -4,16,118,6,5,2,1 -4,17,124,6,3,2,1 -4,18,124,6,3,2,1 -4,19,124,6,3,0,1 -4,20,109,6,3,0,1 -4,21,109,6,3,0,1 -4,22,109,6,3,0,1 -4,23,109,6,3,0,1 -4,24,109,6,3,8,1 -4,25,unknown,3,3,0,1 -4,26,124,3,5,8,1 -4,27,124,4,5,2,0 -4,28,124,6,7,2,1 -4,29,unknown,6,5,2,1 -4,30,124,6,3,2,1 -4,31,unknown,6,3,8,1 -4,32,unknown,6,3,8,1 -4,33,unknown,6,3,8,1 -4,34,104,6,3,8,1 -4,35,104,6,3,8,1 -4,36,104,6,3,8,1 -4,37,104,6,3,8,0 +3,8,121,6,3,8,1 +3,9,104,4,3,8,0 +3,10,121,3,3,8,0 +3,11,104,3,3,8,0 +3,12,121,3,3,8,0 +3,13,121,3,3,8,0 +3,14,104,3,3,8,0 +3,15,104,3,3,0,0 +3,16,104,3,3,0,0 +3,17,104,3,3,0,0 +3,18,104,3,3,0,0 +3,19,104,3,3,0,0 +3,20,104,3,3,0,0 +3,21,104,3,3,0,0 +3,22,121,6,3,0,1 +3,23,113,6,3,8,1 +3,24,121,6,3,8,1 +3,25,104,6,3,8,1 +3,26,104,6,3,8,0 +3,27,104,6,3,0,0 +3,28,104,9,3,0,1 +3,29,104,3,3,0,1 +3,30,104,9,3,0,1 +3,31,104,3,3,0,1 +3,32,104,3,3,0,1 +3,33,103,6,3,8,1 +3,34,113,6,3,8,1 +3,35,121,6,3,8,1 +3,36,121,6,3,8,1 +3,37,104,6,3,8,1 +4,8,102,6,9,8,1 +4,9,121,6,3,8,1 +4,10,121,6,3,8,1 +4,11,121,6,3,8,0 +4,12,121,6,3,8,0 +4,13,121,6,3,8,0 +4,14,104,3,3,8,0 +4,15,104,3,3,0,0 +4,16,104,3,3,0,0 +4,17,104,3,3,0,0 +4,18,104,3,3,0,0 +4,19,104,3,3,0,0 +4,20,104,3,3,0,0 +4,21,104,3,3,0,0 +4,22,121,6,3,0,1 +4,23,113,6,3,8,1 +4,24,121,6,3,8,1 +4,25,104,6,3,8,1 +4,26,104,6,3,8,0 +4,27,104,6,3,0,0 +4,28,104,9,3,0,1 +4,29,104,3,3,0,1 +4,30,104,9,3,0,1 +4,31,104,3,3,0,1 +4,32,104,3,3,0,1 +4,33,103,6,3,8,1 +4,34,113,6,3,8,1 +4,35,121,6,3,8,1 +4,36,121,6,3,8,1 +4,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index 16a159f1..549102b2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,127,6,2,2,0 -5,9,118,6,2,0,1 -5,10,127,6,2,0,1 -5,11,127,6,3,0,1 -5,12,118,6,3,0,1 -5,13,118,6,5,2,1 -5,14,118,6,3,2,1 -5,15,124,6,3,8,1 -5,16,118,6,3,2,1 -5,17,127,6,3,8,other -5,18,109,6,3,0,1 -5,19,109,6,3,0,other -5,20,109,6,3,0,1 -5,21,112,6,3,0,1 -5,22,118,6,3,8,1 -5,23,124,6,3,8,1 -5,24,124,4,3,2,1 -5,25,124,6,5,2,1 -5,26,124,6,3,2,1 -5,27,unknown,6,3,2,1 -5,28,104,6,3,8,1 -5,29,104,6,3,8,1 -5,30,104,6,3,8,1 -5,31,104,6,3,8,1 -5,32,104,6,3,5,1 -5,33,104,6,3,8,1 -5,34,127,6,3,5,0 -5,35,109,1,9,8,0 -5,36,127,1,9,5,2 -5,37,127,9,9,5,1 +5,8,113,4,9,8,1 +5,9,113,6,3,8,0 +5,10,104,6,3,8,0 +5,11,104,6,3,0,0 +5,12,104,9,3,0,0 +5,13,121,3,3,8,1 +5,14,121,6,3,8,0 +5,15,104,3,3,8,0 +5,16,104,3,3,0,0 +5,17,104,3,3,0,0 +5,18,104,3,3,0,0 +5,19,121,3,3,0,0 +5,20,104,3,3,0,0 +5,21,104,3,3,0,0 +5,22,104,3,3,0,0 +5,23,121,4,3,0,1 +5,24,121,6,3,8,1 +5,25,104,6,3,8,1 +5,26,104,6,3,8,0 +5,27,104,3,3,0,0 +5,28,104,3,3,0,1 +5,29,104,4,3,0,1 +5,30,104,9,3,0,1 +5,31,104,3,3,0,1 +5,32,104,3,3,0,1 +5,33,104,6,3,0,1 +5,34,113,6,3,8,1 +5,35,113,6,3,8,1 +5,36,113,6,3,8,1 +5,37,113,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index 07028e2d..68e5ec32 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,127,6,2,0,1 -6,9,127,6,3,0,1 -6,10,127,6,3,0,1 -6,11,127,4,3,0,1 -6,12,127,4,5,0,0 -6,13,112,1,7,2,1 -6,14,118,1,5,2,1 -6,15,118,1,7,2,1 -6,16,118,1,5,2,1 -6,17,118,6,3,2,1 -6,18,118,6,3,2,1 -6,19,118,6,3,2,1 -6,20,118,6,3,2,1 -6,21,109,6,3,0,1 -6,22,109,6,3,0,1 -6,23,109,6,3,0,1 -6,24,109,6,3,0,1 -6,25,109,6,3,0,1 -6,26,127,6,3,0,1 -6,27,118,6,3,0,1 -6,28,118,6,5,0,1 -6,29,118,4,5,other,0 -6,30,118,6,7,0,1 -6,31,118,4,5,2,0 -6,32,118,6,7,2,1 -6,33,118,6,3,2,1 -6,34,118,6,3,0,1 -6,35,127,6,3,0,1 -6,36,127,6,3,0,1 -6,37,127,6,3,2,1 -7,8,127,6,2,2,1 -7,9,127,6,3,0,1 -7,10,127,6,3,0,1 -7,11,118,6,3,0,1 -7,12,118,6,3,2,1 -7,13,118,6,3,2,1 -7,14,118,6,3,2,1 -7,15,118,6,3,2,1 -7,16,118,6,3,0,1 -7,17,124,6,3,8,1 -7,18,unknown,6,3,0,1 -7,19,109,6,3,1,1 -7,20,109,6,3,1,0 -7,21,109,6,3,0,1 -7,22,109,6,3,0,0 -7,23,109,6,5,0,1 -7,24,118,6,5,0,0 -7,25,118,3,7,2,1 -7,26,118,1,5,2,0 -7,27,118,6,7,2,1 -7,28,118,6,5,2,1 -7,29,118,6,3,2,1 -7,30,112,6,3,2,1 -7,31,112,6,3,0,1 -7,32,112,6,3,8,1 -7,33,109,6,3,8,1 -7,34,109,6,3,5,1 -7,35,109,6,3,1,1 -7,36,109,6,3,8,0 -7,37,109,6,3,0,1 +6,8,102,6,2,8,1 +6,9,113,6,3,8,1 +6,10,121,6,3,8,1 +6,11,121,6,3,8,1 +6,12,121,6,3,8,1 +6,13,121,6,3,8,0 +6,14,121,6,3,8,0 +6,15,104,3,3,8,0 +6,16,104,3,3,0,0 +6,17,104,3,3,0,0 +6,18,104,3,3,0,0 +6,19,104,3,3,0,0 +6,20,104,3,3,0,0 +6,21,104,3,3,0,0 +6,22,104,3,3,0,0 +6,23,121,6,3,0,1 +6,24,113,6,3,8,1 +6,25,121,6,3,8,1 +6,26,104,6,3,8,1 +6,27,104,6,3,8,0 +6,28,104,6,3,0,0 +6,29,104,9,3,0,1 +6,30,104,3,3,0,1 +6,31,104,9,3,0,1 +6,32,104,3,3,0,1 +6,33,104,3,3,0,1 +6,34,103,6,3,8,1 +6,35,113,6,3,8,1 +6,36,121,6,3,8,1 +6,37,121,6,3,8,1 +7,8,121,6,9,8,1 +7,9,104,6,3,8,1 +7,10,104,6,3,8,0 +7,11,104,6,3,0,0 +7,12,104,6,3,0,1 +7,13,121,6,3,8,1 +7,14,104,6,3,8,0 +7,15,104,3,3,0,0 +7,16,104,3,3,0,0 +7,17,104,3,3,0,1 +7,18,104,4,3,0,1 +7,19,103,6,3,8,1 +7,20,104,6,3,8,1 +7,21,104,9,3,0,0 +7,22,121,6,3,8,1 +7,23,104,6,3,8,1 +7,24,104,6,3,8,1 +7,25,104,6,3,8,1 +7,26,104,6,3,8,0 +7,27,104,3,3,0,0 +7,28,104,3,3,0,0 +7,29,104,3,3,0,0 +7,30,104,3,3,0,0 +7,31,104,3,3,0,1 +7,32,104,3,3,0,1 +7,33,103,4,3,0,1 +7,34,113,6,3,8,1 +7,35,113,6,3,8,1 +7,36,113,6,3,8,1 +7,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index bc2b4d05..84a9c524 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,127,6,2,0,1 -8,9,127,6,3,0,1 -8,10,127,6,3,0,1 -8,11,118,6,9,2,1 -8,12,118,6,7,2,1 -8,13,118,6,9,6,1 -8,14,127,6,3,8,1 -8,15,127,6,3,5,1 -8,16,118,6,3,0,1 -8,17,124,6,3,0,1 -8,18,124,6,3,2,1 -8,19,126,6,3,5,1 -8,20,127,6,3,5,1 -8,21,118,6,3,0,1 -8,22,118,6,3,8,1 -8,23,118,6,3,0,1 -8,24,118,6,3,8,1 -8,25,118,6,3,0,1 -8,26,104,6,3,0,1 -8,27,126,6,3,5,0 -8,28,109,6,3,0,1 -8,29,127,6,3,0,0 -8,30,109,6,3,0,1 -8,31,127,6,3,0,0 -8,32,118,3,5,0,1 -8,33,118,6,5,2,0 -8,34,118,6,7,2,1 -8,35,118,6,5,2,1 -8,36,118,6,3,2,1 -8,37,112,6,3,2,1 +8,8,113,6,3,8,1 +8,9,121,6,3,8,1 +8,10,104,6,3,8,1 +8,11,104,6,3,8,1 +8,12,121,6,3,8,1 +8,13,121,6,3,8,1 +8,14,104,6,3,8,0 +8,15,104,9,3,0,0 +8,16,104,3,3,0,0 +8,17,104,3,3,0,0 +8,18,104,3,3,0,0 +8,19,104,3,3,0,0 +8,20,104,3,3,0,0 +8,21,104,3,3,0,1 +8,22,103,6,3,8,1 +8,23,121,6,3,8,1 +8,24,104,6,3,8,1 +8,25,104,6,3,8,1 +8,26,104,6,3,8,0 +8,27,104,6,3,0,0 +8,28,104,9,3,0,1 +8,29,104,9,3,0,1 +8,30,104,3,3,0,1 +8,31,104,3,3,0,1 +8,32,104,6,3,0,1 +8,33,113,6,3,8,1 +8,34,121,6,3,8,1 +8,35,121,6,3,8,1 +8,36,121,6,3,8,1 +8,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index 940e8923..ad971442 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,127,6,2,other,1 -9,9,127,6,3,0,1 -9,10,127,6,3,0,1 -9,11,118,6,3,0,1 -9,12,118,6,3,other,1 -9,13,126,6,3,8,1 -9,14,113,6,3,8,0 -9,15,113,4,3,0,1 -9,16,118,6,3,0,1 -9,17,118,6,3,8,1 -9,18,118,6,3,0,1 -9,19,118,6,3,0,0 -9,20,118,6,3,0,1 -9,21,127,6,3,8,0 -9,22,118,6,3,0,1 -9,23,118,6,3,8,0 -9,24,109,6,3,0,1 -9,25,127,6,3,0,0 -9,26,112,6,5,0,1 -9,27,112,6,3,2,1 -9,28,118,6,3,8,1 -9,29,118,4,3,6,1 -9,30,124,6,3,8,1 -9,31,124,4,3,2,1 -9,32,124,6,3,2,1 -9,33,124,6,3,2,1 -9,34,104,6,3,1,1 -9,35,104,6,3,1,1 +9,8,113,6,3,0,0 +9,9,121,6,3,8,1 +9,10,104,6,3,8,1 +9,11,104,6,3,8,1 +9,12,104,6,3,8,1 +9,13,104,6,3,8,1 +9,14,104,6,3,8,0 +9,15,104,6,3,0,0 +9,16,104,9,3,0,2 +9,17,104,3,3,0,0 +9,18,104,3,3,0,1 +9,19,104,9,3,0,1 +9,20,103,6,3,8,1 +9,21,121,6,3,8,1 +9,22,104,6,3,8,1 +9,23,121,6,3,8,1 +9,24,121,6,3,8,1 +9,25,104,6,3,8,0 +9,26,104,9,3,0,0 +9,27,104,3,3,0,0 +9,28,104,3,3,0,0 +9,29,104,3,3,0,0 +9,30,104,3,3,0,0 +9,31,104,3,3,0,0 +9,32,104,3,3,0,1 +9,33,103,6,3,8,1 +9,34,121,6,3,8,1 +9,35,104,6,3,8,1 9,36,104,6,3,8,1 -9,37,104,6,3,5,1 +9,37,104,6,3,8,0 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv index cd526dfe..498e4491 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0063816966,0.006468037,0.024559338,0.0068818387,0.03805276,0.034742553,0.018915702,0.036322363,0.0075609423,0.0050840396,0.031691603,0.021121172,0.022060119,0.035620775,0.009137776,0.27302954,0.0035919647,0.005177132,0.012216523,0.008537154,0.039849125,0.022662228,0.0051864795,0.06108719,0.03615953,0.0095728375,0.13449506,0.005642359,0.020200068,0.019690767,0.010418236,0.027883159 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0091290055,0.0077892784,0.007239608,0.020136122,0.006804843,0.065107465,0.09113526,0.03846739,0.046789855,0.011856737,0.010647341,0.0430088,0.01229634,0.024512613,0.043958448,0.015431894,0.10510967,0.008920799,0.012439459,0.013178185,0.0115483245,0.042840227,0.020539861,0.013582593,0.07060103,0.024588121,0.021217003,0.10432629,0.008402498,0.025339192,0.025642872,0.0106556,0.026757332 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv index fde48406..2a1876ce 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0049449983,0.0042691776,0.021052632,0.0058146087,0.030396372,0.032892935,0.013441515,0.028407525,0.0050566397,0.0035540466,0.026184268,0.023003984,0.023714056,0.02700193,0.010255454,0.193688,0.003523743,0.0065743346,0.0075657065,0.0084641315,0.036537226,0.017473338,0.0043345136,0.08128023,0.0313194,0.007980294,0.2656846,0.0042771567,0.018264784,0.017538315,0.00946817,0.0260359 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.008205366,0.008331864,0.0074459263,0.021188624,0.0073211472,0.061644685,0.07545811,0.034722853,0.043902382,0.010114443,0.010213885,0.042470828,0.012390661,0.022267908,0.032764185,0.01806368,0.12040593,0.009458063,0.014117386,0.011872736,0.013330289,0.041174386,0.020099496,0.013925595,0.072014526,0.024408026,0.018947104,0.13367255,0.00828295,0.024368336,0.02391859,0.011060069,0.022437433 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv index 9d1b4695..dd67b48c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0070600286,0.005355665,0.024419116,0.006750209,0.03974409,0.060156815,0.021477934,0.029202912,0.006069319,0.0048991265,0.030470513,0.029163782,0.02428838,0.040785775,0.008904983,0.2596093,0.0037373006,0.006169808,0.0080467705,0.010179635,0.037312083,0.021897098,0.005871768,0.067005344,0.024129355,0.008555806,0.117676124,0.00547475,0.022196412,0.01896278,0.011333607,0.033093367 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.012586267,0.009460248,0.01056256,0.024452873,0.0086881975,0.052435704,0.10992195,0.0706047,0.03934652,0.017093472,0.012070613,0.038141258,0.016003482,0.024356524,0.05110281,0.022539876,0.057360444,0.0130562065,0.014306477,0.011672565,0.013660459,0.019611526,0.033125043,0.01840493,0.062889695,0.025482355,0.023796566,0.06978374,0.011446344,0.029403456,0.027195802,0.014777219,0.034660116 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv index 1502f2fd..426a7d74 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0073428494,0.0054249666,0.023946963,0.0076724873,0.05550431,0.041024055,0.02343562,0.020106466,0.0058254926,0.005979295,0.028401894,0.027254183,0.03406939,0.03580471,0.0151072955,0.1438499,0.0050315387,0.008578817,0.010699981,0.009593445,0.039330103,0.022077711,0.0072748065,0.116141096,0.03376495,0.009846874,0.17126702,0.0052832607,0.029783443,0.016034205,0.010827838,0.023715047 -0.0064484207,0.0047859964,0.030502057,0.006627743,0.040947184,0.053503774,0.015772693,0.036306743,0.0063552163,0.0056825983,0.029170575,0.01872254,0.034786753,0.037946172,0.016469195,0.19048862,0.004163757,0.0076852962,0.012417914,0.010849618,0.02091185,0.017051233,0.0060045645,0.041049585,0.118274905,0.009881875,0.1420341,0.0046904692,0.015074657,0.022749325,0.013102149,0.019542495 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.008913519,0.007365497,0.007884704,0.019221375,0.008245324,0.061635274,0.10626261,0.04613362,0.039076947,0.013314558,0.01237192,0.04430893,0.014824947,0.02413848,0.04149791,0.018489841,0.07907649,0.010472187,0.011848482,0.012690502,0.011933226,0.034617245,0.024047974,0.015420446,0.064966045,0.021884238,0.020587962,0.12284686,0.008948034,0.029838102,0.020556517,0.010585136,0.025995124 +0.0094871465,0.011149254,0.009741706,0.023295518,0.012869805,0.05367749,0.048896357,0.031161776,0.05537468,0.012018335,0.013214679,0.028068008,0.016052,0.03157924,0.03311481,0.021816775,0.052957285,0.012617017,0.022129932,0.015422226,0.02169244,0.031480502,0.015010904,0.02252592,0.07512524,0.07089812,0.022424813,0.11010506,0.011601552,0.021417523,0.044051338,0.016005058,0.02301758 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv index 0842a970..10cd194d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0070105107,0.005817882,0.02375718,0.0067135287,0.030807294,0.05775498,0.019987397,0.0336207,0.007363106,0.005212145,0.029612567,0.028933655,0.021020675,0.036609236,0.009110481,0.2528482,0.003447206,0.0057708235,0.008732559,0.009616723,0.03541558,0.02171815,0.0055170287,0.059915405,0.022731164,0.009284548,0.14595954,0.006151366,0.020992719,0.020696605,0.011107996,0.036763098 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.00905651,0.008449699,0.007513583,0.01789081,0.009958172,0.059586458,0.09060577,0.05163472,0.05080496,0.015027517,0.0131017715,0.046035837,0.0129659865,0.021924116,0.043815948,0.022697417,0.07993372,0.0115594845,0.015695909,0.011922975,0.012971503,0.034338184,0.025293143,0.016621767,0.06711588,0.022368787,0.02659395,0.0939604,0.010572614,0.026793035,0.024672363,0.012390149,0.026126813 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv index b1ea5679..e7d6329d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0061376016,0.0055368184,0.02686486,0.006603274,0.05257738,0.04243002,0.019543372,0.03439729,0.0066835904,0.0054204813,0.027758658,0.018920917,0.026187373,0.03562787,0.0103454115,0.21988945,0.0038413862,0.0058459127,0.011070427,0.008652827,0.04451155,0.019691685,0.0054005976,0.073532715,0.056998175,0.008044991,0.14140613,0.00463186,0.019962309,0.017421842,0.010648626,0.023414658 -0.006748481,0.0056581046,0.025895737,0.0065028435,0.036626477,0.04927831,0.01836768,0.033150148,0.006620763,0.0048519536,0.030104272,0.023016918,0.02434799,0.040022057,0.008816339,0.259297,0.0034051202,0.005711451,0.00943816,0.009649961,0.0344164,0.01987012,0.0051980447,0.06372621,0.030300407,0.008548483,0.14363155,0.005186423,0.022001177,0.019676577,0.010164736,0.029770095 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.008020919,0.0066487696,0.0072186273,0.023239477,0.009595765,0.059273914,0.062329326,0.027587652,0.0486198,0.008902664,0.009877493,0.03435876,0.017895322,0.022803104,0.0360042,0.016689297,0.112537004,0.008584821,0.014853362,0.013560702,0.015122532,0.043928403,0.0197575,0.01412689,0.07697556,0.037536968,0.014428177,0.14790235,0.008241942,0.016693683,0.024688615,0.013138984,0.018857364 +0.0086295465,0.007917115,0.007522475,0.023743981,0.0073922593,0.06037666,0.08741754,0.043700412,0.04167852,0.012650199,0.01019312,0.043437473,0.013766954,0.021962289,0.04165744,0.018287549,0.10325626,0.009215165,0.01214539,0.011779306,0.012235232,0.045917273,0.018463248,0.014126799,0.068317495,0.021482795,0.016241094,0.12552734,0.008585244,0.025119003,0.02262137,0.01049176,0.02414174 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv index 179c80ec..0efa80de 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.006577232,0.005941025,0.025182042,0.0067693973,0.04229883,0.07847597,0.0240807,0.0301303,0.0069031618,0.0057024322,0.03144487,0.028760783,0.024837973,0.04591679,0.012943257,0.22671296,0.0036830874,0.005482532,0.009327667,0.0106034735,0.033890318,0.023517158,0.005874784,0.059042808,0.030655574,0.009653993,0.10965886,0.005722431,0.023167748,0.021588275,0.0129337795,0.032519735 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.00940564,0.0063802544,0.0065206103,0.027256832,0.0066316505,0.05138203,0.10203898,0.048445128,0.049608555,0.00873864,0.010182529,0.026134778,0.014573924,0.02411956,0.038605724,0.036600724,0.07013269,0.011340922,0.020680869,0.011217838,0.01796068,0.016984288,0.026266541,0.013434889,0.07714,0.08002693,0.012619701,0.06227914,0.007597093,0.02409692,0.043419037,0.014213739,0.0239632 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv index 462d3218..30a706e1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0062551964,0.005907708,0.02252796,0.006632302,0.0375025,0.042552833,0.01901747,0.029515766,0.0066615692,0.0049623456,0.028662894,0.025402665,0.024885334,0.03338471,0.00894907,0.23237301,0.0036392827,0.0054352307,0.00970244,0.008878192,0.044655215,0.022057772,0.004962897,0.08231816,0.02434962,0.008952783,0.16011275,0.0052076653,0.023783736,0.018114585,0.01071558,0.03192075 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.009661113,0.007831191,0.009208629,0.018906532,0.008831174,0.065691166,0.10545667,0.038684368,0.039912082,0.01415859,0.013239993,0.03936315,0.0131430235,0.025695173,0.04284285,0.015051846,0.08823259,0.009918131,0.012693808,0.015639171,0.01375921,0.053180333,0.021613518,0.016188124,0.064060025,0.024109922,0.022105852,0.08915296,0.01004957,0.026042204,0.028148724,0.010506249,0.026922056 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv index 030ea209..93284692 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0056786733,0.0056396397,0.019625373,0.00989916,0.028172797,0.06280763,0.018479379,0.03159086,0.00802512,0.004560256,0.02441183,0.030483417,0.024728071,0.034464385,0.02173319,0.23811956,0.009270334,0.010733643,0.013194141,0.012353504,0.027120981,0.01968651,0.007962703,0.08780438,0.07940018,0.006885157,0.066043444,0.0059645167,0.032393124,0.024882888,0.012979289,0.014905925 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0042463774,0.005140092,0.0060796365,0.016366256,0.0067424467,0.03495936,0.06623093,0.020122634,0.050006244,0.00649412,0.0041204235,0.02871717,0.018642396,0.028757636,0.033106435,0.01599839,0.23275402,0.007276528,0.008622721,0.017800169,0.010982657,0.028370103,0.02974473,0.0034585185,0.06776658,0.046286162,0.0064784237,0.120085396,0.0039499593,0.021950865,0.015566807,0.018041762,0.015134025 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv index 14379442..d5bd2f61 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.007233303,0.006430847,0.02017487,0.009407937,0.03021497,0.063631795,0.015276678,0.030304415,0.009666988,0.0051930123,0.022986863,0.028146453,0.02071075,0.03240998,0.026094265,0.2046195,0.012769067,0.010396391,0.013358195,0.012718733,0.019840602,0.020281564,0.011074808,0.09205814,0.100550726,0.008028014,0.06728822,0.0068513094,0.025007999,0.030172698,0.01773199,0.019368906 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0041903867,0.0054771546,0.0058246264,0.015669782,0.0071306545,0.030696195,0.06473787,0.018447235,0.05242684,0.0068101883,0.004801957,0.029178623,0.022633398,0.02907579,0.033386257,0.018674878,0.19909294,0.006572294,0.009357265,0.01596702,0.013374633,0.026702495,0.032056045,0.003591021,0.07047866,0.053875104,0.0050279247,0.13526632,0.0042218207,0.021093741,0.021248914,0.019235754,0.013676274 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv index f54d9b81..ae9e3e1a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.007526629,0.0073912153,0.014185694,0.012860334,0.025072798,0.06497633,0.019334141,0.030267734,0.010712494,0.005902856,0.025737327,0.036715742,0.025636889,0.027740806,0.023948258,0.27562156,0.012211119,0.012502682,0.012710197,0.011621473,0.015836276,0.020809514,0.009763865,0.0765267,0.053563163,0.007314694,0.053682905,0.008438264,0.03344781,0.028250687,0.015079057,0.014610726 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0054918397,0.0063162544,0.0061463765,0.016365495,0.0076878374,0.034990918,0.0610308,0.020188866,0.0626216,0.008143705,0.0056989286,0.028557653,0.01842186,0.026081735,0.02933535,0.018272739,0.24774212,0.008434298,0.009743969,0.017181823,0.013515602,0.028113525,0.035016388,0.004349286,0.05375894,0.048733603,0.0074889436,0.08502142,0.0040941467,0.018917236,0.024357485,0.024139129,0.014040137 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv index b5ae3c31..71f47b47 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.007322969,0.005654382,0.019285746,0.01174128,0.028390037,0.051265758,0.017005999,0.023170853,0.00963273,0.0050818776,0.019823872,0.027385317,0.024844429,0.025241857,0.024961751,0.27105013,0.010011087,0.008763377,0.012323763,0.010727558,0.01852274,0.019683188,0.010597888,0.06964346,0.08186063,0.0069930656,0.08686133,0.0072649037,0.02479653,0.024108676,0.017185295,0.018797552 -0.0073998687,0.0062193214,0.028439596,0.010987616,0.04028016,0.06468185,0.016779186,0.03044594,0.008741515,0.0064253476,0.019445894,0.021537095,0.028751887,0.024736227,0.023209155,0.2096015,0.013735791,0.012793584,0.016223645,0.0155749805,0.02702452,0.021603411,0.012366309,0.06640046,0.08558532,0.0070591993,0.07619427,0.007099011,0.026309213,0.02994487,0.015465732,0.018937428 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.004381987,0.006287049,0.006620055,0.019419348,0.006867307,0.03929928,0.07064888,0.017149057,0.060524255,0.006789356,0.0050974856,0.027337514,0.024331838,0.03136498,0.029390393,0.020899236,0.15376608,0.0074551413,0.009935729,0.015628591,0.013709809,0.03817771,0.03494091,0.0051154993,0.06018743,0.075591475,0.0067811315,0.11117232,0.0047863433,0.015857743,0.028808644,0.024059782,0.017617658 +0.004469706,0.006364652,0.0068032146,0.020612448,0.007166283,0.039386127,0.08379896,0.017597469,0.06735702,0.007070649,0.005259082,0.027966166,0.024157904,0.03855127,0.026747128,0.019213978,0.11608029,0.0063566845,0.010583058,0.01697354,0.012141066,0.043337125,0.031579476,0.004105956,0.061916213,0.07502441,0.0060634622,0.11869589,0.005418634,0.019128878,0.027781855,0.025369624,0.01692181 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv index 0c5b5d15..0e9d5181 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008149271,0.0075202077,0.018574426,0.013677846,0.027515505,0.07347045,0.022090634,0.027623143,0.009446033,0.004922327,0.02111737,0.029754518,0.027266419,0.030263303,0.022770183,0.26600966,0.013034052,0.0148931295,0.014900886,0.014568352,0.01946197,0.021304643,0.010476352,0.08244683,0.05353372,0.00757325,0.033484895,0.008503189,0.039844204,0.028181866,0.012981479,0.014639842 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.005170072,0.0052365907,0.00694314,0.017285356,0.008234528,0.037991844,0.07294639,0.022531565,0.05857518,0.0065963003,0.005045354,0.026125679,0.020520791,0.035622887,0.0324971,0.01749203,0.16650967,0.007892656,0.009556492,0.017534178,0.011642951,0.03663207,0.033574145,0.0035568238,0.07068761,0.048016,0.0072974605,0.12339532,0.0045464407,0.022555495,0.018934185,0.020668464,0.01818533 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv index 0759929f..87181f3b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0058703404,0.005491598,0.018997362,0.009865255,0.027035879,0.053124264,0.01636745,0.030759059,0.009746491,0.005269951,0.030089295,0.031095663,0.022614336,0.024479996,0.023500303,0.25250036,0.010035898,0.009619795,0.013611923,0.01075333,0.020063184,0.019546557,0.009071543,0.081420965,0.08086878,0.0082148705,0.07848736,0.0068253702,0.028736375,0.02457363,0.015248171,0.016114665 -0.008826475,0.00650084,0.03350764,0.011784676,0.035665788,0.057461075,0.017939368,0.026917169,0.009738677,0.006538719,0.024049368,0.028872915,0.029989129,0.031923886,0.02343755,0.1983992,0.013674415,0.0132244,0.015470912,0.01583799,0.026933711,0.020640487,0.011796321,0.09157396,0.064802006,0.007862755,0.07190949,0.0074055316,0.029487757,0.027891217,0.013090327,0.016846225 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0050350777,0.005766118,0.006457709,0.019448206,0.007035608,0.036554355,0.06908976,0.016720336,0.073623985,0.007380201,0.0050186585,0.027139133,0.019853646,0.03107149,0.027048368,0.018990275,0.18321688,0.0086597875,0.00932425,0.017520232,0.013038053,0.03883165,0.028723942,0.0043549896,0.060425516,0.060644113,0.0076746633,0.10625886,0.0049037784,0.016128076,0.024719888,0.024399208,0.014943133 +0.0042376784,0.005924756,0.0069834692,0.018832779,0.0078081987,0.04281036,0.07998875,0.020728823,0.057859186,0.006507186,0.005319783,0.035538692,0.020944735,0.03357084,0.033523228,0.017411817,0.14398022,0.0064492146,0.010395881,0.018382689,0.010860411,0.03802423,0.034201827,0.003840388,0.06658509,0.059049625,0.0067133494,0.10930205,0.00455577,0.024278667,0.023504738,0.026207874,0.015677737 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv index cecbf4eb..5f3dd3e1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0066114813,0.0059746164,0.015643341,0.009955672,0.025352968,0.06201794,0.017243594,0.029164374,0.009917572,0.0053090053,0.026186187,0.028928613,0.02072396,0.0292177,0.023453875,0.29139313,0.011147256,0.010212424,0.012978361,0.010813403,0.0158392,0.019197216,0.008891929,0.07571251,0.06993627,0.0069566243,0.05914112,0.0064757746,0.029883983,0.025710123,0.015420712,0.01458909 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.005213573,0.005612019,0.005980635,0.014423169,0.008148407,0.035215456,0.08324456,0.021167181,0.05202259,0.006690955,0.0051461984,0.03389285,0.022059022,0.028906152,0.04061394,0.018913923,0.16657288,0.005920637,0.008955144,0.018136969,0.010939499,0.027240243,0.03896024,0.0037672839,0.06677831,0.05034332,0.006739948,0.11629482,0.004037235,0.02923933,0.021340776,0.020757355,0.016725339 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv index 917cbb24..57dae23d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.006754691,0.006674459,0.016557487,0.0103658335,0.02666079,0.058823474,0.017140431,0.028328251,0.010410326,0.0055948445,0.026582949,0.03277368,0.021883957,0.027258111,0.022582687,0.2764412,0.0118644545,0.01098305,0.013153517,0.010666833,0.01935101,0.021501819,0.009382378,0.08465579,0.058386862,0.007471711,0.063156575,0.007812191,0.031189099,0.025576143,0.01507718,0.0149383 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.004618134,0.006132982,0.006672614,0.015618401,0.0074373814,0.03397381,0.07677221,0.019593101,0.05670967,0.0069386126,0.0054081944,0.030513486,0.021875117,0.02945475,0.029283365,0.017094098,0.20585725,0.007897137,0.009288681,0.016525654,0.011750388,0.03215573,0.031738274,0.0035157073,0.06421899,0.043070234,0.00695176,0.11497121,0.004500923,0.020835267,0.023099473,0.021389142,0.014138295 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index c39d520b..67d3a1aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.017302375,0.01482844,0.014713044,0.015540072,0.033318657,0.022022286,0.029224692,0.023904966,0.012149988,0.009064443,0.015359024,0.049968407,0.0245197,0.020110352,0.019914918,0.056400876,0.0115936,0.012584733,0.04621322,0.035850577,0.08206279,0.09154765,0.017336203,0.032738093,0.013035035,0.021850908,0.124157034,0.013448811,0.060038418,0.022390943,0.013344151,0.023465507 -0.009482484,0.0060274336,0.046130657,0.009335471,0.06764614,0.08857251,0.05499592,0.017070245,0.009937557,0.0076791495,0.04376102,0.053096063,0.028434156,0.034147743,0.05993116,0.033161834,0.009860223,0.01984055,0.01256225,0.02168444,0.098040834,0.050862912,0.01778495,0.040789753,0.016320387,0.015451832,0.026600784,0.010373869,0.010914272,0.027834028,0.028337134,0.023332264 -0.010967831,0.011053853,0.02335534,0.016658744,0.05860075,0.048015736,0.028505739,0.027371904,0.016789401,0.013281509,0.045727536,0.03805783,0.022198936,0.065886594,0.057020094,0.06262433,0.016529106,0.017458213,0.021432064,0.024096718,0.019590493,0.026042046,0.012923263,0.09111785,0.032283496,0.028794264,0.050714724,0.009529016,0.025877263,0.026908096,0.021348508,0.029238785 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.016444147,0.017504703,0.010868917,0.024397992,0.02378631,0.05476737,0.018488651,0.01870659,0.03153483,0.01417574,0.018273251,0.04281981,0.028775947,0.030504966,0.017300766,0.020425139,0.019642664,0.01798995,0.01798995,0.06529241,0.026927112,0.06377991,0.09389312,0.034339547,0.03991245,0.021912975,0.010130945,0.04549251,0.012461275,0.0647843,0.021114701,0.01657312,0.03898788 +0.018649058,0.011534323,0.009525009,0.04894217,0.016076498,0.027988719,0.09323943,0.032794107,0.024086585,0.014523906,0.023028513,0.028638465,0.056332096,0.02776413,0.029872134,0.031101944,0.02357462,0.010298991,0.0192035,0.01811063,0.018979773,0.07148915,0.060672056,0.015280495,0.074919984,0.019054057,0.016522154,0.039403025,0.012767332,0.009750889,0.041294016,0.035528205,0.019054057 +0.009243722,0.015240321,0.012585413,0.012245942,0.011020156,0.044706393,0.04126598,0.022088086,0.022789238,0.016350478,0.017748276,0.052165084,0.025299398,0.037463184,0.07560385,0.03431107,0.060041644,0.014372992,0.013344871,0.014485721,0.019722441,0.03816479,0.025200764,0.012536347,0.06316938,0.05865078,0.021873433,0.038314164,0.036381554,0.024521017,0.025949989,0.020953465,0.062190026 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index c159c246..38cf6ada 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.017744087,0.006948684,0.00858048,0.016410597,0.055733632,0.034286235,0.036515333,0.028605288,0.013186285,0.011912816,0.023324167,0.059328143,0.045488466,0.033475645,0.042482805,0.052356903,0.014595887,0.031864792,0.020503258,0.021953864,0.05863695,0.04702418,0.0390225,0.034219332,0.057502806,0.014538983,0.023737786,0.014883765,0.034403622,0.0456665,0.022873037,0.032193214 -0.009073278,0.009965046,0.01715093,0.014555804,0.03801386,0.058020845,0.079927094,0.033448976,0.017974019,0.01410797,0.0699865,0.025571192,0.030388791,0.047355235,0.055798102,0.054081377,0.013673913,0.023626404,0.014785025,0.04074311,0.020208733,0.03655757,0.013098806,0.049145572,0.024543593,0.020248242,0.051604807,0.012114416,0.017285446,0.031925026,0.027879516,0.027140763 -0.014087621,0.012287442,0.03534718,0.01643796,0.031933516,0.06289021,0.026609892,0.083969444,0.02233677,0.018736115,0.04442197,0.026389923,0.010843629,0.01895697,0.027663156,0.03439375,0.017669836,0.021168692,0.018195163,0.06071764,0.021065582,0.020497372,0.022821855,0.041567888,0.020678319,0.021883357,0.15086576,0.016183114,0.022206273,0.032690797,0.008919726,0.015563149 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.018813502,0.0097793965,0.019639514,0.023574388,0.030255334,0.08317135,0.027166266,0.015935654,0.042812943,0.011081507,0.016963415,0.03456955,0.039287366,0.025708733,0.03456955,0.021297682,0.02741194,0.017777506,0.02591037,0.016123498,0.03373579,0.01538515,0.036263976,0.033180345,0.039828185,0.11821033,0.015935654,0.05716278,0.01116842,0.03830239,0.035701755,0.008766194,0.014509578 +0.013969102,0.009713985,0.01286894,0.013969102,0.015045315,0.06638303,0.04526929,0.020847589,0.039484575,0.014639493,0.013645508,0.046162147,0.04162265,0.021467391,0.05503346,0.02815642,0.026431143,0.014356339,0.012231754,0.020206176,0.039484575,0.038720876,0.0321792,0.0149866585,0.092163704,0.023808694,0.018834226,0.04049995,0.016524045,0.019508144,0.04734924,0.046797603,0.03763967 +0.017729616,0.014929833,0.020768544,0.022854377,0.015403757,0.04781904,0.025558222,0.03895261,0.058589116,0.019701704,0.013646972,0.08070991,0.04781904,0.021261055,0.05070465,0.018726205,0.047077674,0.024115471,0.022086421,0.015646331,0.028528795,0.032546125,0.01435788,0.021136845,0.0401891,0.06310296,0.017626034,0.050903104,0.02488098,0.021302622,0.018873077,0.016655432,0.025796438 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 37799880..ac0e5c1a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.018528365,0.011348305,0.026592543,0.016287476,0.10766971,0.032645565,0.019116517,0.02492655,0.019955833,0.011527015,0.02259085,0.027787218,0.03303038,0.031579427,0.01690325,0.07815983,0.013164263,0.017135935,0.020429073,0.034548,0.031517807,0.024956997,0.0139586525,0.11551274,0.068975806,0.023149172,0.035436425,0.009975799,0.044534132,0.014743276,0.015941283,0.017371824 -0.011191083,0.005224706,0.020623794,0.012053271,0.12365075,0.039831124,0.028327364,0.024147004,0.008681646,0.007843214,0.024527263,0.03959842,0.034102652,0.030959982,0.070454076,0.05114417,0.009098287,0.013604898,0.020304052,0.028584411,0.07921365,0.023622217,0.0178833,0.04620491,0.05705545,0.011323,0.041417815,0.0121953515,0.02816187,0.03845514,0.009098287,0.031416837 -0.009739021,0.0067989323,0.029710405,0.013416068,0.049846753,0.05431991,0.024651846,0.03325377,0.013156578,0.0067989323,0.031200917,0.028736616,0.030504202,0.02744746,0.040842965,0.032546956,0.011078949,0.017293995,0.013896115,0.041975174,0.037369967,0.020577284,0.021480734,0.09096873,0.022776976,0.013363764,0.080279626,0.018699272,0.08748377,0.02619055,0.0155629115,0.048030872 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.014180237,0.016257722,0.02075337,0.015035935,0.023724249,0.09210627,0.033686046,0.016321354,0.029331319,0.01988051,0.02091614,0.022904685,0.020075608,0.043507922,0.036637343,0.019610556,0.02790456,0.0151538635,0.01619434,0.025217365,0.032018133,0.042417135,0.02589112,0.017960545,0.12688175,0.066083014,0.015881114,0.024741694,0.022048742,0.031521738,0.026837192,0.013960393,0.02435811 +0.010987974,0.009621391,0.008102024,0.010004664,0.01264708,0.09947699,0.039184675,0.038127735,0.026918061,0.008229612,0.013890101,0.029495217,0.02808619,0.054296385,0.039108217,0.046989605,0.02911958,0.009696852,0.010649909,0.018258192,0.032708064,0.031547327,0.04019234,0.021597609,0.04019234,0.045543887,0.023859728,0.069717936,0.013890101,0.030031558,0.07900077,0.007976414,0.02085151 +0.016185524,0.016569352,0.011432509,0.008799916,0.01716223,0.0705819,0.029802466,0.025813933,0.0328878,0.008075258,0.016122423,0.023230024,0.018376462,0.034974713,0.0608454,0.10472156,0.020986577,0.009367462,0.015996957,0.017637983,0.0325523,0.024179006,0.022515312,0.025738416,0.0861416,0.026348786,0.020620897,0.04803876,0.019523472,0.043314718,0.05390604,0.013629578,0.02392066 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 8b6aa288..58c7fbc8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.01669491,0.010389542,0.026836602,0.01910696,0.12638526,0.04060527,0.023563892,0.02014098,0.014828836,0.010469111,0.022223387,0.025744986,0.03159677,0.02423024,0.015737114,0.06580435,0.010926759,0.014931464,0.018498765,0.041775487,0.035436004,0.022769153,0.012573552,0.13099544,0.051511902,0.019180572,0.056185905,0.010143914,0.028734636,0.014651826,0.018792372,0.018534083 -0.016519701,0.007162946,0.045259815,0.022103863,0.038290083,0.053124834,0.06819331,0.036727816,0.018657679,0.011355199,0.043989643,0.13988414,0.022740448,0.019094305,0.023814064,0.021139339,0.018106835,0.014832587,0.014998272,0.04460881,0.027002994,0.03233611,0.028538257,0.04015461,0.018103521,0.01528009,0.052740376,0.013800199,0.026066186,0.028910367,0.012520822,0.023942681 -0.011194919,0.010561037,0.03043257,0.029184885,0.16755833,0.032587912,0.021776065,0.02243084,0.018040746,0.011284099,0.022678632,0.04638041,0.06720232,0.021271471,0.02572572,0.031782538,0.011916202,0.008333079,0.020233061,0.030141652,0.019565124,0.017642204,0.020604435,0.042393837,0.04602931,0.016611801,0.08245273,0.01454134,0.023293085,0.027460624,0.024097573,0.024591517 -0.01608547,0.010368459,0.031037511,0.011805071,0.03809329,0.04238475,0.043802626,0.035902377,0.012958213,0.009891841,0.02051157,0.070250556,0.014836899,0.022624696,0.038268067,0.056611795,0.014446229,0.016333792,0.02795824,0.023835989,0.049290363,0.06045451,0.016494084,0.02983232,0.015678363,0.023880403,0.1506435,0.015196918,0.023785125,0.031565513,0.008330273,0.016841229 -0.0137396315,0.010914814,0.02667995,0.0098691415,0.03460263,0.034310307,0.03730518,0.018527672,0.008636964,0.009481218,0.04571112,0.032784116,0.023355061,0.099395365,0.03462587,0.048355766,0.008171825,0.0144227585,0.03637852,0.022415577,0.082270995,0.057494033,0.013951741,0.05162547,0.023641635,0.018418867,0.04009568,0.008299499,0.050505035,0.025156023,0.022480657,0.036376856 -0.011915657,0.0036924249,0.04062848,0.012023047,0.110737495,0.049395066,0.031113395,0.026186328,0.011969596,0.006231006,0.030099835,0.051332965,0.03739974,0.026679186,0.053064372,0.040329844,0.0105973575,0.011433326,0.018081808,0.02057271,0.08053413,0.015506836,0.046564084,0.03711733,0.023726063,0.011824371,0.031816028,0.013342459,0.01617631,0.02257506,0.055539753,0.041793946 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.013940462,0.019203799,0.019620843,0.012943281,0.026376959,0.08539569,0.034201056,0.016171219,0.036371298,0.017553693,0.018832363,0.023096437,0.022320347,0.02289433,0.035982683,0.026197264,0.0309963,0.018396111,0.017349185,0.024706373,0.039096992,0.03601784,0.021845924,0.017417088,0.139698,0.046610545,0.013511559,0.03353955,0.018649349,0.01886918,0.03457043,0.012447432,0.04517649 +0.018725712,0.011787114,0.01107297,0.033447456,0.019894524,0.08055031,0.03819819,0.035431203,0.03186907,0.018291932,0.019207258,0.02245556,0.13702068,0.054503065,0.023191012,0.02562002,0.01916978,0.013834468,0.016687555,0.02840035,0.030843345,0.021892576,0.026087089,0.01579946,0.04885623,0.023418596,0.015923375,0.042116705,0.01549387,0.026875785,0.03695072,0.019433666,0.016950345 +0.020445274,0.016654389,0.013200464,0.028482636,0.033642784,0.083429486,0.028041055,0.019777574,0.025619086,0.021657871,0.030393722,0.014611581,0.022830635,0.123300776,0.01745365,0.037973646,0.017728506,0.027734673,0.01872503,0.024196517,0.019738983,0.021280492,0.021657871,0.019509016,0.022542626,0.05344693,0.025725637,0.07596341,0.020049827,0.038271476,0.015432905,0.013780033,0.026701493 +0.016903484,0.014345801,0.01919161,0.02922801,0.017169677,0.073139146,0.028308017,0.035229895,0.035195507,0.019079488,0.01275942,0.023376677,0.053509746,0.026592921,0.03432988,0.015330795,0.024594432,0.016969644,0.017645637,0.023376677,0.03652613,0.047130045,0.024142297,0.023931038,0.06951778,0.054352403,0.024307897,0.06207239,0.022835156,0.02310433,0.034129318,0.010332893,0.03134177 +0.012535897,0.012634218,0.007906292,0.027009122,0.012584961,0.057965416,0.026101558,0.024281856,0.028694961,0.0115486095,0.016803129,0.074138895,0.03044326,0.030756325,0.042741016,0.019302549,0.026152587,0.010392624,0.011822477,0.047309995,0.01809768,0.06803367,0.085000664,0.020993682,0.06697891,0.02416358,0.010151879,0.041750923,0.010474134,0.058648694,0.01960652,0.01673762,0.028236296 +0.020117404,0.02431366,0.01404421,0.041117303,0.020796577,0.08436723,0.027712893,0.025282206,0.0328136,0.018245693,0.022224486,0.02491456,0.034054168,0.03721901,0.018496858,0.032352228,0.03961943,0.016101766,0.03537617,0.02481743,0.02498766,0.016743189,0.031564236,0.05642065,0.06519394,0.03134155,0.0072011556,0.046229426,0.02007815,0.036965452,0.027564444,0.01680872,0.02491456 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 0150b2b0..daeca86b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012020789,0.0114255985,0.013781902,0.011336684,0.030397858,0.024943626,0.019588038,0.027308403,0.0142750405,0.007791581,0.024653023,0.027215222,0.019322054,0.05623878,0.032358356,0.05221594,0.013253926,0.02056822,0.01688594,0.029197672,0.020131039,0.03461389,0.02210962,0.06372689,0.028759044,0.0143309105,0.03210654,0.013048443,0.2367741,0.017320175,0.009849482,0.04245126 -0.00968035,0.0060578086,0.02164524,0.011229403,0.049160875,0.04091531,0.09700724,0.020897496,0.006810977,0.012527305,0.029767573,0.033377804,0.042296633,0.04004565,0.060468912,0.05906815,0.01140624,0.013975218,0.029484136,0.020215027,0.053155582,0.022861931,0.017122796,0.05636322,0.05212746,0.013077319,0.04449998,0.0103855,0.009987637,0.0559246,0.02224527,0.026211333 -0.010586183,0.007959717,0.014697459,0.012869525,0.055902667,0.026143547,0.028727092,0.017867567,0.012769373,0.009161578,0.022964824,0.09621457,0.035395365,0.022852965,0.108176954,0.040501803,0.013699538,0.028454864,0.0163962,0.01607907,0.098496236,0.06434358,0.015342754,0.026869912,0.020049846,0.020049846,0.04634494,0.011268932,0.009676554,0.020686297,0.038122308,0.031327948 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.015050883,0.01172164,0.012093725,0.022309033,0.010756382,0.094016306,0.022882726,0.03638838,0.029932264,0.010672675,0.015347736,0.027256964,0.022027602,0.037543472,0.08695087,0.023957483,0.07613672,0.010714447,0.015407805,0.012674115,0.016659811,0.021770975,0.033035073,0.019553527,0.0648693,0.03820925,0.009755615,0.032081287,0.012924089,0.10570537,0.0215594,0.0116304215,0.018404752 +0.01221852,0.020105632,0.011523162,0.04298132,0.016506167,0.056940995,0.022168143,0.083172925,0.026531791,0.014566641,0.0132113695,0.06253745,0.035355467,0.036727987,0.024466112,0.017230876,0.11821256,0.01090991,0.019639885,0.026805244,0.014284897,0.02955142,0.036549088,0.017708533,0.03152267,0.038228378,0.0096279625,0.02415747,0.01929767,0.024778698,0.03875462,0.014008602,0.029717823 +0.0134996595,0.008414936,0.008818777,0.03387192,0.012195926,0.014370312,0.033657596,0.01964189,0.031905293,0.0134996595,0.019757316,0.038307022,0.07952743,0.028943907,0.039215446,0.05639339,0.046569496,0.01007136,0.015844474,0.011457012,0.019000426,0.048709184,0.071847044,0.01907479,0.08498784,0.01888942,0.009314485,0.045937136,0.01634743,0.01713196,0.024065744,0.06390209,0.024829673 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 2efab20a..eb9b1110 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010618431,0.00532009,0.031241473,0.010025754,0.12621595,0.03801969,0.03556635,0.03164376,0.010138364,0.0072703697,0.0275396,0.05265158,0.03624807,0.020274848,0.062158115,0.04025004,0.010453169,0.011500197,0.021514071,0.021920329,0.09396764,0.020422643,0.019221632,0.03632739,0.034134757,0.013216465,0.06821319,0.010370556,0.018837776,0.03664193,0.012034463,0.026041366 -0.011248999,0.007763945,0.020370394,0.013426363,0.052157905,0.02627952,0.029951978,0.030582616,0.009331442,0.007465146,0.03328639,0.038111825,0.01810378,0.015171406,0.036365446,0.036902063,0.011336534,0.022397265,0.027198253,0.029846832,0.23694438,0.030660179,0.018613372,0.04210234,0.021134239,0.013412438,0.06735742,0.007580391,0.008907657,0.029101651,0.021942623,0.024945194 -0.014820769,0.016931016,0.03134662,0.017758721,0.07756528,0.030280596,0.027700873,0.026437817,0.011194134,0.014254735,0.025730982,0.038801637,0.034535516,0.03318171,0.038952313,0.064535856,0.014877869,0.03107635,0.022293469,0.017415768,0.03861853,0.074516445,0.018766109,0.05231379,0.03215885,0.030682446,0.0475016,0.010968913,0.011374928,0.018307073,0.054861203,0.020238126 -0.012825078,0.0054109595,0.04036408,0.014380072,0.06844456,0.030411042,0.0412312,0.025175504,0.0114584975,0.008511076,0.035235465,0.17975047,0.029292798,0.02909468,0.031851053,0.026281644,0.013975125,0.009772897,0.020356039,0.021315373,0.06219029,0.024319902,0.021852175,0.06849053,0.020569606,0.013285601,0.041427664,0.007992975,0.013719467,0.018521097,0.022934454,0.029558716 -0.014430656,0.004168151,0.06305564,0.021247871,0.09074368,0.07415783,0.03126866,0.020979187,0.017970206,0.010274172,0.0257828,0.059320774,0.028706122,0.025938272,0.037631854,0.03580352,0.011777239,0.01175139,0.014962524,0.015961098,0.07775944,0.011435114,0.018415455,0.09703935,0.028552026,0.013933843,0.04162163,0.008481792,0.013676437,0.024435634,0.02378487,0.024932796 -0.008010261,0.0074686627,0.023822267,0.013119117,0.074442916,0.04628194,0.04254105,0.058279544,0.0090823565,0.005861148,0.038926944,0.022764165,0.046605628,0.03756041,0.03390609,0.0453148,0.0128496755,0.017593464,0.024916999,0.030104289,0.038540415,0.029914714,0.023720885,0.05801514,0.032298174,0.012752013,0.07088667,0.011338414,0.037955638,0.02446528,0.02521379,0.035447173 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.013031122,0.011321634,0.010389316,0.012531906,0.014766195,0.104928374,0.035284165,0.027871214,0.020864384,0.010389316,0.017811432,0.024512332,0.020182995,0.08139971,0.029885026,0.043062516,0.016154267,0.010552924,0.013817477,0.024947023,0.036833324,0.051740803,0.04085048,0.033833183,0.039362326,0.033146404,0.022692353,0.050938636,0.017263431,0.053175114,0.046470832,0.012385906,0.017603923 +0.013867004,0.0117917815,0.01430719,0.011837933,0.013572258,0.038663756,0.02143049,0.018033074,0.02613567,0.012749956,0.014475838,0.04330135,0.019403422,0.029014427,0.033526108,0.025405882,0.021388676,0.013921278,0.016086007,0.024153845,0.020156674,0.32372767,0.016957058,0.01336184,0.04830615,0.016403275,0.014877124,0.025381085,0.016825097,0.016661588,0.018156769,0.017359182,0.028760536 +0.02343217,0.018681755,0.01668093,0.015979351,0.02779923,0.038860146,0.042846564,0.01560919,0.039012242,0.023295274,0.038633116,0.022228505,0.060541473,0.026786525,0.037848905,0.03317399,0.03386134,0.021544605,0.028099464,0.034529194,0.031596933,0.040725086,0.03131662,0.013299196,0.04855152,0.04276296,0.021798568,0.028569853,0.029247366,0.014549365,0.03781196,0.029795108,0.03053148 +0.015153667,0.017171355,0.015880907,0.04367764,0.013012349,0.09067712,0.021834187,0.05186848,0.02257132,0.019533848,0.019572038,0.028627018,0.09138831,0.06738551,0.024596829,0.029257633,0.03824542,0.014573139,0.02051132,0.022926766,0.016708186,0.023174377,0.017306032,0.017855383,0.055864554,0.033130992,0.013425405,0.041758977,0.02423915,0.028627018,0.018748865,0.0150945885,0.025601646 +0.020325784,0.03276724,0.017183015,0.036877196,0.0409791,0.060563177,0.054928415,0.013097705,0.02611157,0.020930074,0.021573389,0.027016183,0.022258202,0.041219912,0.019700425,0.035533786,0.029733112,0.020991484,0.033840418,0.018255536,0.018219914,0.018835029,0.020807795,0.015075367,0.14931092,0.027404804,0.014328933,0.0464354,0.020167608,0.028804252,0.016817788,0.013252097,0.01665435 +0.014279534,0.026315438,0.013732494,0.018192599,0.034430902,0.022774111,0.018624028,0.013572506,0.040204696,0.016825402,0.018770097,0.065004244,0.019747883,0.029950626,0.025983466,0.04906778,0.041724697,0.02481782,0.01630774,0.040957645,0.027930688,0.04398407,0.07167262,0.020374749,0.04398407,0.026008852,0.0155002875,0.031533923,0.028012637,0.030362919,0.0260597,0.021021511,0.062270254 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 1259f535..74d4cc81 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.014694284,0.00484566,0.038039703,0.01950482,0.078818366,0.048180703,0.04508512,0.019164959,0.01751819,0.007865283,0.041291706,0.043697998,0.030476343,0.028685847,0.052504353,0.059263274,0.009195448,0.0085710995,0.020361185,0.016456816,0.048748642,0.016618315,0.017794061,0.0893129,0.04169692,0.01588831,0.03295278,0.010792644,0.014636996,0.03708601,0.046154283,0.024097003 -0.011956437,0.007511431,0.03889856,0.009203197,0.098943695,0.040606413,0.027962914,0.014880026,0.011863391,0.0074529764,0.039050806,0.030681275,0.035141923,0.045833707,0.02887874,0.050142225,0.0061787344,0.0146493325,0.011364432,0.027826708,0.039821014,0.049172387,0.013131577,0.13418755,0.050733287,0.021128137,0.03740838,0.008713412,0.023766605,0.01837438,0.023593169,0.020943254 -0.013887067,0.0071764276,0.0151924975,0.018254206,0.07991457,0.04781246,0.023301933,0.017418284,0.01525196,0.008724318,0.026781103,0.08342324,0.027746145,0.042691726,0.06127263,0.03917613,0.018254206,0.018218588,0.014782706,0.020644369,0.04244231,0.036910545,0.021932937,0.05985325,0.017282734,0.021299692,0.021175254,0.008931208,0.025170805,0.02839026,0.069430985,0.04725543 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.01910463,0.02436371,0.021312755,0.02668002,0.029352391,0.070567615,0.022909949,0.013841413,0.03352967,0.023545036,0.025808707,0.034057684,0.031127442,0.056261405,0.02002148,0.035972085,0.04840573,0.025758348,0.038366944,0.02652415,0.030842822,0.029618738,0.034543376,0.017982226,0.04520731,0.032403,0.018123262,0.04100125,0.022118514,0.023962572,0.035972085,0.020257486,0.020456282 +0.013497088,0.009385752,0.010718865,0.022892157,0.017195737,0.047109466,0.042228654,0.023229958,0.034365196,0.015841454,0.01488167,0.039592747,0.037339516,0.025289863,0.04841539,0.025228195,0.036049604,0.009608328,0.015474488,0.012289238,0.024380473,0.03366762,0.052554406,0.010148417,0.2136187,0.02663978,0.014536936,0.043314595,0.011321378,0.008347861,0.026646286,0.017845849,0.016344316 +0.009544797,0.0067682746,0.008827494,0.02225743,0.00889673,0.03658895,0.043281052,0.023995617,0.03151086,0.010858004,0.017283395,0.049428515,0.06729738,0.028021205,0.06756077,0.07025208,0.047720984,0.008758798,0.011423627,0.010320387,0.020766476,0.04203145,0.031113345,0.019470233,0.094904505,0.027490968,0.008489318,0.034540378,0.013618987,0.026697252,0.028558182,0.05139752,0.02032508 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index a4ae747f..d407a31f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.021899408,0.01375122,0.06875178,0.01996887,0.025484513,0.04252252,0.03902086,0.08623405,0.015073292,0.016425943,0.052713815,0.047996476,0.014524183,0.009053567,0.018360289,0.018869255,0.023249278,0.015858501,0.025478292,0.022211714,0.030988853,0.030687701,0.028464755,0.0355289,0.016980492,0.014411155,0.1662205,0.013224419,0.022462567,0.021867353,0.007360498,0.014354971 -0.02203823,0.012158787,0.019582076,0.019851638,0.061747413,0.028869862,0.03577158,0.022407154,0.016234111,0.010899066,0.018905604,0.054705177,0.01843162,0.026778596,0.03470488,0.05385705,0.018467655,0.027081026,0.022649152,0.018252501,0.13860744,0.05000458,0.029917473,0.035182618,0.025070326,0.025365846,0.045087226,0.0137239965,0.015131854,0.035354827,0.016880805,0.02627989 -0.01170118,0.0052330913,0.030678341,0.019595789,0.058046952,0.14593004,0.036824893,0.02589769,0.017668778,0.0141143175,0.025014492,0.04591892,0.020697279,0.014505581,0.07934078,0.029359365,0.017807355,0.026954826,0.011655562,0.028372828,0.08185932,0.015562217,0.02015868,0.029821709,0.016991898,0.014791678,0.0247291,0.02443503,0.010245896,0.056261037,0.010949386,0.028875977 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.015481911,0.021790396,0.019840382,0.03492312,0.020390378,0.059813716,0.027535558,0.028744513,0.04444978,0.020833192,0.014430728,0.048249777,0.029595483,0.019685984,0.057973444,0.018601947,0.035025585,0.018277813,0.016224904,0.025851479,0.029047865,0.061471812,0.022220174,0.02191845,0.041189697,0.06392057,0.01972447,0.050961923,0.024214173,0.033323877,0.018894885,0.01597336,0.019418672 +0.013983444,0.010351101,0.01371298,0.024782542,0.011960674,0.073268,0.036626223,0.02346937,0.02346364,0.022808464,0.020010805,0.03494899,0.019855078,0.04996443,0.029229501,0.023452187,0.026665796,0.013343096,0.015357809,0.02130139,0.01657335,0.20548517,0.04207427,0.009028391,0.04006921,0.015752748,0.028000148,0.020666188,0.018927356,0.024217322,0.020828273,0.027378248,0.02244389 +0.012367314,0.014458855,0.009707215,0.026529063,0.018349245,0.059930302,0.13718182,0.03231419,0.018601837,0.015572799,0.02426137,0.023676222,0.026946833,0.040948816,0.021202514,0.05785998,0.014515445,0.011172936,0.013424592,0.019570857,0.021961171,0.045237765,0.03869391,0.013635999,0.041593663,0.022746976,0.036456212,0.028863892,0.020113382,0.012033726,0.06530834,0.032015786,0.022746976 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 0ed4b179..887fec91 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.030829223,0.02203265,0.07899471,0.067452386,0.13132587,0.15056586,0.08587365,0.12193194,0.0947754,0.11232897,0.057428077,0.046461277 -0.014666316,0.022189427,0.059498083,0.06742016,0.039249096,0.14300752,0.37238505,0.06761797,0.044562005,0.027187055,0.042771243,0.09944612 -0.025165679,0.016633498,0.03282223,0.10289244,0.07257083,0.060428306,0.11959067,0.06701881,0.24063799,0.099726774,0.026998831,0.13551399 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.021211134,0.028320579,0.023478584,0.058909986,0.13095303,0.09981858,0.10119266,0.05229339,0.18758154,0.118306205,0.10178733,0.036364343,0.039782714 +0.016987843,0.024144594,0.015347238,0.05002766,0.08610305,0.046630908,0.095680416,0.25555444,0.118380524,0.08460274,0.08410848,0.03582306,0.08660904 +0.03188173,0.04349213,0.038607225,0.03515228,0.05744916,0.060088728,0.064544536,0.08375145,0.061064795,0.27327284,0.060530446,0.032006513,0.15815818 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index c4f4b91a..3b040be2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.042400617,0.021825965,0.08374923,0.15631144,0.031142365,0.090377815,0.19151676,0.0473013,0.07689015,0.11127522,0.05892494,0.08828422 -0.015833566,0.013437772,0.041961044,0.10164713,0.037466995,0.06844288,0.11837423,0.034047525,0.14617266,0.08426843,0.057690993,0.28065673 -0.03181457,0.05401281,0.1453952,0.045572266,0.11890011,0.059962142,0.07022276,0.047480304,0.17675562,0.0464711,0.050443903,0.15296924 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.036800325,0.042522695,0.031600185,0.123525076,0.04186344,0.10062151,0.12113588,0.06976658,0.029225392,0.18399003,0.06321378,0.057444494,0.098290615 +0.023137681,0.02156669,0.017740281,0.07512827,0.09349864,0.04173359,0.115230136,0.07210918,0.043226883,0.15873621,0.05558578,0.03740975,0.24489695 +0.03727073,0.06427239,0.031631254,0.054867815,0.053701587,0.09143873,0.115476556,0.026950166,0.027481709,0.1778087,0.052355234,0.033020034,0.23372512 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 8d04302d..a9e05bb0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.022884028,0.023426706,0.13376229,0.06100784,0.048445486,0.04047772,0.04047772,0.064007714,0.46505603,0.03600163,0.033296064,0.031156814 -0.01766297,0.016592825,0.08159303,0.11076467,0.043122653,0.16369955,0.1496335,0.073605254,0.1455974,0.11250896,0.039494358,0.045724865 -0.024478791,0.02061321,0.15053765,0.09872501,0.050129212,0.07090094,0.15837957,0.047740296,0.19254059,0.044152558,0.0707626,0.07103955 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.020409178,0.02520197,0.032233812,0.12212525,0.036383294,0.0602501,0.0626177,0.04644414,0.08024828,0.33719864,0.04397243,0.08328219,0.04963303 +0.018363692,0.022676133,0.023579445,0.082380764,0.027245997,0.11293152,0.13254708,0.07497192,0.07754087,0.18692133,0.097163096,0.057175048,0.08650309 +0.015567869,0.014854965,0.02337014,0.12197339,0.0134203425,0.0694305,0.18382038,0.11868336,0.12584524,0.1414916,0.04014407,0.09117559,0.04022255 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 26f8fed2..e5aef4b6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.02404165,0.024330985,0.16612503,0.0601377,0.06399806,0.049517293,0.04449823,0.070558906,0.37823856,0.040439203,0.046034217,0.03208023 -0.027730746,0.02667491,0.066027075,0.05778757,0.0820242,0.27731502,0.11232613,0.03457894,0.06187734,0.090703204,0.050964195,0.11199069 -0.022751989,0.019618228,0.2622568,0.091747545,0.100092806,0.15698826,0.09324552,0.050576176,0.095965005,0.04294408,0.031872693,0.031940855 -0.032131083,0.03407833,0.06330054,0.047110375,0.13916276,0.113678426,0.113963254,0.09667804,0.104930215,0.11553822,0.07334705,0.066081785 -0.020889135,0.015167588,0.021204498,0.12352331,0.04426551,0.2877678,0.10738013,0.10587679,0.09809948,0.04156298,0.02445021,0.10981257 -0.014412873,0.019248405,0.102152325,0.07133191,0.055629157,0.1822007,0.25063998,0.08880837,0.04430273,0.06214931,0.067607224,0.041517083 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.021790942,0.02875576,0.023932666,0.11462324,0.033882566,0.074223466,0.087884694,0.03663579,0.07831908,0.31525108,0.041190725,0.09521178,0.048298124 +0.019185683,0.01774385,0.017605767,0.11346654,0.04976387,0.07859597,0.28414276,0.10032964,0.06620061,0.09333503,0.042648513,0.07882658,0.038155284 +0.049818195,0.04616438,0.07234362,0.14387244,0.037678268,0.15077703,0.11031084,0.13836077,0.054394927,0.069640145,0.04336742,0.054607823,0.028664112 +0.022936853,0.028434087,0.022405522,0.04789797,0.036652986,0.1330277,0.16882095,0.031969305,0.054701194,0.24659441,0.06426521,0.067086786,0.07520705 +0.01597938,0.02019983,0.017826287,0.037008327,0.15703289,0.073062755,0.15339524,0.051783957,0.12617949,0.14410149,0.08930007,0.02306893,0.09106136 +0.028527373,0.050263055,0.0540826,0.15242085,0.032834806,0.13770077,0.070279166,0.104757205,0.073994376,0.10133605,0.056182116,0.12104672,0.016574996 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 7d06ac54..f5f64a91 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.036718734,0.027393846,0.054266773,0.24703673,0.033826884,0.041445564,0.09358162,0.030679652,0.26920536,0.06927283,0.038181443,0.058390565 -0.0143717965,0.020748112,0.026745372,0.053462926,0.02802891,0.068698056,0.29321107,0.06816344,0.0434969,0.24498703,0.029374044,0.10871233 -0.021368038,0.02411876,0.05199026,0.04653555,0.04023385,0.16546689,0.30434018,0.08805062,0.03627733,0.0858431,0.037355866,0.0984196 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.021908142,0.024061386,0.026947476,0.05529263,0.035699606,0.055726297,0.103704534,0.12558115,0.045839198,0.3591476,0.039055485,0.076020196,0.031016354 +0.031836722,0.03900717,0.033890016,0.036358677,0.06507003,0.07140441,0.04242466,0.11265075,0.088420585,0.23159625,0.14606592,0.054314982,0.04695982 +0.0118632335,0.019789722,0.010469266,0.04605744,0.101288736,0.03852003,0.21526752,0.2169559,0.096273586,0.13005732,0.03852003,0.046919998,0.02801721 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index dc13ad4c..849903e2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.0132217435,0.015582825,0.09537193,0.05511677,0.04859985,0.201613,0.21431485,0.1044041,0.09673497,0.06951364,0.040298074,0.045228217 -0.02334472,0.015194411,0.06716989,0.035730656,0.055619556,0.11289076,0.21729738,0.16236128,0.06862233,0.08559951,0.039524514,0.11664504 -0.062737055,0.03526971,0.066480264,0.083916724,0.07574927,0.04294516,0.17295846,0.14586803,0.07443847,0.07331404,0.10477662,0.061546147 -0.02023797,0.019773984,0.026585264,0.04649983,0.08008181,0.31102097,0.18837911,0.0946825,0.04079707,0.068564005,0.03542132,0.067956254 -0.018193766,0.02195123,0.10250693,0.042961787,0.05208291,0.19067423,0.23882356,0.05122539,0.06386787,0.06638725,0.051385093,0.09994003 -0.019719949,0.01622515,0.09795474,0.22302167,0.03292809,0.054548316,0.14749242,0.117770776,0.15120222,0.051777475,0.046444554,0.040914692 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.019913744,0.02274221,0.032832213,0.12439244,0.026381426,0.079455666,0.09334777,0.11459569,0.13293332,0.11731324,0.09190055,0.060269855,0.08392191 +0.017521279,0.033905335,0.016459718,0.045982454,0.0826155,0.044134606,0.0711495,0.08046563,0.19895993,0.1259736,0.060649738,0.052003276,0.17017946 +0.025699943,0.03512766,0.01985938,0.048484996,0.0704764,0.038580187,0.07725216,0.15866601,0.17562728,0.14334281,0.07823914,0.10631546,0.0223285 +0.021763925,0.03864713,0.032927766,0.06163743,0.033446305,0.11904154,0.23581937,0.08023351,0.070469536,0.1138123,0.043452136,0.103829876,0.0449191 +0.035014756,0.06755865,0.06371388,0.10998025,0.038008157,0.13370198,0.07059374,0.07311969,0.049186207,0.12958841,0.064717226,0.113471396,0.05134574 +0.044106077,0.03992442,0.04333755,0.04750411,0.14632298,0.071626194,0.04958979,0.079012446,0.19158807,0.16007784,0.05232613,0.05032155,0.024262724 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 01f1cf46..31f376e9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.01664073,0.014233571,0.055206023,0.044014078,0.064416446,0.14152527,0.23886913,0.112393886,0.10025849,0.08669238,0.050659895,0.07509014 -0.01838463,0.01896822,0.10095148,0.10294256,0.028586118,0.078009255,0.123206116,0.07873634,0.2921128,0.026854172,0.048531745,0.08271667 -0.029839043,0.023057824,0.048528235,0.08008771,0.04224449,0.15695731,0.255764,0.12810484,0.07081965,0.06270827,0.027275093,0.07461351 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.044508155,0.08047588,0.044508155,0.05337343,0.06501244,0.10866292,0.057261333,0.064758986,0.11499529,0.079421885,0.09061411,0.14939743,0.047009982 +0.012853926,0.02102762,0.016504768,0.088702664,0.063192055,0.041492984,0.12681279,0.11774168,0.07601974,0.21071875,0.06582174,0.07075447,0.088356845 +0.011193676,0.014945519,0.013086734,0.07242391,0.087019324,0.05896654,0.2649157,0.11393881,0.05971991,0.20471099,0.019190425,0.03407726,0.045811202 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index cb64c3b7..be998e4d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.039938595,0.043183915,0.118075885,0.05954648,0.12374247,0.15490499,0.08697871,0.045789823,0.083974,0.07239011,0.036364503,0.13511053 -0.046179265,0.02545285,0.071640715,0.04229379,0.04180105,0.1114293,0.23961064,0.08378333,0.059353285,0.15230578,0.036175795,0.08997421 -0.02781237,0.0368454,0.15094069,0.03213713,0.0700912,0.1276023,0.24983314,0.03163889,0.04967784,0.062363237,0.035433877,0.125624 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.03258783,0.04750771,0.034689564,0.0454208,0.056416802,0.106019855,0.053991236,0.023748815,0.043766156,0.28041837,0.04988499,0.026701512,0.1988464 +0.02455211,0.0374375,0.024744675,0.051875398,0.11622004,0.027604679,0.038625892,0.22227663,0.1474909,0.11622004,0.06943205,0.04445813,0.079061925 +0.027025884,0.03122835,0.031596463,0.08698541,0.055997707,0.056547236,0.067414336,0.21009848,0.09963192,0.10380335,0.10002187,0.03098533,0.09866369 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 083b09c1..a629f483 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.023895286,0.01832115,0.059314918,0.18721822,0.06704871,0.028936027,0.040173694,0.14868146,0.0849647,0.20481735,0.042764675,0.09386384 -0.013502704,0.015786262,0.1363725,0.077173345,0.068605885,0.14125212,0.054298226,0.09013671,0.08873927,0.15881403,0.12416856,0.031150412 -0.025655951,0.017495839,0.15114097,0.31996542,0.08954807,0.031434327,0.07864097,0.07727069,0.04591569,0.03618069,0.084534384,0.04221698 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.017289048,0.016052337,0.023816664,0.022026813,0.09165594,0.034517944,0.036103908,0.02730594,0.11362295,0.14877227,0.39813527,0.0136234425,0.05707744 +0.019879099,0.019879099,0.028475493,0.0552105,0.080095805,0.04910524,0.08279988,0.06850958,0.17240135,0.12712078,0.11001386,0.107885994,0.07862336 +0.028068636,0.036751684,0.030827366,0.19407536,0.14006053,0.1583997,0.07188607,0.0728045,0.052336797,0.053473387,0.031681933,0.09230354,0.037330437 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index d7a54c48..0cfd51a0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.028366823,0.027280107,0.08306996,0.08640018,0.054999802,0.1901026,0.15698618,0.10560158,0.07615487,0.03628172,0.08560232,0.06915384 -0.01920806,0.017903887,0.17525947,0.30758995,0.064238675,0.062589936,0.11315601,0.053346824,0.053817756,0.045363374,0.06276591,0.02476017 -0.039392862,0.044812668,0.17967735,0.1542877,0.18250686,0.05657941,0.05983002,0.052983012,0.036575034,0.07682679,0.089294866,0.027233396 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.028672202,0.035683133,0.04295809,0.05304616,0.20614591,0.06991537,0.099297024,0.038885273,0.108631276,0.13206205,0.030881178,0.055105437,0.09871691 +0.01782257,0.03189652,0.03448836,0.090687424,0.24411833,0.09002563,0.051571313,0.08114297,0.06220688,0.11419271,0.09202563,0.054790262,0.03503147 +0.038860124,0.03483399,0.03840739,0.11969761,0.24464603,0.101586044,0.07508794,0.03708059,0.077282585,0.058908433,0.050584264,0.046418726,0.07660632 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 3cfad144..d1779af8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.042999305,0.035647675,0.075098544,0.21165,0.11240646,0.044537887,0.04333655,0.11529708,0.13665152,0.056853674,0.059698623,0.06582273 -0.0210577,0.013177572,0.25059265,0.12749122,0.0773651,0.04726925,0.043631613,0.1461694,0.05774607,0.052835755,0.1179101,0.04475363 -0.017115196,0.01850594,0.13727663,0.41466334,0.06151393,0.040539283,0.028108178,0.060975652,0.062421646,0.09324955,0.050047114,0.0155835645 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.020406444,0.035674796,0.030395307,0.051704157,0.2998705,0.12500462,0.033382714,0.056234058,0.076600574,0.12598504,0.067698866,0.03051427,0.046528704 +0.015827617,0.024323527,0.020968191,0.17016296,0.15676147,0.063647375,0.036371585,0.03074782,0.1898305,0.057951596,0.07677339,0.11029547,0.0463386 +0.017605642,0.022783393,0.029254457,0.20951222,0.16063859,0.06966567,0.046384685,0.0307784,0.1224463,0.08047888,0.09829233,0.08552304,0.026636485 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index d6845334..02fe2c42 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.041693583,0.031973436,0.10998214,0.16479066,0.1252256,0.043118283,0.03657029,0.09519903,0.14785722,0.09291999,0.05095015,0.059719656 -0.022328043,0.022683812,0.04283925,0.41126367,0.050769344,0.05469367,0.059796266,0.040055063,0.084618196,0.088319905,0.086037345,0.03659542 -0.038595863,0.036979344,0.16525516,0.08796479,0.14711224,0.04366683,0.09374597,0.060864523,0.09171209,0.040690783,0.15224949,0.041162893 -0.028332265,0.021141028,0.07007169,0.28262228,0.09273151,0.036750935,0.060434613,0.124088004,0.047553435,0.09717809,0.08297382,0.05612234 -0.012886485,0.011553485,0.10148387,0.28855413,0.030025361,0.045084067,0.02283268,0.114905074,0.054962385,0.22098571,0.051132176,0.045594625 -0.025287734,0.01807564,0.09002567,0.12390211,0.06067184,0.12525174,0.10664663,0.096130595,0.07915938,0.07539393,0.1290897,0.070365 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.019000068,0.031819124,0.030243652,0.07024996,0.21407309,0.13396353,0.028858693,0.026585873,0.06696755,0.16285823,0.15180056,0.022563139,0.041016474 +0.017298587,0.02785987,0.026171926,0.022916906,0.29258338,0.047437537,0.034001548,0.03626522,0.08464918,0.20266658,0.11324245,0.06333742,0.03156937 +0.0686808,0.047946926,0.05949635,0.06376796,0.06336447,0.15089422,0.07095185,0.051540107,0.055402566,0.20384508,0.026530573,0.08195969,0.055619407 +0.028476672,0.036995783,0.024548426,0.05917686,0.32845432,0.06365823,0.01987992,0.022703582,0.13638632,0.07755896,0.11989127,0.025526324,0.056743342 +0.016698256,0.012903412,0.01798473,0.037851244,0.29368037,0.023183238,0.032629814,0.026476089,0.12052618,0.07571856,0.26531813,0.021524908,0.055505183 +0.045183532,0.035257764,0.031236647,0.11381345,0.10505485,0.08457898,0.07918349,0.04026563,0.08683875,0.17422402,0.07487796,0.07225598,0.057228997 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 1cc44686..a5de7340 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.021187872,0.01605604,0.054263867,0.5659949,0.045957677,0.034796704,0.03555238,0.069608174,0.0645029,0.0374044,0.031313643,0.023361403 -0.024042008,0.015890798,0.19133413,0.07945869,0.039024033,0.08096902,0.16238318,0.1394373,0.051296122,0.07202193,0.1016168,0.04252598 -0.017251918,0.010221423,0.046895575,0.07552666,0.05393696,0.050017677,0.11118601,0.32807288,0.07731773,0.04220145,0.096978165,0.09039358 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.022081608,0.018594578,0.018740417,0.103307895,0.47212556,0.04692973,0.030657277,0.045264293,0.059411697,0.078746155,0.02350575,0.05239225,0.028242808 +0.027631663,0.025856346,0.021603787,0.16926447,0.12096786,0.07964316,0.043301236,0.1349494,0.09815427,0.05714117,0.099311285,0.0701477,0.052027624 +0.026684716,0.020863418,0.016504321,0.07736575,0.10974434,0.03814951,0.06553134,0.049032796,0.21570995,0.21236569,0.061913315,0.043144707,0.062990114 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 7ac72445..d58192d2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.018481381,0.015086826,0.15493174,0.15046775,0.08715649,0.04693676,0.06383222,0.1263513,0.05064553,0.06657839,0.17764094,0.04189063 -0.016217614,0.012148656,0.08499495,0.09927823,0.077306755,0.047871754,0.055010583,0.21122654,0.062933914,0.10617896,0.112716906,0.11411521 -0.04758948,0.026389102,0.04877754,0.053574916,0.05382935,0.09806836,0.07419494,0.1068721,0.23706995,0.060697217,0.050034944,0.14290217 -0.022031544,0.017568294,0.057664018,0.3444,0.03500623,0.048234522,0.055807646,0.08084915,0.07480748,0.12028488,0.08741878,0.05592742 -0.026553975,0.020047663,0.12833178,0.15571688,0.07450259,0.064350314,0.083343506,0.10243373,0.08976791,0.038867597,0.17135589,0.044728138 -0.01926051,0.017816322,0.20410872,0.16115807,0.08684079,0.086861335,0.11499798,0.060789067,0.0708855,0.097253375,0.055153485,0.024874803 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.016777907,0.029446134,0.027233222,0.09903301,0.15368521,0.065074414,0.049991827,0.071156874,0.1554968,0.06006656,0.10398861,0.11969016,0.048359197 +0.023548124,0.02840446,0.027638298,0.0627111,0.20662825,0.07437815,0.030832749,0.047290612,0.15904744,0.048412077,0.11411094,0.045656934,0.13134089 +0.020972665,0.028554477,0.028778432,0.029231627,0.05453193,0.057009615,0.037976593,0.024233868,0.18987098,0.32806766,0.0779229,0.04914536,0.073703915 +0.02953646,0.036472656,0.021108754,0.053275105,0.39211807,0.06938212,0.028074007,0.041734517,0.065625556,0.09798792,0.073174864,0.06043496,0.031075094 +0.054990366,0.03739047,0.034580532,0.07439615,0.102434985,0.16691916,0.07954307,0.051911525,0.051206626,0.2151673,0.025698068,0.05061005,0.05515171 +0.035944857,0.03580472,0.038714133,0.05932095,0.06886392,0.0958184,0.08983742,0.06345591,0.0639536,0.14272109,0.23808104,0.028769901,0.038714133 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 9c317eff..19b076a5 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.024021462,0.016381215,0.08735352,0.24451095,0.042655937,0.053293943,0.0703621,0.16674198,0.0637845,0.048809845,0.12784553,0.054239035 -0.019587502,0.01649433,0.1322968,0.19324411,0.07915247,0.08095043,0.03358079,0.15167905,0.1481654,0.07876693,0.03941358,0.026668562 -0.025625726,0.014773212,0.05668684,0.21879344,0.057635788,0.052529253,0.06815239,0.20714946,0.06667327,0.03907457,0.14292884,0.04997713 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.04036501,0.0526459,0.035483122,0.057146583,0.056979407,0.10676387,0.06257964,0.06425163,0.12384826,0.17465405,0.050137047,0.100884765,0.07426074 +0.0159961,0.026167873,0.02203556,0.084553465,0.22782892,0.074536234,0.040371586,0.03837265,0.13551247,0.18814044,0.07248592,0.03346922,0.040529598 +0.018406145,0.016499165,0.01400266,0.088499516,0.33661324,0.033329222,0.051798053,0.042049877,0.14087047,0.096441306,0.039967842,0.07855951,0.042963065 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 080e0d42..51ade0ca 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.032925528,0.04885123,0.104025796,0.2016933,0.14358173,0.054073382,0.07711691,0.057899076,0.04113686,0.09965061,0.09252246,0.046523213 -0.022180002,0.017545827,0.026339404,0.06680181,0.056901958,0.041035004,0.08519086,0.20880033,0.061623402,0.029155063,0.22053711,0.16388926 -0.017088706,0.023911403,0.14086375,0.034385562,0.080261745,0.05502852,0.046999488,0.06905494,0.028506633,0.050992366,0.4205414,0.0323654 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.04502345,0.037545096,0.032875586,0.1290136,0.23822105,0.09531464,0.04755424,0.04746145,0.110351175,0.038585886,0.04271068,0.039655525,0.09568769 +0.024061177,0.0339317,0.034197826,0.027478727,0.10804553,0.092235915,0.03138169,0.15936935,0.15446608,0.06424972,0.027264884,0.13900442,0.104313046 +0.01398243,0.020826768,0.033673387,0.059273835,0.023971463,0.071147464,0.054311454,0.12708203,0.15815614,0.043747153,0.033022083,0.31823865,0.04256715 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv index 9bf90eea..47225f8b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0040172087,0.0053837127,0.01794233,0.008481664,0.041915163,0.060892984,0.015276147,0.03922581,0.0074369167,0.0065139355,0.020977434,0.020048343,0.019622974,0.037060324,0.008304551,0.23707671,0.00647016,0.01106858,0.011167494,0.012748863,0.033062108,0.018191332,0.0066894284,0.047790576,0.10322021,0.0052910694,0.11262705,0.00659916,0.017055837,0.026257407,0.015436073,0.016148428 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0051731854,0.006115724,0.004452979,0.02984497,0.0035049068,0.023042496,0.04243705,0.017752096,0.043330517,0.005744317,0.005712806,0.02443036,0.03076382,0.016793936,0.020566238,0.014915136,0.23716973,0.006960561,0.016510267,0.008906468,0.016893843,0.032925818,0.022828635,0.0059587103,0.08213512,0.101522684,0.009693471,0.08036983,0.0065862564,0.016128413,0.025845902,0.011681713,0.02330209 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv index a5f8bc58..aab7381f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004360183,0.006277071,0.017062904,0.009641751,0.043229353,0.05727278,0.014225212,0.038007263,0.007835306,0.006881622,0.023389304,0.016517002,0.020064484,0.039711393,0.008007171,0.2261134,0.007357157,0.012218177,0.012470042,0.014183982,0.030792018,0.019355278,0.0073876814,0.04283245,0.12202452,0.0056234123,0.10076162,0.0072904723,0.015891792,0.029221293,0.018248018,0.015745874 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0051706634,0.006392545,0.004375827,0.030993352,0.0034347752,0.021954894,0.041624684,0.017873196,0.04168018,0.00586722,0.005894553,0.022671,0.0292719,0.01654101,0.019867422,0.013532966,0.2661518,0.007395097,0.01631813,0.008761997,0.016077364,0.033230375,0.020873664,0.0064080334,0.07242437,0.097736195,0.008801166,0.08053392,0.0065339063,0.015795996,0.02301082,0.012271813,0.02052921 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv index 59ae4a55..abcdbcaa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004300562,0.006707173,0.0156384,0.009617707,0.04338564,0.06583099,0.014432732,0.035469737,0.008234734,0.00742003,0.021091163,0.015702654,0.019683242,0.038769204,0.008150284,0.23311892,0.008400009,0.011828063,0.012611091,0.01447467,0.03342824,0.019685786,0.007448794,0.041252162,0.11632072,0.006234854,0.091513716,0.007690376,0.015090434,0.031744882,0.018613188,0.016109822 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0064157196,0.006527345,0.0056665037,0.027466085,0.0044602095,0.026517421,0.049759857,0.01652433,0.041261666,0.006874849,0.0067948974,0.023469295,0.029153131,0.016635327,0.019607816,0.016634526,0.17611296,0.007703006,0.023564544,0.010035094,0.022443883,0.03051713,0.025578223,0.0072342893,0.08143584,0.14751312,0.013761597,0.055317592,0.0074805734,0.01573484,0.03309507,0.01149615,0.027207157 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv index 3be3b2c1..8abda85f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0042441166,0.006550821,0.014524397,0.008744351,0.049152624,0.060611952,0.017833132,0.039753407,0.007960037,0.007296914,0.020477273,0.01763899,0.020569323,0.03703013,0.009169324,0.21462496,0.0073043634,0.011937346,0.012409705,0.016439967,0.026413875,0.018571155,0.00883063,0.052616574,0.12547207,0.0054714065,0.08710683,0.0072533595,0.016600486,0.03165694,0.01850874,0.017224781 -0.0044898638,0.006292895,0.019563716,0.009088499,0.045074668,0.059290387,0.013071808,0.038151007,0.007435785,0.0067792335,0.023250628,0.017980209,0.020187698,0.033060163,0.007900615,0.21634111,0.007439023,0.0124958875,0.012788248,0.014472153,0.030570945,0.019401966,0.0072201015,0.041807372,0.12621097,0.005592084,0.10920363,0.007921556,0.014996767,0.028330075,0.018433904,0.015157071 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0055406922,0.006386817,0.004625329,0.02794532,0.0038382933,0.023122994,0.047041234,0.017717674,0.043066762,0.0060848948,0.006028181,0.024094954,0.031411633,0.017373681,0.020232791,0.016327478,0.21710728,0.0073115835,0.017294787,0.008706568,0.019171692,0.034296166,0.022187935,0.0064854,0.08433365,0.10816069,0.01044296,0.07764751,0.0066119726,0.016789336,0.028201265,0.012045506,0.022366948 +0.005273,0.006350921,0.0045870915,0.029855195,0.003674753,0.022280036,0.04056523,0.018330282,0.042522132,0.0058698533,0.005789554,0.023899432,0.030028421,0.016782813,0.018927349,0.014220322,0.25088266,0.0070974855,0.017512802,0.008408013,0.01705966,0.032813244,0.022579813,0.0065027904,0.08215564,0.09919083,0.009322651,0.072932474,0.0066912686,0.015727002,0.02790005,0.011463137,0.022804117 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv index 7f4da896..1adcaec0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004009504,0.00491257,0.020144317,0.008090519,0.03827003,0.05458871,0.012453571,0.032190487,0.0065081106,0.0065404586,0.024827298,0.0168541,0.021103444,0.02935654,0.00813333,0.23077916,0.006991138,0.008845747,0.011959966,0.010493611,0.03519008,0.017726563,0.005951777,0.04237902,0.09315022,0.005446867,0.17138276,0.0067939414,0.01596632,0.020403966,0.0153063685,0.013249553 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.005243044,0.0068628322,0.004119111,0.027635053,0.0037787466,0.021621196,0.03984544,0.020376597,0.036851183,0.005732252,0.0054553016,0.02128327,0.026677908,0.019110823,0.01986349,0.013093736,0.30414927,0.006873597,0.014688124,0.007742951,0.014003141,0.031778734,0.020403402,0.006862341,0.07797771,0.064194806,0.0077092745,0.088538475,0.0069644405,0.016042879,0.022522885,0.012781177,0.019216869 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv index c99b1ffa..c03ca665 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038721918,0.005179969,0.01615901,0.008171162,0.043776285,0.065734304,0.017611375,0.04358564,0.0065292907,0.0068701566,0.021048758,0.019796705,0.021642718,0.036108084,0.008354264,0.22899278,0.0068489937,0.010631369,0.011964392,0.013607925,0.035942245,0.016927836,0.0066868635,0.05139611,0.11702679,0.0061801723,0.0860707,0.006092417,0.017596524,0.026235523,0.015397529,0.017961878 -0.004533815,0.005865554,0.01902702,0.008466478,0.04793634,0.056333646,0.01547706,0.043305673,0.00786583,0.0073028216,0.02227584,0.020118108,0.02158854,0.033464324,0.007674004,0.21536033,0.00774036,0.011820359,0.011987151,0.0145265665,0.03601687,0.01974236,0.0073520797,0.049199916,0.10748087,0.0053152973,0.11075006,0.0071330904,0.016156215,0.025402343,0.01668626,0.0160948 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.005483725,0.0066012214,0.005198228,0.033509348,0.0042043817,0.02317797,0.03937999,0.017307758,0.037636165,0.005854237,0.0058676037,0.02215927,0.024298837,0.016519763,0.01830959,0.013106523,0.27282035,0.0074146762,0.019438406,0.0094330795,0.016409066,0.027353697,0.023160962,0.0076946104,0.074612305,0.11091272,0.0100175105,0.06297743,0.007235825,0.013821495,0.024065388,0.011177126,0.022840766 +0.005132123,0.006258132,0.004523277,0.028863266,0.0038300497,0.02196964,0.043445766,0.018415095,0.051318515,0.0059415693,0.0059717335,0.024573747,0.03365483,0.017032608,0.022367323,0.015106722,0.21536613,0.0069446526,0.016772965,0.008130857,0.016136188,0.037611797,0.023627339,0.005972406,0.0856897,0.09184303,0.009807569,0.08422559,0.0065450855,0.01732655,0.02972546,0.012266841,0.023603454 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv index 6866d118..8fa8b147 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0042001447,0.0057136347,0.016083458,0.008578314,0.041375857,0.061581593,0.015413483,0.03713672,0.0070986184,0.006767118,0.021731189,0.01628298,0.020695891,0.036857005,0.008185106,0.23843908,0.0069048796,0.01146324,0.011551858,0.014451719,0.030510709,0.018468594,0.0077012125,0.041727073,0.1173028,0.0058830674,0.101249166,0.0075246836,0.015359337,0.030536193,0.018259723,0.014965526 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0055701155,0.0063301595,0.0042756563,0.029668182,0.003665929,0.023308653,0.041472793,0.01839364,0.03860736,0.0060253735,0.0056214742,0.020402266,0.027661264,0.016783247,0.01859294,0.013065602,0.28502858,0.006916266,0.01649864,0.008324767,0.015853647,0.026072072,0.02126262,0.007229569,0.07821424,0.10320244,0.009021552,0.0650905,0.006879877,0.015151082,0.022952529,0.012675275,0.020181743 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv index 283f60ec..c0b34494 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.003893989,0.0049262834,0.016242828,0.008228639,0.040873,0.06588315,0.017734595,0.03817924,0.0072236313,0.006978905,0.020142669,0.020148635,0.020427244,0.038231753,0.007943124,0.24722922,0.0073402775,0.010124343,0.009805043,0.010841479,0.035839595,0.018256433,0.006397891,0.058549624,0.081516184,0.0055939215,0.11330463,0.0059981574,0.018389849,0.022836696,0.013435556,0.017483389 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.005370935,0.0065400284,0.004214182,0.028507866,0.004052519,0.023884999,0.0431287,0.01866619,0.038549002,0.0058642467,0.005612742,0.022007838,0.028794203,0.018062135,0.018920997,0.014034251,0.28207308,0.00724066,0.01554973,0.008246547,0.015637344,0.029362565,0.020395592,0.0072190757,0.08529724,0.08158563,0.008495348,0.07213983,0.0073112454,0.015740085,0.024467451,0.01239826,0.020629534 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv index dd2ce90f..d1eb6c78 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.003755447,0.005919478,0.021355113,0.0037806085,0.03258467,0.05897691,0.010546966,0.025433974,0.003790851,0.0039917994,0.024652747,0.02598865,0.024072263,0.03375422,0.015235061,0.1802716,0.004973748,0.009942133,0.011008963,0.019226586,0.0240091,0.023200186,0.0065351687,0.05277045,0.20373958,0.004230297,0.07716799,0.008635033,0.014409094,0.030130265,0.01123739,0.024673715 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.003818576,0.0031525614,0.0051886565,0.027662326,0.006760011,0.041391376,0.062559254,0.016534436,0.041413,0.006456904,0.0038409191,0.031356983,0.025992455,0.02640143,0.038692255,0.022995137,0.17438106,0.00587134,0.01310105,0.012426717,0.017008489,0.037873317,0.023261664,0.0044478937,0.07316778,0.08910169,0.00722368,0.09950632,0.0060560848,0.021839175,0.01798219,0.013436582,0.01909868 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv index 7b7003a3..57d78954 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004108263,0.0065284492,0.02557481,0.0044105044,0.0301069,0.056982104,0.009312343,0.028644396,0.0036156578,0.0050784764,0.023851369,0.023929859,0.024968062,0.034262866,0.015073786,0.18393585,0.005726918,0.010663445,0.011374998,0.020710837,0.024605207,0.022978598,0.0071213874,0.046844285,0.20492582,0.0045672082,0.06766794,0.009786485,0.015642509,0.027877597,0.012733039,0.026390014 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0038112525,0.0032467076,0.005103138,0.028848037,0.006253271,0.040058028,0.06397161,0.015401709,0.039240718,0.007229387,0.0042264964,0.031109253,0.022743622,0.026395943,0.03867059,0.0224054,0.16184604,0.006153928,0.014256049,0.012480883,0.018035192,0.033755783,0.022141878,0.0048214206,0.06857576,0.11654172,0.0072527346,0.091533765,0.0067206784,0.023300141,0.021024033,0.014561617,0.018283268 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv index fd6efa28..f09487aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004564731,0.006814505,0.024392659,0.004759701,0.032980636,0.049138952,0.009276454,0.02643774,0.0042945277,0.0050275098,0.024946013,0.024413325,0.025301483,0.029949466,0.014343448,0.16849588,0.0060743075,0.011278828,0.012514742,0.020937728,0.026535869,0.027676357,0.00742597,0.047013473,0.20633397,0.0054930253,0.075621,0.0104807485,0.014071454,0.030229164,0.013769736,0.029406633 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0038847511,0.0034304704,0.0054487633,0.030906213,0.0065313987,0.04176309,0.0651858,0.015840625,0.039366536,0.00712093,0.0041720322,0.030338436,0.021227272,0.027650725,0.03322719,0.02358945,0.17575502,0.0062058195,0.015167547,0.013033766,0.018510986,0.03583581,0.021288542,0.0049735317,0.066214904,0.10693726,0.0075933044,0.08376561,0.007044815,0.021833733,0.02074671,0.015919521,0.019489419 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv index ff6923be..9faa7fb9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0041145687,0.005967945,0.019461952,0.004325763,0.0340289,0.056127317,0.01061059,0.025928281,0.0038670604,0.0041770483,0.022350615,0.030672995,0.022840748,0.030872822,0.017933363,0.15256037,0.0054863794,0.010823059,0.011521493,0.021566499,0.01982184,0.023499597,0.008011047,0.048069283,0.23439504,0.004496008,0.0691574,0.0085690105,0.014794546,0.035597444,0.012133661,0.026217332 -0.0041103526,0.006220995,0.024224846,0.004720488,0.03338627,0.055826817,0.008586799,0.028634403,0.0038456598,0.004600682,0.025519812,0.026524976,0.024987198,0.030848276,0.015773777,0.17763434,0.006000569,0.011141409,0.011032916,0.021263443,0.025327949,0.024359219,0.0073631583,0.050158545,0.18946855,0.00479376,0.07836646,0.010019454,0.014274488,0.030027406,0.012687519,0.028269513 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0038600573,0.0032016537,0.0050423536,0.030087678,0.0062640845,0.042983707,0.06558176,0.016441714,0.037939113,0.0068796654,0.0041524945,0.033378396,0.02355689,0.02613971,0.03884025,0.022489678,0.16319337,0.005882346,0.0136809675,0.012107426,0.018530237,0.035350807,0.02193522,0.0048262407,0.069117285,0.106256664,0.007452489,0.08964618,0.0068337126,0.02311564,0.021159057,0.014839026,0.019234167 +0.0038384346,0.0032803454,0.005382596,0.028020917,0.0065062335,0.040472195,0.059231486,0.01510768,0.044317365,0.00677788,0.004063074,0.030269165,0.023738174,0.028254144,0.035682805,0.02283463,0.17437491,0.0062798257,0.014255069,0.013157966,0.018651582,0.03610014,0.021770932,0.0047950475,0.06709478,0.10704565,0.007234076,0.09272612,0.0065334365,0.020849966,0.019035984,0.013944705,0.018372733 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv index ee563925..4062c3bf 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0039387504,0.0065258797,0.024669716,0.004433713,0.030984672,0.056557093,0.008888177,0.028441487,0.003681258,0.0049070055,0.023858456,0.020984871,0.022434939,0.033650003,0.011881462,0.21709673,0.005855772,0.010228604,0.011613099,0.017855505,0.02831009,0.021852583,0.0060879337,0.04023303,0.16921678,0.00440954,0.09614935,0.009410114,0.01360511,0.0240166,0.012136324,0.026085403 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.004071277,0.0036563596,0.005473332,0.026431864,0.0070418348,0.040103372,0.058523994,0.014499132,0.048744615,0.0068927244,0.003979709,0.024812536,0.02332055,0.028595718,0.034942232,0.022658326,0.19808845,0.0063588833,0.014898518,0.014481609,0.017180959,0.036216,0.021954877,0.004474714,0.07242044,0.09361984,0.0072108386,0.08443967,0.0062276307,0.019533861,0.01759654,0.013579895,0.01796969 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv index fcf89d60..717cd470 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004052816,0.006258594,0.023345444,0.00449139,0.030517468,0.05268502,0.00887704,0.026460174,0.004128396,0.004363119,0.022904512,0.023697617,0.024568599,0.032895457,0.012510463,0.19101547,0.005496111,0.010627602,0.011373989,0.01724674,0.027330758,0.024636947,0.0059708157,0.04202071,0.18282118,0.0045206607,0.10554287,0.008928312,0.014136884,0.02655903,0.011113563,0.02890221 -0.0059897667,0.008406405,0.026541125,0.0054274616,0.03536363,0.04665471,0.0095773535,0.02762081,0.005177147,0.0062065427,0.025016924,0.032284416,0.029640928,0.028332105,0.019341344,0.11613233,0.0074259285,0.013591332,0.0128795,0.027375998,0.021657849,0.031640794,0.01288579,0.055171557,0.22059953,0.0076504927,0.040872708,0.011520912,0.017828679,0.04107078,0.014468098,0.03564709 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0042564487,0.0033090666,0.0054760864,0.029484103,0.0063959234,0.032995798,0.058816995,0.013607776,0.048283372,0.0057379017,0.0038245237,0.021225223,0.023702899,0.026598837,0.030306822,0.02262228,0.23025683,0.0063128057,0.014794539,0.013137006,0.019704955,0.031384137,0.019589942,0.004760695,0.06250796,0.106131054,0.006412059,0.074764796,0.005834489,0.019974858,0.01842272,0.012555495,0.016811622 +0.0038192424,0.0033686042,0.0054370016,0.02769945,0.006779793,0.04220823,0.05973473,0.015520086,0.04562838,0.0071383878,0.00422071,0.03299786,0.025394814,0.0281485,0.038514096,0.023156043,0.16337366,0.0063498737,0.014283524,0.012739055,0.01869462,0.036976255,0.023111258,0.004908983,0.07237423,0.09736417,0.0072591524,0.08847638,0.006704482,0.022873966,0.021077238,0.0138563765,0.019810876 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv index 52fec462..887cda4e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004102211,0.0063269846,0.02072375,0.0048008375,0.034570824,0.059226204,0.0096925255,0.028749216,0.0039989166,0.004183866,0.023596365,0.025296958,0.025585536,0.031098658,0.013962489,0.17769668,0.005346446,0.010870259,0.01055643,0.02107274,0.026247509,0.023033429,0.007330994,0.052349277,0.19195877,0.0043321247,0.08064205,0.009575042,0.016013324,0.02888181,0.012639321,0.02553845 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.0038691815,0.0031717422,0.005064685,0.029039107,0.0061659142,0.037487313,0.06612843,0.01513539,0.03811665,0.0066099614,0.0039828895,0.026459182,0.02207245,0.029161863,0.032705896,0.02051133,0.18691592,0.0063597304,0.0139315445,0.013663895,0.017307293,0.030300051,0.019515662,0.004841311,0.059204914,0.1291775,0.0065799546,0.08632184,0.006249234,0.022190582,0.020693045,0.014265866,0.016799755 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv index cffd8dd7..34ba1b0b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038631586,0.006477673,0.024767213,0.003959401,0.030919716,0.063857056,0.009385453,0.025800953,0.0038557237,0.004502775,0.024877692,0.022792442,0.027524808,0.033570554,0.013489485,0.1976561,0.0054532574,0.010784638,0.010051554,0.020462193,0.026673099,0.021765215,0.006219106,0.048690844,0.1782489,0.0051354156,0.07887633,0.009734921,0.015730219,0.027250536,0.012058978,0.025564646 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.004423313,0.004286555,0.00660057,0.023772126,0.008373217,0.040369432,0.054351408,0.01465567,0.05245067,0.008132533,0.0042896164,0.029554067,0.024817849,0.03035214,0.039045297,0.025620734,0.17074145,0.0072791767,0.015768386,0.016019871,0.01698007,0.041483015,0.025339559,0.00460742,0.08207413,0.08653425,0.008505664,0.07673737,0.00643838,0.020246439,0.016483322,0.014442152,0.01922423 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index bc35a828..f2414b5b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02987246,0.0291298,0.034083534,0.026629673,0.032076977,0.030450517,0.035012987,0.029515885,0.035601407,0.02849371,0.034817744,0.030076707,0.029692352,0.030673426,0.029644514,0.038891632,0.030484164,0.032383278,0.02580936,0.035029277,0.03223794,0.033890463,0.03001799,0.031699885,0.033890437,0.025421664,0.032209013,0.029906737,0.028936805,0.03221391,0.02733048,0.033875357 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.029515171,0.029384783,0.02892698,0.031414278,0.030240053,0.03790003,0.031263754,0.030703781,0.02985053,0.03231135,0.030141735,0.028332692,0.033920184,0.027992733,0.031994548,0.032312855,0.032003276,0.029009493,0.025961198,0.028668242,0.031744353,0.028004343,0.0351939,0.028472656,0.033312727,0.029293254,0.025253193,0.03191485,0.031521086,0.030837052,0.027421221,0.028424587,0.026759079 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index 9e8c6ade..ce3129a4 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027755681,0.033875797,0.035090785,0.026336204,0.027495425,0.027336687,0.03491952,0.032417938,0.034913428,0.030351402,0.027904775,0.03262825,0.034914885,0.034497607,0.032371227,0.031979073,0.028421713,0.03136423,0.030974774,0.036030304,0.030301245,0.028893707,0.031219127,0.035561685,0.032045122,0.02882453,0.030305024,0.030230341,0.029906748,0.030945972,0.02952125,0.030665599 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.02660504,0.030707078,0.032001417,0.035039,0.029511122,0.034290012,0.03181159,0.0294397,0.0321122,0.03097334,0.0332632,0.027464185,0.030202633,0.028321788,0.025869891,0.03017357,0.031728413,0.033907395,0.02845779,0.031313535,0.028817244,0.02832817,0.033035055,0.026313312,0.030338703,0.028560834,0.03160956,0.031486206,0.030627396,0.029206958,0.030443136,0.027497737,0.030542677 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index 69d54ab8..db2db85d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.028207576,0.03346115,0.03521835,0.026430761,0.02787494,0.02663613,0.03487845,0.031793576,0.035627346,0.03034215,0.02791883,0.032285154,0.03488344,0.03348667,0.031713963,0.033340506,0.028663984,0.03198072,0.029641826,0.03631048,0.030261524,0.029211927,0.0310106,0.035286736,0.032737605,0.028236382,0.031136692,0.030599257,0.030495808,0.030660555,0.029510591,0.030156327 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.027332451,0.031302933,0.030766888,0.034912553,0.029892711,0.03336584,0.031323344,0.029848998,0.03191401,0.031425472,0.033242542,0.027521798,0.029320594,0.027383283,0.025944008,0.03078899,0.032123405,0.03406133,0.028520554,0.031947363,0.0294212,0.028340716,0.032867085,0.02619513,0.02996483,0.028789517,0.03081592,0.031394005,0.03228332,0.029442273,0.02991017,0.026885256,0.03075153 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index 98cb886d..b2366f0b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.033209767,0.027763555,0.02949299,0.033150658,0.034999833,0.0368729,0.02978079,0.030827697,0.02852166,0.028758308,0.037743535,0.03003544,0.027150638,0.030506711,0.031755105,0.03137323,0.03211672,0.029910667,0.030969618,0.028884642,0.033850152,0.03439652,0.030612124,0.028037883,0.030710937,0.031090267,0.030988533,0.029567717,0.030128382,0.032672625,0.029851323,0.034269065 -0.031579662,0.029196938,0.029836416,0.033177998,0.032533493,0.037377365,0.029789915,0.032062903,0.028400185,0.02797571,0.035992093,0.030920217,0.02906526,0.032699972,0.033772778,0.028461806,0.031120755,0.029319655,0.034247786,0.02993261,0.03364331,0.032858204,0.031222675,0.029189978,0.029043447,0.032523304,0.029388353,0.028918054,0.029303428,0.03236885,0.030073373,0.0340035 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.03185726,0.028593035,0.029586729,0.02717517,0.029036317,0.03239331,0.030127635,0.029756432,0.028826356,0.03008631,0.027377693,0.03182702,0.03495427,0.032569427,0.03616851,0.031138953,0.02905974,0.026557622,0.028117852,0.02744148,0.032749053,0.030639345,0.031042855,0.03220263,0.033083834,0.030625483,0.027325926,0.030158056,0.028103651,0.03071186,0.029626483,0.033320524,0.027759206 +0.031184139,0.0276112,0.032012727,0.027526684,0.029155925,0.032260306,0.030398509,0.029150296,0.029186625,0.029938763,0.02798222,0.03192229,0.034919117,0.034535985,0.03453919,0.0301626,0.02843686,0.026707487,0.02883699,0.027758451,0.03170132,0.030358283,0.030214984,0.032069325,0.033027902,0.029928787,0.02964113,0.029945217,0.026400918,0.029637858,0.030964117,0.033538274,0.028345458 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 457f32d0..5c1cac56 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.028416378,0.031858474,0.035576776,0.026082192,0.029002782,0.027531331,0.035973124,0.031896308,0.035577897,0.030908158,0.029429477,0.031626973,0.033014473,0.03156573,0.03071435,0.035173185,0.029379372,0.031848334,0.027813641,0.03572987,0.030105326,0.031015579,0.030929359,0.034231957,0.032853644,0.02719569,0.032351676,0.03100664,0.029942783,0.03149756,0.028656607,0.031094389 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.027090317,0.031356793,0.031175932,0.034752592,0.028963773,0.035918295,0.032366708,0.029567668,0.031858996,0.031686503,0.031844135,0.027539104,0.03215706,0.02786867,0.028114032,0.030691825,0.03100698,0.032229245,0.026652839,0.030048568,0.02923739,0.02832744,0.035018757,0.0267673,0.031383105,0.028060874,0.028454317,0.03174636,0.030990787,0.030642902,0.030124784,0.02802195,0.028333979 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index 2175edbc..3ebe548e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.030749116,0.031062534,0.029946074,0.03304623,0.03177652,0.036106378,0.029489571,0.0326022,0.027348582,0.029303638,0.032161407,0.03134503,0.031155298,0.032429844,0.034513615,0.027003089,0.031428523,0.028919302,0.037302244,0.029815737,0.032031134,0.030656634,0.032251637,0.029612571,0.028429309,0.03463406,0.02905775,0.029093673,0.030223982,0.032136854,0.032039963,0.032327514 -0.029171862,0.032260604,0.031479053,0.027849672,0.031409796,0.033327498,0.031761337,0.028732147,0.03429961,0.02492806,0.036731984,0.030338226,0.03251292,0.033941925,0.031204814,0.03442956,0.030674377,0.033014756,0.031726107,0.03608367,0.033338442,0.031844705,0.030129898,0.030746242,0.031700723,0.027094038,0.029256253,0.027283229,0.028538387,0.030670708,0.028805278,0.034714192 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.031245146,0.026523279,0.03429213,0.028590597,0.030950105,0.030549498,0.030602774,0.029434195,0.02976708,0.030371303,0.02923278,0.03193279,0.032057486,0.036185876,0.031233333,0.028832216,0.028311577,0.027465537,0.031915396,0.028459525,0.029657632,0.029486306,0.02885231,0.031842597,0.032040454,0.029984664,0.032361843,0.029286683,0.025559865,0.028563855,0.03226416,0.032237228,0.029909858 +0.031189607,0.027768781,0.03171535,0.0286404,0.02989582,0.03686473,0.030307468,0.029793784,0.029219873,0.03136719,0.029169736,0.030565001,0.035063583,0.033113644,0.033308994,0.03176959,0.030947847,0.027378758,0.026388302,0.028127484,0.03166254,0.02842469,0.033268318,0.029070573,0.033865992,0.028430037,0.027634714,0.031596266,0.02863526,0.028753258,0.02869571,0.030206194,0.027160522 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index deba9442..ef108ae3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.028799655,0.031856664,0.03283534,0.030231427,0.03015927,0.035772216,0.030314315,0.03224368,0.02983013,0.02746894,0.033414993,0.03132566,0.032006927,0.034900524,0.034404952,0.0279653,0.029755965,0.029660394,0.036329567,0.032125212,0.032573488,0.032185875,0.032224666,0.03076007,0.02825598,0.031999446,0.028718766,0.026965003,0.029454451,0.031563707,0.030569414,0.033328008 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.03022107,0.026185002,0.035542563,0.030422375,0.030111654,0.032666244,0.03029986,0.028772637,0.029862503,0.031565245,0.030188533,0.031473093,0.03380565,0.034408633,0.031200787,0.029270852,0.029954033,0.026347158,0.029255822,0.028777694,0.031132765,0.028987736,0.03171347,0.029104978,0.032444056,0.027695423,0.03135624,0.030321337,0.025290275,0.027976021,0.03161053,0.03318183,0.028853968 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index a882e828..a93e39ea 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.032289907,0.028264519,0.03246752,0.029104413,0.033277128,0.030759139,0.032730892,0.029931597,0.033015575,0.031707276,0.03496927,0.030008726,0.027751597,0.029273633,0.02851361,0.03743072,0.03143402,0.0318968,0.024980046,0.03104891,0.032157212,0.03514057,0.029877376,0.030226672,0.03398293,0.027080398,0.034191467,0.031496957,0.03116081,0.03200099,0.029164206,0.032665085 +unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.030450879,0.031356543,0.026286202,0.030208621,0.029305283,0.033798173,0.029997792,0.031071521,0.029736698,0.031199083,0.029278152,0.029431423,0.03262524,0.026415547,0.03385641,0.032870974,0.031922586,0.029316304,0.026414368,0.029405521,0.03292572,0.03013779,0.033768725,0.029333936,0.031706,0.030111287,0.025230156,0.03123331,0.033786975,0.032116424,0.027622495,0.029445931,0.027633844 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index 4dbf410d..7b307493 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.0748158,0.0772802,0.08608035,0.08609827,0.07993774,0.07705543,0.09423849,0.086710036,0.086828426,0.08284977,0.088354506,0.079750955 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.069280244,0.08278568,0.072002776,0.068465054,0.073495515,0.069683656,0.08337737,0.08428103,0.079714045,0.08516558,0.07238791,0.07722001,0.08214111 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index 6d89b556..f5c9cd40 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.07326655,0.08353559,0.07533537,0.08782462,0.08211486,0.08560346,0.08289929,0.08048919,0.08408942,0.0929573,0.089654244,0.082230076 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.08120824,0.0770729,0.080374785,0.07006595,0.08169089,0.06985054,0.077308096,0.06746512,0.08158482,0.078970395,0.07628951,0.077936,0.08018279 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index bf13de6f..f76ecc72 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.073459856,0.08505141,0.07544217,0.08925692,0.08299525,0.0825825,0.082352445,0.081173785,0.085358195,0.091914274,0.09012994,0.08028323 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.081267715,0.07711225,0.080673225,0.07033195,0.08024122,0.06911172,0.07555922,0.06642563,0.0804719,0.08202005,0.07461091,0.079976365,0.08219792 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index eb1f1644..a99204aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.088295944,0.07419422,0.09625292,0.075507574,0.07814089,0.08647674,0.09078418,0.089773305,0.08116939,0.07382207,0.078370996,0.08721177 -0.0871225,0.0723557,0.095413424,0.07266789,0.07581121,0.09429607,0.089163,0.08606107,0.07906439,0.076575436,0.0773663,0.09410305 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.06782719,0.078334294,0.07045661,0.0793704,0.073115356,0.08177368,0.08440978,0.09057371,0.076156095,0.07454853,0.078214675,0.071796,0.07342377 +0.07023328,0.0774746,0.07357778,0.07948175,0.07633355,0.08361607,0.08418787,0.08768755,0.07620843,0.06998042,0.0815577,0.06901032,0.0706507 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index e1753ff4..e0a22959 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.07255601,0.0840692,0.07761021,0.089467965,0.08273568,0.07989225,0.08776099,0.08379931,0.08662724,0.08953262,0.08896252,0.07698605 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.075564295,0.077890314,0.07621962,0.06734453,0.07971224,0.06832646,0.07854212,0.07214813,0.08339084,0.082671195,0.07736374,0.0789834,0.08184321 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index 4704ea71..d2469e90 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.08670176,0.07764295,0.09074383,0.07478624,0.07692155,0.09733425,0.08432601,0.08585503,0.08131818,0.07754218,0.07455162,0.09227636 -0.078247,0.06804814,0.09125708,0.07758486,0.07693072,0.08519664,0.09631906,0.07838798,0.0837765,0.080676705,0.08734935,0.09622603 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.07543901,0.07629552,0.079985805,0.07938394,0.08105448,0.08392259,0.08113814,0.08250335,0.07510063,0.06616155,0.08535827,0.06484661,0.068810105 +0.0684685,0.08285618,0.07265628,0.07221835,0.074672826,0.07720729,0.087464236,0.08804019,0.07745041,0.072739474,0.07616589,0.07260381,0.07745654 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index 037661f9..11d4ea08 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.083966985,0.073211156,0.091535,0.07379018,0.071819365,0.09759158,0.086949356,0.0855146,0.08113236,0.08044534,0.07800937,0.096034706 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.07194322,0.077352665,0.08031595,0.07728969,0.08099176,0.080330044,0.08255197,0.079121925,0.07681379,0.069612056,0.08324984,0.06879602,0.07163119 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index fbf283d5..072240da 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,0,1,2,3,4,5,6,7,8,9 -0.081276454,0.08213866,0.08511532,0.08706703,0.08304337,0.07355978,0.0899685,0.08830506,0.08529962,0.08146648,0.087632634,0.07512704 +unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +0.068312116,0.08032282,0.06863922,0.07357371,0.06984851,0.07086958,0.0803648,0.0826013,0.079164565,0.08935935,0.06972866,0.0837885,0.083426945 diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index ac79cf10..fac968d1 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -10,34 +10,36 @@ def test_construct_index_maps_string(): """Tests reversing a string-to-int map, ensuring 0 maps to 'unknown'.""" - id_maps: dict[str, dict[str | int, int]] = {"itemId": {"apple": 2, "banana": 3}} + id_maps: dict[str, dict[str | int, int]] = {"itemId": {"apple": 3, "banana": 4}} target_cols = ["itemId"] result = construct_index_maps(id_maps, target_cols, map_to_id=True) # Check standard reversal - assert result["itemId"][2] == "apple" - assert result["itemId"][3] == "banana" + assert result["itemId"][3] == "apple" + assert result["itemId"][4] == "banana" # Check the special 0 index for strings assert result["itemId"][0] == "unknown" assert result["itemId"][1] == "other" + assert result["itemId"][2] == "mask" def test_construct_index_maps_integer(): """Tests reversing an int-to-int map, ensuring 0 maps to min_id - 1.""" - id_maps: dict[str, dict[str | int, int]] = {"storeId": {100: 2, 101: 3}} + id_maps: dict[str, dict[str | int, int]] = {"storeId": {100: 3, 101: 4}} target_cols = ["storeId"] result = construct_index_maps(id_maps, target_cols, map_to_id=True) - assert result["storeId"][2] == 100 - assert result["storeId"][3] == 101 + assert result["storeId"][3] == 100 + assert result["storeId"][4] == 101 # Check the special 0 index for integers (min value - 2) # Min value is 100, so 2 -> 98, 1 -> 99 - assert result["storeId"][0] == 98 - assert result["storeId"][1] == 99 + assert result["storeId"][0] == 97 + assert result["storeId"][1] == 98 + assert result["storeId"][2] == 99 def test_construct_index_maps_flag_false(): diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 98191bad..359919df 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -198,6 +198,6 @@ def test_create_id_map(): mapping = create_id_map(df, "A") # Sorted unique values: x, y, z -> 2, 3, 4 - assert mapping["x"] == 2 - assert mapping["y"] == 3 - assert mapping["z"] == 4 + assert mapping["x"] == 3 + assert mapping["y"] == 4 + assert mapping["z"] == 5 From 709d9f1d8a844f028ae9d5072080b8f3d9fa0ed9 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 4 Jun 2026 10:38:54 +0200 Subject: [PATCH 03/81] Move training_objective to TrainingSpecModel --- src/sequifier/config/train_config.py | 123 ++++++++++++++------------- src/sequifier/make.py | 2 +- tests/unit/test_train.py | 2 +- 3 files changed, 64 insertions(+), 63 deletions(-) diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index eb095ab3..4ddb8067 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -111,6 +111,27 @@ def __setstate__(self, state): self.update(state) +class ReplacementDistribution(BaseModel): + masked: float = Field(..., gt=0.0, le=1.0) + random: float = Field(..., gt=0.0, le=1.0) + identical: float = Field(..., gt=0.0, le=1.0) + + @model_validator(mode="after") + def validate_sum(self): + total = self.masked + self.random + self.identical + if not math.isclose(total, 1.0, abs_tol=1e-5): + raise ValueError( + f"Replacement distribution probabilities must sum to 1.0, got {total}" + ) + return self + + +class BERTSpecModel(BaseModel): + masking_probability: float = Field(..., gt=0.0, le=1.0) + replacement_distribution: ReplacementDistribution + span_masking: ProbabilityDistribution + + class TrainingSpecModel(BaseModel): """Pydantic model for training specifications. @@ -151,6 +172,7 @@ class TrainingSpecModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") + training_objective: str = "causal" device: str device_max_concat_length: int = 12 epochs: int @@ -176,6 +198,8 @@ class TrainingSpecModel(BaseModel): ) ) scheduler_step_on: str = "epoch" + bert_spec: Optional[BERTSpecModel] = None + continue_training: bool = True enforce_determinism: bool = False distributed: bool = False @@ -293,6 +317,27 @@ def validate_scheduler_step_on(cls, v): ) return v + @field_validator("training_objective") + @classmethod + def validate_training_objective(cls, v): + if v not in ["causal", "bert"]: + raise ValueError(f"Only 'causal' and 'bert' are allowed, found {v}") + return v + + @field_validator("bert_spec") + @classmethod + def validate_bert_spec(cls, v, info): + training_objective = info.data.get("training_objective") + if v and not training_objective == "bert": + raise ValueError( + "The BERT hyperparameters should only be configured if the training objective is 'bert'" + ) + if not v and training_objective == "bert": + raise ValueError( + "If the training_objective is 'bert', the BERT hyperparameters must be set" + ) + return v + @field_validator("sampling_strategy") @classmethod def validate_sampling_strategy(cls, v): @@ -312,27 +357,6 @@ def validate_data_parallelism(cls, v): return v -class ReplacementDistribution(BaseModel): - masked: float = Field(..., gt=0.0, le=1.0) - random: float = Field(..., gt=0.0, le=1.0) - identical: float = Field(..., gt=0.0, le=1.0) - - @model_validator(mode="after") - def validate_sum(self): - total = self.masked + self.random + self.identical - if not math.isclose(total, 1.0, abs_tol=1e-5): - raise ValueError( - f"Replacement distribution probabilities must sum to 1.0, got {total}" - ) - return self - - -class BERTSpecModel(BaseModel): - masking_probability: float = Field(..., gt=0.0, le=1.0) - replacement_distribution: ReplacementDistribution - span_masking: ProbabilityDistribution - - class ModelSpecModel(BaseModel): """Pydantic model for model specifications. @@ -347,7 +371,6 @@ class ModelSpecModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") - training_objective: str = "causal" initial_embedding_dim: int feature_embedding_dims: Optional[dict[str, int]] = None joint_embedding_dim: Optional[int] = None @@ -368,28 +391,6 @@ class ModelSpecModel(BaseModel): rope_theta: float = 10000.0 prediction_length: int - bert_spec: Optional[BERTSpecModel] = None - - @field_validator("training_objective") - @classmethod - def validate_training_objective(cls, v): - if v not in ["causal", "bert"]: - raise ValueError(f"Only 'causal' and 'bert' are allowed, found {v}") - return v - - @field_validator("bert_spec") - @classmethod - def validate_bert_spec(cls, v, info): - training_objective = info.data.get("training_objective") - if v and not training_objective == "bert": - raise ValueError( - "The BERT hyperparameters should only be configured if the training objective is 'bert'" - ) - if not v and training_objective == "bert": - raise ValueError( - "If the training_objective is 'bert', the BERT hyperparameters must be set" - ) - return v @field_validator("dim_model") @classmethod @@ -660,6 +661,23 @@ def validate_training_spec(cls, v, info): "If 'distributed' is True, data_parallelism cannot be 'None'" ) + export_generative_model = info.data.get("export_generative_model") + export_embedding_model = info.data.get("export_embedding_model") + if v.training_objective == "bert": + if export_generative_model: + raise ValueError( + "'training_objective: bert' is incompatible with generative model export" + ) + if not export_embedding_model: + raise ValueError( + "'training_objective: bert' requires embedding model export" + ) + if v.training_objective == "causal": + if not export_generative_model and not export_embedding_model: + warnings.warn( + "At least one of 'export_generative_model' and 'export_embedding_model' should be true" + ) + return v @field_validator("column_types") @@ -713,21 +731,4 @@ def validate_model_spec(cls, v, info): f"initial_embedding_dim ({embedding_size}) must be a multiple of the number of categorical variables ({n_categorical}: {categorical_columns})." ) - export_generative_model = info.data.get("export_generative_model") - export_embedding_model = info.data.get("export_embedding_model") - if v.training_objective == "bert": - if export_generative_model: - raise ValueError( - "'training_objective: bert' is incompatible with generative model export" - ) - if not export_embedding_model: - raise ValueError( - "'training_objective: bert' requires embedding model export" - ) - if v.training_objective == "causal": - if not export_generative_model and not export_embedding_model: - warnings.warn( - "At least one of 'export_generative_model' and 'export_embedding_model' should be true" - ) - return v diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 8943d861..6858053f 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -36,7 +36,6 @@ export_onnx: true model_spec: - training_objective: causal initial_embedding_dim: 128 feature_embedding_dims: # the size of the embedding of individual variables, must sum to dim_model EXAMPLE_INPUT_COLUMN_NAME: # can be left out if either all input variables are real or all are categorical @@ -47,6 +46,7 @@ num_layers: 3 prediction_length: 1 training_spec: + training_objective: causal device: cuda epochs: 10 save_interval_epochs: 10 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index cf140984..e296979b 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -14,7 +14,6 @@ def model_config(tmp_path): (tmp_path / "logs").mkdir(exist_ok=True) model_spec = ModelSpecModel( - training_objective="causal", initial_embedding_dim=16, dim_model=16, n_head=4, @@ -26,6 +25,7 @@ def model_config(tmp_path): ) training_spec = TrainingSpecModel( + training_objective="causal", device="cpu", epochs=1, save_interval_epochs=1, From 7525affd953808b17caf93955cdd9f9f2e031048 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 4 Jun 2026 11:59:21 +0200 Subject: [PATCH 04/81] WIP --- documentation/configs/preprocess.md | 2 +- documentation/consolidated-docs.md | 2 +- src/sequifier/config/probabilities.py | 48 +++++----- src/sequifier/helpers.py | 133 ++++++++++++++++++++++++-- src/sequifier/train.py | 31 ++++-- tests/integration/test_inference.py | 18 ++-- tests/unit/test_helpers.py | 8 +- 7 files changed, 191 insertions(+), 51 deletions(-) diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index 9b42f592..f58c542c 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -116,7 +116,7 @@ After running `preprocess`, the following are generated: ## 5\. Advanced: Custom ID Mapping -By default, Sequifier automatically generates integer IDs for categorical columns starting from index 2 (indices 0 and 1 are reserved for system use, such as "unknown" values). +By default, Sequifier automatically generates integer IDs for categorical columns starting from index 2 (indices 0 and 1 are reserved for system use, such as "[unknown]" values). If you need to enforce specific integer mappings (e.g., to maintain consistency across different training runs or datasets), you can provide **precomputed ID maps**. diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 0b776e6a..65315961 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -324,7 +324,7 @@ After running `preprocess`, the following are generated: ## 5\. Advanced: Custom ID Mapping -By default, Sequifier automatically generates integer IDs for categorical columns starting from index 2 (indices 0 and 1 are reserved for system use, such as "unknown" values). +By default, Sequifier automatically generates integer IDs for categorical columns starting from index 2 (indices 0 and 1 are reserved for system use, such as "[unknown]" values). If you need to enforce specific integer mappings (e.g., to maintain consistency across different training runs or datasets), you can provide **precomputed ID maps**. diff --git a/src/sequifier/config/probabilities.py b/src/sequifier/config/probabilities.py index 2591cc97..d18a8de4 100644 --- a/src/sequifier/config/probabilities.py +++ b/src/sequifier/config/probabilities.py @@ -1,12 +1,9 @@ -import math -import random from abc import ABC, abstractmethod from typing import Annotated, Literal, Union +import torch from pydantic import BaseModel, Field -epsilon = 1e-20 - class ProbabilityDistributionBaseClass(ABC): """ @@ -14,7 +11,7 @@ class ProbabilityDistributionBaseClass(ABC): """ @abstractmethod - def sample(self) -> Union[int, float]: + def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: pass @@ -22,10 +19,14 @@ class GeometricDistribution(BaseModel, ProbabilityDistributionBaseClass): type: Literal["GeometricDistribution"] = "GeometricDistribution" p: float = Field(..., gt=0.0, le=1.0) - def sample(self) -> int: + def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: if self.p == 1.0: - return 1 - return math.ceil(math.log(random.random() + epsilon) / math.log(1.0 - self.p)) + return torch.ones(shape, device=device, dtype=torch.long) + + # torch.distributions.Geometric models the number of failures before the first success. + # Adding 1 converts it to the total number of trials (span length). + m = torch.distributions.Geometric(probs=torch.tensor([self.p], device=device)) + return (m.sample(shape).squeeze(-1) + 1).long() class NormalDistributionDiscretizedFloor(BaseModel, ProbabilityDistributionBaseClass): @@ -35,9 +36,11 @@ class NormalDistributionDiscretizedFloor(BaseModel, ProbabilityDistributionBaseC mean: float standard_deviation: float = Field(..., gt=0.0) - def sample(self) -> int: - val = random.gauss(self.mean, self.standard_deviation) - return max(round(val), 0) + 1 + def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: + val = torch.normal( + mean=self.mean, std=self.standard_deviation, size=shape, device=device + ) + return torch.clamp(torch.round(val), min=0).long() + 1 class LogNormalDistributionDistcretizedFloor( @@ -49,25 +52,22 @@ class LogNormalDistributionDistcretizedFloor( mean: float standard_deviation: float = Field(..., gt=0.0) - def sample(self) -> int: - val = random.lognormvariate(self.mean, self.standard_deviation) - return round(val) + 1 + def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: + m = torch.distributions.LogNormal( + loc=torch.tensor([self.mean], device=device), + scale=torch.tensor([self.standard_deviation], device=device), + ) + val = m.sample(shape).squeeze(-1) + return torch.round(val).long() + 1 class PoissonDistributionFloor(BaseModel, ProbabilityDistributionBaseClass): type: Literal["PoissonDistributionFloor"] = "PoissonDistributionFloor" rate: float = Field(..., gt=0.0) - def sample(self) -> int: - L = math.exp(-self.rate) - k = 0 - p = 1.0 - - while p > L: - k += 1 - p *= random.random() - - return k + def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: + m = torch.distributions.Poisson(rate=torch.tensor([self.rate], device=device)) + return m.sample(shape).squeeze(-1).long() ProbabilityDistribution = Annotated[ diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 84e39b0c..c57606eb 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -4,7 +4,7 @@ import re import sys from datetime import datetime -from typing import Any, Optional, Union +from typing import Any, Dict, Optional, Union import numpy as np import polars as pl @@ -84,9 +84,9 @@ def construct_index_maps( operation if `map_to_id` is True and `id_maps` is provided. A special mapping for these indices are added: - - If original IDs are strings, 0 maps to "unknown". - - If original IDs are strings, 1 maps to "other". - - If original IDs are strings, 2 maps to "unknown". + - If original IDs are strings, 0 maps to "[unknown]". + - If original IDs are strings, 1 maps to "[other]". + - If original IDs are strings, 2 maps to "[unknown]". - If original IDs are integers, 0 maps to (minimum original ID) - 3. - If original IDs are integers, 1 maps to (minimum original ID) - 2. - If original IDs are integers, 2 maps to (minimum original ID) - 1. @@ -120,9 +120,9 @@ def construct_index_maps( map_ = {v: k for k, v in id_maps[target_column].items()} val = next(iter(map_.values())) if isinstance(val, str): - map_[0] = "unknown" - map_[1] = "other" - map_[2] = "mask" + map_[0] = "[unknown]" + map_[1] = "[other]" + map_[2] = "[mask]" else: if not isinstance(val, int): raise TypeError(f"Expected integer ID in map, got {type(val)}") @@ -511,3 +511,122 @@ def get_last_training_batch_timedelta( t1, t2 = timestamps[-2], timestamps[-1] return (t2 - t1).total_seconds() + + +def apply_bert_masking( + data_batch: Dict[str, torch.Tensor], + targets_batch: Dict[str, torch.Tensor], + config: Any, # TrainConfig +) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: + """ + Applies BERT-style span corruption to the input data using custom distributions. + Explicitly passes the boolean prediction mask via the targets dictionary. + """ + batch_size, seq_len = config.training_spec.batch_size, config.seq_length + + # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) + if len(config.categorical_columns): + ref_col = config.categorical_columns[0] + valid_mask = data_batch[ref_col] != 0 + else: + ref_col = list(data_batch.keys())[0] + valid_mask = (data_batch[ref_col] != 0.0).long().cumsum(dim=1) > 0 + + device = valid_mask.device + + # Calculate exact number of tokens to mask per sequence based on valid length + masking_prob = config.training_spec.bert_spec.masking_probability + budgets = (valid_mask.sum(dim=1) * masking_prob).long() + + bert_mask = torch.zeros((batch_size, seq_len), dtype=torch.bool, device=device) + + # 2. Pre-sample lengths and start positions to avoid massive GPU-CPU sync overhead + # We sample more spans than needed to account for overlaps + max_spans = int(seq_len * masking_prob) + 10 + + sampled_lengths = config.training_spec.bert_spec.span_masking.sample( + (batch_size, max_spans), device=device + ) + sampled_starts_pct = torch.rand((batch_size, max_spans), device=device) + + # 3. Span Masking Loop + for i in range(batch_size): + budget = budgets[i].item() + valid_len = valid_mask[i].sum().item() + + if budget == 0 or valid_len == 0: + continue + + current_masked = 0 + span_idx = 0 + + # Apply spans until budget is hit + while current_masked < budget and span_idx < max_spans: + span_len = sampled_lengths[i, span_idx].item() + start_idx = int(sampled_starts_pct[i, span_idx].item() * valid_len) + end_idx = min(start_idx + span_len, valid_len) + + span_view = bert_mask[i, start_idx:end_idx] + newly_masked = (~span_view).sum().item() + + # Truncate the span if adding it exceeds our exact masking budget + if current_masked + newly_masked > budget: + allowance = budget - current_masked + unmasked_indices = (~span_view).nonzero(as_tuple=True)[0] + if len(unmasked_indices) > allowance: + end_idx = start_idx + unmasked_indices[allowance - 1].item() + 1 + + bert_mask[i, start_idx:end_idx] = True + current_masked = bert_mask[i].sum().item() + span_idx += 1 + + # Fallback: if heavy overlaps exhausted our max_spans, uniformly mask the remainder + if current_masked < budget: + remaining = budget - current_masked + unmasked_valid = (valid_mask[i] & ~bert_mask[i]).nonzero(as_tuple=True)[0] + if len(unmasked_valid) > 0: + idx = torch.randperm(len(unmasked_valid), device=device)[:remaining] + bert_mask[i, unmasked_valid[idx]] = True + + # 4. Create the replacement split masks (e.g., 80% Mask, 10% Random, 10% Identical) + replacement_probs = torch.rand((batch_size, seq_len), device=device) + + p_masked = config.training_spec.bert_spec.replacement_distribution.masked + p_random = config.training_spec.bert_spec.replacement_distribution.random + + mask_token_mask = bert_mask & (replacement_probs < p_masked) + random_token_mask = ( + bert_mask + & (replacement_probs >= p_masked) + & (replacement_probs < (p_masked + p_random)) + ) + + # 5. Apply corruption to data_batch + for col, tensor in data_batch.items(): + if col in config.categorical_columns: + mask_id = 2 + + random_tokens = torch.randint( + low=3, + high=config.n_classes[col], + size=(batch_size, seq_len), + device=device, + dtype=tensor.dtype, + ) + + tensor[mask_token_mask] = mask_id + tensor[random_token_mask] = random_tokens[random_token_mask] + + elif col in config.real_columns: + mask_val = 0.0 + random_noise = torch.randn( + (batch_size, seq_len), device=device, dtype=tensor.dtype + ) + + tensor[mask_token_mask] = mask_val + tensor[random_token_mask] = random_noise[random_token_mask] + + # 6. Append the explicit prediction mask + targets_batch["_bert_mask"] = bert_mask + + return data_batch, targets_batch diff --git a/src/sequifier/train.py b/src/sequifier/train.py index e958f78c..5e148c51 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -54,13 +54,14 @@ from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 -from sequifier.helpers import normalize_path # noqa: E402 from sequifier.helpers import ( # noqa: E402 + apply_bert_masking, conditional_beartype, configure_determinism, configure_logger, construct_index_maps, get_torch_dtype, + normalize_path, ) from sequifier.io.sequifier_dataset_from_file import ( # noqa: E402 SequifierDatasetFromFile, @@ -709,11 +710,20 @@ def __init__( self.batch_size = hparams.training_spec.batch_size self.accumulation_steps = hparams.training_spec.accumulation_steps - self.register_buffer( - "src_mask", - self._generate_square_subsequent_mask(self.seq_length), - persistent=False, # Optional: prevents the mask from being saved in your checkpoints - ) + if hparams.training_spec.training_objective == "causal": + self.register_buffer( + "src_mask", + self._generate_square_subsequent_mask(self.seq_length), + persistent=False, # Optional: prevents the mask from being saved in your checkpoints + ) + elif hparams.training_spec.training_objective == "bert": + self.register_buffer( + "src_mask", + torch.zeros(self.seq_length, self.seq_length), + persistent=False, + ) + else: + pass self._init_weights() @@ -1432,6 +1442,8 @@ def _train_epoch( for k, v in targets.items() if k in self.target_column_types } + if self.hparams.training_spec.training_objective == "bert": + data, targets = apply_bert_masking(data, targets, self.hparams) # Only use standard torch.autocast if FSDP MixedPrecision is NOT handling it natively if ( @@ -1613,10 +1625,13 @@ def _calculate_loss( else: seq_mask_2d = targets[mask_col] != 0 + if "_bert_mask" in targets: + seq_mask_2d = seq_mask_2d & targets["_bert_mask"] + mask = seq_mask_2d.T.contiguous().reshape(-1) losses = {} - for target_column in targets.keys(): + for target_column in [k for k in targets.keys() if k != "_bert_mask"]: target_column_type = self.target_column_types[target_column] if target_column_type == "categorical": output[target_column] = ( @@ -1755,6 +1770,8 @@ def _evaluate( for k, v in targets.items() if k in self.target_column_types } + if self.hparams.training_spec.training_objective == "bert": + data, targets = apply_bert_masking(data, targets, self.hparams) if ( self.hparams.training_spec.layer_autocast diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 540c8e1f..52bd0c7c 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -26,7 +26,11 @@ def test_predictions_real(predictions): def test_predictions_cat(predictions): - valid_values = [str(x) for x in np.arange(100, 130)] + ["unknown", "other", "mask"] + valid_values = [str(x) for x in np.arange(100, 130)] + [ + "[unknown]", + "[other]", + "[mask]", + ] for model_name, model_predictions in predictions.items(): if "categorical" in model_name or "multitarget" in model_name: assert np.all( @@ -40,9 +44,9 @@ def test_predictions_cat(predictions): if "multitarget" in model_name: admssible_vals = [str(x) for x in np.arange(0, 10)] + [ - "unknown", - "other", - "mask", + "[unknown]", + "[other]", + "[mask]", ] assert np.all( [ @@ -103,9 +107,9 @@ def test_multi_pred(predictions): assert preds.shape[1] == 5, f"{model_name} should have 5 columns" admssible_vals = [str(x) for x in np.arange(0, 10)] + [ - "unknown", - "other", - "mask", + "[unknown]", + "[other]", + "[mask]", ] assert np.all( diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index fac968d1..6ad3b56c 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -9,7 +9,7 @@ def test_construct_index_maps_string(): - """Tests reversing a string-to-int map, ensuring 0 maps to 'unknown'.""" + """Tests reversing a string-to-int map, ensuring 0 maps to '[unknown]'.""" id_maps: dict[str, dict[str | int, int]] = {"itemId": {"apple": 3, "banana": 4}} target_cols = ["itemId"] @@ -20,9 +20,9 @@ def test_construct_index_maps_string(): assert result["itemId"][4] == "banana" # Check the special 0 index for strings - assert result["itemId"][0] == "unknown" - assert result["itemId"][1] == "other" - assert result["itemId"][2] == "mask" + assert result["itemId"][0] == "[unknown]" + assert result["itemId"][1] == "[other]" + assert result["itemId"][2] == "[mask]" def test_construct_index_maps_integer(): From 3a179be8d5bb2ce63f3607a50569b72006f6aa00 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 4 Jun 2026 13:37:46 +0200 Subject: [PATCH 05/81] Add curly brackets --- src/sequifier/config/infer_config.py | 16 +- src/sequifier/helpers.py | 4 +- src/sequifier/infer.py | 9 +- src/sequifier/make.py | 1 + ...cal-multitarget-5-best-3-2-predictions.csv | 2 +- ...cal-multitarget-5-last-3-6-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-1-predictions.csv | 58 +-- ...custom-eval-run-3-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-7-predictions.csv | 60 +-- ...l-categorical-1-best-3-0-probabilities.csv | 2 +- ...l-categorical-1-best-3-1-probabilities.csv | 2 +- ...l-categorical-1-best-3-2-probabilities.csv | 2 +- ...l-categorical-1-best-3-3-probabilities.csv | 2 +- ...l-categorical-1-best-3-4-probabilities.csv | 2 +- ...l-categorical-1-best-3-5-probabilities.csv | 2 +- ...l-categorical-1-best-3-6-probabilities.csv | 2 +- ...l-categorical-1-best-3-7-probabilities.csv | 2 +- ...l-categorical-3-best-3-0-probabilities.csv | 2 +- ...l-categorical-3-best-3-1-probabilities.csv | 2 +- ...l-categorical-3-best-3-2-probabilities.csv | 2 +- ...l-categorical-3-best-3-3-probabilities.csv | 2 +- ...l-categorical-3-best-3-4-probabilities.csv | 2 +- ...l-categorical-3-best-3-5-probabilities.csv | 2 +- ...l-categorical-3-best-3-6-probabilities.csv | 2 +- ...l-categorical-3-best-3-7-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 2 +- ...l-categorical-5-best-3-0-probabilities.csv | 2 +- ...l-categorical-5-best-3-1-probabilities.csv | 2 +- ...l-categorical-5-best-3-2-probabilities.csv | 2 +- ...l-categorical-5-best-3-3-probabilities.csv | 2 +- ...l-categorical-5-best-3-4-probabilities.csv | 2 +- ...l-categorical-5-best-3-5-probabilities.csv | 2 +- ...l-categorical-5-best-3-6-probabilities.csv | 2 +- ...l-categorical-5-best-3-7-probabilities.csv | 2 +- ...-categorical-50-best-3-0-probabilities.csv | 2 +- ...-categorical-50-best-3-1-probabilities.csv | 2 +- ...-categorical-50-best-3-2-probabilities.csv | 2 +- ...-categorical-50-best-3-3-probabilities.csv | 2 +- ...-categorical-50-best-3-4-probabilities.csv | 2 +- ...-categorical-50-best-3-5-probabilities.csv | 2 +- ...-categorical-50-best-3-6-probabilities.csv | 2 +- ...-categorical-50-best-3-7-probabilities.csv | 2 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 2 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 2 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 2 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 2 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- tests/unit/test_infer.py | 2 + 112 files changed, 1500 insertions(+), 1478 deletions(-) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 8377fb9e..be60da2c 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -111,6 +111,7 @@ class InfererModel(BaseModel): metadata_config_path: str model_path: Union[str, list[str]] model_type: str + training_objective: str = "causal" data_path: str training_config_path: str = Field(default="configs/train.yaml") read_format: str = Field(default="parquet") @@ -129,7 +130,7 @@ class InfererModel(BaseModel): seed: int device: str seq_length: int - prediction_length: int = Field(default=1) + prediction_length: Optional[int] = None inference_batch_size: int sample_from_distribution_columns: Optional[list[str]] = Field(default=None) @@ -137,6 +138,13 @@ class InfererModel(BaseModel): autoregression: bool = Field(default=False) autoregression_total_steps: Optional[int] = Field(default=None) + @field_validator("training_objective") + @classmethod + def validate_training_objective(cls, v): + if v not in ["causal", "bert"]: + raise ValueError(f"Only 'causal' and 'bert' are allowed, found {v}") + return v + @field_validator("model_type") @classmethod def validate_model_type(cls, v: str) -> str: @@ -197,7 +205,11 @@ def validate_autoregression_total_steps( def validate_autoregression(cls, v: bool, info: ValidationInfo): if v and info.data.get("model_type") == "embedding": raise ValueError("Autoregression is not possible for embedding models") - if v and info.data.get("prediction_length") > 1: + if ( + v + and info.data.get("prediction_length") is not None + and info.data.get("prediction_length") > 1 + ): raise ValueError( "Autoregressive inference is not possible for models with prediction_length > 1" ) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index c57606eb..d3e57f9e 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -515,13 +515,13 @@ def get_last_training_batch_timedelta( def apply_bert_masking( data_batch: Dict[str, torch.Tensor], - targets_batch: Dict[str, torch.Tensor], config: Any, # TrainConfig ) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: """ Applies BERT-style span corruption to the input data using custom distributions. Explicitly passes the boolean prediction mask via the targets dictionary. """ + targets_batch = {k: tensor.clone().detach() for k, tensor in data_batch.items()} batch_size, seq_len = config.training_spec.batch_size, config.seq_length # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) @@ -554,7 +554,7 @@ def apply_bert_masking( budget = budgets[i].item() valid_len = valid_mask[i].sum().item() - if budget == 0 or valid_len == 0: + if budget < 1 or valid_len < 1: continue current_masked = 0 diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index dc08ec9b..d87b77d4 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -213,6 +213,13 @@ def infer_worker( f"Unsupported input type or read format: {config.read_format}" ) + default_prediction_length = {"causal": 1, "bert": config.seq_length} + prediction_length = ( + config.prediction_length + if config.prediction_length is not None + else default_prediction_length[config.training_objective] + ) + inferer = Inferer( config.model_type, model_path, @@ -227,7 +234,7 @@ def infer_worker( config.target_column_types, config.sample_from_distribution_columns, config.infer_with_dropout, - config.prediction_length, + prediction_length, config.inference_batch_size, config.device, args_config=args_config, diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 6858053f..9ebf9383 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -82,6 +82,7 @@ target_column_types: EXAMPLE_TARGET_COLUMN_NAME: real +training_objective: causal output_probabilities: false map_to_id: true device: cpu diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv index 741217c7..6c270219 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,mask,9,-0.12064132 +2,8,[mask],9,-0.12064132 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv index ded1b8f0..edf48cd7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,mask,7,-0.03440542 +8,8,[mask],7,-0.03440542 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 08aef492..314cd804 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.22103521 -0,22,0.22123677 -0,23,0.31408396 -0,24,0.17531237 -0,25,0.18030415 -0,26,0.23421541 -0,27,-0.01312744 -0,28,0.17032059 -0,29,0.092947945 -0,30,-0.12020119 -0,31,0.013141819 -0,32,-0.08226364 -0,33,-0.096739806 -0,34,-0.10522584 -0,35,0.056258347 -0,36,0.14336495 -0,37,-0.044076495 -0,38,0.014576957 -0,39,-0.008042061 -0,40,-0.053061705 -1,19,0.17930579 -1,20,0.2741497 -1,21,0.30809382 -1,22,-0.013938604 -1,23,0.25418255 -1,24,0.053762455 -1,25,0.017072849 -1,26,-0.13018475 -1,27,-0.06404363 -1,28,0.014452162 -1,29,0.053762455 -1,30,0.038537517 -1,31,0.10343069 -1,32,-0.03608964 -1,33,-0.19008616 -1,34,0.084961094 -1,35,0.053512864 -1,36,-0.0055773673 -1,37,-0.0017945322 -1,38,-0.14016832 -2,17,0.43189004 -2,18,-0.035340875 -2,19,0.018819973 -2,20,0.114911795 -2,21,0.036041625 -2,22,-0.04806992 -2,23,0.029552305 -2,24,0.13837317 -2,25,-0.13717325 -2,26,0.12938796 -2,27,0.033046555 -2,28,0.026307646 -2,29,-0.083262 -2,30,0.28413326 -2,31,-0.034342516 -2,32,0.19128607 -2,33,-0.009321204 -2,34,-0.08575789 -2,35,0.17730908 -2,36,0.03778875 -3,17,0.059503004 -3,18,0.22423184 -3,19,0.5217421 -3,20,0.15235017 -3,21,0.15933867 -3,22,0.11441261 -3,23,0.0342945 -3,24,0.067489855 -3,25,0.2481924 -3,26,-0.11620776 -3,27,-0.10372831 -3,28,0.069486566 -3,29,0.042031765 -3,30,0.09594302 -3,31,0.01657367 -3,32,-0.1661256 -3,33,-0.021613471 -3,34,0.16033702 -3,35,0.06599232 -3,36,-0.02435895 -4,14,0.07847178 -4,15,0.13637646 -4,16,-0.03272019 -4,17,0.069486566 -4,18,0.062248483 -4,19,-0.098736525 -4,20,0.052264918 -4,21,0.16333209 -4,22,-0.1521486 -4,23,-0.15714039 -4,24,0.15534523 -4,25,-0.013751412 -4,26,0.04602519 -4,27,0.047522724 -4,28,-0.16512723 -4,29,-0.27694318 -4,30,-0.16113381 -4,31,-0.0625461 -4,32,0.04377889 -4,33,-0.08725542 -5,14,0.06798903 -5,15,0.42190647 -5,16,0.22622855 -5,17,0.18729265 -5,18,0.34203795 -5,19,0.41591632 -5,20,-0.03633923 -5,21,0.04677396 -5,22,-0.016871277 -5,23,0.033795323 -5,24,-0.19507794 -5,25,0.17830744 -5,26,-0.025107719 -5,27,0.07198246 -5,28,0.008586817 -5,29,0.07647506 -5,30,-0.1661256 -5,31,0.28213653 -5,32,-0.17411245 -5,33,-0.080766104 -6,18,0.45385388 -6,19,0.18529594 -6,20,0.36000836 -6,21,0.073479995 -6,22,0.22822526 -6,23,-0.06678911 -6,24,0.22722691 -6,25,0.06798903 -6,26,-0.029101145 -6,27,-0.019616757 -6,28,0.069486566 -6,29,0.045526013 -6,30,-0.21804014 -6,31,0.041532584 -6,32,0.06449478 -6,33,0.04951944 -6,34,-0.10522584 -6,35,-0.0037522472 -6,36,-0.16912067 -6,37,-0.06579076 -7,15,0.20526306 -7,16,0.2781431 -7,17,0.02693162 -7,18,0.042031765 -7,19,-0.023610184 -7,20,0.11591015 -7,21,-0.055557594 -7,22,0.07198246 -7,23,-0.18010259 -7,24,-0.1177053 -7,25,-0.08026692 -7,26,-0.0762735 -7,27,-0.07976775 -7,28,-0.16013545 -7,29,-0.01774484 -7,30,-0.08575789 -7,31,-0.0047038053 -7,32,-0.046821974 -7,33,-0.065291576 -7,34,0.2322187 -8,20,0.11291508 -8,21,0.025683673 -8,22,0.009335584 -8,23,0.08296438 -8,24,-0.038835123 -8,25,0.02693162 -8,26,0.08995288 -8,27,0.08795616 -8,28,-0.10722256 -8,29,-0.04282855 -8,30,-0.15614203 -8,31,-0.05156417 -8,32,-0.1431634 -8,33,-0.015685728 -8,34,-0.22802371 -8,35,-0.007917265 -8,36,-0.071281716 -8,37,-0.063294865 -8,38,-0.31687742 -8,39,0.062498074 -9,16,0.43987688 -9,17,0.43388674 -9,18,0.34203795 -9,19,0.22423184 -9,20,0.11740769 -9,21,0.15135181 -9,22,0.42789662 -9,23,-0.12269708 -9,24,-0.13916996 -9,25,0.13038632 -9,26,0.022439014 -9,27,0.1653288 -9,28,-0.047570743 -9,29,-0.082762815 -9,30,0.026557237 -9,31,0.10992001 -9,32,0.07597589 -9,33,-0.11371187 -9,34,-0.14615846 -9,35,0.09843891 +0,21,0.045526013 +0,22,0.20925649 +0,23,0.28213653 +0,24,0.33005765 +0,25,0.3220708 +0,26,0.13737482 +0,27,0.20725977 +0,28,0.09843891 +0,29,-0.060299788 +0,30,-0.003611853 +0,31,0.045026835 +0,32,0.029302716 +0,33,-0.05430965 +0,34,-0.06728829 +0,35,0.009834763 +0,36,0.23521377 +0,37,0.08845534 +0,38,0.040534228 +0,39,0.050268207 +0,40,-0.2969103 +1,19,0.25617927 +1,20,0.21324992 +1,21,0.38596562 +1,22,0.37797877 +1,23,0.07298081 +1,24,-0.05381047 +1,25,0.03778875 +1,26,0.098938085 +1,27,-0.020615114 +1,28,-0.037088 +1,29,0.020941481 +1,30,-0.024234157 +1,31,0.1423666 +1,32,0.09594302 +1,33,0.07198246 +1,34,-0.112713516 +1,35,0.042281352 +1,36,-0.053560883 +1,37,-0.032595392 +1,38,0.102931514 +2,17,0.38596562 +2,18,-0.12868722 +2,19,0.10043562 +2,20,0.014514559 +2,21,0.15434688 +2,22,0.08995288 +2,23,0.14536166 +2,24,0.06599232 +2,25,0.15235017 +2,26,0.0074636657 +2,27,0.047772314 +2,28,0.24220227 +2,29,-0.00005520758 +2,30,0.07148328 +2,31,-0.028352378 +2,32,-0.10422748 +2,33,-0.070782535 +2,34,0.0664915 +2,35,-0.12369544 +2,36,-0.27095303 +3,17,0.13038632 +3,18,0.14036989 +3,19,0.37398535 +3,20,-0.042578958 +3,21,0.34603137 +3,22,0.26216942 +3,23,-0.1177053 +3,24,0.25617927 +3,25,-0.029849913 +3,26,-0.0600502 +3,27,0.10343069 +3,28,0.07048492 +3,29,-0.07228007 +3,30,-0.015623331 +3,31,-0.0010243154 +3,32,0.12589371 +3,33,0.19228444 +3,34,0.086957805 +3,35,0.003563835 +3,36,-0.004672607 +4,14,0.13038632 +4,15,0.04877067 +4,16,0.0894537 +4,17,0.054261632 +4,18,0.18928936 +4,19,0.053263277 +4,20,-0.10322913 +4,21,-0.14116667 +4,22,-0.25897273 +4,23,-0.039583888 +4,24,-0.068785824 +4,25,-0.112713516 +4,26,0.09943727 +4,27,-0.0018198809 +4,28,0.14036989 +4,29,-0.15813874 +4,30,0.09494466 +4,31,-0.07976775 +4,32,0.24719404 +4,33,0.0709841 +5,14,0.23321705 +5,15,0.37198862 +5,16,0.21524663 +5,17,0.26416612 +5,18,0.40193933 +5,19,0.07697424 +5,20,0.18729265 +5,21,0.22722691 +5,22,-0.043577317 +5,23,0.0550104 +5,24,-0.08925214 +5,25,0.00047516936 +5,26,-0.09324556 +5,27,-0.14216504 +5,28,-0.09973488 +5,29,-0.09374474 +5,30,-0.043826904 +5,31,-0.14216504 +5,32,0.04278053 +5,33,-0.17211573 +6,18,0.4438703 +6,19,0.022938194 +6,20,0.23022199 +6,21,0.4119229 +6,22,0.19927293 +6,23,0.12539454 +6,24,-0.11371187 +6,25,-0.021613471 +6,26,0.16033702 +6,27,0.23022199 +6,28,-0.1501519 +6,29,-0.058802254 +6,30,-0.028976351 +6,31,-0.1591371 +6,32,-0.106224194 +6,33,-0.022861416 +6,34,-0.03384334 +6,35,0.09344713 +6,36,-0.021987854 +6,37,-0.14016832 +7,15,0.12339783 +7,16,0.3041004 +7,17,-0.0067005185 +7,18,0.00015538326 +7,19,-0.09374474 +7,20,0.07198246 +7,21,0.034544088 +7,22,0.23321705 +7,23,-0.06778747 +7,24,0.0054045552 +7,25,0.020067917 +7,26,-0.032221008 +7,27,0.033545732 +7,28,-0.04806992 +7,29,-0.034342516 +7,30,-0.13417818 +7,31,-0.094743095 +7,32,-0.118204474 +7,33,0.16233373 +7,34,-0.09524228 +8,20,0.18329921 +8,21,0.116409324 +8,22,0.2921201 +8,23,0.0100843515 +8,24,-0.052812114 +8,25,0.07198246 +8,26,0.08595945 +8,27,-0.26096946 +8,28,-0.00040619232 +8,29,0.09993644 +8,30,-0.312884 +8,31,-0.12070037 +8,32,-0.13417818 +8,33,-0.18709108 +8,34,0.06898739 +8,35,0.010333941 +8,36,-0.00027359813 +8,37,0.011956271 +8,38,-0.12519297 +8,39,0.086957805 +9,16,0.25817597 +9,17,0.3939525 +9,18,0.12489536 +9,19,0.20126964 +9,20,0.40393606 +9,21,0.27215296 +9,22,0.14835674 +9,23,-0.006326135 +9,24,-0.14715682 +9,25,-0.058053486 +9,26,-0.058552664 +9,27,0.22023842 +9,28,-0.00056998525 +9,29,0.024810111 +9,30,0.10992001 +9,31,0.010833119 +9,32,0.038287926 +9,33,0.020567097 +9,34,0.12739125 +9,35,-0.18709108 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index 39c6e464..923104fa 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,6,3,8,1 -0,9,121,6,3,8,1 -0,10,104,6,3,8,1 -0,11,121,6,3,8,1 -0,12,121,6,3,8,1 -0,13,104,6,3,8,0 -0,14,104,3,3,0,0 -0,15,104,3,3,0,0 -0,16,104,3,3,0,0 -0,17,104,3,3,0,0 -0,18,104,3,3,0,0 -0,19,104,3,3,0,0 -0,20,104,3,3,0,1 -0,21,103,6,3,0,1 -0,22,113,6,3,8,1 -0,23,113,6,3,8,1 -0,24,113,6,3,8,1 -0,25,104,6,3,8,1 -0,26,104,6,3,8,1 -0,27,104,6,3,8,1 -0,28,104,6,3,8,1 -0,29,104,6,3,8,1 -0,30,104,9,3,0,0 -0,31,104,3,3,0,1 -0,32,104,9,3,0,1 -0,33,104,9,3,0,1 -0,34,104,3,3,8,1 -0,35,104,6,3,8,0 -0,36,121,6,3,8,0 -0,37,121,6,3,8,0 +0,8,121,4,9,8,1 +0,9,121,4,3,8,0 +0,10,121,4,3,6,1 +0,11,121,6,3,6,1 +0,12,121,6,3,6,1 +0,13,121,6,3,6,1 +0,14,121,4,3,6,1 +0,15,121,4,3,6,1 +0,16,121,4,3,6,1 +0,17,121,4,3,6,1 +0,18,121,4,3,8,1 +0,19,121,4,5,6,1 +0,20,121,4,3,8,1 +0,21,121,4,3,6,1 +0,22,121,4,3,6,0 +0,23,121,4,3,8,0 +0,24,121,4,3,6,0 +0,25,121,4,3,6,0 +0,26,121,4,3,6,0 +0,27,121,4,3,6,0 +0,28,121,4,3,6,0 +0,29,121,4,3,6,0 +0,30,121,4,3,6,0 +0,31,121,4,3,6,0 +0,32,121,4,3,6,1 +0,33,121,4,3,6,0 +0,34,121,4,3,6,1 +0,35,121,4,3,6,0 +0,36,121,4,3,6,1 +0,37,121,4,3,6,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index b1f5c970..aa4c0f4a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,6,3,8,1 -1,9,121,6,3,8,0 -1,10,121,6,3,8,0 -1,11,121,6,3,8,0 -1,12,121,6,3,8,0 -1,13,104,3,3,8,0 -1,14,104,3,3,0,0 -1,15,104,3,3,0,0 -1,16,104,3,3,0,0 -1,17,104,3,3,0,0 -1,18,104,3,3,0,0 -1,19,104,3,3,0,0 -1,20,104,3,3,0,0 -1,21,121,6,3,0,1 -1,22,113,6,3,8,1 -1,23,121,6,3,8,1 -1,24,104,6,3,8,1 -1,25,104,6,3,8,0 -1,26,104,6,3,0,0 -1,27,104,9,3,0,1 -1,28,104,3,3,0,1 -1,29,104,9,3,0,1 -1,30,104,3,3,0,1 -1,31,104,3,3,0,1 -1,32,103,6,3,8,1 -1,33,113,6,3,8,1 -1,34,121,6,3,8,1 -1,35,121,6,3,8,1 -1,36,104,6,3,8,1 -1,37,104,6,3,8,0 +1,8,103,4,9,8,1 +1,9,121,4,3,6,1 +1,10,121,4,3,6,1 +1,11,121,4,3,6,1 +1,12,121,6,3,6,1 +1,13,121,4,3,6,0 +1,14,121,4,3,6,0 +1,15,121,4,3,6,0 +1,16,121,4,3,6,0 +1,17,121,4,3,6,1 +1,18,121,4,3,6,1 +1,19,121,4,3,6,1 +1,20,121,4,3,6,1 +1,21,121,4,3,6,1 +1,22,121,4,3,6,1 +1,23,121,4,3,6,1 +1,24,121,4,3,6,1 +1,25,121,4,3,8,1 +1,26,121,4,3,6,1 +1,27,121,4,3,6,1 +1,28,121,4,3,6,1 +1,29,121,4,3,6,1 +1,30,121,4,3,6,1 +1,31,121,4,3,6,0 +1,32,121,4,3,8,1 +1,33,121,4,3,6,0 +1,34,121,4,3,8,1 +1,35,121,4,3,6,1 +1,36,121,4,3,6,0 +1,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index b32ec715..a00ae412 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,102,6,3,8,1 -2,9,121,6,3,8,1 -2,10,104,6,3,8,1 -2,11,104,6,3,8,0 -2,12,104,6,3,8,0 -2,13,104,6,3,8,0 -2,14,104,6,3,0,0 -2,15,104,3,3,0,0 -2,16,104,3,3,0,0 -2,17,104,3,3,0,0 -2,18,104,3,3,0,1 -2,19,103,4,3,0,1 -2,20,102,6,3,8,1 -2,21,121,6,3,8,1 -2,22,104,6,3,8,1 -2,23,104,6,3,8,1 -2,24,104,6,3,8,0 -2,25,104,6,3,8,0 -2,26,104,6,3,0,0 -2,27,104,9,3,0,1 -2,28,104,3,3,0,0 -2,29,104,3,3,0,0 -2,30,104,3,3,0,1 -2,31,103,4,3,0,1 -2,32,102,6,3,8,1 -2,33,121,6,3,8,1 -2,34,121,6,3,8,1 -2,35,104,6,3,8,1 -2,36,104,6,3,8,0 -2,37,104,6,3,0,0 +2,8,103,4,9,8,1 +2,9,103,4,9,5,1 +2,10,103,4,3,6,0 +2,11,121,4,3,6,0 +2,12,121,4,3,6,0 +2,13,121,6,3,6,0 +2,14,121,4,3,6,0 +2,15,121,4,3,6,0 +2,16,121,4,3,6,0 +2,17,121,4,3,6,0 +2,18,121,4,3,6,0 +2,19,121,4,3,6,1 +2,20,121,4,3,6,1 +2,21,121,4,3,6,1 +2,22,121,4,3,6,0 +2,23,121,4,3,6,1 +2,24,121,4,3,6,1 +2,25,121,4,3,6,1 +2,26,121,4,3,6,1 +2,27,121,4,3,6,1 +2,28,121,4,3,6,1 +2,29,121,4,3,6,1 +2,30,121,4,3,6,1 +2,31,121,4,3,8,1 +2,32,121,4,3,6,1 +2,33,121,4,3,6,1 +2,34,121,4,3,6,1 +2,35,121,4,3,6,1 +2,36,121,4,3,6,1 +2,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index 03dc6b54..48a9f496 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,6,3,8,1 -3,9,104,4,3,8,0 -3,10,121,3,3,8,0 -3,11,104,3,3,8,0 -3,12,121,3,3,8,0 -3,13,121,3,3,8,0 -3,14,104,3,3,8,0 -3,15,104,3,3,0,0 -3,16,104,3,3,0,0 -3,17,104,3,3,0,0 -3,18,104,3,3,0,0 -3,19,104,3,3,0,0 -3,20,104,3,3,0,0 -3,21,104,3,3,0,0 -3,22,121,6,3,0,1 -3,23,113,6,3,8,1 -3,24,121,6,3,8,1 -3,25,104,6,3,8,1 -3,26,104,6,3,8,0 -3,27,104,6,3,0,0 -3,28,104,9,3,0,1 -3,29,104,3,3,0,1 -3,30,104,9,3,0,1 -3,31,104,3,3,0,1 -3,32,104,3,3,0,1 -3,33,103,6,3,8,1 -3,34,113,6,3,8,1 -3,35,121,6,3,8,1 -3,36,121,6,3,8,1 -3,37,104,6,3,8,1 -4,8,102,6,9,8,1 -4,9,121,6,3,8,1 -4,10,121,6,3,8,1 -4,11,121,6,3,8,0 -4,12,121,6,3,8,0 -4,13,121,6,3,8,0 -4,14,104,3,3,8,0 -4,15,104,3,3,0,0 -4,16,104,3,3,0,0 -4,17,104,3,3,0,0 -4,18,104,3,3,0,0 -4,19,104,3,3,0,0 -4,20,104,3,3,0,0 -4,21,104,3,3,0,0 -4,22,121,6,3,0,1 -4,23,113,6,3,8,1 -4,24,121,6,3,8,1 -4,25,104,6,3,8,1 -4,26,104,6,3,8,0 -4,27,104,6,3,0,0 -4,28,104,9,3,0,1 -4,29,104,3,3,0,1 -4,30,104,9,3,0,1 -4,31,104,3,3,0,1 -4,32,104,3,3,0,1 -4,33,103,6,3,8,1 -4,34,113,6,3,8,1 -4,35,121,6,3,8,1 -4,36,121,6,3,8,1 -4,37,104,6,3,8,1 +3,8,103,4,9,8,1 +3,9,103,4,9,8,1 +3,10,121,4,3,6,1 +3,11,121,4,3,6,0 +3,12,121,4,3,6,1 +3,13,121,6,3,6,1 +3,14,121,4,3,6,1 +3,15,121,6,3,6,0 +3,16,121,4,3,6,0 +3,17,121,4,3,6,0 +3,18,121,4,3,6,1 +3,19,121,4,3,6,1 +3,20,121,4,3,6,1 +3,21,121,4,3,6,1 +3,22,121,4,3,6,1 +3,23,121,4,3,6,1 +3,24,121,4,3,6,1 +3,25,121,4,3,6,1 +3,26,121,4,3,8,1 +3,27,121,4,3,6,1 +3,28,121,4,3,6,1 +3,29,121,4,3,6,1 +3,30,121,4,3,6,1 +3,31,121,4,3,6,1 +3,32,121,4,3,6,0 +3,33,121,4,3,8,1 +3,34,121,4,3,6,0 +3,35,121,4,3,8,1 +3,36,121,4,3,6,1 +3,37,121,4,3,6,0 +4,8,103,4,9,8,1 +4,9,103,4,9,8,1 +4,10,121,4,3,6,1 +4,11,121,4,3,6,0 +4,12,121,4,3,6,1 +4,13,121,6,3,6,0 +4,14,121,4,3,6,1 +4,15,121,6,3,6,0 +4,16,121,4,3,6,0 +4,17,121,4,3,6,0 +4,18,121,4,3,6,1 +4,19,121,4,3,6,1 +4,20,121,4,3,6,1 +4,21,121,4,3,6,1 +4,22,121,4,3,6,1 +4,23,121,4,3,6,1 +4,24,121,4,3,6,1 +4,25,121,4,3,6,1 +4,26,121,4,3,8,1 +4,27,121,4,3,6,1 +4,28,121,4,3,6,1 +4,29,121,4,3,6,1 +4,30,121,4,3,6,1 +4,31,121,4,3,6,1 +4,32,121,4,3,6,0 +4,33,121,4,3,8,1 +4,34,121,4,3,6,0 +4,35,121,4,3,8,1 +4,36,121,4,3,6,1 +4,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index 549102b2..551fdd40 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,4,9,8,1 -5,9,113,6,3,8,0 -5,10,104,6,3,8,0 -5,11,104,6,3,0,0 -5,12,104,9,3,0,0 -5,13,121,3,3,8,1 -5,14,121,6,3,8,0 -5,15,104,3,3,8,0 -5,16,104,3,3,0,0 -5,17,104,3,3,0,0 -5,18,104,3,3,0,0 -5,19,121,3,3,0,0 -5,20,104,3,3,0,0 -5,21,104,3,3,0,0 -5,22,104,3,3,0,0 -5,23,121,4,3,0,1 -5,24,121,6,3,8,1 -5,25,104,6,3,8,1 -5,26,104,6,3,8,0 -5,27,104,3,3,0,0 -5,28,104,3,3,0,1 -5,29,104,4,3,0,1 -5,30,104,9,3,0,1 -5,31,104,3,3,0,1 -5,32,104,3,3,0,1 -5,33,104,6,3,0,1 -5,34,113,6,3,8,1 -5,35,113,6,3,8,1 -5,36,113,6,3,8,1 -5,37,113,6,3,8,1 +5,8,103,3,9,8,1 +5,9,103,4,3,8,1 +5,10,121,4,3,6,1 +5,11,121,4,3,6,0 +5,12,121,4,3,6,1 +5,13,121,6,3,6,1 +5,14,121,6,3,6,1 +5,15,121,4,3,6,1 +5,16,121,4,3,6,0 +5,17,121,4,3,6,1 +5,18,121,4,3,6,1 +5,19,121,4,3,6,1 +5,20,121,4,3,6,1 +5,21,121,4,3,6,1 +5,22,121,4,3,6,1 +5,23,121,4,3,6,1 +5,24,121,4,3,6,1 +5,25,121,4,3,8,1 +5,26,121,4,3,6,1 +5,27,121,4,3,6,1 +5,28,121,4,3,6,1 +5,29,121,4,3,6,1 +5,30,121,4,3,6,1 +5,31,121,4,3,6,0 +5,32,121,4,3,8,1 +5,33,121,4,3,6,0 +5,34,121,4,3,8,1 +5,35,121,4,3,6,1 +5,36,121,4,3,6,0 +5,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index 68e5ec32..d875f86b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,102,6,2,8,1 -6,9,113,6,3,8,1 -6,10,121,6,3,8,1 -6,11,121,6,3,8,1 -6,12,121,6,3,8,1 -6,13,121,6,3,8,0 -6,14,121,6,3,8,0 -6,15,104,3,3,8,0 -6,16,104,3,3,0,0 -6,17,104,3,3,0,0 -6,18,104,3,3,0,0 -6,19,104,3,3,0,0 -6,20,104,3,3,0,0 -6,21,104,3,3,0,0 -6,22,104,3,3,0,0 -6,23,121,6,3,0,1 -6,24,113,6,3,8,1 -6,25,121,6,3,8,1 -6,26,104,6,3,8,1 -6,27,104,6,3,8,0 -6,28,104,6,3,0,0 -6,29,104,9,3,0,1 -6,30,104,3,3,0,1 -6,31,104,9,3,0,1 -6,32,104,3,3,0,1 -6,33,104,3,3,0,1 -6,34,103,6,3,8,1 -6,35,113,6,3,8,1 -6,36,121,6,3,8,1 -6,37,121,6,3,8,1 -7,8,121,6,9,8,1 -7,9,104,6,3,8,1 -7,10,104,6,3,8,0 -7,11,104,6,3,0,0 -7,12,104,6,3,0,1 -7,13,121,6,3,8,1 -7,14,104,6,3,8,0 -7,15,104,3,3,0,0 -7,16,104,3,3,0,0 -7,17,104,3,3,0,1 -7,18,104,4,3,0,1 -7,19,103,6,3,8,1 -7,20,104,6,3,8,1 -7,21,104,9,3,0,0 -7,22,121,6,3,8,1 -7,23,104,6,3,8,1 -7,24,104,6,3,8,1 -7,25,104,6,3,8,1 -7,26,104,6,3,8,0 -7,27,104,3,3,0,0 -7,28,104,3,3,0,0 -7,29,104,3,3,0,0 -7,30,104,3,3,0,0 -7,31,104,3,3,0,1 -7,32,104,3,3,0,1 -7,33,103,4,3,0,1 -7,34,113,6,3,8,1 -7,35,113,6,3,8,1 -7,36,113,6,3,8,1 -7,37,104,6,3,8,1 +6,8,121,4,9,8,1 +6,9,121,4,9,8,1 +6,10,121,4,3,6,1 +6,11,121,6,3,6,1 +6,12,121,6,3,6,1 +6,13,121,4,3,6,1 +6,14,121,4,3,6,1 +6,15,121,4,3,6,1 +6,16,121,4,3,6,0 +6,17,121,4,3,8,1 +6,18,121,4,3,6,1 +6,19,121,4,3,6,1 +6,20,121,4,3,6,1 +6,21,121,4,3,6,0 +6,22,121,4,3,6,1 +6,23,121,4,3,6,0 +6,24,121,4,3,6,0 +6,25,121,4,3,6,0 +6,26,121,4,3,6,1 +6,27,121,4,3,6,1 +6,28,121,4,3,6,1 +6,29,121,4,3,6,1 +6,30,121,4,3,6,1 +6,31,121,4,3,6,1 +6,32,121,4,3,6,1 +6,33,121,4,3,6,1 +6,34,121,4,3,8,1 +6,35,121,4,3,6,1 +6,36,121,4,3,6,1 +6,37,121,4,3,6,1 +7,8,121,4,9,8,1 +7,9,103,4,9,5,1 +7,10,121,4,3,6,1 +7,11,121,4,3,6,1 +7,12,121,6,3,6,1 +7,13,121,6,3,6,1 +7,14,121,4,3,6,1 +7,15,121,4,3,6,1 +7,16,121,4,3,6,0 +7,17,121,4,3,6,1 +7,18,121,4,3,6,1 +7,19,121,4,3,6,1 +7,20,121,4,3,6,1 +7,21,121,4,3,6,1 +7,22,121,4,3,6,1 +7,23,121,4,3,6,1 +7,24,121,4,3,6,1 +7,25,121,4,3,8,1 +7,26,121,4,3,6,1 +7,27,121,4,3,6,1 +7,28,121,4,3,6,1 +7,29,121,4,3,6,1 +7,30,121,4,3,6,1 +7,31,121,4,3,6,0 +7,32,121,4,3,8,1 +7,33,121,4,3,6,0 +7,34,121,4,3,8,1 +7,35,121,4,3,6,1 +7,36,121,4,3,6,0 +7,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index 84a9c524..c203f13c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,6,3,8,1 -8,9,121,6,3,8,1 -8,10,104,6,3,8,1 -8,11,104,6,3,8,1 -8,12,121,6,3,8,1 -8,13,121,6,3,8,1 -8,14,104,6,3,8,0 -8,15,104,9,3,0,0 -8,16,104,3,3,0,0 -8,17,104,3,3,0,0 -8,18,104,3,3,0,0 -8,19,104,3,3,0,0 -8,20,104,3,3,0,0 -8,21,104,3,3,0,1 -8,22,103,6,3,8,1 -8,23,121,6,3,8,1 -8,24,104,6,3,8,1 -8,25,104,6,3,8,1 -8,26,104,6,3,8,0 -8,27,104,6,3,0,0 -8,28,104,9,3,0,1 -8,29,104,9,3,0,1 -8,30,104,3,3,0,1 -8,31,104,3,3,0,1 -8,32,104,6,3,0,1 -8,33,113,6,3,8,1 -8,34,121,6,3,8,1 -8,35,121,6,3,8,1 -8,36,121,6,3,8,1 -8,37,104,6,3,8,1 +8,8,103,4,9,8,1 +8,9,121,4,3,6,1 +8,10,121,4,3,6,1 +8,11,121,6,3,6,1 +8,12,121,6,3,6,1 +8,13,121,6,3,6,1 +8,14,121,4,3,6,1 +8,15,121,4,3,6,1 +8,16,121,4,3,6,1 +8,17,121,4,3,8,1 +8,18,121,4,5,8,1 +8,19,121,4,9,6,1 +8,20,121,4,3,6,1 +8,21,121,4,3,6,1 +8,22,121,4,3,6,0 +8,23,121,4,3,6,0 +8,24,121,4,3,6,0 +8,25,121,4,3,6,0 +8,26,121,4,3,6,0 +8,27,121,4,3,6,1 +8,28,121,4,3,6,1 +8,29,121,4,3,6,1 +8,30,121,4,3,6,0 +8,31,121,4,3,6,1 +8,32,121,4,3,6,1 +8,33,121,4,3,6,1 +8,34,121,4,3,6,1 +8,35,121,4,3,6,1 +8,36,121,4,3,6,1 +8,37,121,4,3,6,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index ad971442..629630a6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,3,0,0 -9,9,121,6,3,8,1 -9,10,104,6,3,8,1 -9,11,104,6,3,8,1 -9,12,104,6,3,8,1 -9,13,104,6,3,8,1 -9,14,104,6,3,8,0 -9,15,104,6,3,0,0 -9,16,104,9,3,0,2 -9,17,104,3,3,0,0 -9,18,104,3,3,0,1 -9,19,104,9,3,0,1 -9,20,103,6,3,8,1 -9,21,121,6,3,8,1 -9,22,104,6,3,8,1 -9,23,121,6,3,8,1 -9,24,121,6,3,8,1 -9,25,104,6,3,8,0 -9,26,104,9,3,0,0 -9,27,104,3,3,0,0 -9,28,104,3,3,0,0 -9,29,104,3,3,0,0 -9,30,104,3,3,0,0 -9,31,104,3,3,0,0 -9,32,104,3,3,0,1 -9,33,103,6,3,8,1 -9,34,121,6,3,8,1 -9,35,104,6,3,8,1 -9,36,104,6,3,8,1 -9,37,104,6,3,8,0 +9,8,103,4,9,8,1 +9,9,103,4,3,8,0 +9,10,121,4,3,7,0 +9,11,121,4,3,7,0 +9,12,121,4,3,6,0 +9,13,121,4,3,6,0 +9,14,121,4,3,6,0 +9,15,121,4,3,6,0 +9,16,121,4,3,6,0 +9,17,121,4,3,6,0 +9,18,121,4,3,6,1 +9,19,121,4,3,6,1 +9,20,121,4,3,6,0 +9,21,121,4,3,6,1 +9,22,121,4,3,6,1 +9,23,121,4,3,6,1 +9,24,121,4,3,6,1 +9,25,121,4,3,6,1 +9,26,121,4,3,6,1 +9,27,121,4,3,6,1 +9,28,121,4,3,6,1 +9,29,121,4,3,8,1 +9,30,121,4,3,6,1 +9,31,121,4,3,6,1 +9,32,121,4,3,6,1 +9,33,121,4,3,6,1 +9,34,121,4,3,6,1 +9,35,121,4,3,6,0 +9,36,121,4,3,8,1 +9,37,121,4,3,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index 4d68f099..2a8d05f6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,121,1,1,2,1 -0,9,113,0,7,8,2 -0,10,121,1,1,6,0 -0,11,113,9,0,8,1 -0,12,121,1,0,2,0 -0,13,127,4,0,7,0 -0,14,127,4,0,7,1 -0,15,127,1,0,2,1 -0,16,127,4,7,7,1 -0,17,102,1,1,7,1 -0,18,105,8,7,7,1 -0,19,105,1,7,2,1 -0,20,113,mask,7,7,1 -0,21,113,1,7,2,1 -0,22,113,1,7,2,1 -0,23,113,1,7,7,1 -0,24,113,1,5,2,1 -0,25,113,1,7,2,1 -0,26,113,1,1,7,1 -0,27,113,1,0,7,1 -0,28,113,1,0,2,1 -0,29,113,1,0,7,1 -0,30,113,1,0,7,1 -0,31,113,1,7,7,1 -0,32,113,1,7,7,1 -0,33,113,1,7,7,1 -0,34,113,1,7,7,1 -0,35,113,6,7,7,1 -0,36,113,1,7,2,1 -0,37,113,6,7,2,1 +0,8,113,6,2,0,1 +0,9,113,6,2,0,1 +0,10,113,6,2,0,1 +0,11,113,6,2,0,1 +0,12,113,6,2,0,1 +0,13,113,6,2,0,2 +0,14,113,6,2,0,2 +0,15,113,6,2,0,2 +0,16,113,6,2,0,2 +0,17,113,6,2,0,2 +0,18,113,6,2,0,2 +0,19,113,6,2,0,2 +0,20,113,6,2,0,2 +0,21,113,6,2,0,2 +0,22,113,6,2,0,2 +0,23,113,6,2,0,2 +0,24,113,6,2,0,2 +0,25,113,6,2,0,2 +0,26,113,6,2,0,2 +0,27,113,6,2,0,2 +0,28,113,6,2,0,2 +0,29,113,6,2,0,2 +0,30,113,6,2,0,2 +0,31,113,6,2,0,2 +0,32,113,6,2,0,2 +0,33,113,6,2,0,2 +0,34,113,6,2,0,2 +0,35,113,6,2,0,2 +0,36,113,6,2,0,2 +0,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index 1241eea1..fed4cb3b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,113,0,7,6,0 -1,9,121,8,9,2,1 -1,10,113,9,0,8,0 -1,11,121,3,0,2,1 -1,12,127,9,0,7,0 -1,13,121,6,0,7,1 -1,14,127,1,0,7,1 -1,15,127,1,0,7,1 -1,16,108,1,7,7,1 -1,17,105,8,7,7,1 -1,18,105,1,7,2,1 -1,19,113,2,7,2,1 -1,20,113,2,7,2,1 -1,21,113,1,7,2,1 -1,22,113,1,7,7,1 -1,23,113,1,7,7,1 -1,24,113,1,5,2,1 -1,25,113,1,0,8,1 -1,26,113,1,0,2,1 -1,27,113,1,0,2,1 -1,28,113,1,0,7,1 -1,29,108,1,0,7,1 -1,30,108,1,7,7,1 -1,31,113,1,7,7,1 -1,32,113,1,7,7,1 -1,33,113,6,7,7,1 -1,34,113,1,7,2,1 -1,35,113,6,7,7,1 -1,36,113,1,7,2,1 -1,37,113,6,7,2,1 +1,8,121,4,2,6,0 +1,9,109,4,9,6,1 +1,10,121,6,2,0,0 +1,11,121,6,2,8,0 +1,12,121,6,0,8,0 +1,13,109,6,0,8,0 +1,14,121,6,0,8,0 +1,15,109,4,9,8,0 +1,16,109,4,9,5,0 +1,17,120,6,0,9,0 +1,18,109,4,0,5,0 +1,19,109,4,0,5,0 +1,20,109,4,9,5,0 +1,21,127,4,0,9,0 +1,22,120,4,0,5,0 +1,23,127,4,0,9,0 +1,24,127,4,0,5,0 +1,25,109,4,9,5,0 +1,26,109,4,3,5,0 +1,27,109,4,3,5,0 +1,28,109,4,3,5,0 +1,29,109,4,9,6,0 +1,30,109,4,3,8,0 +1,31,109,4,9,8,0 +1,32,109,4,0,8,0 +1,33,109,4,0,8,0 +1,34,109,4,9,8,0 +1,35,109,4,0,5,0 +1,36,109,4,0,5,0 +1,37,109,4,0,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index 46b4436b..c4fe8a8e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,121,1,7,6,0 -2,9,113,0,7,7,2 -2,10,121,8,9,6,1 -2,11,102,1,1,6,2 -2,12,105,1,7,8,0 -2,13,127,1,1,0,1 -2,14,127,1,7,0,1 -2,15,127,1,1,0,1 -2,16,127,1,7,7,1 -2,17,127,1,7,0,1 -2,18,113,1,7,0,1 -2,19,113,1,7,0,1 -2,20,113,1,7,7,1 -2,21,113,1,7,0,1 -2,22,113,1,7,7,1 -2,23,113,1,7,0,1 -2,24,113,1,7,2,1 -2,25,113,1,7,2,1 -2,26,113,1,1,7,1 -2,27,113,1,5,2,1 -2,28,113,1,2,8,1 -2,29,113,1,1,7,1 -2,30,113,1,0,7,1 -2,31,113,1,0,7,1 -2,32,113,1,0,7,1 -2,33,113,1,7,7,1 -2,34,113,1,7,7,1 -2,35,113,1,7,7,1 -2,36,113,1,7,7,1 -2,37,113,1,7,7,1 +2,8,103,4,2,6,1 +2,9,113,6,2,0,1 +2,10,113,6,2,0,1 +2,11,113,6,2,0,1 +2,12,113,6,2,0,1 +2,13,113,6,2,0,2 +2,14,113,6,2,0,2 +2,15,113,6,2,0,2 +2,16,113,6,2,0,2 +2,17,113,6,2,0,2 +2,18,113,6,2,0,2 +2,19,113,6,2,0,2 +2,20,113,6,2,0,2 +2,21,113,6,2,0,2 +2,22,113,6,2,0,2 +2,23,113,6,2,0,2 +2,24,113,6,2,0,2 +2,25,113,6,2,0,2 +2,26,113,6,2,0,2 +2,27,113,6,2,0,2 +2,28,113,6,2,0,2 +2,29,113,6,2,0,2 +2,30,113,6,2,0,2 +2,31,113,6,2,0,2 +2,32,113,6,2,0,2 +2,33,113,6,2,0,2 +2,34,113,6,2,0,2 +2,35,113,6,2,0,2 +2,36,113,6,2,0,2 +2,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index f0150155..6052a5e2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,109,3,0,6,0 -3,9,121,3,9,8,0 -3,10,121,3,1,8,0 -3,11,121,0,1,8,0 -3,12,127,0,0,6,0 -3,13,127,4,8,7,0 -3,14,127,4,1,7,1 -3,15,127,1,1,7,1 -3,16,127,0,7,0,1 -3,17,127,5,1,0,1 -3,18,127,1,7,0,1 -3,19,113,1,7,0,1 -3,20,113,1,7,7,1 -3,21,113,1,7,0,1 -3,22,113,1,7,0,1 -3,23,113,1,7,7,1 -3,24,113,1,7,0,1 -3,25,113,1,7,2,1 -3,26,113,1,7,2,1 -3,27,113,1,7,7,1 -3,28,113,1,5,7,1 -3,29,113,1,7,2,1 -3,30,113,1,1,7,1 -3,31,113,1,0,7,1 -3,32,113,1,7,7,1 -3,33,113,1,7,7,1 -3,34,113,1,5,7,1 -3,35,113,1,7,2,1 -3,36,113,1,7,7,1 -3,37,113,1,5,7,1 -4,8,113,3,7,4,1 -4,9,113,1,7,2,1 -4,10,113,3,7,2,1 -4,11,113,1,1,2,1 -4,12,127,1,0,2,1 -4,13,127,1,0,2,1 -4,14,127,4,0,7,1 -4,15,102,1,0,2,1 -4,16,113,1,0,7,1 -4,17,108,1,7,7,1 -4,18,108,1,7,7,1 -4,19,113,1,7,7,1 -4,20,113,8,7,7,1 -4,21,113,1,7,2,1 -4,22,113,6,7,2,1 -4,23,113,1,7,2,1 -4,24,113,6,7,2,1 -4,25,113,1,1,2,1 -4,26,113,1,0,8,1 -4,27,113,1,0,2,1 -4,28,113,1,0,2,1 -4,29,113,1,0,7,1 -4,30,108,1,0,7,1 -4,31,108,1,0,7,1 -4,32,108,1,0,7,1 -4,33,108,1,7,7,1 -4,34,113,6,7,7,1 -4,35,113,1,7,7,1 -4,36,113,6,7,7,1 -4,37,113,6,7,2,1 +3,8,109,4,2,6,1 +3,9,113,4,2,0,1 +3,10,113,6,2,0,0 +3,11,113,6,2,0,0 +3,12,113,6,2,0,0 +3,13,113,6,2,0,0 +3,14,113,6,2,0,0 +3,15,113,6,2,0,0 +3,16,113,6,2,0,1 +3,17,113,6,2,0,1 +3,18,113,6,2,0,1 +3,19,113,6,2,0,2 +3,20,113,6,2,0,2 +3,21,113,6,2,0,2 +3,22,113,6,2,0,2 +3,23,113,6,2,0,2 +3,24,113,6,2,0,2 +3,25,113,6,2,0,2 +3,26,113,6,2,0,2 +3,27,113,6,2,0,2 +3,28,113,6,2,0,2 +3,29,113,6,2,0,2 +3,30,113,6,2,0,2 +3,31,113,6,2,0,2 +3,32,113,6,2,0,2 +3,33,113,6,2,0,2 +3,34,113,6,2,0,2 +3,35,113,6,2,0,2 +3,36,113,6,2,0,2 +3,37,113,6,2,0,2 +4,8,121,4,9,6,1 +4,9,113,4,2,6,1 +4,10,113,6,2,0,0 +4,11,113,6,2,0,0 +4,12,113,6,2,0,0 +4,13,113,6,2,0,1 +4,14,113,6,2,0,1 +4,15,113,6,2,0,1 +4,16,113,6,2,0,2 +4,17,113,6,2,0,2 +4,18,113,6,2,0,2 +4,19,113,6,2,0,2 +4,20,113,6,2,0,2 +4,21,113,6,2,0,2 +4,22,113,6,2,0,2 +4,23,113,6,2,0,2 +4,24,113,6,2,0,2 +4,25,113,6,2,0,2 +4,26,113,6,2,0,2 +4,27,113,6,2,0,2 +4,28,113,6,2,0,2 +4,29,113,6,2,0,2 +4,30,113,6,2,0,2 +4,31,113,6,2,0,2 +4,32,113,6,2,0,2 +4,33,113,6,2,0,2 +4,34,113,6,2,0,2 +4,35,113,6,2,0,2 +4,36,113,6,2,0,2 +4,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index f2cf6b66..77123cc4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,3,7,4,1 -5,9,113,1,9,6,1 -5,10,113,1,7,0,1 -5,11,113,1,7,2,1 -5,12,113,1,1,2,1 -5,13,113,1,0,2,1 -5,14,113,1,0,2,1 -5,15,113,1,0,2,1 -5,16,113,1,8,7,1 -5,17,113,1,8,7,1 -5,18,113,1,7,7,1 -5,19,113,1,7,7,1 -5,20,113,1,7,7,1 -5,21,113,1,7,7,1 -5,22,113,1,7,7,1 -5,23,113,1,7,2,1 -5,24,113,1,7,2,1 -5,25,113,1,7,2,1 -5,26,113,1,1,7,1 -5,27,113,1,5,2,1 -5,28,113,1,2,8,1 -5,29,113,1,1,7,1 -5,30,113,1,0,7,1 -5,31,113,1,0,7,1 -5,32,113,1,0,7,1 -5,33,113,1,7,7,1 -5,34,113,1,7,7,1 -5,35,113,1,7,7,1 -5,36,113,1,7,7,1 -5,37,113,1,7,7,1 +5,8,103,4,2,0,1 +5,9,113,6,2,0,1 +5,10,113,6,2,0,1 +5,11,113,6,2,0,1 +5,12,113,6,2,0,2 +5,13,113,6,2,0,2 +5,14,113,6,2,0,2 +5,15,113,6,2,0,2 +5,16,113,6,2,0,2 +5,17,113,6,2,0,2 +5,18,113,6,2,0,2 +5,19,113,6,2,0,2 +5,20,113,6,2,0,2 +5,21,113,6,2,0,2 +5,22,113,6,2,0,2 +5,23,113,6,2,0,2 +5,24,113,6,2,0,2 +5,25,113,6,2,0,2 +5,26,113,6,2,0,2 +5,27,113,6,2,0,2 +5,28,113,6,2,0,2 +5,29,113,6,2,0,2 +5,30,113,6,2,0,2 +5,31,113,6,2,0,2 +5,32,113,6,2,0,2 +5,33,113,6,2,0,2 +5,34,113,6,2,0,2 +5,35,113,6,2,0,2 +5,36,113,6,2,0,2 +5,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 650c1470..f7596c81 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,122,4,7,4,1 -6,9,113,1,7,2,0 -6,10,113,3,7,4,1 -6,11,113,1,7,2,1 -6,12,113,6,7,7,1 -6,13,102,1,1,2,1 -6,14,127,4,7,8,1 -6,15,102,1,1,0,1 -6,16,113,1,7,7,1 -6,17,102,1,1,7,1 -6,18,105,1,7,7,1 -6,19,113,1,7,0,1 -6,20,113,1,7,7,1 -6,21,113,1,5,7,1 -6,22,113,1,5,2,1 -6,23,113,1,7,2,1 -6,24,113,1,7,7,1 -6,25,113,1,5,7,1 -6,26,113,1,7,8,1 -6,27,113,1,1,7,1 -6,28,113,1,5,7,1 -6,29,113,1,7,7,1 -6,30,113,1,5,7,1 -6,31,113,1,5,7,1 -6,32,113,1,2,7,1 -6,33,113,1,5,7,1 -6,34,113,1,2,7,1 -6,35,113,1,5,7,1 -6,36,113,1,2,8,1 -6,37,113,1,1,7,1 -7,8,121,1,9,6,0 -7,9,105,0,9,1,2 -7,10,121,0,9,6,0 -7,11,121,0,1,6,0 -7,12,121,0,3,8,0 -7,13,127,0,0,6,0 -7,14,127,4,0,7,0 -7,15,127,4,0,2,1 -7,16,127,4,0,2,0 -7,17,127,4,0,8,0 -7,18,127,4,1,2,0 -7,19,127,4,1,8,1 -7,20,127,4,1,8,1 -7,21,127,1,1,8,1 -7,22,113,1,7,0,1 -7,23,113,1,7,7,1 -7,24,113,1,9,0,1 -7,25,113,1,7,7,1 -7,26,113,1,9,0,1 -7,27,113,1,7,7,1 -7,28,113,1,5,0,1 -7,29,113,1,2,2,1 -7,30,113,1,7,7,1 -7,31,113,1,5,7,1 -7,32,113,1,2,2,1 -7,33,113,1,5,7,1 -7,34,113,1,2,7,1 -7,35,113,1,5,7,1 -7,36,108,1,2,8,1 -7,37,113,1,0,7,1 +6,8,121,4,2,6,0 +6,9,121,4,2,6,1 +6,10,113,4,2,0,1 +6,11,113,6,2,0,0 +6,12,113,6,2,0,0 +6,13,113,6,2,0,0 +6,14,113,6,2,0,0 +6,15,113,6,2,0,0 +6,16,113,6,2,0,0 +6,17,113,6,2,0,1 +6,18,113,6,2,0,1 +6,19,113,6,2,0,1 +6,20,113,6,2,0,2 +6,21,113,6,2,0,2 +6,22,113,6,2,0,2 +6,23,113,6,2,0,2 +6,24,113,6,2,0,2 +6,25,113,6,2,0,2 +6,26,113,6,2,0,2 +6,27,113,6,2,0,2 +6,28,113,6,2,0,2 +6,29,113,6,2,0,2 +6,30,113,6,2,0,2 +6,31,113,6,2,0,2 +6,32,113,6,2,0,2 +6,33,113,6,2,0,2 +6,34,113,6,2,0,2 +6,35,113,6,2,0,2 +6,36,113,6,2,0,2 +6,37,113,6,2,0,2 +7,8,109,4,9,6,0 +7,9,109,4,9,6,0 +7,10,121,4,9,6,0 +7,11,121,4,2,8,1 +7,12,109,4,9,8,0 +7,13,109,4,9,8,0 +7,14,109,4,0,5,0 +7,15,109,6,0,5,0 +7,16,109,6,0,8,0 +7,17,109,4,0,5,0 +7,18,109,4,0,5,0 +7,19,127,4,0,5,0 +7,20,127,4,0,5,0 +7,21,109,4,9,5,0 +7,22,109,4,3,0,0 +7,23,109,4,3,0,0 +7,24,109,4,9,5,0 +7,25,109,4,3,0,0 +7,26,109,4,3,0,0 +7,27,121,4,3,0,0 +7,28,109,4,9,8,0 +7,29,109,4,0,8,0 +7,30,109,4,9,8,0 +7,31,109,4,9,8,0 +7,32,109,4,0,5,0 +7,33,109,4,9,5,0 +7,34,109,4,0,5,0 +7,35,109,4,0,5,0 +7,36,127,4,0,5,0 +7,37,109,4,0,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index 2cdb2be9..49dff757 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,1,3,2,0 -8,9,113,3,7,7,1 -8,10,121,1,7,2,1 -8,11,113,4,7,7,2 -8,12,121,1,1,2,1 -8,13,127,1,0,8,0 -8,14,109,1,0,8,1 -8,15,127,1,0,7,0 -8,16,127,1,0,7,1 -8,17,127,1,7,7,1 -8,18,127,1,7,7,1 -8,19,113,1,7,0,1 -8,20,113,1,7,7,1 -8,21,113,8,7,7,1 -8,22,113,1,5,2,1 -8,23,113,1,7,8,1 -8,24,113,1,7,0,1 -8,25,113,1,7,7,1 -8,26,113,1,5,7,1 -8,27,113,1,2,2,1 -8,28,113,1,1,7,1 -8,29,108,1,0,2,1 -8,30,113,1,0,7,1 -8,31,113,1,0,7,1 -8,32,113,1,7,7,1 -8,33,113,1,7,7,1 -8,34,113,1,7,7,1 -8,35,113,1,7,7,1 -8,36,113,6,7,7,1 -8,37,113,6,7,2,1 +8,8,103,4,2,0,0 +8,9,113,6,2,0,0 +8,10,113,6,2,0,0 +8,11,113,6,2,0,0 +8,12,113,6,2,0,0 +8,13,113,6,2,0,0 +8,14,113,6,7,0,0 +8,15,113,6,7,0,0 +8,16,113,6,2,0,1 +8,17,113,6,2,0,1 +8,18,113,6,2,0,1 +8,19,113,6,2,0,2 +8,20,113,6,2,0,2 +8,21,113,6,2,0,2 +8,22,113,6,2,0,2 +8,23,113,6,2,0,2 +8,24,113,6,2,0,2 +8,25,113,6,2,0,2 +8,26,113,6,2,0,2 +8,27,113,6,2,0,2 +8,28,113,6,2,0,2 +8,29,113,6,2,0,2 +8,30,113,6,2,0,2 +8,31,113,6,2,0,2 +8,32,113,6,2,0,2 +8,33,113,6,2,0,2 +8,34,113,6,2,0,2 +8,35,113,6,2,0,2 +8,36,113,6,2,0,2 +8,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index 1c08eb2a..4a0c0385 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,121,1,7,2,0 -9,9,113,3,7,1,2 -9,10,113,1,9,6,1 -9,11,113,1,7,7,1 -9,12,113,1,7,7,1 -9,13,113,1,7,7,1 -9,14,113,1,7,7,1 -9,15,113,1,7,2,1 -9,16,113,1,1,2,1 -9,17,113,1,0,2,1 -9,18,113,1,0,2,1 -9,19,113,1,0,2,1 -9,20,113,1,0,7,1 -9,21,113,1,0,7,1 -9,22,108,1,0,7,1 -9,23,108,1,7,7,1 -9,24,113,1,7,7,1 -9,25,113,1,7,7,1 -9,26,113,6,7,7,1 -9,27,113,1,7,2,1 -9,28,113,6,7,7,1 -9,29,113,1,7,2,1 -9,30,113,6,7,2,1 -9,31,113,1,1,2,1 -9,32,113,1,0,2,1 -9,33,113,1,0,2,1 -9,34,113,1,0,2,1 -9,35,113,1,0,7,1 -9,36,108,1,0,2,1 -9,37,113,1,0,7,1 +9,8,103,4,3,0,0 +9,9,103,4,2,0,0 +9,10,121,6,2,0,0 +9,11,121,6,2,0,0 +9,12,121,6,2,0,1 +9,13,113,6,2,8,0 +9,14,121,6,2,8,0 +9,15,121,6,2,8,0 +9,16,121,4,2,8,0 +9,17,109,4,9,8,0 +9,18,109,4,0,5,0 +9,19,109,4,0,5,0 +9,20,120,4,0,5,0 +9,21,109,4,0,5,0 +9,22,109,4,9,5,0 +9,23,109,4,0,5,0 +9,24,109,4,9,5,0 +9,25,127,4,0,9,0 +9,26,109,4,9,5,0 +9,27,109,4,3,9,0 +9,28,109,4,0,5,0 +9,29,109,4,3,9,0 +9,30,120,4,0,5,0 +9,31,109,4,3,9,0 +9,32,120,4,0,5,0 +9,33,109,4,9,5,0 +9,34,127,4,0,9,0 +9,35,109,4,9,5,0 +9,36,109,4,9,5,0 +9,37,109,4,0,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index 105792b4..68b4bc7d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,113,6,2,0,1 -0,9,102,6,2,0,1 -0,10,102,6,2,0,1 -0,11,121,6,2,0,1 -0,12,121,6,5,6,1 -0,13,121,6,2,6,1 -0,14,121,6,2,6,1 -0,15,121,6,2,6,1 -0,16,121,6,2,6,1 -0,17,121,6,5,6,1 -0,18,121,3,5,6,1 -0,19,121,3,5,6,1 -0,20,121,3,5,6,1 -0,21,121,3,5,6,1 -0,22,121,3,5,6,1 -0,23,121,3,5,6,1 -0,24,121,3,5,6,1 -0,25,121,3,5,6,0 -0,26,121,3,5,6,0 -0,27,121,3,5,6,0 -0,28,121,3,5,6,0 -0,29,121,3,5,6,0 -0,30,121,3,5,6,0 -0,31,121,3,5,6,0 -0,32,121,3,5,6,0 -0,33,121,3,5,6,0 -0,34,121,3,5,6,0 -0,35,121,3,5,6,0 -0,36,121,3,5,6,0 -0,37,121,3,5,6,0 +0,8,104,4,2,8,1 +0,9,102,6,2,8,1 +0,10,102,6,2,8,0 +0,11,102,6,2,8,1 +0,12,102,6,2,8,1 +0,13,102,6,2,8,1 +0,14,102,6,2,6,1 +0,15,102,6,2,8,1 +0,16,102,6,2,6,1 +0,17,102,6,2,8,1 +0,18,102,6,2,6,1 +0,19,102,6,2,0,1 +0,20,102,6,2,0,1 +0,21,102,6,2,0,1 +0,22,102,6,2,0,1 +0,23,102,6,2,0,1 +0,24,102,6,2,0,1 +0,25,102,6,2,0,1 +0,26,102,6,2,0,1 +0,27,102,6,2,0,1 +0,28,102,6,2,0,1 +0,29,102,6,2,0,1 +0,30,102,6,2,0,1 +0,31,102,6,2,0,1 +0,32,102,6,2,0,1 +0,33,102,6,2,0,1 +0,34,102,6,2,0,1 +0,35,102,6,2,0,1 +0,36,102,6,2,0,1 +0,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index 350e2f2f..875d7e7d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,113,6,2,0,0 -1,9,121,6,5,0,1 -1,10,121,4,9,6,0 -1,11,121,4,5,6,1 -1,12,121,4,5,6,1 -1,13,121,3,2,6,1 -1,14,121,3,2,6,1 -1,15,121,4,5,6,1 -1,16,121,3,5,6,1 -1,17,121,3,5,6,1 -1,18,121,3,2,6,1 -1,19,121,3,2,6,1 -1,20,121,3,2,6,1 -1,21,121,3,5,6,1 -1,22,121,3,5,6,1 -1,23,121,3,5,6,1 -1,24,121,3,5,6,1 -1,25,121,3,5,6,1 -1,26,121,3,5,6,1 -1,27,121,3,5,6,1 -1,28,121,3,5,6,1 -1,29,121,3,5,6,0 -1,30,121,3,5,6,0 -1,31,121,3,5,6,0 -1,32,121,3,5,6,0 -1,33,121,3,5,6,0 -1,34,121,3,5,6,0 -1,35,121,3,5,6,0 -1,36,121,3,5,6,0 -1,37,121,3,5,6,0 +1,8,104,4,7,6,0 +1,9,103,4,9,8,1 +1,10,102,6,2,8,0 +1,11,102,6,2,8,1 +1,12,102,6,2,8,1 +1,13,102,6,2,8,1 +1,14,102,6,2,8,1 +1,15,102,6,2,8,1 +1,16,102,6,2,8,1 +1,17,102,6,2,6,1 +1,18,102,6,2,8,1 +1,19,102,6,2,0,1 +1,20,102,6,2,0,1 +1,21,102,6,2,0,1 +1,22,102,6,2,0,1 +1,23,102,6,2,0,1 +1,24,102,6,2,0,1 +1,25,102,6,2,0,1 +1,26,102,6,2,0,1 +1,27,102,6,2,0,1 +1,28,102,6,2,0,1 +1,29,102,6,2,0,1 +1,30,102,6,2,0,1 +1,31,102,6,2,0,1 +1,32,102,6,2,0,1 +1,33,102,6,2,0,1 +1,34,102,6,2,0,1 +1,35,102,6,2,0,1 +1,36,102,6,2,0,1 +1,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index 7cb7ee53..aaa36998 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,105,5,3,0,0 -2,9,102,6,1,0,1 -2,10,121,6,2,0,1 -2,11,121,6,2,6,1 -2,12,121,6,2,6,1 -2,13,121,6,2,6,1 -2,14,121,6,2,6,1 -2,15,121,6,2,6,1 -2,16,121,6,5,6,1 -2,17,121,6,5,6,1 -2,18,121,3,5,6,1 -2,19,121,3,5,6,1 -2,20,121,3,5,6,1 -2,21,121,3,5,6,1 -2,22,121,3,5,6,1 -2,23,121,3,5,6,1 -2,24,121,3,5,6,1 -2,25,121,3,5,6,0 -2,26,121,3,5,6,0 -2,27,121,3,5,6,0 -2,28,121,3,5,6,0 -2,29,121,3,5,6,0 -2,30,121,3,5,6,0 -2,31,121,3,5,6,0 -2,32,121,3,5,6,0 -2,33,121,3,5,6,0 -2,34,121,3,5,6,0 -2,35,121,3,5,6,0 -2,36,121,3,5,6,0 -2,37,121,3,5,6,0 +2,8,110,4,2,6,0 +2,9,110,4,2,8,1 +2,10,110,6,2,8,0 +2,11,102,6,2,8,0 +2,12,102,6,2,8,1 +2,13,102,6,2,8,1 +2,14,102,6,2,8,1 +2,15,102,6,2,8,1 +2,16,102,6,2,8,1 +2,17,102,6,2,6,1 +2,18,102,6,2,8,1 +2,19,102,6,2,6,1 +2,20,102,6,2,0,1 +2,21,102,6,2,0,1 +2,22,102,6,2,0,1 +2,23,102,6,2,0,1 +2,24,102,6,2,0,1 +2,25,102,6,2,0,1 +2,26,102,6,2,0,1 +2,27,102,6,2,0,1 +2,28,102,6,2,0,1 +2,29,102,6,2,0,1 +2,30,102,6,2,0,1 +2,31,102,6,2,0,1 +2,32,102,6,2,0,1 +2,33,102,6,2,0,1 +2,34,102,6,2,0,1 +2,35,102,6,2,0,1 +2,36,102,6,2,0,1 +2,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index e82f6f8a..9d5383b8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,113,6,2,0,0 -3,9,102,6,2,0,1 -3,10,121,6,2,0,1 -3,11,121,6,5,6,1 -3,12,121,6,5,6,1 -3,13,121,4,5,6,1 -3,14,121,3,5,6,1 -3,15,121,4,5,6,1 -3,16,121,3,5,6,1 -3,17,121,3,2,6,1 -3,18,121,3,2,6,1 -3,19,121,3,2,6,1 -3,20,121,3,5,6,1 -3,21,121,3,5,6,1 -3,22,121,3,5,6,1 -3,23,121,3,5,6,1 -3,24,121,3,5,6,1 -3,25,121,3,5,6,1 -3,26,121,3,5,6,1 -3,27,121,3,5,6,1 -3,28,121,3,5,6,0 -3,29,121,3,5,6,0 -3,30,121,3,5,6,0 -3,31,121,3,5,6,0 -3,32,121,3,5,6,0 -3,33,121,3,5,6,0 -3,34,121,3,5,6,0 -3,35,121,3,5,6,0 -3,36,121,3,5,6,0 -3,37,121,3,5,6,0 -4,8,105,5,8,2,0 -4,9,102,6,3,0,1 -4,10,121,6,3,0,1 -4,11,121,4,9,6,1 -4,12,121,6,5,6,1 -4,13,121,4,2,6,1 -4,14,121,4,2,6,1 -4,15,121,3,2,6,1 -4,16,121,6,2,6,1 -4,17,121,6,2,6,1 -4,18,121,6,5,6,1 -4,19,121,6,5,6,1 -4,20,121,3,5,6,1 -4,21,121,3,2,6,1 -4,22,121,3,5,6,1 -4,23,121,3,5,6,1 -4,24,121,3,5,6,1 -4,25,121,3,5,6,1 -4,26,121,3,5,6,1 -4,27,121,3,5,6,1 -4,28,121,3,5,6,1 -4,29,121,3,5,6,1 -4,30,121,3,5,6,0 -4,31,121,3,5,6,0 -4,32,121,3,5,6,0 -4,33,121,3,5,6,0 -4,34,121,3,5,6,0 -4,35,121,3,5,6,0 -4,36,121,3,5,6,0 -4,37,121,3,5,6,0 +3,8,104,4,2,6,0 +3,9,103,6,5,8,1 +3,10,102,4,2,6,0 +3,11,102,6,2,8,1 +3,12,102,6,2,8,1 +3,13,102,6,2,8,1 +3,14,102,6,2,8,1 +3,15,102,6,2,8,1 +3,16,102,6,2,8,1 +3,17,102,6,2,8,1 +3,18,102,6,2,6,1 +3,19,102,6,2,0,1 +3,20,102,6,2,0,1 +3,21,102,6,2,0,1 +3,22,102,6,2,0,1 +3,23,102,6,2,0,1 +3,24,102,6,2,0,1 +3,25,102,6,2,0,1 +3,26,102,6,2,0,1 +3,27,102,6,2,0,1 +3,28,102,6,2,0,1 +3,29,102,6,2,0,1 +3,30,102,6,2,0,1 +3,31,102,6,2,0,1 +3,32,102,6,2,0,1 +3,33,102,6,2,0,1 +3,34,102,6,2,0,1 +3,35,102,6,2,0,1 +3,36,102,6,2,0,1 +3,37,102,6,2,0,1 +4,8,110,4,2,6,0 +4,9,110,4,2,8,1 +4,10,102,6,2,6,0 +4,11,102,6,2,8,1 +4,12,102,6,2,8,1 +4,13,102,6,2,0,1 +4,14,102,6,2,8,1 +4,15,102,6,2,6,1 +4,16,102,6,2,0,1 +4,17,102,6,2,0,1 +4,18,102,6,2,0,1 +4,19,102,6,2,0,1 +4,20,102,6,2,0,1 +4,21,102,6,2,0,1 +4,22,102,6,2,0,1 +4,23,102,6,2,0,1 +4,24,102,6,2,0,1 +4,25,102,6,2,0,1 +4,26,102,6,2,0,1 +4,27,102,6,2,0,1 +4,28,102,6,2,0,1 +4,29,102,6,2,0,1 +4,30,102,6,2,0,1 +4,31,102,6,2,0,1 +4,32,102,6,2,0,1 +4,33,102,6,2,0,1 +4,34,102,6,2,0,1 +4,35,102,6,2,0,1 +4,36,102,6,2,0,1 +4,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index 7ee664d5..956ddf9b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,122,6,8,2,0 -5,9,113,6,2,0,1 -5,10,113,6,3,0,1 -5,11,121,6,2,0,1 -5,12,121,6,2,6,1 -5,13,121,6,2,6,1 -5,14,121,6,2,6,1 -5,15,121,6,5,6,1 -5,16,121,6,5,6,1 -5,17,121,6,5,6,1 -5,18,121,3,5,6,1 -5,19,121,3,5,6,1 -5,20,121,3,5,6,1 -5,21,121,3,5,6,1 -5,22,121,3,5,6,1 -5,23,121,3,5,6,1 -5,24,121,3,5,6,1 -5,25,121,3,5,6,0 -5,26,121,3,5,6,0 -5,27,121,3,5,6,0 -5,28,121,3,5,6,0 -5,29,121,3,5,6,0 -5,30,121,3,5,6,0 -5,31,121,3,5,6,0 -5,32,121,3,5,6,0 -5,33,121,3,5,6,0 -5,34,121,3,5,6,0 -5,35,121,3,5,6,0 -5,36,121,3,5,6,0 -5,37,121,3,5,6,0 +5,8,110,4,9,6,0 +5,9,110,4,2,8,1 +5,10,110,4,2,6,0 +5,11,113,6,2,8,2 +5,12,113,6,2,0,1 +5,13,113,6,2,0,1 +5,14,102,6,2,0,1 +5,15,102,6,2,0,1 +5,16,102,6,2,0,1 +5,17,102,6,2,0,1 +5,18,102,6,2,0,1 +5,19,102,6,2,0,1 +5,20,102,6,2,0,1 +5,21,102,6,2,0,1 +5,22,102,6,2,0,1 +5,23,102,6,2,0,1 +5,24,102,6,2,0,1 +5,25,102,6,2,0,1 +5,26,102,6,2,0,1 +5,27,102,6,2,0,1 +5,28,102,6,2,0,1 +5,29,102,6,2,0,1 +5,30,102,6,2,0,1 +5,31,102,6,2,0,1 +5,32,102,6,2,0,1 +5,33,102,6,2,0,1 +5,34,102,6,2,0,1 +5,35,102,6,2,0,1 +5,36,102,6,2,0,1 +5,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index e3ab2a3d..b4ef4bd3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,6,3,0,0 -6,9,121,4,9,6,1 -6,10,121,6,5,6,0 -6,11,121,4,5,6,1 -6,12,121,4,5,6,1 -6,13,121,4,5,6,1 -6,14,121,4,5,6,0 -6,15,121,3,5,6,1 -6,16,121,3,5,6,1 -6,17,121,3,5,6,1 -6,18,121,3,5,6,1 -6,19,121,3,2,6,1 -6,20,121,3,2,6,1 -6,21,121,3,5,6,1 -6,22,121,3,5,6,0 -6,23,121,3,5,6,1 -6,24,121,3,5,6,0 -6,25,121,3,5,6,1 -6,26,121,3,5,6,0 -6,27,121,3,5,6,1 -6,28,121,3,5,6,0 -6,29,121,3,5,6,0 -6,30,121,3,5,6,0 -6,31,121,3,5,6,0 -6,32,121,3,5,6,0 -6,33,121,3,5,6,0 -6,34,121,3,5,6,0 -6,35,121,3,5,6,0 -6,36,121,3,5,6,0 -6,37,121,3,5,6,0 -7,8,121,4,9,5,0 -7,9,121,4,3,6,0 -7,10,121,4,5,6,0 -7,11,121,4,5,6,0 -7,12,121,4,9,6,0 -7,13,121,4,9,6,0 -7,14,121,4,5,6,0 -7,15,121,3,5,6,1 -7,16,121,3,5,6,1 -7,17,121,3,5,6,1 -7,18,121,3,5,6,0 -7,19,121,3,5,6,1 -7,20,121,3,5,6,0 -7,21,121,3,5,6,0 -7,22,121,3,5,6,0 -7,23,121,3,5,6,0 -7,24,121,3,5,6,0 -7,25,121,3,5,6,0 -7,26,121,3,5,6,0 -7,27,121,3,5,6,0 -7,28,121,3,5,6,0 -7,29,121,3,5,6,0 -7,30,121,3,5,6,0 -7,31,121,3,5,6,0 -7,32,121,3,5,6,0 -7,33,121,3,5,6,0 -7,34,121,3,5,6,0 -7,35,121,3,5,6,0 -7,36,121,3,5,6,0 -7,37,121,3,5,6,0 +6,8,110,4,2,8,0 +6,9,102,6,2,8,0 +6,10,102,6,2,8,1 +6,11,102,6,2,8,1 +6,12,102,6,2,8,1 +6,13,102,6,2,8,1 +6,14,102,6,2,8,1 +6,15,102,6,3,6,1 +6,16,102,6,2,8,1 +6,17,102,6,2,6,1 +6,18,102,6,2,0,1 +6,19,102,6,2,0,1 +6,20,102,6,2,0,1 +6,21,102,6,2,0,1 +6,22,102,6,2,0,1 +6,23,102,6,2,0,1 +6,24,102,6,2,0,1 +6,25,102,6,2,0,1 +6,26,102,6,2,0,1 +6,27,102,6,2,0,1 +6,28,102,6,2,0,1 +6,29,102,6,2,0,1 +6,30,102,6,2,0,1 +6,31,102,6,2,0,1 +6,32,102,6,2,0,1 +6,33,102,6,2,0,1 +6,34,102,6,2,0,1 +6,35,102,6,2,0,1 +6,36,102,6,2,0,1 +6,37,102,6,2,0,1 +7,8,104,4,7,6,0 +7,9,124,4,9,8,1 +7,10,110,6,2,8,0 +7,11,102,4,2,6,0 +7,12,102,6,2,8,1 +7,13,102,6,2,8,1 +7,14,102,6,2,6,1 +7,15,102,6,2,8,1 +7,16,102,6,2,8,1 +7,17,102,6,2,6,1 +7,18,102,6,2,8,1 +7,19,102,6,2,0,1 +7,20,102,6,2,0,1 +7,21,102,6,2,0,1 +7,22,102,6,2,0,1 +7,23,102,6,2,0,1 +7,24,102,6,2,0,1 +7,25,102,6,2,0,1 +7,26,102,6,2,0,1 +7,27,102,6,2,0,1 +7,28,102,6,2,0,1 +7,29,102,6,2,0,1 +7,30,102,6,2,0,1 +7,31,102,6,2,0,1 +7,32,102,6,2,0,1 +7,33,102,6,2,0,1 +7,34,102,6,2,0,1 +7,35,102,6,2,0,1 +7,36,102,6,2,0,1 +7,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index 7306d67d..11f63b7e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,102,6,3,0,0 -8,9,121,6,3,0,0 -8,10,121,4,5,6,0 -8,11,121,3,5,6,0 -8,12,121,4,5,6,1 -8,13,121,4,9,6,0 -8,14,121,3,5,6,1 -8,15,121,3,5,6,1 -8,16,121,3,5,6,0 -8,17,121,3,5,6,0 -8,18,121,3,5,6,0 -8,19,121,3,5,6,0 -8,20,121,3,5,6,0 -8,21,121,3,5,6,0 -8,22,121,3,5,6,0 -8,23,121,3,5,6,0 -8,24,121,3,5,6,0 -8,25,121,3,5,6,0 -8,26,121,3,5,6,0 -8,27,121,3,5,6,0 -8,28,121,3,5,6,0 -8,29,121,3,5,6,0 -8,30,121,3,5,6,0 -8,31,121,3,5,6,0 -8,32,121,3,5,6,0 -8,33,121,3,5,6,0 -8,34,121,3,5,6,0 -8,35,121,3,5,6,0 -8,36,121,3,5,6,0 -8,37,121,3,5,6,0 +8,8,110,4,2,6,0 +8,9,102,4,2,8,1 +8,10,102,6,2,8,0 +8,11,102,6,2,8,1 +8,12,102,6,2,8,1 +8,13,102,6,2,8,1 +8,14,102,6,2,8,1 +8,15,102,6,2,6,1 +8,16,102,6,2,8,1 +8,17,102,6,2,6,1 +8,18,102,6,2,8,1 +8,19,102,6,2,0,1 +8,20,102,6,2,0,1 +8,21,102,6,2,0,1 +8,22,102,6,2,0,1 +8,23,102,6,2,0,1 +8,24,102,6,2,0,1 +8,25,102,6,2,0,1 +8,26,102,6,2,0,1 +8,27,102,6,2,0,1 +8,28,102,6,2,0,1 +8,29,102,6,2,0,1 +8,30,102,6,2,0,1 +8,31,102,6,2,0,1 +8,32,102,6,2,0,1 +8,33,102,6,2,0,1 +8,34,102,6,2,0,1 +8,35,102,6,2,0,1 +8,36,102,6,2,0,1 +8,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index b3e95b3e..c00f4102 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,3,2,0 -9,9,102,6,3,0,0 -9,10,121,6,2,0,1 -9,11,121,4,5,6,0 -9,12,121,3,5,6,1 -9,13,121,4,5,6,1 -9,14,121,3,5,6,1 -9,15,121,3,5,6,1 -9,16,121,3,5,6,1 -9,17,121,3,5,6,1 -9,18,121,3,5,6,1 -9,19,121,3,5,6,0 -9,20,121,3,5,6,0 -9,21,121,3,5,6,0 -9,22,121,3,5,6,0 -9,23,121,3,5,6,0 -9,24,121,3,5,6,0 -9,25,121,3,5,6,0 -9,26,121,3,5,6,0 -9,27,121,3,5,6,0 -9,28,121,3,5,6,0 -9,29,121,3,5,6,0 -9,30,121,3,5,6,0 -9,31,121,3,5,6,0 -9,32,121,3,5,6,0 -9,33,121,3,5,6,0 -9,34,121,3,5,6,0 -9,35,121,3,5,6,0 -9,36,121,3,5,6,0 -9,37,121,3,5,6,0 +9,8,110,4,8,6,0 +9,9,110,4,2,8,0 +9,10,102,4,2,8,0 +9,11,102,6,2,8,1 +9,12,102,6,2,8,0 +9,13,102,6,2,0,1 +9,14,102,6,2,0,1 +9,15,102,6,2,0,1 +9,16,102,6,2,8,1 +9,17,102,6,2,8,1 +9,18,102,6,2,6,1 +9,19,102,6,2,8,1 +9,20,102,6,2,6,1 +9,21,102,6,2,0,1 +9,22,102,6,2,0,1 +9,23,102,6,2,0,1 +9,24,102,6,2,0,1 +9,25,102,6,2,0,1 +9,26,102,6,2,0,1 +9,27,102,6,2,0,1 +9,28,102,6,2,0,1 +9,29,102,6,2,0,1 +9,30,102,6,2,0,1 +9,31,102,6,2,0,1 +9,32,102,6,2,0,1 +9,33,102,6,2,0,1 +9,34,102,6,2,0,1 +9,35,102,6,2,0,1 +9,36,102,6,2,0,1 +9,37,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 39c6e464..0920b6c1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,6,3,8,1 -0,9,121,6,3,8,1 -0,10,104,6,3,8,1 -0,11,121,6,3,8,1 -0,12,121,6,3,8,1 -0,13,104,6,3,8,0 -0,14,104,3,3,0,0 -0,15,104,3,3,0,0 -0,16,104,3,3,0,0 -0,17,104,3,3,0,0 -0,18,104,3,3,0,0 -0,19,104,3,3,0,0 -0,20,104,3,3,0,1 -0,21,103,6,3,0,1 -0,22,113,6,3,8,1 -0,23,113,6,3,8,1 -0,24,113,6,3,8,1 -0,25,104,6,3,8,1 -0,26,104,6,3,8,1 -0,27,104,6,3,8,1 -0,28,104,6,3,8,1 -0,29,104,6,3,8,1 -0,30,104,9,3,0,0 -0,31,104,3,3,0,1 -0,32,104,9,3,0,1 -0,33,104,9,3,0,1 -0,34,104,3,3,8,1 -0,35,104,6,3,8,0 -0,36,121,6,3,8,0 -0,37,121,6,3,8,0 +0,8,121,4,9,2,1 +0,9,113,9,7,8,1 +0,10,113,3,1,6,1 +0,11,113,9,3,2,1 +0,12,127,6,1,7,1 +0,13,121,6,1,7,1 +0,14,121,9,1,7,1 +0,15,121,6,0,7,1 +0,16,121,6,0,7,1 +0,17,121,6,7,7,1 +0,18,113,6,7,7,1 +0,19,121,6,7,2,1 +0,20,113,6,7,2,0 +0,21,113,4,7,2,0 +0,22,121,6,1,2,0 +0,23,127,4,0,8,1 +0,24,127,6,0,2,0 +0,25,127,4,0,8,1 +0,26,127,4,1,8,1 +0,27,127,4,1,8,0 +0,28,127,4,1,8,1 +0,29,127,4,1,7,1 +0,30,127,0,1,0,1 +0,31,113,1,4,0,1 +0,32,113,1,9,7,1 +0,33,113,1,7,7,1 +0,34,113,6,9,0,1 +0,35,113,1,7,7,1 +0,36,113,6,7,7,1 +0,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index b1f5c970..a73055c6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,6,3,8,1 +1,8,121,0,7,6,0 1,9,121,6,3,8,0 -1,10,121,6,3,8,0 -1,11,121,6,3,8,0 -1,12,121,6,3,8,0 -1,13,104,3,3,8,0 -1,14,104,3,3,0,0 -1,15,104,3,3,0,0 -1,16,104,3,3,0,0 -1,17,104,3,3,0,0 -1,18,104,3,3,0,0 -1,19,104,3,3,0,0 -1,20,104,3,3,0,0 -1,21,121,6,3,0,1 -1,22,113,6,3,8,1 -1,23,121,6,3,8,1 -1,24,104,6,3,8,1 -1,25,104,6,3,8,0 -1,26,104,6,3,0,0 -1,27,104,9,3,0,1 -1,28,104,3,3,0,1 -1,29,104,9,3,0,1 -1,30,104,3,3,0,1 -1,31,104,3,3,0,1 -1,32,103,6,3,8,1 -1,33,113,6,3,8,1 -1,34,121,6,3,8,1 -1,35,121,6,3,8,1 -1,36,104,6,3,8,1 -1,37,104,6,3,8,0 +1,10,121,9,0,8,0 +1,11,121,4,0,8,0 +1,12,127,6,0,7,0 +1,13,121,6,0,7,1 +1,14,127,6,7,7,1 +1,15,127,6,7,7,1 +1,16,127,4,1,7,1 +1,17,127,4,1,2,1 +1,18,127,4,1,2,1 +1,19,127,6,7,2,1 +1,20,113,6,7,0,1 +1,21,113,1,7,0,1 +1,22,113,1,7,0,1 +1,23,113,1,7,0,1 +1,24,113,1,7,0,1 +1,25,113,1,7,0,1 +1,26,113,6,7,2,1 +1,27,113,6,1,2,1 +1,28,113,6,0,2,1 +1,29,113,6,0,2,1 +1,30,113,6,0,2,1 +1,31,113,6,0,2,1 +1,32,113,1,8,2,1 +1,33,113,1,1,8,1 +1,34,113,1,0,8,1 +1,35,113,1,8,8,1 +1,36,113,1,0,7,1 +1,37,113,1,8,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index b32ec715..087f11a3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,102,6,3,8,1 -2,9,121,6,3,8,1 -2,10,104,6,3,8,1 -2,11,104,6,3,8,0 -2,12,104,6,3,8,0 -2,13,104,6,3,8,0 -2,14,104,6,3,0,0 -2,15,104,3,3,0,0 -2,16,104,3,3,0,0 -2,17,104,3,3,0,0 -2,18,104,3,3,0,1 -2,19,103,4,3,0,1 -2,20,102,6,3,8,1 -2,21,121,6,3,8,1 -2,22,104,6,3,8,1 -2,23,104,6,3,8,1 -2,24,104,6,3,8,0 -2,25,104,6,3,8,0 -2,26,104,6,3,0,0 -2,27,104,9,3,0,1 -2,28,104,3,3,0,0 -2,29,104,3,3,0,0 -2,30,104,3,3,0,1 -2,31,103,4,3,0,1 -2,32,102,6,3,8,1 -2,33,121,6,3,8,1 -2,34,121,6,3,8,1 -2,35,104,6,3,8,1 -2,36,104,6,3,8,0 -2,37,104,6,3,0,0 +2,8,121,4,7,8,0 +2,9,121,0,3,7,0 +2,10,121,0,7,6,1 +2,11,113,0,7,6,0 +2,12,121,4,1,6,1 +2,13,127,0,7,7,1 +2,14,127,6,7,0,1 +2,15,127,6,1,0,1 +2,16,127,6,7,2,1 +2,17,127,6,7,0,1 +2,18,127,6,1,0,1 +2,19,127,6,1,0,1 +2,20,113,6,7,0,1 +2,21,113,1,7,0,1 +2,22,113,1,7,0,1 +2,23,113,1,7,0,1 +2,24,113,1,7,0,1 +2,25,113,6,7,2,1 +2,26,113,6,1,2,1 +2,27,113,6,0,2,1 +2,28,113,6,0,2,1 +2,29,113,6,0,2,1 +2,30,113,6,0,2,1 +2,31,113,1,8,2,1 +2,32,113,1,1,8,1 +2,33,113,1,0,8,1 +2,34,113,1,8,8,1 +2,35,113,1,0,7,1 +2,36,113,1,8,7,1 +2,37,121,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index 03dc6b54..c6ba0686 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,6,3,8,1 -3,9,104,4,3,8,0 -3,10,121,3,3,8,0 -3,11,104,3,3,8,0 -3,12,121,3,3,8,0 -3,13,121,3,3,8,0 -3,14,104,3,3,8,0 -3,15,104,3,3,0,0 -3,16,104,3,3,0,0 -3,17,104,3,3,0,0 -3,18,104,3,3,0,0 -3,19,104,3,3,0,0 -3,20,104,3,3,0,0 -3,21,104,3,3,0,0 -3,22,121,6,3,0,1 -3,23,113,6,3,8,1 -3,24,121,6,3,8,1 -3,25,104,6,3,8,1 -3,26,104,6,3,8,0 -3,27,104,6,3,0,0 -3,28,104,9,3,0,1 -3,29,104,3,3,0,1 -3,30,104,9,3,0,1 -3,31,104,3,3,0,1 -3,32,104,3,3,0,1 -3,33,103,6,3,8,1 -3,34,113,6,3,8,1 -3,35,121,6,3,8,1 -3,36,121,6,3,8,1 -3,37,104,6,3,8,1 -4,8,102,6,9,8,1 -4,9,121,6,3,8,1 -4,10,121,6,3,8,1 -4,11,121,6,3,8,0 -4,12,121,6,3,8,0 -4,13,121,6,3,8,0 -4,14,104,3,3,8,0 -4,15,104,3,3,0,0 -4,16,104,3,3,0,0 -4,17,104,3,3,0,0 -4,18,104,3,3,0,0 -4,19,104,3,3,0,0 -4,20,104,3,3,0,0 -4,21,104,3,3,0,0 -4,22,121,6,3,0,1 -4,23,113,6,3,8,1 -4,24,121,6,3,8,1 -4,25,104,6,3,8,1 -4,26,104,6,3,8,0 -4,27,104,6,3,0,0 -4,28,104,9,3,0,1 -4,29,104,3,3,0,1 -4,30,104,9,3,0,1 -4,31,104,3,3,0,1 -4,32,104,3,3,0,1 -4,33,103,6,3,8,1 -4,34,113,6,3,8,1 -4,35,121,6,3,8,1 -4,36,121,6,3,8,1 -4,37,104,6,3,8,1 +3,8,121,4,9,6,0 +3,9,121,0,3,8,1 +3,10,121,0,7,8,0 +3,11,121,4,0,8,0 +3,12,127,4,0,8,0 +3,13,127,4,0,7,0 +3,14,127,6,0,7,1 +3,15,127,6,7,7,1 +3,16,127,6,7,7,1 +3,17,127,6,1,7,1 +3,18,127,6,1,7,1 +3,19,124,6,7,2,1 +3,20,113,6,7,2,1 +3,21,113,6,7,2,1 +3,22,113,6,7,2,1 +3,23,113,6,1,2,1 +3,24,113,1,2,8,1 +3,25,113,1,1,8,1 +3,26,113,1,0,8,1 +3,27,113,1,0,8,1 +3,28,113,1,0,7,1 +3,29,121,1,8,7,1 +3,30,121,6,0,7,1 +3,31,121,6,0,7,1 +3,32,121,6,7,7,1 +3,33,113,6,7,7,1 +3,34,121,6,7,7,1 +3,35,113,6,7,7,1 +3,36,113,6,7,2,1 +3,37,113,6,7,2,1 +4,8,113,4,9,8,1 +4,9,121,1,7,2,0 +4,10,113,3,7,8,0 +4,11,121,6,9,6,0 +4,12,121,9,1,7,1 +4,13,127,6,9,7,1 +4,14,127,6,1,7,1 +4,15,127,6,1,7,1 +4,16,127,9,1,7,1 +4,17,127,4,1,2,1 +4,18,127,6,1,2,1 +4,19,127,4,1,2,1 +4,20,113,6,2,2,1 +4,21,113,1,3,2,1 +4,22,113,6,7,8,1 +4,23,113,1,1,0,1 +4,24,113,1,2,8,1 +4,25,113,1,1,7,1 +4,26,113,1,8,2,1 +4,27,113,6,7,7,1 +4,28,121,6,0,2,1 +4,29,113,6,0,7,1 +4,30,121,6,8,2,1 +4,31,113,6,7,7,1 +4,32,121,6,7,2,1 +4,33,113,6,7,7,1 +4,34,121,6,7,2,1 +4,35,113,6,7,2,1 +4,36,113,4,1,2,1 +4,37,113,6,0,2,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index 549102b2..67fdd593 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,4,9,8,1 -5,9,113,6,3,8,0 -5,10,104,6,3,8,0 -5,11,104,6,3,0,0 -5,12,104,9,3,0,0 -5,13,121,3,3,8,1 -5,14,121,6,3,8,0 -5,15,104,3,3,8,0 -5,16,104,3,3,0,0 -5,17,104,3,3,0,0 -5,18,104,3,3,0,0 -5,19,121,3,3,0,0 -5,20,104,3,3,0,0 -5,21,104,3,3,0,0 -5,22,104,3,3,0,0 -5,23,121,4,3,0,1 -5,24,121,6,3,8,1 -5,25,104,6,3,8,1 -5,26,104,6,3,8,0 -5,27,104,3,3,0,0 -5,28,104,3,3,0,1 -5,29,104,4,3,0,1 -5,30,104,9,3,0,1 -5,31,104,3,3,0,1 -5,32,104,3,3,0,1 -5,33,104,6,3,0,1 -5,34,113,6,3,8,1 -5,35,113,6,3,8,1 -5,36,113,6,3,8,1 -5,37,113,6,3,8,1 +5,8,113,0,7,4,1 +5,9,113,1,9,6,1 +5,10,113,1,9,2,1 +5,11,113,1,7,2,1 +5,12,113,6,9,7,1 +5,13,121,1,3,2,1 +5,14,113,6,7,7,1 +5,15,121,6,3,2,1 +5,16,113,6,0,7,1 +5,17,121,1,8,2,1 +5,18,113,6,7,7,1 +5,19,121,6,1,2,1 +5,20,113,6,0,2,1 +5,21,113,4,7,2,1 +5,22,113,6,1,2,1 +5,23,113,1,0,2,1 +5,24,113,1,7,2,1 +5,25,113,1,7,7,1 +5,26,113,1,7,2,1 +5,27,113,1,1,7,1 +5,28,121,6,9,2,1 +5,29,113,6,0,7,1 +5,30,121,1,8,2,1 +5,31,113,6,7,7,1 +5,32,121,6,7,7,1 +5,33,113,6,7,7,1 +5,34,121,6,7,2,1 +5,35,113,6,7,7,1 +5,36,121,6,1,2,1 +5,37,113,6,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index 68e5ec32..f223e485 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,102,6,2,8,1 -6,9,113,6,3,8,1 -6,10,121,6,3,8,1 -6,11,121,6,3,8,1 -6,12,121,6,3,8,1 -6,13,121,6,3,8,0 -6,14,121,6,3,8,0 -6,15,104,3,3,8,0 -6,16,104,3,3,0,0 -6,17,104,3,3,0,0 -6,18,104,3,3,0,0 -6,19,104,3,3,0,0 -6,20,104,3,3,0,0 -6,21,104,3,3,0,0 -6,22,104,3,3,0,0 -6,23,121,6,3,0,1 -6,24,113,6,3,8,1 -6,25,121,6,3,8,1 -6,26,104,6,3,8,1 -6,27,104,6,3,8,0 -6,28,104,6,3,0,0 -6,29,104,9,3,0,1 -6,30,104,3,3,0,1 -6,31,104,9,3,0,1 -6,32,104,3,3,0,1 -6,33,104,3,3,0,1 -6,34,103,6,3,8,1 -6,35,113,6,3,8,1 -6,36,121,6,3,8,1 -6,37,121,6,3,8,1 -7,8,121,6,9,8,1 -7,9,104,6,3,8,1 -7,10,104,6,3,8,0 -7,11,104,6,3,0,0 -7,12,104,6,3,0,1 -7,13,121,6,3,8,1 -7,14,104,6,3,8,0 -7,15,104,3,3,0,0 -7,16,104,3,3,0,0 -7,17,104,3,3,0,1 -7,18,104,4,3,0,1 -7,19,103,6,3,8,1 -7,20,104,6,3,8,1 -7,21,104,9,3,0,0 -7,22,121,6,3,8,1 -7,23,104,6,3,8,1 -7,24,104,6,3,8,1 -7,25,104,6,3,8,1 -7,26,104,6,3,8,0 -7,27,104,3,3,0,0 -7,28,104,3,3,0,0 -7,29,104,3,3,0,0 -7,30,104,3,3,0,0 -7,31,104,3,3,0,1 -7,32,104,3,3,0,1 -7,33,103,4,3,0,1 -7,34,113,6,3,8,1 -7,35,113,6,3,8,1 -7,36,113,6,3,8,1 -7,37,104,6,3,8,1 +6,8,121,4,7,8,0 +6,9,121,6,7,8,0 +6,10,121,6,7,7,0 +6,11,121,6,7,7,1 +6,12,127,6,7,7,1 +6,13,127,4,7,0,1 +6,14,127,4,1,0,1 +6,15,127,4,1,0,1 +6,16,127,4,1,0,1 +6,17,127,4,1,2,1 +6,18,127,6,7,8,1 +6,19,113,6,1,0,1 +6,20,113,1,7,0,1 +6,21,113,6,7,0,1 +6,22,113,1,7,0,1 +6,23,113,1,7,0,1 +6,24,113,1,7,0,1 +6,25,113,6,7,0,1 +6,26,113,6,1,2,1 +6,27,113,6,0,2,1 +6,28,113,6,0,2,1 +6,29,113,6,0,2,1 +6,30,113,6,0,2,1 +6,31,113,6,8,2,1 +6,32,113,1,1,2,1 +6,33,113,1,8,8,1 +6,34,113,1,0,8,1 +6,35,113,1,8,7,1 +6,36,121,1,8,2,1 +6,37,113,6,7,7,1 +7,8,121,4,9,6,0 +7,9,121,0,3,8,0 +7,10,121,0,3,6,0 +7,11,121,0,3,7,0 +7,12,121,0,9,7,0 +7,13,127,0,9,7,1 +7,14,127,6,7,7,1 +7,15,127,6,1,7,1 +7,16,127,6,7,2,1 +7,17,127,4,1,8,1 +7,18,127,6,1,8,1 +7,19,127,6,1,8,1 +7,20,127,6,1,0,1 +7,21,113,1,7,0,1 +7,22,113,1,7,0,1 +7,23,113,1,7,0,1 +7,24,113,1,1,0,1 +7,25,113,1,4,0,1 +7,26,113,1,7,7,1 +7,27,113,6,7,2,1 +7,28,113,6,7,2,1 +7,29,113,6,7,7,1 +7,30,121,6,7,2,1 +7,31,113,6,7,7,1 +7,32,121,6,7,2,1 +7,33,113,6,7,7,1 +7,34,121,6,1,2,1 +7,35,127,6,0,8,1 +7,36,127,6,0,2,1 +7,37,127,4,0,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index 84a9c524..c09630f3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,6,3,8,1 -8,9,121,6,3,8,1 -8,10,104,6,3,8,1 -8,11,104,6,3,8,1 -8,12,121,6,3,8,1 -8,13,121,6,3,8,1 -8,14,104,6,3,8,0 -8,15,104,9,3,0,0 -8,16,104,3,3,0,0 -8,17,104,3,3,0,0 -8,18,104,3,3,0,0 -8,19,104,3,3,0,0 -8,20,104,3,3,0,0 -8,21,104,3,3,0,1 -8,22,103,6,3,8,1 -8,23,121,6,3,8,1 -8,24,104,6,3,8,1 -8,25,104,6,3,8,1 -8,26,104,6,3,8,0 -8,27,104,6,3,0,0 -8,28,104,9,3,0,1 -8,29,104,9,3,0,1 -8,30,104,3,3,0,1 -8,31,104,3,3,0,1 -8,32,104,6,3,0,1 -8,33,113,6,3,8,1 -8,34,121,6,3,8,1 -8,35,121,6,3,8,1 -8,36,121,6,3,8,1 -8,37,104,6,3,8,1 +8,8,113,4,3,8,0 +8,9,121,1,3,8,0 +8,10,121,9,0,7,0 +8,11,121,4,9,7,1 +8,12,127,6,7,7,1 +8,13,127,6,7,7,1 +8,14,127,6,7,0,1 +8,15,127,6,1,0,1 +8,16,127,4,1,2,1 +8,17,127,4,1,2,1 +8,18,127,6,7,2,1 +8,19,113,6,7,0,1 +8,20,113,1,1,0,1 +8,21,113,1,2,8,1 +8,22,113,1,1,0,1 +8,23,113,1,2,8,1 +8,24,113,1,9,7,1 +8,25,113,6,7,7,1 +8,26,121,6,1,2,1 +8,27,113,6,0,7,1 +8,28,121,6,7,2,1 +8,29,113,6,0,7,1 +8,30,121,6,7,2,1 +8,31,113,6,0,7,1 +8,32,121,1,7,2,1 +8,33,113,6,7,8,1 +8,34,113,1,1,2,1 +8,35,113,6,7,8,1 +8,36,102,1,1,2,1 +8,37,113,6,7,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index ad971442..ac971d29 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,3,0,0 -9,9,121,6,3,8,1 -9,10,104,6,3,8,1 -9,11,104,6,3,8,1 -9,12,104,6,3,8,1 -9,13,104,6,3,8,1 -9,14,104,6,3,8,0 -9,15,104,6,3,0,0 -9,16,104,9,3,0,2 -9,17,104,3,3,0,0 -9,18,104,3,3,0,1 -9,19,104,9,3,0,1 -9,20,103,6,3,8,1 -9,21,121,6,3,8,1 -9,22,104,6,3,8,1 -9,23,121,6,3,8,1 -9,24,121,6,3,8,1 -9,25,104,6,3,8,0 -9,26,104,9,3,0,0 -9,27,104,3,3,0,0 -9,28,104,3,3,0,0 -9,29,104,3,3,0,0 -9,30,104,3,3,0,0 -9,31,104,3,3,0,0 -9,32,104,3,3,0,1 -9,33,103,6,3,8,1 -9,34,121,6,3,8,1 -9,35,104,6,3,8,1 -9,36,104,6,3,8,1 -9,37,104,6,3,8,0 +9,8,121,0,9,2,0 +9,9,121,3,3,8,0 +9,10,121,3,0,8,0 +9,11,121,3,0,8,0 +9,12,121,3,0,7,0 +9,13,121,6,8,7,1 +9,14,127,0,7,7,1 +9,15,127,0,7,7,1 +9,16,127,4,7,7,1 +9,17,127,6,7,7,1 +9,18,127,6,7,7,1 +9,19,127,6,7,2,1 +9,20,113,6,7,2,1 +9,21,113,6,7,2,1 +9,22,113,6,7,2,1 +9,23,113,6,1,2,1 +9,24,113,1,2,8,1 +9,25,113,1,1,8,1 +9,26,113,1,0,8,1 +9,27,113,1,0,8,1 +9,28,113,1,0,7,1 +9,29,121,1,8,7,1 +9,30,121,6,0,7,1 +9,31,121,6,0,7,1 +9,32,121,6,7,7,1 +9,33,113,6,7,7,1 +9,34,121,6,7,7,1 +9,35,113,6,7,7,1 +9,36,113,6,7,2,1 +9,37,113,6,7,2,1 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv index 498e4491..feb89b42 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0091290055,0.0077892784,0.007239608,0.020136122,0.006804843,0.065107465,0.09113526,0.03846739,0.046789855,0.011856737,0.010647341,0.0430088,0.01229634,0.024512613,0.043958448,0.015431894,0.10510967,0.008920799,0.012439459,0.013178185,0.0115483245,0.042840227,0.020539861,0.013582593,0.07060103,0.024588121,0.021217003,0.10432629,0.008402498,0.025339192,0.025642872,0.0106556,0.026757332 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv index 2a1876ce..d7938c94 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.008205366,0.008331864,0.0074459263,0.021188624,0.0073211472,0.061644685,0.07545811,0.034722853,0.043902382,0.010114443,0.010213885,0.042470828,0.012390661,0.022267908,0.032764185,0.01806368,0.12040593,0.009458063,0.014117386,0.011872736,0.013330289,0.041174386,0.020099496,0.013925595,0.072014526,0.024408026,0.018947104,0.13367255,0.00828295,0.024368336,0.02391859,0.011060069,0.022437433 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv index dd67b48c..06ba23c9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.012586267,0.009460248,0.01056256,0.024452873,0.0086881975,0.052435704,0.10992195,0.0706047,0.03934652,0.017093472,0.012070613,0.038141258,0.016003482,0.024356524,0.05110281,0.022539876,0.057360444,0.0130562065,0.014306477,0.011672565,0.013660459,0.019611526,0.033125043,0.01840493,0.062889695,0.025482355,0.023796566,0.06978374,0.011446344,0.029403456,0.027195802,0.014777219,0.034660116 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv index 426a7d74..d6044728 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.008913519,0.007365497,0.007884704,0.019221375,0.008245324,0.061635274,0.10626261,0.04613362,0.039076947,0.013314558,0.01237192,0.04430893,0.014824947,0.02413848,0.04149791,0.018489841,0.07907649,0.010472187,0.011848482,0.012690502,0.011933226,0.034617245,0.024047974,0.015420446,0.064966045,0.021884238,0.020587962,0.12284686,0.008948034,0.029838102,0.020556517,0.010585136,0.025995124 0.0094871465,0.011149254,0.009741706,0.023295518,0.012869805,0.05367749,0.048896357,0.031161776,0.05537468,0.012018335,0.013214679,0.028068008,0.016052,0.03157924,0.03311481,0.021816775,0.052957285,0.012617017,0.022129932,0.015422226,0.02169244,0.031480502,0.015010904,0.02252592,0.07512524,0.07089812,0.022424813,0.11010506,0.011601552,0.021417523,0.044051338,0.016005058,0.02301758 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv index 10cd194d..d211d4e4 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.00905651,0.008449699,0.007513583,0.01789081,0.009958172,0.059586458,0.09060577,0.05163472,0.05080496,0.015027517,0.0131017715,0.046035837,0.0129659865,0.021924116,0.043815948,0.022697417,0.07993372,0.0115594845,0.015695909,0.011922975,0.012971503,0.034338184,0.025293143,0.016621767,0.06711588,0.022368787,0.02659395,0.0939604,0.010572614,0.026793035,0.024672363,0.012390149,0.026126813 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv index e7d6329d..8e0cfcaa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.008020919,0.0066487696,0.0072186273,0.023239477,0.009595765,0.059273914,0.062329326,0.027587652,0.0486198,0.008902664,0.009877493,0.03435876,0.017895322,0.022803104,0.0360042,0.016689297,0.112537004,0.008584821,0.014853362,0.013560702,0.015122532,0.043928403,0.0197575,0.01412689,0.07697556,0.037536968,0.014428177,0.14790235,0.008241942,0.016693683,0.024688615,0.013138984,0.018857364 0.0086295465,0.007917115,0.007522475,0.023743981,0.0073922593,0.06037666,0.08741754,0.043700412,0.04167852,0.012650199,0.01019312,0.043437473,0.013766954,0.021962289,0.04165744,0.018287549,0.10325626,0.009215165,0.01214539,0.011779306,0.012235232,0.045917273,0.018463248,0.014126799,0.068317495,0.021482795,0.016241094,0.12552734,0.008585244,0.025119003,0.02262137,0.01049176,0.02414174 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv index 0efa80de..e2701732 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.00940564,0.0063802544,0.0065206103,0.027256832,0.0066316505,0.05138203,0.10203898,0.048445128,0.049608555,0.00873864,0.010182529,0.026134778,0.014573924,0.02411956,0.038605724,0.036600724,0.07013269,0.011340922,0.020680869,0.011217838,0.01796068,0.016984288,0.026266541,0.013434889,0.07714,0.08002693,0.012619701,0.06227914,0.007597093,0.02409692,0.043419037,0.014213739,0.0239632 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv index 30a706e1..99ee0e82 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.009661113,0.007831191,0.009208629,0.018906532,0.008831174,0.065691166,0.10545667,0.038684368,0.039912082,0.01415859,0.013239993,0.03936315,0.0131430235,0.025695173,0.04284285,0.015051846,0.08823259,0.009918131,0.012693808,0.015639171,0.01375921,0.053180333,0.021613518,0.016188124,0.064060025,0.024109922,0.022105852,0.08915296,0.01004957,0.026042204,0.028148724,0.010506249,0.026922056 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv index 93284692..a2fc7cd2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0042463774,0.005140092,0.0060796365,0.016366256,0.0067424467,0.03495936,0.06623093,0.020122634,0.050006244,0.00649412,0.0041204235,0.02871717,0.018642396,0.028757636,0.033106435,0.01599839,0.23275402,0.007276528,0.008622721,0.017800169,0.010982657,0.028370103,0.02974473,0.0034585185,0.06776658,0.046286162,0.0064784237,0.120085396,0.0039499593,0.021950865,0.015566807,0.018041762,0.015134025 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv index d5bd2f61..609b1f0f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0041903867,0.0054771546,0.0058246264,0.015669782,0.0071306545,0.030696195,0.06473787,0.018447235,0.05242684,0.0068101883,0.004801957,0.029178623,0.022633398,0.02907579,0.033386257,0.018674878,0.19909294,0.006572294,0.009357265,0.01596702,0.013374633,0.026702495,0.032056045,0.003591021,0.07047866,0.053875104,0.0050279247,0.13526632,0.0042218207,0.021093741,0.021248914,0.019235754,0.013676274 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv index ae9e3e1a..a7ac31d6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0054918397,0.0063162544,0.0061463765,0.016365495,0.0076878374,0.034990918,0.0610308,0.020188866,0.0626216,0.008143705,0.0056989286,0.028557653,0.01842186,0.026081735,0.02933535,0.018272739,0.24774212,0.008434298,0.009743969,0.017181823,0.013515602,0.028113525,0.035016388,0.004349286,0.05375894,0.048733603,0.0074889436,0.08502142,0.0040941467,0.018917236,0.024357485,0.024139129,0.014040137 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv index 71f47b47..942890e0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.004381987,0.006287049,0.006620055,0.019419348,0.006867307,0.03929928,0.07064888,0.017149057,0.060524255,0.006789356,0.0050974856,0.027337514,0.024331838,0.03136498,0.029390393,0.020899236,0.15376608,0.0074551413,0.009935729,0.015628591,0.013709809,0.03817771,0.03494091,0.0051154993,0.06018743,0.075591475,0.0067811315,0.11117232,0.0047863433,0.015857743,0.028808644,0.024059782,0.017617658 0.004469706,0.006364652,0.0068032146,0.020612448,0.007166283,0.039386127,0.08379896,0.017597469,0.06735702,0.007070649,0.005259082,0.027966166,0.024157904,0.03855127,0.026747128,0.019213978,0.11608029,0.0063566845,0.010583058,0.01697354,0.012141066,0.043337125,0.031579476,0.004105956,0.061916213,0.07502441,0.0060634622,0.11869589,0.005418634,0.019128878,0.027781855,0.025369624,0.01692181 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv index 0e9d5181..7f7b97c7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.005170072,0.0052365907,0.00694314,0.017285356,0.008234528,0.037991844,0.07294639,0.022531565,0.05857518,0.0065963003,0.005045354,0.026125679,0.020520791,0.035622887,0.0324971,0.01749203,0.16650967,0.007892656,0.009556492,0.017534178,0.011642951,0.03663207,0.033574145,0.0035568238,0.07068761,0.048016,0.0072974605,0.12339532,0.0045464407,0.022555495,0.018934185,0.020668464,0.01818533 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv index 87181f3b..220a5080 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0050350777,0.005766118,0.006457709,0.019448206,0.007035608,0.036554355,0.06908976,0.016720336,0.073623985,0.007380201,0.0050186585,0.027139133,0.019853646,0.03107149,0.027048368,0.018990275,0.18321688,0.0086597875,0.00932425,0.017520232,0.013038053,0.03883165,0.028723942,0.0043549896,0.060425516,0.060644113,0.0076746633,0.10625886,0.0049037784,0.016128076,0.024719888,0.024399208,0.014943133 0.0042376784,0.005924756,0.0069834692,0.018832779,0.0078081987,0.04281036,0.07998875,0.020728823,0.057859186,0.006507186,0.005319783,0.035538692,0.020944735,0.03357084,0.033523228,0.017411817,0.14398022,0.0064492146,0.010395881,0.018382689,0.010860411,0.03802423,0.034201827,0.003840388,0.06658509,0.059049625,0.0067133494,0.10930205,0.00455577,0.024278667,0.023504738,0.026207874,0.015677737 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv index 5f3dd3e1..83108e29 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.005213573,0.005612019,0.005980635,0.014423169,0.008148407,0.035215456,0.08324456,0.021167181,0.05202259,0.006690955,0.0051461984,0.03389285,0.022059022,0.028906152,0.04061394,0.018913923,0.16657288,0.005920637,0.008955144,0.018136969,0.010939499,0.027240243,0.03896024,0.0037672839,0.06677831,0.05034332,0.006739948,0.11629482,0.004037235,0.02923933,0.021340776,0.020757355,0.016725339 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv index 57dae23d..d3b4ccb7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.004618134,0.006132982,0.006672614,0.015618401,0.0074373814,0.03397381,0.07677221,0.019593101,0.05670967,0.0069386126,0.0054081944,0.030513486,0.021875117,0.02945475,0.029283365,0.017094098,0.20585725,0.007897137,0.009288681,0.016525654,0.011750388,0.03215573,0.031738274,0.0035157073,0.06421899,0.043070234,0.00695176,0.11497121,0.004500923,0.020835267,0.023099473,0.021389142,0.014138295 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 67d3a1aa..7e5bfc90 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.016444147,0.017504703,0.010868917,0.024397992,0.02378631,0.05476737,0.018488651,0.01870659,0.03153483,0.01417574,0.018273251,0.04281981,0.028775947,0.030504966,0.017300766,0.020425139,0.019642664,0.01798995,0.01798995,0.06529241,0.026927112,0.06377991,0.09389312,0.034339547,0.03991245,0.021912975,0.010130945,0.04549251,0.012461275,0.0647843,0.021114701,0.01657312,0.03898788 0.018649058,0.011534323,0.009525009,0.04894217,0.016076498,0.027988719,0.09323943,0.032794107,0.024086585,0.014523906,0.023028513,0.028638465,0.056332096,0.02776413,0.029872134,0.031101944,0.02357462,0.010298991,0.0192035,0.01811063,0.018979773,0.07148915,0.060672056,0.015280495,0.074919984,0.019054057,0.016522154,0.039403025,0.012767332,0.009750889,0.041294016,0.035528205,0.019054057 0.009243722,0.015240321,0.012585413,0.012245942,0.011020156,0.044706393,0.04126598,0.022088086,0.022789238,0.016350478,0.017748276,0.052165084,0.025299398,0.037463184,0.07560385,0.03431107,0.060041644,0.014372992,0.013344871,0.014485721,0.019722441,0.03816479,0.025200764,0.012536347,0.06316938,0.05865078,0.021873433,0.038314164,0.036381554,0.024521017,0.025949989,0.020953465,0.062190026 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 38cf6ada..c1bad420 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.018813502,0.0097793965,0.019639514,0.023574388,0.030255334,0.08317135,0.027166266,0.015935654,0.042812943,0.011081507,0.016963415,0.03456955,0.039287366,0.025708733,0.03456955,0.021297682,0.02741194,0.017777506,0.02591037,0.016123498,0.03373579,0.01538515,0.036263976,0.033180345,0.039828185,0.11821033,0.015935654,0.05716278,0.01116842,0.03830239,0.035701755,0.008766194,0.014509578 0.013969102,0.009713985,0.01286894,0.013969102,0.015045315,0.06638303,0.04526929,0.020847589,0.039484575,0.014639493,0.013645508,0.046162147,0.04162265,0.021467391,0.05503346,0.02815642,0.026431143,0.014356339,0.012231754,0.020206176,0.039484575,0.038720876,0.0321792,0.0149866585,0.092163704,0.023808694,0.018834226,0.04049995,0.016524045,0.019508144,0.04734924,0.046797603,0.03763967 0.017729616,0.014929833,0.020768544,0.022854377,0.015403757,0.04781904,0.025558222,0.03895261,0.058589116,0.019701704,0.013646972,0.08070991,0.04781904,0.021261055,0.05070465,0.018726205,0.047077674,0.024115471,0.022086421,0.015646331,0.028528795,0.032546125,0.01435788,0.021136845,0.0401891,0.06310296,0.017626034,0.050903104,0.02488098,0.021302622,0.018873077,0.016655432,0.025796438 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index ac0e5c1a..4bb17616 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.014180237,0.016257722,0.02075337,0.015035935,0.023724249,0.09210627,0.033686046,0.016321354,0.029331319,0.01988051,0.02091614,0.022904685,0.020075608,0.043507922,0.036637343,0.019610556,0.02790456,0.0151538635,0.01619434,0.025217365,0.032018133,0.042417135,0.02589112,0.017960545,0.12688175,0.066083014,0.015881114,0.024741694,0.022048742,0.031521738,0.026837192,0.013960393,0.02435811 0.010987974,0.009621391,0.008102024,0.010004664,0.01264708,0.09947699,0.039184675,0.038127735,0.026918061,0.008229612,0.013890101,0.029495217,0.02808619,0.054296385,0.039108217,0.046989605,0.02911958,0.009696852,0.010649909,0.018258192,0.032708064,0.031547327,0.04019234,0.021597609,0.04019234,0.045543887,0.023859728,0.069717936,0.013890101,0.030031558,0.07900077,0.007976414,0.02085151 0.016185524,0.016569352,0.011432509,0.008799916,0.01716223,0.0705819,0.029802466,0.025813933,0.0328878,0.008075258,0.016122423,0.023230024,0.018376462,0.034974713,0.0608454,0.10472156,0.020986577,0.009367462,0.015996957,0.017637983,0.0325523,0.024179006,0.022515312,0.025738416,0.0861416,0.026348786,0.020620897,0.04803876,0.019523472,0.043314718,0.05390604,0.013629578,0.02392066 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 58c7fbc8..b9714301 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.013940462,0.019203799,0.019620843,0.012943281,0.026376959,0.08539569,0.034201056,0.016171219,0.036371298,0.017553693,0.018832363,0.023096437,0.022320347,0.02289433,0.035982683,0.026197264,0.0309963,0.018396111,0.017349185,0.024706373,0.039096992,0.03601784,0.021845924,0.017417088,0.139698,0.046610545,0.013511559,0.03353955,0.018649349,0.01886918,0.03457043,0.012447432,0.04517649 0.018725712,0.011787114,0.01107297,0.033447456,0.019894524,0.08055031,0.03819819,0.035431203,0.03186907,0.018291932,0.019207258,0.02245556,0.13702068,0.054503065,0.023191012,0.02562002,0.01916978,0.013834468,0.016687555,0.02840035,0.030843345,0.021892576,0.026087089,0.01579946,0.04885623,0.023418596,0.015923375,0.042116705,0.01549387,0.026875785,0.03695072,0.019433666,0.016950345 0.020445274,0.016654389,0.013200464,0.028482636,0.033642784,0.083429486,0.028041055,0.019777574,0.025619086,0.021657871,0.030393722,0.014611581,0.022830635,0.123300776,0.01745365,0.037973646,0.017728506,0.027734673,0.01872503,0.024196517,0.019738983,0.021280492,0.021657871,0.019509016,0.022542626,0.05344693,0.025725637,0.07596341,0.020049827,0.038271476,0.015432905,0.013780033,0.026701493 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index daeca86b..c35131db 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.015050883,0.01172164,0.012093725,0.022309033,0.010756382,0.094016306,0.022882726,0.03638838,0.029932264,0.010672675,0.015347736,0.027256964,0.022027602,0.037543472,0.08695087,0.023957483,0.07613672,0.010714447,0.015407805,0.012674115,0.016659811,0.021770975,0.033035073,0.019553527,0.0648693,0.03820925,0.009755615,0.032081287,0.012924089,0.10570537,0.0215594,0.0116304215,0.018404752 0.01221852,0.020105632,0.011523162,0.04298132,0.016506167,0.056940995,0.022168143,0.083172925,0.026531791,0.014566641,0.0132113695,0.06253745,0.035355467,0.036727987,0.024466112,0.017230876,0.11821256,0.01090991,0.019639885,0.026805244,0.014284897,0.02955142,0.036549088,0.017708533,0.03152267,0.038228378,0.0096279625,0.02415747,0.01929767,0.024778698,0.03875462,0.014008602,0.029717823 0.0134996595,0.008414936,0.008818777,0.03387192,0.012195926,0.014370312,0.033657596,0.01964189,0.031905293,0.0134996595,0.019757316,0.038307022,0.07952743,0.028943907,0.039215446,0.05639339,0.046569496,0.01007136,0.015844474,0.011457012,0.019000426,0.048709184,0.071847044,0.01907479,0.08498784,0.01888942,0.009314485,0.045937136,0.01634743,0.01713196,0.024065744,0.06390209,0.024829673 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index eb9b1110..6fdccfca 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.013031122,0.011321634,0.010389316,0.012531906,0.014766195,0.104928374,0.035284165,0.027871214,0.020864384,0.010389316,0.017811432,0.024512332,0.020182995,0.08139971,0.029885026,0.043062516,0.016154267,0.010552924,0.013817477,0.024947023,0.036833324,0.051740803,0.04085048,0.033833183,0.039362326,0.033146404,0.022692353,0.050938636,0.017263431,0.053175114,0.046470832,0.012385906,0.017603923 0.013867004,0.0117917815,0.01430719,0.011837933,0.013572258,0.038663756,0.02143049,0.018033074,0.02613567,0.012749956,0.014475838,0.04330135,0.019403422,0.029014427,0.033526108,0.025405882,0.021388676,0.013921278,0.016086007,0.024153845,0.020156674,0.32372767,0.016957058,0.01336184,0.04830615,0.016403275,0.014877124,0.025381085,0.016825097,0.016661588,0.018156769,0.017359182,0.028760536 0.02343217,0.018681755,0.01668093,0.015979351,0.02779923,0.038860146,0.042846564,0.01560919,0.039012242,0.023295274,0.038633116,0.022228505,0.060541473,0.026786525,0.037848905,0.03317399,0.03386134,0.021544605,0.028099464,0.034529194,0.031596933,0.040725086,0.03131662,0.013299196,0.04855152,0.04276296,0.021798568,0.028569853,0.029247366,0.014549365,0.03781196,0.029795108,0.03053148 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 74d4cc81..74de4f73 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.01910463,0.02436371,0.021312755,0.02668002,0.029352391,0.070567615,0.022909949,0.013841413,0.03352967,0.023545036,0.025808707,0.034057684,0.031127442,0.056261405,0.02002148,0.035972085,0.04840573,0.025758348,0.038366944,0.02652415,0.030842822,0.029618738,0.034543376,0.017982226,0.04520731,0.032403,0.018123262,0.04100125,0.022118514,0.023962572,0.035972085,0.020257486,0.020456282 0.013497088,0.009385752,0.010718865,0.022892157,0.017195737,0.047109466,0.042228654,0.023229958,0.034365196,0.015841454,0.01488167,0.039592747,0.037339516,0.025289863,0.04841539,0.025228195,0.036049604,0.009608328,0.015474488,0.012289238,0.024380473,0.03366762,0.052554406,0.010148417,0.2136187,0.02663978,0.014536936,0.043314595,0.011321378,0.008347861,0.026646286,0.017845849,0.016344316 0.009544797,0.0067682746,0.008827494,0.02225743,0.00889673,0.03658895,0.043281052,0.023995617,0.03151086,0.010858004,0.017283395,0.049428515,0.06729738,0.028021205,0.06756077,0.07025208,0.047720984,0.008758798,0.011423627,0.010320387,0.020766476,0.04203145,0.031113345,0.019470233,0.094904505,0.027490968,0.008489318,0.034540378,0.013618987,0.026697252,0.028558182,0.05139752,0.02032508 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index d407a31f..b406953d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.015481911,0.021790396,0.019840382,0.03492312,0.020390378,0.059813716,0.027535558,0.028744513,0.04444978,0.020833192,0.014430728,0.048249777,0.029595483,0.019685984,0.057973444,0.018601947,0.035025585,0.018277813,0.016224904,0.025851479,0.029047865,0.061471812,0.022220174,0.02191845,0.041189697,0.06392057,0.01972447,0.050961923,0.024214173,0.033323877,0.018894885,0.01597336,0.019418672 0.013983444,0.010351101,0.01371298,0.024782542,0.011960674,0.073268,0.036626223,0.02346937,0.02346364,0.022808464,0.020010805,0.03494899,0.019855078,0.04996443,0.029229501,0.023452187,0.026665796,0.013343096,0.015357809,0.02130139,0.01657335,0.20548517,0.04207427,0.009028391,0.04006921,0.015752748,0.028000148,0.020666188,0.018927356,0.024217322,0.020828273,0.027378248,0.02244389 0.012367314,0.014458855,0.009707215,0.026529063,0.018349245,0.059930302,0.13718182,0.03231419,0.018601837,0.015572799,0.02426137,0.023676222,0.026946833,0.040948816,0.021202514,0.05785998,0.014515445,0.011172936,0.013424592,0.019570857,0.021961171,0.045237765,0.03869391,0.013635999,0.041593663,0.022746976,0.036456212,0.028863892,0.020113382,0.012033726,0.06530834,0.032015786,0.022746976 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 887fec91..c5305b93 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.021211134,0.028320579,0.023478584,0.058909986,0.13095303,0.09981858,0.10119266,0.05229339,0.18758154,0.118306205,0.10178733,0.036364343,0.039782714 0.016987843,0.024144594,0.015347238,0.05002766,0.08610305,0.046630908,0.095680416,0.25555444,0.118380524,0.08460274,0.08410848,0.03582306,0.08660904 0.03188173,0.04349213,0.038607225,0.03515228,0.05744916,0.060088728,0.064544536,0.08375145,0.061064795,0.27327284,0.060530446,0.032006513,0.15815818 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 3b040be2..5dc72934 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.036800325,0.042522695,0.031600185,0.123525076,0.04186344,0.10062151,0.12113588,0.06976658,0.029225392,0.18399003,0.06321378,0.057444494,0.098290615 0.023137681,0.02156669,0.017740281,0.07512827,0.09349864,0.04173359,0.115230136,0.07210918,0.043226883,0.15873621,0.05558578,0.03740975,0.24489695 0.03727073,0.06427239,0.031631254,0.054867815,0.053701587,0.09143873,0.115476556,0.026950166,0.027481709,0.1778087,0.052355234,0.033020034,0.23372512 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index a9e05bb0..dc7b23c0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.020409178,0.02520197,0.032233812,0.12212525,0.036383294,0.0602501,0.0626177,0.04644414,0.08024828,0.33719864,0.04397243,0.08328219,0.04963303 0.018363692,0.022676133,0.023579445,0.082380764,0.027245997,0.11293152,0.13254708,0.07497192,0.07754087,0.18692133,0.097163096,0.057175048,0.08650309 0.015567869,0.014854965,0.02337014,0.12197339,0.0134203425,0.0694305,0.18382038,0.11868336,0.12584524,0.1414916,0.04014407,0.09117559,0.04022255 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index e5aef4b6..b1f3057f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.021790942,0.02875576,0.023932666,0.11462324,0.033882566,0.074223466,0.087884694,0.03663579,0.07831908,0.31525108,0.041190725,0.09521178,0.048298124 0.019185683,0.01774385,0.017605767,0.11346654,0.04976387,0.07859597,0.28414276,0.10032964,0.06620061,0.09333503,0.042648513,0.07882658,0.038155284 0.049818195,0.04616438,0.07234362,0.14387244,0.037678268,0.15077703,0.11031084,0.13836077,0.054394927,0.069640145,0.04336742,0.054607823,0.028664112 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index f5f64a91..7a6d6645 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.021908142,0.024061386,0.026947476,0.05529263,0.035699606,0.055726297,0.103704534,0.12558115,0.045839198,0.3591476,0.039055485,0.076020196,0.031016354 0.031836722,0.03900717,0.033890016,0.036358677,0.06507003,0.07140441,0.04242466,0.11265075,0.088420585,0.23159625,0.14606592,0.054314982,0.04695982 0.0118632335,0.019789722,0.010469266,0.04605744,0.101288736,0.03852003,0.21526752,0.2169559,0.096273586,0.13005732,0.03852003,0.046919998,0.02801721 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 849903e2..f5d1ffa1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.019913744,0.02274221,0.032832213,0.12439244,0.026381426,0.079455666,0.09334777,0.11459569,0.13293332,0.11731324,0.09190055,0.060269855,0.08392191 0.017521279,0.033905335,0.016459718,0.045982454,0.0826155,0.044134606,0.0711495,0.08046563,0.19895993,0.1259736,0.060649738,0.052003276,0.17017946 0.025699943,0.03512766,0.01985938,0.048484996,0.0704764,0.038580187,0.07725216,0.15866601,0.17562728,0.14334281,0.07823914,0.10631546,0.0223285 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 31f376e9..81f95111 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.044508155,0.08047588,0.044508155,0.05337343,0.06501244,0.10866292,0.057261333,0.064758986,0.11499529,0.079421885,0.09061411,0.14939743,0.047009982 0.012853926,0.02102762,0.016504768,0.088702664,0.063192055,0.041492984,0.12681279,0.11774168,0.07601974,0.21071875,0.06582174,0.07075447,0.088356845 0.011193676,0.014945519,0.013086734,0.07242391,0.087019324,0.05896654,0.2649157,0.11393881,0.05971991,0.20471099,0.019190425,0.03407726,0.045811202 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index be998e4d..55254927 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.03258783,0.04750771,0.034689564,0.0454208,0.056416802,0.106019855,0.053991236,0.023748815,0.043766156,0.28041837,0.04988499,0.026701512,0.1988464 0.02455211,0.0374375,0.024744675,0.051875398,0.11622004,0.027604679,0.038625892,0.22227663,0.1474909,0.11622004,0.06943205,0.04445813,0.079061925 0.027025884,0.03122835,0.031596463,0.08698541,0.055997707,0.056547236,0.067414336,0.21009848,0.09963192,0.10380335,0.10002187,0.03098533,0.09866369 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index a629f483..6a547fcd 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.017289048,0.016052337,0.023816664,0.022026813,0.09165594,0.034517944,0.036103908,0.02730594,0.11362295,0.14877227,0.39813527,0.0136234425,0.05707744 0.019879099,0.019879099,0.028475493,0.0552105,0.080095805,0.04910524,0.08279988,0.06850958,0.17240135,0.12712078,0.11001386,0.107885994,0.07862336 0.028068636,0.036751684,0.030827366,0.19407536,0.14006053,0.1583997,0.07188607,0.0728045,0.052336797,0.053473387,0.031681933,0.09230354,0.037330437 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 0cfd51a0..97f72b85 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.028672202,0.035683133,0.04295809,0.05304616,0.20614591,0.06991537,0.099297024,0.038885273,0.108631276,0.13206205,0.030881178,0.055105437,0.09871691 0.01782257,0.03189652,0.03448836,0.090687424,0.24411833,0.09002563,0.051571313,0.08114297,0.06220688,0.11419271,0.09202563,0.054790262,0.03503147 0.038860124,0.03483399,0.03840739,0.11969761,0.24464603,0.101586044,0.07508794,0.03708059,0.077282585,0.058908433,0.050584264,0.046418726,0.07660632 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index d1779af8..be8b8095 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.020406444,0.035674796,0.030395307,0.051704157,0.2998705,0.12500462,0.033382714,0.056234058,0.076600574,0.12598504,0.067698866,0.03051427,0.046528704 0.015827617,0.024323527,0.020968191,0.17016296,0.15676147,0.063647375,0.036371585,0.03074782,0.1898305,0.057951596,0.07677339,0.11029547,0.0463386 0.017605642,0.022783393,0.029254457,0.20951222,0.16063859,0.06966567,0.046384685,0.0307784,0.1224463,0.08047888,0.09829233,0.08552304,0.026636485 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 02fe2c42..0c828e54 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.019000068,0.031819124,0.030243652,0.07024996,0.21407309,0.13396353,0.028858693,0.026585873,0.06696755,0.16285823,0.15180056,0.022563139,0.041016474 0.017298587,0.02785987,0.026171926,0.022916906,0.29258338,0.047437537,0.034001548,0.03626522,0.08464918,0.20266658,0.11324245,0.06333742,0.03156937 0.0686808,0.047946926,0.05949635,0.06376796,0.06336447,0.15089422,0.07095185,0.051540107,0.055402566,0.20384508,0.026530573,0.08195969,0.055619407 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index a5de7340..15afec14 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.022081608,0.018594578,0.018740417,0.103307895,0.47212556,0.04692973,0.030657277,0.045264293,0.059411697,0.078746155,0.02350575,0.05239225,0.028242808 0.027631663,0.025856346,0.021603787,0.16926447,0.12096786,0.07964316,0.043301236,0.1349494,0.09815427,0.05714117,0.099311285,0.0701477,0.052027624 0.026684716,0.020863418,0.016504321,0.07736575,0.10974434,0.03814951,0.06553134,0.049032796,0.21570995,0.21236569,0.061913315,0.043144707,0.062990114 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index d58192d2..bf39a092 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.016777907,0.029446134,0.027233222,0.09903301,0.15368521,0.065074414,0.049991827,0.071156874,0.1554968,0.06006656,0.10398861,0.11969016,0.048359197 0.023548124,0.02840446,0.027638298,0.0627111,0.20662825,0.07437815,0.030832749,0.047290612,0.15904744,0.048412077,0.11411094,0.045656934,0.13134089 0.020972665,0.028554477,0.028778432,0.029231627,0.05453193,0.057009615,0.037976593,0.024233868,0.18987098,0.32806766,0.0779229,0.04914536,0.073703915 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 19b076a5..4e43aa2e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.04036501,0.0526459,0.035483122,0.057146583,0.056979407,0.10676387,0.06257964,0.06425163,0.12384826,0.17465405,0.050137047,0.100884765,0.07426074 0.0159961,0.026167873,0.02203556,0.084553465,0.22782892,0.074536234,0.040371586,0.03837265,0.13551247,0.18814044,0.07248592,0.03346922,0.040529598 0.018406145,0.016499165,0.01400266,0.088499516,0.33661324,0.033329222,0.051798053,0.042049877,0.14087047,0.096441306,0.039967842,0.07855951,0.042963065 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 51ade0ca..d35903cd 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.04502345,0.037545096,0.032875586,0.1290136,0.23822105,0.09531464,0.04755424,0.04746145,0.110351175,0.038585886,0.04271068,0.039655525,0.09568769 0.024061177,0.0339317,0.034197826,0.027478727,0.10804553,0.092235915,0.03138169,0.15936935,0.15446608,0.06424972,0.027264884,0.13900442,0.104313046 0.01398243,0.020826768,0.033673387,0.059273835,0.023971463,0.071147464,0.054311454,0.12708203,0.15815614,0.043747153,0.033022083,0.31823865,0.04256715 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv index 47225f8b..a0bbf05d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0051731854,0.006115724,0.004452979,0.02984497,0.0035049068,0.023042496,0.04243705,0.017752096,0.043330517,0.005744317,0.005712806,0.02443036,0.03076382,0.016793936,0.020566238,0.014915136,0.23716973,0.006960561,0.016510267,0.008906468,0.016893843,0.032925818,0.022828635,0.0059587103,0.08213512,0.101522684,0.009693471,0.08036983,0.0065862564,0.016128413,0.025845902,0.011681713,0.02330209 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv index aab7381f..68d35a3b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0051706634,0.006392545,0.004375827,0.030993352,0.0034347752,0.021954894,0.041624684,0.017873196,0.04168018,0.00586722,0.005894553,0.022671,0.0292719,0.01654101,0.019867422,0.013532966,0.2661518,0.007395097,0.01631813,0.008761997,0.016077364,0.033230375,0.020873664,0.0064080334,0.07242437,0.097736195,0.008801166,0.08053392,0.0065339063,0.015795996,0.02301082,0.012271813,0.02052921 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv index abcdbcaa..6ae5b497 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0064157196,0.006527345,0.0056665037,0.027466085,0.0044602095,0.026517421,0.049759857,0.01652433,0.041261666,0.006874849,0.0067948974,0.023469295,0.029153131,0.016635327,0.019607816,0.016634526,0.17611296,0.007703006,0.023564544,0.010035094,0.022443883,0.03051713,0.025578223,0.0072342893,0.08143584,0.14751312,0.013761597,0.055317592,0.0074805734,0.01573484,0.03309507,0.01149615,0.027207157 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv index 8abda85f..99c55a45 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0055406922,0.006386817,0.004625329,0.02794532,0.0038382933,0.023122994,0.047041234,0.017717674,0.043066762,0.0060848948,0.006028181,0.024094954,0.031411633,0.017373681,0.020232791,0.016327478,0.21710728,0.0073115835,0.017294787,0.008706568,0.019171692,0.034296166,0.022187935,0.0064854,0.08433365,0.10816069,0.01044296,0.07764751,0.0066119726,0.016789336,0.028201265,0.012045506,0.022366948 0.005273,0.006350921,0.0045870915,0.029855195,0.003674753,0.022280036,0.04056523,0.018330282,0.042522132,0.0058698533,0.005789554,0.023899432,0.030028421,0.016782813,0.018927349,0.014220322,0.25088266,0.0070974855,0.017512802,0.008408013,0.01705966,0.032813244,0.022579813,0.0065027904,0.08215564,0.09919083,0.009322651,0.072932474,0.0066912686,0.015727002,0.02790005,0.011463137,0.022804117 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv index 1adcaec0..ac00fb4a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.005243044,0.0068628322,0.004119111,0.027635053,0.0037787466,0.021621196,0.03984544,0.020376597,0.036851183,0.005732252,0.0054553016,0.02128327,0.026677908,0.019110823,0.01986349,0.013093736,0.30414927,0.006873597,0.014688124,0.007742951,0.014003141,0.031778734,0.020403402,0.006862341,0.07797771,0.064194806,0.0077092745,0.088538475,0.0069644405,0.016042879,0.022522885,0.012781177,0.019216869 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv index c03ca665..545f567e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.005483725,0.0066012214,0.005198228,0.033509348,0.0042043817,0.02317797,0.03937999,0.017307758,0.037636165,0.005854237,0.0058676037,0.02215927,0.024298837,0.016519763,0.01830959,0.013106523,0.27282035,0.0074146762,0.019438406,0.0094330795,0.016409066,0.027353697,0.023160962,0.0076946104,0.074612305,0.11091272,0.0100175105,0.06297743,0.007235825,0.013821495,0.024065388,0.011177126,0.022840766 0.005132123,0.006258132,0.004523277,0.028863266,0.0038300497,0.02196964,0.043445766,0.018415095,0.051318515,0.0059415693,0.0059717335,0.024573747,0.03365483,0.017032608,0.022367323,0.015106722,0.21536613,0.0069446526,0.016772965,0.008130857,0.016136188,0.037611797,0.023627339,0.005972406,0.0856897,0.09184303,0.009807569,0.08422559,0.0065450855,0.01732655,0.02972546,0.012266841,0.023603454 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv index 8fa8b147..981d5e28 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0055701155,0.0063301595,0.0042756563,0.029668182,0.003665929,0.023308653,0.041472793,0.01839364,0.03860736,0.0060253735,0.0056214742,0.020402266,0.027661264,0.016783247,0.01859294,0.013065602,0.28502858,0.006916266,0.01649864,0.008324767,0.015853647,0.026072072,0.02126262,0.007229569,0.07821424,0.10320244,0.009021552,0.0650905,0.006879877,0.015151082,0.022952529,0.012675275,0.020181743 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv index c0b34494..af6571aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.005370935,0.0065400284,0.004214182,0.028507866,0.004052519,0.023884999,0.0431287,0.01866619,0.038549002,0.0058642467,0.005612742,0.022007838,0.028794203,0.018062135,0.018920997,0.014034251,0.28207308,0.00724066,0.01554973,0.008246547,0.015637344,0.029362565,0.020395592,0.0072190757,0.08529724,0.08158563,0.008495348,0.07213983,0.0073112454,0.015740085,0.024467451,0.01239826,0.020629534 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv index d1eb6c78..9391aa2a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.003818576,0.0031525614,0.0051886565,0.027662326,0.006760011,0.041391376,0.062559254,0.016534436,0.041413,0.006456904,0.0038409191,0.031356983,0.025992455,0.02640143,0.038692255,0.022995137,0.17438106,0.00587134,0.01310105,0.012426717,0.017008489,0.037873317,0.023261664,0.0044478937,0.07316778,0.08910169,0.00722368,0.09950632,0.0060560848,0.021839175,0.01798219,0.013436582,0.01909868 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv index 57d78954..79957644 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0038112525,0.0032467076,0.005103138,0.028848037,0.006253271,0.040058028,0.06397161,0.015401709,0.039240718,0.007229387,0.0042264964,0.031109253,0.022743622,0.026395943,0.03867059,0.0224054,0.16184604,0.006153928,0.014256049,0.012480883,0.018035192,0.033755783,0.022141878,0.0048214206,0.06857576,0.11654172,0.0072527346,0.091533765,0.0067206784,0.023300141,0.021024033,0.014561617,0.018283268 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv index f09487aa..fc35a03f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0038847511,0.0034304704,0.0054487633,0.030906213,0.0065313987,0.04176309,0.0651858,0.015840625,0.039366536,0.00712093,0.0041720322,0.030338436,0.021227272,0.027650725,0.03322719,0.02358945,0.17575502,0.0062058195,0.015167547,0.013033766,0.018510986,0.03583581,0.021288542,0.0049735317,0.066214904,0.10693726,0.0075933044,0.08376561,0.007044815,0.021833733,0.02074671,0.015919521,0.019489419 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv index 9faa7fb9..dfae95aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0038600573,0.0032016537,0.0050423536,0.030087678,0.0062640845,0.042983707,0.06558176,0.016441714,0.037939113,0.0068796654,0.0041524945,0.033378396,0.02355689,0.02613971,0.03884025,0.022489678,0.16319337,0.005882346,0.0136809675,0.012107426,0.018530237,0.035350807,0.02193522,0.0048262407,0.069117285,0.106256664,0.007452489,0.08964618,0.0068337126,0.02311564,0.021159057,0.014839026,0.019234167 0.0038384346,0.0032803454,0.005382596,0.028020917,0.0065062335,0.040472195,0.059231486,0.01510768,0.044317365,0.00677788,0.004063074,0.030269165,0.023738174,0.028254144,0.035682805,0.02283463,0.17437491,0.0062798257,0.014255069,0.013157966,0.018651582,0.03610014,0.021770932,0.0047950475,0.06709478,0.10704565,0.007234076,0.09272612,0.0065334365,0.020849966,0.019035984,0.013944705,0.018372733 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv index 4062c3bf..4800fc39 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.004071277,0.0036563596,0.005473332,0.026431864,0.0070418348,0.040103372,0.058523994,0.014499132,0.048744615,0.0068927244,0.003979709,0.024812536,0.02332055,0.028595718,0.034942232,0.022658326,0.19808845,0.0063588833,0.014898518,0.014481609,0.017180959,0.036216,0.021954877,0.004474714,0.07242044,0.09361984,0.0072108386,0.08443967,0.0062276307,0.019533861,0.01759654,0.013579895,0.01796969 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv index 717cd470..bda5f04e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0042564487,0.0033090666,0.0054760864,0.029484103,0.0063959234,0.032995798,0.058816995,0.013607776,0.048283372,0.0057379017,0.0038245237,0.021225223,0.023702899,0.026598837,0.030306822,0.02262228,0.23025683,0.0063128057,0.014794539,0.013137006,0.019704955,0.031384137,0.019589942,0.004760695,0.06250796,0.106131054,0.006412059,0.074764796,0.005834489,0.019974858,0.01842272,0.012555495,0.016811622 0.0038192424,0.0033686042,0.0054370016,0.02769945,0.006779793,0.04220823,0.05973473,0.015520086,0.04562838,0.0071383878,0.00422071,0.03299786,0.025394814,0.0281485,0.038514096,0.023156043,0.16337366,0.0063498737,0.014283524,0.012739055,0.01869462,0.036976255,0.023111258,0.004908983,0.07237423,0.09736417,0.0072591524,0.08847638,0.006704482,0.022873966,0.021077238,0.0138563765,0.019810876 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv index 887cda4e..0c133e09 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.0038691815,0.0031717422,0.005064685,0.029039107,0.0061659142,0.037487313,0.06612843,0.01513539,0.03811665,0.0066099614,0.0039828895,0.026459182,0.02207245,0.029161863,0.032705896,0.02051133,0.18691592,0.0063597304,0.0139315445,0.013663895,0.017307293,0.030300051,0.019515662,0.004841311,0.059204914,0.1291775,0.0065799546,0.08632184,0.006249234,0.022190582,0.020693045,0.014265866,0.016799755 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv index 34ba1b0b..1ffc4204 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.004423313,0.004286555,0.00660057,0.023772126,0.008373217,0.040369432,0.054351408,0.01465567,0.05245067,0.008132533,0.0042896164,0.029554067,0.024817849,0.03035214,0.039045297,0.025620734,0.17074145,0.0072791767,0.015768386,0.016019871,0.01698007,0.041483015,0.025339559,0.00460742,0.08207413,0.08653425,0.008505664,0.07673737,0.00643838,0.020246439,0.016483322,0.014442152,0.01922423 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index f2414b5b..35ddcd10 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.029515171,0.029384783,0.02892698,0.031414278,0.030240053,0.03790003,0.031263754,0.030703781,0.02985053,0.03231135,0.030141735,0.028332692,0.033920184,0.027992733,0.031994548,0.032312855,0.032003276,0.029009493,0.025961198,0.028668242,0.031744353,0.028004343,0.0351939,0.028472656,0.033312727,0.029293254,0.025253193,0.03191485,0.031521086,0.030837052,0.027421221,0.028424587,0.026759079 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index ce3129a4..b475e5bf 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.02660504,0.030707078,0.032001417,0.035039,0.029511122,0.034290012,0.03181159,0.0294397,0.0321122,0.03097334,0.0332632,0.027464185,0.030202633,0.028321788,0.025869891,0.03017357,0.031728413,0.033907395,0.02845779,0.031313535,0.028817244,0.02832817,0.033035055,0.026313312,0.030338703,0.028560834,0.03160956,0.031486206,0.030627396,0.029206958,0.030443136,0.027497737,0.030542677 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index db2db85d..ca893131 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.027332451,0.031302933,0.030766888,0.034912553,0.029892711,0.03336584,0.031323344,0.029848998,0.03191401,0.031425472,0.033242542,0.027521798,0.029320594,0.027383283,0.025944008,0.03078899,0.032123405,0.03406133,0.028520554,0.031947363,0.0294212,0.028340716,0.032867085,0.02619513,0.02996483,0.028789517,0.03081592,0.031394005,0.03228332,0.029442273,0.02991017,0.026885256,0.03075153 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index b2366f0b..736eedb1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.03185726,0.028593035,0.029586729,0.02717517,0.029036317,0.03239331,0.030127635,0.029756432,0.028826356,0.03008631,0.027377693,0.03182702,0.03495427,0.032569427,0.03616851,0.031138953,0.02905974,0.026557622,0.028117852,0.02744148,0.032749053,0.030639345,0.031042855,0.03220263,0.033083834,0.030625483,0.027325926,0.030158056,0.028103651,0.03071186,0.029626483,0.033320524,0.027759206 0.031184139,0.0276112,0.032012727,0.027526684,0.029155925,0.032260306,0.030398509,0.029150296,0.029186625,0.029938763,0.02798222,0.03192229,0.034919117,0.034535985,0.03453919,0.0301626,0.02843686,0.026707487,0.02883699,0.027758451,0.03170132,0.030358283,0.030214984,0.032069325,0.033027902,0.029928787,0.02964113,0.029945217,0.026400918,0.029637858,0.030964117,0.033538274,0.028345458 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 5c1cac56..136902ac 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.027090317,0.031356793,0.031175932,0.034752592,0.028963773,0.035918295,0.032366708,0.029567668,0.031858996,0.031686503,0.031844135,0.027539104,0.03215706,0.02786867,0.028114032,0.030691825,0.03100698,0.032229245,0.026652839,0.030048568,0.02923739,0.02832744,0.035018757,0.0267673,0.031383105,0.028060874,0.028454317,0.03174636,0.030990787,0.030642902,0.030124784,0.02802195,0.028333979 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index 3ebe548e..7b1ad181 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.031245146,0.026523279,0.03429213,0.028590597,0.030950105,0.030549498,0.030602774,0.029434195,0.02976708,0.030371303,0.02923278,0.03193279,0.032057486,0.036185876,0.031233333,0.028832216,0.028311577,0.027465537,0.031915396,0.028459525,0.029657632,0.029486306,0.02885231,0.031842597,0.032040454,0.029984664,0.032361843,0.029286683,0.025559865,0.028563855,0.03226416,0.032237228,0.029909858 0.031189607,0.027768781,0.03171535,0.0286404,0.02989582,0.03686473,0.030307468,0.029793784,0.029219873,0.03136719,0.029169736,0.030565001,0.035063583,0.033113644,0.033308994,0.03176959,0.030947847,0.027378758,0.026388302,0.028127484,0.03166254,0.02842469,0.033268318,0.029070573,0.033865992,0.028430037,0.027634714,0.031596266,0.02863526,0.028753258,0.02869571,0.030206194,0.027160522 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index ef108ae3..5bd5387d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.03022107,0.026185002,0.035542563,0.030422375,0.030111654,0.032666244,0.03029986,0.028772637,0.029862503,0.031565245,0.030188533,0.031473093,0.03380565,0.034408633,0.031200787,0.029270852,0.029954033,0.026347158,0.029255822,0.028777694,0.031132765,0.028987736,0.03171347,0.029104978,0.032444056,0.027695423,0.03135624,0.030321337,0.025290275,0.027976021,0.03161053,0.03318183,0.028853968 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index a93e39ea..211a7d66 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 0.030450879,0.031356543,0.026286202,0.030208621,0.029305283,0.033798173,0.029997792,0.031071521,0.029736698,0.031199083,0.029278152,0.029431423,0.03262524,0.026415547,0.03385641,0.032870974,0.031922586,0.029316304,0.026414368,0.029405521,0.03292572,0.03013779,0.033768725,0.029333936,0.031706,0.030111287,0.025230156,0.03123331,0.033786975,0.032116424,0.027622495,0.029445931,0.027633844 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index 7b307493..488a103e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.069280244,0.08278568,0.072002776,0.068465054,0.073495515,0.069683656,0.08337737,0.08428103,0.079714045,0.08516558,0.07238791,0.07722001,0.08214111 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index f5c9cd40..287c3c11 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.08120824,0.0770729,0.080374785,0.07006595,0.08169089,0.06985054,0.077308096,0.06746512,0.08158482,0.078970395,0.07628951,0.077936,0.08018279 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index f76ecc72..6cd732d3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.081267715,0.07711225,0.080673225,0.07033195,0.08024122,0.06911172,0.07555922,0.06642563,0.0804719,0.08202005,0.07461091,0.079976365,0.08219792 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index a99204aa..0caabb64 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.06782719,0.078334294,0.07045661,0.0793704,0.073115356,0.08177368,0.08440978,0.09057371,0.076156095,0.07454853,0.078214675,0.071796,0.07342377 0.07023328,0.0774746,0.07357778,0.07948175,0.07633355,0.08361607,0.08418787,0.08768755,0.07620843,0.06998042,0.0815577,0.06901032,0.0706507 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index e0a22959..75244a2c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.075564295,0.077890314,0.07621962,0.06734453,0.07971224,0.06832646,0.07854212,0.07214813,0.08339084,0.082671195,0.07736374,0.0789834,0.08184321 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index d2469e90..e8c6c744 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.07543901,0.07629552,0.079985805,0.07938394,0.08105448,0.08392259,0.08113814,0.08250335,0.07510063,0.06616155,0.08535827,0.06484661,0.068810105 0.0684685,0.08285618,0.07265628,0.07221835,0.074672826,0.07720729,0.087464236,0.08804019,0.07745041,0.072739474,0.07616589,0.07260381,0.07745654 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index 11d4ea08..0a26093e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.07194322,0.077352665,0.08031595,0.07728969,0.08099176,0.080330044,0.08255197,0.079121925,0.07681379,0.069612056,0.08324984,0.06879602,0.07163119 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index 072240da..fdcbac81 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ -unknown,other,mask,0,1,2,3,4,5,6,7,8,9 +[unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 0.068312116,0.08032282,0.06863922,0.07357371,0.06984851,0.07086958,0.0803648,0.0826013,0.079164565,0.08935935,0.06972866,0.0837885,0.083426945 diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 46ecc58f..ecb3628b 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -163,6 +163,7 @@ def ar_config(): metadata_config_path="dummy.json", model_path="dummy.onnx", model_type="generative", + training_objective="causal", data_path="tests/unit/data/dummy.parquet", input_columns=["target_col"], categorical_columns=[], @@ -172,6 +173,7 @@ def ar_config(): target_column_types={"target_col": "real"}, seed=42, device="cpu", + prediction_length=1, seq_length=3, inference_batch_size=2, output_probabilities=False, From 857b86e0847aab5772cce9572e7d9a9ff508658f Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 4 Jun 2026 14:13:12 +0200 Subject: [PATCH 06/81] Fix index alignment --- src/sequifier/infer.py | 90 +++++++++++++++++++++++++++--------------- src/sequifier/train.py | 4 +- 2 files changed, 61 insertions(+), 33 deletions(-) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index d87b77d4..fd2d97a2 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -259,6 +259,41 @@ def infer_worker( logger.info("--- Inference Complete ---") +def calculate_item_positions( + start_positions: np.ndarray, + seq_length: int, + prediction_length: int, + training_objective: str, +) -> np.ndarray: + """ + Calculates absolute item positions for inference outputs based on the training objective. + + Args: + start_positions: 1D array of base start positions for each sequence in the batch. + seq_length: The length of the input sequence window. + prediction_length: The total number of predicted tokens per sequence. + training_objective: Either "causal" or "bert". + + Returns: + A 1D array of absolute item positions mapped to every flattened prediction row. + """ + if training_objective == "bert": + # Anchor positions to the start of the input sequence and tile forwards + base_positions = start_positions + position_offsets = np.arange(0, prediction_length) + else: + # Anchor positions to the future token step and tile backwards + base_positions = start_positions + seq_length + position_offsets = np.arange(-prediction_length + 1, 1) + + # Repeat base anchors to match the number of predictions per sequence window + repeated_bases = np.repeat(base_positions, prediction_length) + # Tile the relative step offsets across all sequences in the batch chunk + tiled_offsets = np.tile(position_offsets, len(start_positions)) + + return repeated_bases + tiled_offsets + + @beartype def infer_embedding( config: "InfererModel", @@ -468,26 +503,23 @@ def infer_generative( # Get base IDs and positions (shape: batch_size) sequence_ids_for_preds_base = data.get_column("sequenceId").filter(mask) - item_positions_for_preds_base = ( + item_positions_base_raw = ( data.get_column("startItemPosition").filter(mask).to_numpy() - + config.seq_length ) - prediction_length = inferer.prediction_length - # Expand IDs and positions to match model output shape (batch_size * prediction_length) + # Expand IDs to match model output shape sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length ) - item_positions_repeated = np.repeat( - item_positions_for_preds_base, prediction_length + # Invoke the unified positioning engine + item_positions_for_preds = calculate_item_positions( + item_positions_base_raw, + config.seq_length, + prediction_length, + config.training_objective, ) - position_offsets = np.tile( - np.arange(-prediction_length + 1, 1), - len(item_positions_for_preds_base), - ) - item_positions_for_preds = item_positions_repeated + position_offsets else: if inferer.prediction_length != 1: @@ -520,23 +552,22 @@ def infer_generative( sequence_ids_for_preds_base = ( data.get_column("sequenceId").filter(mask).to_numpy() ) - item_positions_for_preds_base = ( + item_positions_base_raw = ( data.get_column("startItemPosition").filter(mask).to_numpy() - + config.seq_length ) - prediction_length = inferer.prediction_length + sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length ) - item_positions_repeated = np.repeat( - item_positions_for_preds_base, prediction_length - ) - position_offsets = np.tile( - np.arange(-prediction_length + 1, 1), - len(item_positions_for_preds_base), + + # Invoke the unified positioning engine + item_positions_for_preds = calculate_item_positions( + item_positions_base_raw, + config.seq_length, + prediction_length, + config.training_objective, ) - item_positions_for_preds = item_positions_repeated + position_offsets else: if inferer.prediction_length != 1: raise ValueError( @@ -571,22 +602,19 @@ def infer_generative( if total_steps == 1: # Non-autoregressive path: Apply prediction_length logic sequence_ids_for_preds_base = sequence_ids_tensor.numpy() - item_positions_for_preds_base = ( - start_positions_tensor.numpy() + config.seq_length - ) + item_positions_base_raw = start_positions_tensor.numpy() sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length ) - item_positions_repeated = np.repeat( - item_positions_for_preds_base, prediction_length - ) - position_offsets = np.tile( - np.arange(-prediction_length + 1, 1), - len(item_positions_for_preds_base), + # Invoke the unified positioning engine + item_positions_for_preds = calculate_item_positions( + item_positions_base_raw, + config.seq_length, + prediction_length, + config.training_objective, ) - item_positions_for_preds = item_positions_repeated + position_offsets else: sequence_ids_for_preds = np.repeat( diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 5e148c51..50cdbd2a 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1443,7 +1443,7 @@ def _train_epoch( if k in self.target_column_types } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, targets, self.hparams) + data, targets = apply_bert_masking(data, self.hparams) # Only use standard torch.autocast if FSDP MixedPrecision is NOT handling it natively if ( @@ -1771,7 +1771,7 @@ def _evaluate( if k in self.target_column_types } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, targets, self.hparams) + data, targets = apply_bert_masking(data, self.hparams) if ( self.hparams.training_spec.layer_autocast From 82cc41f11fc0311687d1f265bd698e8c3c137491 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 4 Jun 2026 18:24:02 +0200 Subject: [PATCH 07/81] Fix tests --- src/sequifier/config/infer_config.py | 8 +++ src/sequifier/config/train_config.py | 41 ++++++++----- src/sequifier/helpers.py | 24 ++++++-- src/sequifier/infer.py | 13 ++++- .../io/sequifier_dataset_from_file.py | 4 ++ .../sequifier_dataset_from_folder_parquet.py | 19 ++++++- ...uifier_dataset_from_folder_parquet_lazy.py | 57 +++++++++++-------- .../io/sequifier_dataset_from_folder_pt.py | 16 +++++- .../sequifier_dataset_from_folder_pt_lazy.py | 16 +++++- src/sequifier/train.py | 4 +- ...uifier_dataset_from_folder_parquet_lazy.py | 5 ++ ...t_sequifier_dataset_from_folder_pt_lazy.py | 4 +- tests/unit/test_helpers.py | 18 +++++- 13 files changed, 168 insertions(+), 61 deletions(-) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index be60da2c..d67b04c6 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -221,6 +221,14 @@ def validate_autoregression(cls, v: bool, info: ValidationInfo): "Autoregressive inference with non-identical 'input_columns' and 'target_columns' is possible but should not be performed" ) + if ( + info.data.get("training_objective") is not None + and info.data.get("training_objective") == "bert" + ): + raise ValueError( + "Autoregressive inference is not possible with BERT-style models." + ) + return v @field_validator("data_path") diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 4ddb8067..92117551 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -11,7 +11,14 @@ import yaml from beartype import beartype from loguru import logger -from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator +from pydantic import ( + BaseModel, + ConfigDict, + Field, + computed_field, + field_validator, + model_validator, +) import sequifier from sequifier.config.probabilities import ProbabilityDistribution @@ -226,6 +233,16 @@ def __init__(self, **kwargs): self.validate_scheduler_config(kwargs["scheduler"], kwargs) self.scheduler = DotDict(kwargs["scheduler"]) + @computed_field + @property + def data_offset(self) -> int: + return 1 + + @computed_field + @property + def target_offset(self) -> int: + return 0 if self.training_objective == "causal" else 1 + @field_validator("layer_type_dtypes") @classmethod def validate_layer_type_dtypes(cls, v): @@ -663,20 +680,14 @@ def validate_training_spec(cls, v, info): export_generative_model = info.data.get("export_generative_model") export_embedding_model = info.data.get("export_embedding_model") - if v.training_objective == "bert": - if export_generative_model: - raise ValueError( - "'training_objective: bert' is incompatible with generative model export" - ) - if not export_embedding_model: - raise ValueError( - "'training_objective: bert' requires embedding model export" - ) - if v.training_objective == "causal": - if not export_generative_model and not export_embedding_model: - warnings.warn( - "At least one of 'export_generative_model' and 'export_embedding_model' should be true" - ) + if ( + not export_generative_model + and not export_embedding_model + and os.getenv("SEQUIFIER_PREVENT_EXPORT") is None + ): + raise ValueError( + "At least one of 'export_generative_model' and 'export_embedding_model' must be true. If you want to override this, set the env variable 'SEQUIFIER_PREVENT_EXPORT' to any value" + ) return v diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index d3e57f9e..d09f75f8 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -248,6 +248,8 @@ def numpy_to_pytorch( column_types: dict[str, torch.dtype], all_columns: list[str], seq_length: int, + data_offset: int, + target_offset: int, ) -> dict[str, Tensor]: """Converts a long-format Polars DataFrame to a dict of sequence tensors. @@ -281,8 +283,12 @@ def numpy_to_pytorch( tensors. Target tensors are stored with a `_target` suffix (e.g., `{'price': , 'price_target': }`). """ - input_seq_cols = [str(c) for c in range(seq_length, 0, -1)] - target_seq_cols = [str(c) for c in range(seq_length - 1, -1, -1)] + input_seq_cols = [ + str(c) for c in range(seq_length - 1 + data_offset, (-1 + data_offset), -1) + ] + target_seq_cols = [ + str(c) for c in range(seq_length - 1 + target_offset, (-1 + target_offset), -1) + ] # We will create a unified dictionary unified_tensors = {} @@ -515,13 +521,14 @@ def get_last_training_batch_timedelta( def apply_bert_masking( data_batch: Dict[str, torch.Tensor], + targets_batch: Dict[str, torch.Tensor], config: Any, # TrainConfig ) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: """ Applies BERT-style span corruption to the input data using custom distributions. Explicitly passes the boolean prediction mask via the targets dictionary. """ - targets_batch = {k: tensor.clone().detach() for k, tensor in data_batch.items()} + targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} batch_size, seq_len = config.training_spec.batch_size, config.seq_length # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) @@ -547,8 +554,8 @@ def apply_bert_masking( sampled_lengths = config.training_spec.bert_spec.span_masking.sample( (batch_size, max_spans), device=device ) - sampled_starts_pct = torch.rand((batch_size, max_spans), device=device) + sampled_starts_pct = torch.rand((batch_size, max_spans), device=device) # 3. Span Masking Loop for i in range(batch_size): budget = budgets[i].item() @@ -557,13 +564,18 @@ def apply_bert_masking( if budget < 1 or valid_len < 1: continue + sampled_starts = (sampled_starts_pct[i] * valid_len).long().tolist() + + sampled_lengths_list = sampled_lengths[i].tolist() + current_masked = 0 span_idx = 0 # Apply spans until budget is hit while current_masked < budget and span_idx < max_spans: - span_len = sampled_lengths[i, span_idx].item() - start_idx = int(sampled_starts_pct[i, span_idx].item() * valid_len) + span_len = sampled_lengths_list[span_idx] + start_idx = sampled_starts[span_idx] + end_idx = min(start_idx + span_len, valid_len) span_view = bert_mask[i, start_idx:end_idx] diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index fd2d97a2..ba94086a 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -879,7 +879,10 @@ def get_embeddings( A NumPy array containing the computed embeddings for the batch. """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) - X = numpy_to_pytorch(data, column_types, all_columns, config.seq_length) + target_offset = 0 if config.training_objective == "causal" else 1 + X = numpy_to_pytorch( + data, column_types, all_columns, config.seq_length, 1, target_offset + ) X = {col: X_col.numpy() for col, X_col in X.items()} del data @@ -919,7 +922,11 @@ def get_probs_preds_from_df( """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) - X = numpy_to_pytorch(data, column_types, all_columns, config.seq_length) + target_offset = 0 if config.training_objective == "causal" else 1 + + X = numpy_to_pytorch( + data, column_types, all_columns, config.seq_length, 1, target_offset + ) X = {col: X_col.numpy() for col, X_col in X.items()} del data @@ -1041,6 +1048,8 @@ def get_probs_preds_autoregression( column_types, config.input_columns, seq_length, + data_offset=1, + target_offset=0, ) # Run the autoregressive PyTorch inference diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index ec590953..c2f0916c 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -40,12 +40,16 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in config.column_types } + target_offset = 0 if config.training_spec.training_objective == "causal" else 1 + # self.all_tensors now holds both inputs and targets all_tensors = numpy_to_pytorch( data=data_df, column_types=column_types, all_columns=all_columns, seq_length=config.seq_length, + data_offset=1, + target_offset=target_offset, ) self.n_samples = all_tensors[all_columns[0]].shape[0] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 5beb3347..d37e11ab 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -54,9 +54,22 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): # Sequence formatting structures matching long-format schema boundaries train_seq_len = self.config.seq_length - input_seq_cols = [str(c) for c in range(train_seq_len, 0, -1)] - target_seq_cols = [str(c) for c in range(train_seq_len - 1, -1, -1)] - + input_seq_cols = [ + str(c) + for c in range( + train_seq_len - 1 + self.config.training_spec.data_offset, + (-1 + self.config.training_spec.data_offset), + -1, + ) + ] + target_seq_cols = [ + str(c) + for c in range( + train_seq_len - 1 + self.config.training_spec.target_offset, + (-1 + self.config.training_spec.target_offset), + -1, + ) + ] all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in config.input_columns } diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index cc000e1c..adda1a6e 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -209,9 +209,22 @@ def __iter__( train_seq_len = self.config.seq_length global_file_start_sample = 0 - # Sequence formatting configurations - input_seq_cols = [str(c) for c in range(train_seq_len, 0, -1)] - target_seq_cols = [str(c) for c in range(train_seq_len - 1, -1, -1)] + input_seq_cols = [ + str(c) + for c in range( + train_seq_len - 1 + self.config.training_spec.data_offset, + (-1 + self.config.training_spec.data_offset), + -1, + ) + ] + target_seq_cols = [ + str(c) + for c in range( + train_seq_len - 1 + self.config.training_spec.target_offset, + (-1 + self.config.training_spec.target_offset), + -1, + ) + ] # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} @@ -234,7 +247,6 @@ def __iter__( # This file overlaps with our worker's assigned boundary. Load it. file_path = os.path.join(self.data_dir, self.batch_files_info[f_id]["path"]) df = pl.read_parquet(file_path) - feature_names = df["inputCol"].unique().to_list() # Generate indices for the whole file using torch (matching pt_lazy) indices = torch.arange(file_samples) @@ -264,44 +276,39 @@ def __iter__( } # Dynamic feature names fallback to gracefully handle MagicMock objects in unit tests - feature_names = list(feature_partitions.keys()) - cols_to_process = ( - self.config.input_columns - if isinstance(getattr(self.config, "input_columns", None), list) - else feature_names - ) # Process Long format data structures into PyTorch Tensors new_seq, new_tgt = {}, {} expected_samples = len(worker_indices_np) # 2. Iterate over the expected config columns, not the dynamically found ones - for col_name in cols_to_process: - # Gracefully handle MagicMock column_torch_types dictionaries - torch_type = self.column_torch_types[col_name] - + # Process inputs + for col_name in self.config.input_columns: if col_name in feature_partitions: - # Positional advanced selection using the coordinated indices feature_chunk = feature_partitions[col_name][worker_indices_np] - new_seq[col_name] = torch.tensor( feature_chunk.select(input_seq_cols).to_numpy(), - dtype=torch_type, + dtype=self.column_torch_types[col_name], ) + else: + new_seq[col_name] = torch.zeros( + (expected_samples, train_seq_len), + dtype=self.column_torch_types[col_name], + ) + + # Process targets + for col_name in self.config.target_columns: + if col_name in feature_partitions: + feature_chunk = feature_partitions[col_name][worker_indices_np] new_tgt[col_name] = torch.tensor( feature_chunk.select(target_seq_cols).to_numpy(), - dtype=torch_type, + dtype=self.column_torch_types[col_name], ) else: - # 3. Graceful fallback: Pad with zeros if a chunk is mysteriously missing a feature - new_seq[col_name] = torch.zeros( - (expected_samples, train_seq_len), dtype=torch_type - ) - new_tgt[col_name] = torch.zeros( - (expected_samples, train_seq_len), dtype=torch_type + raise RuntimeError( + f"Missing required column {col_name} in Parquet partition" ) - # Free the DataFrame immediately to keep RAM down del df # Append the new slice to the cross-file buffer diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 182ad841..9c29d8b5 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -149,13 +149,25 @@ def __iter__( for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] + data_offset = self.config.training_spec.data_offset + target_offset = self.config.training_spec.target_offset data_batch = { - key: tensor[batch_indices, -(train_seq_len + 1) : -1] + key: tensor[ + batch_indices, + -(train_seq_len + data_offset) : ( + -data_offset if data_offset > 0 else None + ), + ] for key, tensor in self.sequences.items() if key in self.config.input_columns } targets_batch = { - key: tensor[batch_indices, -train_seq_len:] + key: tensor[ + batch_indices, + -(train_seq_len + target_offset) : ( + -target_offset if target_offset > 0 else None + ), + ] for key, tensor in self.sequences.items() if key in self.config.target_columns } diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index c6d1e238..e07924e0 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -246,13 +246,25 @@ def __iter__( continue # Extract the data subset for this worker (Advanced indexing copies the data) + data_offset = self.config.training_spec.data_offset + target_offset = self.config.training_spec.target_offset new_seq = { - k: v[worker_indices, -(train_seq_len + 1) : -1] + k: v[ + worker_indices, + -(train_seq_len + data_offset) : ( + -data_offset if data_offset > 0 else None + ), + ] for k, v in sequences_batch.items() if k in self.config.input_columns } new_tgt = { - k: v[worker_indices, -train_seq_len:] + k: v[ + worker_indices, + -(train_seq_len + target_offset) : ( + -target_offset if target_offset > 0 else None + ), + ] for k, v in sequences_batch.items() if k in self.config.target_columns } diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 50cdbd2a..5e148c51 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1443,7 +1443,7 @@ def _train_epoch( if k in self.target_column_types } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, self.hparams) + data, targets = apply_bert_masking(data, targets, self.hparams) # Only use standard torch.autocast if FSDP MixedPrecision is NOT handling it natively if ( @@ -1771,7 +1771,7 @@ def _evaluate( if k in self.target_column_types } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, self.hparams) + data, targets = apply_bert_masking(data, targets, self.hparams) if ( self.hparams.training_spec.layer_autocast diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 1d565fca..a47bbfd4 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -20,6 +20,11 @@ def mock_config(): config.training_spec.batch_size = 5 config.training_spec.num_workers = 0 config.training_spec.sampling_strategy = "exact" + config.training_spec.data_offset = 1 + config.training_spec.target_offset = 0 + config.input_columns = ["item"] + config.target_columns = ["item"] + return config diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 8d7abb2f..29cd1af6 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -20,8 +20,10 @@ def mock_config(tmp_path): config.training_spec.num_workers = 0 config.seed = 42 config.seq_length = 5 - config.input_columns = ["col1"] # <-- ADD THIS LINE + config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] + config.training_spec.data_offset = 1 + config.training_spec.target_offset = 0 return config diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index 6ad3b56c..cae5c87f 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -80,7 +80,9 @@ def test_numpy_to_pytorch_shapes_and_shifting(): all_columns = ["A"] seq_length = 3 - tensors = numpy_to_pytorch(data, column_types, all_columns, seq_length) + tensors = numpy_to_pytorch( + data, column_types, all_columns, seq_length, data_offset=1, target_offset=0 + ) # 1. Check Keys assert "A" in tensors @@ -110,13 +112,23 @@ def test_numpy_to_pytorch_dtypes(): # Case 1: Integer data_int = pl.DataFrame({"inputCol": ["int_col"], "1": [10], "0": [20]}) tensors_int = numpy_to_pytorch( - data_int, {"int_col": torch.int64}, ["int_col"], seq_length=1 + data_int, + {"int_col": torch.int64}, + ["int_col"], + seq_length=1, + data_offset=1, + target_offset=0, ) assert tensors_int["int_col"].dtype == torch.int64 # Case 2: Float data_float = pl.DataFrame({"inputCol": ["float_col"], "1": [10.5], "0": [20.5]}) tensors_float = numpy_to_pytorch( - data_float, {"float_col": torch.float32}, ["float_col"], seq_length=1 + data_float, + {"float_col": torch.float32}, + ["float_col"], + seq_length=1, + data_offset=1, + target_offset=0, ) assert tensors_float["float_col"].dtype == torch.float32 From 6df557a3c522fe7f0518081c77a980411663a48e Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 5 Jun 2026 13:01:09 +0200 Subject: [PATCH 08/81] Add padding mask --- src/sequifier/helpers.py | 3 + src/sequifier/preprocess.py | 3 - src/sequifier/train.py | 72 +++- ...orical-1-best-embedding-3-0-embeddings.csv | 2 +- ...orical-1-best-embedding-3-1-embeddings.csv | 2 +- ...orical-1-best-embedding-3-2-embeddings.csv | 2 +- ...orical-1-best-embedding-3-3-embeddings.csv | 4 +- ...orical-1-best-embedding-3-4-embeddings.csv | 2 +- ...orical-1-best-embedding-3-5-embeddings.csv | 4 +- ...orical-1-best-embedding-3-6-embeddings.csv | 2 +- ...orical-1-best-embedding-3-7-embeddings.csv | 2 +- ...inf-size-best-embedding-3-0-embeddings.csv | 6 +- ...inf-size-best-embedding-3-1-embeddings.csv | 6 +- ...inf-size-best-embedding-3-2-embeddings.csv | 6 +- ...inf-size-best-embedding-3-3-embeddings.csv | 12 +- ...inf-size-best-embedding-3-4-embeddings.csv | 6 +- ...inf-size-best-embedding-3-5-embeddings.csv | 12 +- ...inf-size-best-embedding-3-6-embeddings.csv | 6 +- ...inf-size-best-embedding-3-7-embeddings.csv | 6 +- ...-1-best-3-autoregression-1-predictions.csv | 38 +- ...-1-best-3-autoregression-2-predictions.csv | 38 +- ...-1-best-3-autoregression-3-predictions.csv | 42 +- ...-1-best-3-autoregression-4-predictions.csv | 40 +- ...-1-best-3-autoregression-5-predictions.csv | 78 ++-- ...-1-best-3-autoregression-6-predictions.csv | 22 +- ...-1-best-3-autoregression-7-predictions.csv | 4 +- ...del-categorical-1-best-3-1-predictions.csv | 2 +- ...del-categorical-1-best-3-3-predictions.csv | 4 +- ...del-categorical-1-best-3-4-predictions.csv | 2 +- ...del-categorical-1-best-3-5-predictions.csv | 4 +- ...del-categorical-1-best-3-6-predictions.csv | 2 +- ...del-categorical-1-best-3-7-predictions.csv | 2 +- ...orical-1-inf-size-best-3-1-predictions.csv | 4 +- ...orical-1-inf-size-best-3-2-predictions.csv | 2 +- ...orical-1-inf-size-best-3-3-predictions.csv | 4 +- ...orical-1-inf-size-best-3-6-predictions.csv | 2 +- ...orical-1-inf-size-best-3-7-predictions.csv | 2 +- ...del-categorical-3-best-3-1-predictions.csv | 2 +- ...del-categorical-3-best-3-3-predictions.csv | 4 +- ...del-categorical-3-best-3-4-predictions.csv | 2 +- ...del-categorical-3-best-3-5-predictions.csv | 4 +- ...del-categorical-3-best-3-6-predictions.csv | 2 +- ...del-categorical-3-best-3-7-predictions.csv | 2 +- ...orical-3-inf-size-best-3-1-predictions.csv | 2 +- ...orical-3-inf-size-best-3-2-predictions.csv | 4 +- ...orical-3-inf-size-best-3-3-predictions.csv | 8 +- ...orical-3-inf-size-best-3-4-predictions.csv | 4 +- ...orical-3-inf-size-best-3-5-predictions.csv | 10 +- ...orical-3-inf-size-best-3-6-predictions.csv | 4 +- ...orical-3-inf-size-best-3-7-predictions.csv | 4 +- ...del-categorical-5-best-3-2-predictions.csv | 2 +- ...del-categorical-5-best-3-3-predictions.csv | 2 +- ...del-categorical-5-best-3-5-predictions.csv | 2 +- ...el-categorical-50-best-3-0-predictions.csv | 2 +- ...el-categorical-50-best-3-1-predictions.csv | 2 +- ...el-categorical-50-best-3-2-predictions.csv | 2 +- ...el-categorical-50-best-3-3-predictions.csv | 4 +- ...el-categorical-50-best-3-4-predictions.csv | 2 +- ...el-categorical-50-best-3-5-predictions.csv | 2 +- ...el-categorical-50-best-3-7-predictions.csv | 2 +- ...rical-distributed-best-3-0-predictions.csv | 2 +- ...rical-distributed-best-3-2-predictions.csv | 2 +- ...rical-distributed-best-3-3-predictions.csv | 2 +- ...rical-distributed-best-3-4-predictions.csv | 2 +- ...rical-distributed-best-3-5-predictions.csv | 2 +- ...rical-distributed-best-3-6-predictions.csv | 2 +- ...rical-distributed-best-3-7-predictions.csv | 2 +- ...-categorical-lazy-best-3-0-predictions.csv | 2 +- ...-categorical-lazy-best-3-2-predictions.csv | 2 +- ...-categorical-lazy-best-3-3-predictions.csv | 2 +- ...-categorical-lazy-best-3-4-predictions.csv | 2 +- ...-categorical-lazy-best-3-5-predictions.csv | 2 +- ...-categorical-lazy-best-3-6-predictions.csv | 2 +- ...-categorical-lazy-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-best-3-0-predictions.csv | 2 +- ...cal-multitarget-5-best-3-1-predictions.csv | 2 +- ...cal-multitarget-5-best-3-2-predictions.csv | 2 +- ...cal-multitarget-5-best-3-3-predictions.csv | 4 +- ...cal-multitarget-5-best-3-4-predictions.csv | 2 +- ...cal-multitarget-5-best-3-5-predictions.csv | 4 +- ...cal-multitarget-5-best-3-6-predictions.csv | 2 +- ...cal-multitarget-5-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-last-3-0-predictions.csv | 2 +- ...cal-multitarget-5-last-3-1-predictions.csv | 2 +- ...cal-multitarget-5-last-3-2-predictions.csv | 2 +- ...cal-multitarget-5-last-3-3-predictions.csv | 4 +- ...cal-multitarget-5-last-3-4-predictions.csv | 2 +- ...cal-multitarget-5-last-3-5-predictions.csv | 4 +- ...cal-multitarget-5-last-3-6-predictions.csv | 2 +- ...cal-multitarget-5-last-3-7-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 48 +-- ...uifier-model-real-3-best-3-predictions.csv | 48 +-- ...uifier-model-real-5-best-3-predictions.csv | 48 +-- ...ifier-model-real-50-best-3-predictions.csv | 48 +-- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 12 +- ...custom-eval-run-2-best-1-1-predictions.csv | 12 +- ...custom-eval-run-2-best-1-2-predictions.csv | 20 +- ...custom-eval-run-2-best-1-3-predictions.csv | 24 +- ...custom-eval-run-2-best-1-4-predictions.csv | 8 +- ...custom-eval-run-2-best-1-5-predictions.csv | 26 +- ...custom-eval-run-2-best-1-6-predictions.csv | 16 +- ...custom-eval-run-2-best-1-7-predictions.csv | 20 +- ...custom-eval-run-3-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-7-predictions.csv | 60 +-- ...l-categorical-1-best-3-0-probabilities.csv | 2 +- ...l-categorical-1-best-3-1-probabilities.csv | 2 +- ...l-categorical-1-best-3-2-probabilities.csv | 2 +- ...l-categorical-1-best-3-3-probabilities.csv | 4 +- ...l-categorical-1-best-3-4-probabilities.csv | 2 +- ...l-categorical-1-best-3-5-probabilities.csv | 4 +- ...l-categorical-1-best-3-6-probabilities.csv | 2 +- ...l-categorical-1-best-3-7-probabilities.csv | 2 +- ...l-categorical-3-best-3-0-probabilities.csv | 2 +- ...l-categorical-3-best-3-1-probabilities.csv | 2 +- ...l-categorical-3-best-3-2-probabilities.csv | 2 +- ...l-categorical-3-best-3-3-probabilities.csv | 4 +- ...l-categorical-3-best-3-4-probabilities.csv | 2 +- ...l-categorical-3-best-3-5-probabilities.csv | 4 +- ...l-categorical-3-best-3-6-probabilities.csv | 2 +- ...l-categorical-3-best-3-7-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...l-categorical-5-best-3-0-probabilities.csv | 2 +- ...l-categorical-5-best-3-1-probabilities.csv | 2 +- ...l-categorical-5-best-3-2-probabilities.csv | 2 +- ...l-categorical-5-best-3-3-probabilities.csv | 4 +- ...l-categorical-5-best-3-4-probabilities.csv | 2 +- ...l-categorical-5-best-3-5-probabilities.csv | 4 +- ...l-categorical-5-best-3-6-probabilities.csv | 2 +- ...l-categorical-5-best-3-7-probabilities.csv | 2 +- ...-categorical-50-best-3-0-probabilities.csv | 2 +- ...-categorical-50-best-3-1-probabilities.csv | 2 +- ...-categorical-50-best-3-2-probabilities.csv | 2 +- ...-categorical-50-best-3-3-probabilities.csv | 4 +- ...-categorical-50-best-3-4-probabilities.csv | 2 +- ...-categorical-50-best-3-5-probabilities.csv | 4 +- ...-categorical-50-best-3-6-probabilities.csv | 2 +- ...-categorical-50-best-3-7-probabilities.csv | 2 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 4 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 4 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 4 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 4 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- tests/unit/test_train.py | 108 +++++ 200 files changed, 1854 insertions(+), 1676 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index d09f75f8..fb6c2541 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -528,6 +528,7 @@ def apply_bert_masking( Applies BERT-style span corruption to the input data using custom distributions. Explicitly passes the boolean prediction mask via the targets dictionary. """ + data_batch = {k: tensor.clone() for k, tensor in data_batch.items()} targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} batch_size, seq_len = config.training_spec.batch_size, config.seq_length @@ -641,4 +642,6 @@ def apply_bert_masking( # 6. Append the explicit prediction mask targets_batch["_bert_mask"] = bert_mask + data_batch["_attention_valid_mask"] = valid_mask.detach() + return data_batch, targets_batch diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index dacb92f6..54ca8f14 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1267,9 +1267,6 @@ def _process_batches_multiple_files_inner( n_rows_running_count += data.shape[0] continue - data = _load_and_preprocess_data( - path, read_format, selected_columns, max_rows_inner - ) data = _load_and_preprocess_data( path, read_format, selected_columns, max_rows_inner ) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 5e148c51..bd1086cf 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -973,6 +973,70 @@ def _recursive_concat(self, srcs: list[Tensor]): srcs_inner.append(src) return self._recursive_concat(srcs_inner) + @conditional_beartype + def _infer_attention_valid_mask(self, src: dict[str, Tensor]) -> Tensor: + """ + Returns a boolean mask of shape (batch_size, seq_length). + + True means valid/non-padding token. + False means padding token. + """ + if "_attention_valid_mask" in src: + return src["_attention_valid_mask"].bool() + + # Prefer categorical columns because padding is unambiguously encoded as 0. + for col in self.categorical_columns: + if col in src: + return src[col] != 0 + + # Fallback for real-only data. + # This matches the existing heuristic used in BERT masking. + ref_col = next(col for col in self.input_columns if col in src) + return (src[ref_col] != 0.0).long().cumsum(dim=1) > 0 + + @conditional_beartype + def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tensor: + batch_size, seq_length = valid_mask.shape + device = valid_mask.device + + expected_seq_length = self.src_mask.shape[-1] + if seq_length != expected_seq_length: + raise ValueError( + f"valid_mask sequence length ({seq_length}) must match " + f"model sequence length ({expected_seq_length})." + ) + + base_mask = self.src_mask.to(device=device, dtype=dtype) + base_mask = base_mask.view(1, 1, seq_length, seq_length) + + invalid_keys = ~valid_mask.bool() + + padding_mask = torch.zeros( + batch_size, + 1, + 1, + seq_length, + device=device, + dtype=dtype, + ) + + padding_mask = padding_mask.masked_fill( + invalid_keys[:, None, None, :], + torch.finfo(dtype).min, + ) + + return base_mask + padding_mask + + @conditional_beartype + def _zero_padding_positions(self, x: Tensor, valid_mask: Tensor) -> Tensor: + """ + x shape: + (batch_size, seq_length, dim_model) + + Zeroes padded query positions so padded rows do not keep evolving. + """ + return x * valid_mask[:, :, None].to(dtype=x.dtype) + @conditional_beartype def forward_inner(self, src: dict[str, Tensor]) -> Tensor: """The inner forward pass of the model. @@ -1043,11 +1107,17 @@ def forward_inner(self, src: dict[str, Tensor]) -> Tensor: if self.joint_embedding_layer is not None: src2 = self.joint_embedding_layer(src2) - mask = self.src_mask.to(dtype=src2.dtype) + valid_mask = self._infer_attention_valid_mask(src).to(device=src2.device) + src2 = self._zero_padding_positions(src2, valid_mask) + + mask = self._build_attention_mask(valid_mask, dtype=src2.dtype) + for layer in self.layers: src2 = layer(src2, src_mask=mask) + src2 = self._zero_padding_positions(src2, valid_mask) src2 = self.final_norm(src2) + src2 = self._zero_padding_positions(src2, valid_mask) return src2.transpose(0, 1) diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv index d63e16f0..69fa9fda 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,7,0.41149214,-0.7849847,-0.28549865,0.4135578,-1.5136797,0.28504756,-0.2592171,0.3586638,0.0096122995,0.68446684,0.27280936,1.1332684,-0.9290369,1.6734341,0.96415323,1.5616682,0.6196785,-0.47138083,-1.7291825,0.6455711,-0.30171967,0.43178305,0.0013747738,-0.076876126,-0.26705164,0.09099751,-1.0307256,0.8569853,0.077619076,0.80527884,-0.3927059,-0.48262763,0.77014446,-1.2891862,-0.6874516,-0.18790592,1.2064557,-0.4788146,1.7160684,-0.37874106,-1.8563964,0.94303226,0.9052338,-0.8621848,-0.46681213,-2.1950614,-0.69286275,0.12579149,0.017325861,-1.8529755,-1.4810988,-1.7104719,-0.908732,1.3428756,1.6590891,1.4576144,-2.0680587,2.074148,0.1254711,-1.3453596,-0.150765,-0.31348786,-0.03713879,0.7493652,-0.09301235,-0.70159227,0.36488333,-1.3442415,-0.74384296,-1.0073787,0.5603107,1.5509155,-1.1920458,0.18350546,-0.26176476,-0.46722165,-0.17439422,0.7131231,0.48848873,-0.995511,0.1133322,-1.4447079,-0.022810481,-0.91964275,0.9241803,-0.87918293,0.80785894,-0.8586497,0.55474204,-0.09638581,-0.28760654,0.24903235,0.24263471,-1.3331411,2.1252306,-1.6045873,0.092501745,1.4959875,-0.7847978,-0.07687911,-1.3790759,-1.2054987,-0.4129643,1.175199,1.6125137,-0.15670183,-0.0052074674,-2.0629342,0.41843984,1.343122,1.3168796,0.4892252,0.8831178,-0.56325597,-0.40071782,-0.2586007,0.8234577,0.3491471,-2.5417411,1.2765507,1.3083528,0.13020971,0.56978697,-1.4101067,-0.31448993,-0.09979597,0.82165474,0.16443604,1.0280895,-0.22518575,-0.7565461,0.22468717,-1.430905,0.5723812,1.408025,-0.66557765,-1.2709581,-0.47722962,-1.0509661,2.1456828,0.35895014,-0.3888584,-2.3072958,0.28834087,0.9454994,1.2007508,0.13654324,-1.0512546,1.1556263,0.28248435,1.1180621,-2.4063637,-0.049587123,-0.4283151,0.34162042,1.1140897,0.74316895,-0.07375317,1.7339555,0.06241791,-0.14042361,-2.4541376,0.76050717,1.1560489,-0.81901497,-1.2859453,-0.049847722,1.0361446,-1.1722547,1.2732593,0.5962597,-0.30993164,-0.031384904,0.20975727,-0.23721394,0.710139,-1.6749394,-0.05069577,1.013451,-0.03550218,0.873963,-1.3086079,-0.043819394,-0.0068593933,0.054935377,2.020619,0.013108201,-1.2887985,-0.85200655,0.054864895,-0.44489822,-1.6583155,-0.63917583,1.483576,-0.23919883,1.4165703,-0.97365326,-1.2111417,0.5758731,0.2508152 +0,0,7,0.129906,-0.5716,0.18384615,0.48382017,-0.95800894,-0.06879192,-1.5230852,0.32024476,-0.032266557,-0.2324689,1.2026423,1.2646347,-1.6631967,0.8923384,1.0081543,2.146518,1.260503,-0.024123436,-0.4261092,0.71811444,0.6665925,-0.83603954,0.7274643,0.081591725,-0.46056688,-0.7607759,-0.5974563,0.5428709,0.04133952,0.6946457,0.54585093,-1.3706633,0.9921805,-1.1147716,-1.1846336,-0.6535198,1.6928166,-0.6169712,1.1777917,-0.33404595,-1.2148309,0.16786538,1.4557567,-0.7030484,0.40415078,-2.0602548,-0.44774872,-0.9443908,-0.37846982,-1.4340259,-1.0351791,-0.54817986,-1.3410672,1.057497,0.6667623,1.8221252,-1.484842,1.5296896,0.2569867,-2.118917,0.27047974,-0.802363,-0.34508198,-0.7845012,0.29995131,-1.5465921,0.3353841,-0.85972494,0.9633959,0.1057641,0.77337104,1.4520825,-2.3267972,0.8137759,-0.9976677,0.25013983,-0.27935335,0.8346441,-0.33092296,-1.0873228,0.49370176,-0.4727684,-0.7608272,-0.8022482,1.3239352,-2.2216249,0.55208087,-1.1424916,1.1881708,-0.4595066,-0.09527821,0.9202227,0.57056504,-2.0961475,1.643413,-1.046783,-0.116270036,-0.3729071,-0.61354154,-0.8894295,-1.1429787,-0.78733057,0.57443416,1.4698808,0.43613648,-0.075808406,-0.14003257,-2.9505506,-0.016151994,0.6177055,0.68450046,0.5607075,0.87257403,-1.3993292,0.35658643,-0.0063092983,-0.25653496,-0.31633425,-3.5138404,0.88777286,1.6519107,0.40932092,-0.027439872,-0.79843307,-1.1049063,0.07724614,0.56875324,-1.0056511,0.48330793,-0.157245,-1.6178644,0.1934022,-1.9760464,0.0589674,0.5110818,0.089602806,-0.968479,-1.0943018,-0.7229412,1.4727569,0.47599703,-0.6288432,-2.055541,-1.011629,0.9921429,0.5582884,0.50531685,-0.097561255,0.731814,0.6783084,0.3472921,-1.7636684,0.27717423,0.28878227,0.5271399,1.5502092,0.1620326,-0.50224847,1.5970831,-0.6694094,-0.53928703,-1.924573,-0.013257886,-0.10813448,-2.0357018,-1.6700076,0.2103319,1.2394764,-1.1461264,0.036453854,0.40960938,-0.83274007,-0.008255889,-0.30468202,0.5700774,0.6194162,-1.6036439,0.2115395,0.6522949,-0.39073604,0.21115232,-0.46797746,-0.018942848,0.09517513,-0.61526686,0.67094487,-0.45691407,-0.42524102,-0.8716745,0.07637033,-0.72497505,-1.2465461,-0.4429114,1.5433344,-0.8214027,1.8114822,-0.90004414,-0.6661404,0.8775225,0.91526055 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv index 3e39464b..31fbd49b 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,7,0.42257375,-0.17903732,-0.20059693,0.29945794,-1.3389122,0.03707557,-0.299859,0.40720436,0.15333666,0.64613265,-0.47270918,0.8683621,-1.0405228,1.8252618,1.1951929,0.98608077,0.6486402,-0.27345127,-1.749177,0.3916777,-0.06327997,0.5837565,-0.029801903,-0.4157889,-0.8207295,0.56711143,-0.9630651,0.7541865,0.040734746,0.6285889,-0.0074708797,-0.26125398,0.5846216,-1.6676134,-0.6075296,0.39818704,1.1361198,-0.14915793,1.784923,-0.2994867,-1.1560175,1.0586625,0.8207005,-1.4820725,-0.59732884,-2.1600444,-1.0302081,-0.14026557,-0.16139339,-1.6454352,-2.011675,-1.9869673,-0.7221869,1.3151264,1.5895944,1.3244375,-1.8021666,1.6869603,0.08559678,-1.2588723,-0.07605097,0.048324257,-0.35193312,0.9454642,0.104382835,-0.9171362,0.35889798,-0.6452473,-0.6342578,-1.0011637,0.2077998,1.4437941,-0.9567251,0.14908887,-0.24294905,-0.687203,0.05336324,1.0594568,-0.07940463,-1.1028723,-0.08218197,-1.3812248,0.22032668,-0.9392466,1.3229952,-1.090876,1.0943706,-0.5451269,0.12716077,0.06487062,0.0940708,0.37863347,-0.3223036,-1.1197766,1.7777491,-1.5668588,0.25907642,1.4157779,-0.7196445,-0.38355565,-1.5430949,-1.3738754,-0.7312654,1.3590227,1.652726,-0.31939238,-0.023165464,-2.2086487,-0.1569172,1.3741649,0.9475051,0.48269206,0.6875285,-0.534931,-0.24520622,0.24692726,1.1467029,-0.025945317,-2.077082,1.548747,1.3998401,-0.09173701,0.60546964,-1.7211899,-0.32520935,-0.6385531,0.58607954,0.63349676,1.2241516,-0.115974545,-1.2130051,0.3455885,-1.230523,0.3379228,1.3327022,-0.7980125,-1.4078081,-0.5755934,-1.0106425,1.8490473,0.6007134,-0.49850124,-2.4873343,0.3709469,1.0519376,1.3123273,-0.014704171,-1.0918032,0.4931872,0.14534308,1.087156,-2.4626598,0.4272686,-0.5852703,0.11401402,1.3979368,0.96870464,0.11613599,2.0814247,0.08643781,-0.25604638,-2.6740973,0.7021289,1.4160581,-0.9518831,-0.9351058,0.3818723,0.64308923,-1.4009758,0.878512,0.3460209,-0.6776031,0.16450398,-0.31286997,-0.18456456,0.3714644,-1.7571229,0.3403873,1.3923695,-0.17252812,0.6139845,-1.0345956,-0.1693556,-0.044252478,-0.30749786,1.657718,0.78084534,-1.4596986,-1.1058352,0.1094069,-0.053861905,-1.9468046,-0.2616004,1.6512417,-0.49316752,0.82700384,-0.6377279,-0.76203316,0.432102,0.4528831 +1,0,7,0.6310362,0.334674,0.16728853,0.36186692,-0.9478092,-0.3926634,-1.3003972,-0.044596065,-0.20526434,-0.026398035,0.19380486,0.8118285,-2.0392873,1.2787219,1.2542659,1.4919833,1.088667,-0.010551525,-0.8448257,0.43219802,0.56950766,-0.8026797,0.74732757,-0.42725757,-1.0895562,-0.21274805,-0.7626764,0.026918262,-0.5983657,0.28117272,0.73443246,-0.9515915,0.81785864,-1.6458837,-0.71132445,0.23738682,1.6034894,0.019240104,1.3241774,-0.20347075,-0.7043628,0.38013214,1.2755842,-1.4004871,0.46275398,-1.9880224,-0.9198009,-1.0473716,-0.65675557,-0.84835905,-1.3224105,-0.70712143,-0.7341193,1.1134466,0.6568125,1.3994768,-0.954168,1.3808511,0.251891,-1.9545913,0.2308793,-0.26487717,-0.64339316,-0.2622317,0.603964,-1.4150456,0.6588127,0.08482099,1.1321739,-0.099473916,0.010979951,1.831232,-1.8722236,0.88451487,-0.76108027,0.080021404,-0.06698817,1.07159,-0.9351867,-1.0435191,0.026436348,-0.41959018,-0.52513933,-0.5412578,2.0294697,-2.7480896,0.53006375,-1.0863824,0.33880177,-0.14623298,0.6506472,1.0939751,-0.48882413,-1.810358,1.3499824,-0.89643645,-0.008765998,-0.06027395,-0.48046795,-1.2652203,-1.4560691,-0.946743,-0.27704963,1.9105397,0.20772824,-0.3049073,-0.34610513,-3.3094442,-0.46867853,0.65010065,0.4332434,0.5593448,0.8796511,-0.8775561,0.56195873,0.2979048,0.54411083,-0.49651542,-2.4436908,1.2963794,1.9646289,0.41595295,0.077845775,-0.8488377,-1.2093579,-0.2594095,0.12893897,-0.5105848,0.64491534,-0.017900532,-2.1271238,0.27657434,-1.7817888,-0.6613088,0.2365224,-0.07435218,-1.0712526,-0.80908316,-0.77087396,1.1399101,0.7127807,-0.94809335,-2.0319622,-0.7065952,1.1998774,0.56364894,0.62384087,-0.25050914,-0.12355562,0.011005514,0.4171477,-2.2401168,1.0053111,0.10580753,0.5745275,1.6763166,0.3952029,-0.3734366,2.0440457,-0.5067878,-0.59976774,-2.560222,0.28748652,-0.068856396,-1.7209245,-1.5318912,0.7257471,0.8677974,-0.9443491,0.32327485,0.09680152,-1.0634658,0.2343228,-0.73152024,0.6149891,0.50479555,-1.6433326,0.36874586,1.5886227,-0.48504025,-0.5036868,-0.24184056,-0.20931806,-0.046914995,-0.6832404,0.3294942,0.5522635,-0.77527386,-1.4231143,0.22487257,-0.16668221,-1.7301935,0.025722886,1.6323115,-1.0889417,1.2082901,-0.3673339,0.19397202,0.32195246,1.1962756 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv index 891aca89..c085fdb1 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,7,0.34137836,-0.54560816,-0.34839255,0.5934387,-1.4561145,-0.3552921,1.236413,0.2230994,0.52624667,0.35157225,1.0009108,1.453514,-0.99844396,0.52108085,0.99309534,0.9884845,-0.49107695,-0.44872406,-2.3321922,1.2099328,0.02559154,-0.15125763,-0.25792414,1.148591,0.34748212,-0.7123179,-0.9918085,0.72194755,-0.57125664,-0.5386358,-1.4469051,-1.0329736,0.2649161,-1.8303887,-0.22947203,-0.22510229,0.4087416,-0.6991921,0.27918908,0.2699201,-2.0308623,0.73651797,1.1014013,0.28801918,-0.043545906,-1.3224466,-0.728169,1.3165932,-0.38451204,-1.2290868,-0.3865898,-0.82043016,-0.15159693,0.95450556,0.720509,0.58943474,-0.96818477,2.4339142,-0.045729626,-2.2731185,-0.69900125,-0.72985935,-1.0451107,0.16168666,1.275655,0.0921365,-1.3980165,-1.8175794,-1.2656915,-1.2789646,0.65161574,2.2280807,-1.0717951,0.7397777,-0.35529038,0.13295835,-1.1914927,0.17240041,1.2711916,-1.2801683,-0.7685431,-0.809741,-0.24176663,-0.520219,1.2797531,-1.700323,0.7044165,-0.28107253,-0.3459173,-0.61043745,0.52076197,0.051599972,-0.45293874,-0.06818946,0.8897772,0.097269796,0.41846913,1.6724628,-0.749013,0.34057495,-0.7477783,-0.06767678,-1.2013714,0.9092441,1.5504543,0.3554491,1.1866004,-1.1053133,0.1902895,1.1757743,1.115244,0.25665316,0.61796343,-0.47255665,-1.0932264,-1.2121068,0.3602891,1.3848262,-2.0418153,-0.25206277,0.64594483,0.06378719,0.63946444,-1.0031189,0.08267042,0.7659137,0.8319407,-0.17579815,0.7439447,-1.1327,-0.6398448,0.55752283,-1.4105185,0.6037283,0.882441,0.2301522,0.016749382,-0.097922415,-1.7987541,-0.056111883,0.7459678,-0.4149461,-1.682275,0.67691326,-0.4379247,0.76354676,1.4371464,-0.36294943,2.097733,0.2694331,1.5530957,-1.4040655,-0.9152303,-0.5327291,0.41197965,1.040547,-1.1637155,-0.59128654,1.9143434,0.75515777,-0.5771012,-1.1852001,-0.2920808,0.5541353,-1.050848,-0.79349184,0.107663386,0.108831875,0.8791816,2.1749172,-0.9475491,-0.28542468,-0.5886931,0.441553,-0.010180896,0.54911983,-0.48679575,0.46939653,0.29680255,-0.33886543,1.8130943,-1.2549541,-1.0724515,0.56288785,-0.12585218,2.9909089,-1.5593657,-0.92594236,-0.9341071,-0.14739718,-1.5810376,-0.5024728,-1.707612,2.2963934,1.5836017,2.0804906,-0.6040425,0.7326207,0.4728579,-0.083124615 +2,0,7,0.14896812,-0.7527326,0.098616265,1.5360665,-0.83212125,-0.8661572,0.87993956,0.7707245,0.8990906,0.35979807,1.5049816,0.9981651,-2.2045355,0.46189427,1.3522851,0.81136656,-0.3787586,-0.41562492,-1.6569216,0.9181141,0.8893558,-0.6614972,0.35581687,1.0705252,0.61813873,-1.6933419,-1.6523572,0.4721115,-0.6415743,-0.8052874,-1.1905364,-1.3483986,0.7520653,-1.4446422,0.032763932,-0.77299255,0.8698881,-0.9012206,-0.105312526,-0.03295452,-1.7241203,0.40647608,1.3450831,0.00073365227,0.23433386,-0.9771891,-0.1076481,1.2662536,-0.7311288,-0.6664411,0.006385311,-0.31623417,0.108964175,0.43619278,0.284846,0.34632137,0.13046862,1.7500304,-0.31573698,-2.1822793,-0.073760144,-0.63938767,-2.4171443,-1.3825034,1.4659554,0.061223067,-2.0762868,-1.1751351,-0.081808135,-1.6416469,0.61133504,1.4318693,-1.5806884,1.4651628,-0.42543516,0.27195463,-1.9691073,0.5124442,0.7785031,-1.2194265,-1.2140163,-0.21277447,-0.64433247,-0.34592688,1.480311,-1.6828288,0.5201631,-0.45541105,-0.17800705,-0.29835147,0.06779409,0.17683165,-0.5690362,-0.4795994,0.24317117,0.7038561,0.47528592,0.38569337,-0.92215085,0.12652376,-0.5222174,0.79115415,0.1062228,1.2142566,0.57600933,0.3640244,1.4705232,-1.8675983,-0.151888,0.84477943,0.5522926,0.25622973,0.50753284,-0.87316334,-1.7905984,-0.8826149,-0.80747306,1.2090178,-2.0752993,-0.18883346,0.35716313,0.12954345,-0.5863821,-0.3407679,-0.8663318,0.8249107,1.2127439,-1.0448643,-0.53810304,-0.6317458,-0.50353926,0.4781922,-0.91658026,-0.21077591,0.49530765,0.66140443,-0.061057545,-0.011890421,-1.4830853,-0.5170973,1.2860987,-0.48179677,-1.2840593,-0.12392463,-0.5612262,0.5283732,1.6894128,-0.015182488,1.6194154,0.6165103,0.846802,-1.259089,-0.19867773,0.05881237,0.87158996,1.7141718,-2.1852305,-0.17253563,1.7481165,0.7287171,-0.9333205,-0.5228718,-1.1484395,-1.0014697,-1.5860218,-0.9670557,0.5662043,-0.6358826,0.6285491,1.4611297,-1.5053117,-0.73541224,-1.1782357,0.4759477,0.56338716,0.29015008,-0.5925466,0.4408311,-0.23582521,-1.1164836,1.0048937,-0.39400414,-0.7058568,0.99132824,-1.3044466,2.0163782,-1.8661258,0.013690879,-0.98518753,-0.2840235,-1.4385029,-0.70052123,-1.5944667,1.7985247,0.9840921,1.857999,-0.74875927,1.5471251,0.73758185,0.14302142 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv index d8417f89..961e9b5e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,7,0.13949223,-0.8288385,-0.011691158,0.6978597,-1.7423092,-0.41049773,0.4738875,0.43795598,-0.13211526,0.83174855,0.18503393,0.8696095,-0.98063534,1.320197,1.2542927,0.804681,0.4159498,-0.5308098,-2.063883,0.7713375,-0.040647052,0.50756997,-0.47521272,-0.050390225,-0.41869515,0.15082894,-0.91570437,1.1039559,-0.119457014,0.630291,-0.78385514,-0.26605347,0.30441046,-1.7381796,-0.3145166,-0.09518902,0.98777574,-0.5672071,1.5451479,-0.5920584,-1.8862137,0.73404765,0.76614827,-1.2776103,-0.5546785,-1.6537995,-1.1388252,0.5387951,-0.04569923,-1.8089854,-1.3872888,-2.010136,-0.32747167,1.414386,1.5741073,1.1150281,-1.6234998,2.3318863,0.09676073,-1.2265372,-0.32222414,0.23237921,-0.34041348,0.7922307,0.6937952,-0.47161567,0.18344484,-1.5619589,-1.089482,-1.4129832,0.28963518,1.6352048,-1.1390606,0.18842995,-0.38225302,-0.65850925,-0.33246985,0.6151895,0.6373732,-1.5749953,-0.327212,-1.2576468,0.2955655,-0.5931339,1.2506938,-1.0565152,0.96414435,-0.8558795,0.34775218,-0.5049455,0.26373684,-0.20436549,-0.080223046,-0.94886553,1.4435066,-0.92269295,0.47257257,1.7526731,-0.9398457,-0.03447294,-1.2984382,-1.0528736,-1.0664232,0.9039165,1.928867,-0.4283627,0.48781595,-1.5944821,0.19360305,1.8330988,1.3015158,-0.05350088,0.53769165,-0.29242146,-0.8438974,-0.069205664,0.82746214,0.84352636,-1.9790401,0.94773203,1.0971557,0.038646087,0.88122386,-1.4750324,-0.11020492,-0.09284775,0.32929987,-0.14679804,1.1929734,-0.6901023,-0.6029133,0.21264303,-1.3289111,0.8272518,1.2592579,-0.38540855,-1.034611,-0.0327922,-1.550678,1.1788012,0.53695285,-0.36779112,-1.9978998,0.6491437,0.62098545,1.3861,0.43899333,-1.0762482,1.1092504,0.23858577,1.405184,-2.151006,-0.51262474,-0.6709533,0.47459316,1.2390981,0.41524518,0.045998752,2.0420544,0.5617183,-0.0899196,-2.7423296,-0.106221266,1.0869207,-0.7299839,-1.148185,0.08723943,0.6347005,-0.4051242,1.4006757,0.099802785,-0.47955215,-0.47176704,0.27028126,-0.8404873,0.59273887,-1.5649644,0.14975634,0.9384124,-0.36595413,1.3495317,-1.2204468,-0.33850634,0.27997792,-0.07943602,2.6751914,-0.09228743,-1.481454,-0.97814053,0.20486094,-0.731338,-1.5517998,-0.83328533,2.0616615,-0.18377517,1.3525189,-0.7911948,-1.0217361,0.5704211,0.053546384 -4,0,7,1.1079531,0.56694883,-0.51460046,-0.44087544,-0.43843356,0.25955358,0.13465126,-0.19686213,-0.0069119474,1.2750784,-0.36285907,0.29798138,0.2409469,1.3927422,0.2650472,0.2537195,-0.099152684,1.1273077,-1.4502947,-0.10494784,-1.1681588,1.3679986,0.028042292,-0.14520136,-0.9369158,1.5287392,-0.46746886,1.6174921,0.15947264,1.0661743,0.06785149,0.16602738,0.6872166,-0.90826625,-1.1785315,0.49854565,-0.70833915,-0.57204914,2.0476813,-1.371946,-1.3191279,0.64045453,1.1497461,-1.2700158,-0.91564953,-3.0730312,-0.0084550865,1.1021385,-0.20811193,-0.9027882,-1.3729584,-2.1781166,-0.82236534,0.14685307,0.39046445,-0.108870916,-0.63499683,1.680812,1.4627557,0.48326835,-0.4139974,0.048960343,0.16166344,1.8954678,-0.5226412,0.20060515,-0.04435112,-0.754301,-0.71545064,-1.4038323,0.069040895,1.1398026,-1.154028,-0.43103975,0.54638636,-0.74899,-0.14519033,0.9119781,0.7352537,-0.1921951,-0.4378232,-1.6286504,1.354772,-1.0531448,1.8048595,-1.1451042,0.80384815,0.22715564,-0.24490066,0.5841813,-1.1601851,0.73505855,-0.39013195,-0.18186606,1.2028245,-1.022498,1.2703432,2.3782692,-0.9626023,0.44522825,-1.4234884,-1.6156629,-0.5665078,0.95502675,1.4593245,0.47318575,-0.8122251,-1.0151421,-0.82546866,0.6082922,1.1691772,-0.5170128,0.067346595,-0.6556871,-0.5575009,-0.0006836925,2.0677729,-0.63626707,-1.0719508,0.08163928,1.2308236,0.3763118,0.33964872,-1.3674697,0.8556785,-0.69404805,0.6134989,1.0646461,0.9832764,-0.34057733,-0.12112485,0.23851065,-0.026012735,0.8402205,1.8853765,0.90379107,-1.7303153,-0.17408463,-0.7569175,1.1544394,0.10548308,-0.58828104,-2.2133024,0.76151407,0.9882251,-0.33799013,-0.36300513,-0.32815427,-0.16083471,-0.7817147,-0.15756014,-2.7104619,0.73015183,-1.8245586,0.12698413,2.2169824,0.95323753,0.43615663,1.2318543,0.45343706,-0.06706062,-1.7847573,1.080589,2.519145,-0.86268,-0.17361444,1.168513,-0.91562283,-1.569328,1.259442,0.037228383,0.30334857,-0.23501681,-0.49459893,0.3947516,-0.39016256,-0.7743366,0.74605846,0.21725878,1.8476028,0.54618216,-1.5716995,0.9664981,0.12692592,0.3307412,1.9256802,1.494507,-1.164124,-0.9523818,-0.61173975,0.45403442,-1.0929524,-0.046263948,1.1769654,-0.009714122,-0.049784996,-0.15999958,-0.46489516,0.8143899,-0.30355412 +3,0,7,0.38537663,-0.76236117,0.54453766,1.1489445,-0.93219095,-1.0841125,-0.279618,0.190426,0.066999875,0.60205054,0.7307121,0.975402,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.9700833,0.62717986,1.3900626,-0.94647413,0.48373678,-0.030570993,-0.42904085,-1.1276957,-0.7923079,0.563961,-0.40978292,-0.2334528,-0.27136517,-0.8576837,0.69629365,-1.6003033,0.11132377,-0.5791753,1.9399358,-0.9257662,0.5349056,-0.49527618,-1.3456327,-0.17603794,1.3494829,-1.1282389,0.20037875,-0.9559931,-0.8822725,-0.07519408,-0.77170074,-0.9350284,-0.5532877,-0.94019765,-0.10448791,1.1707094,0.6575927,1.3083346,-0.61123514,1.6713382,0.16979483,-2.0898654,0.009840045,-0.44183388,-1.1921828,-1.265742,1.6432867,-1.1305618,-0.46437404,-0.8430221,0.7453205,-0.65720564,0.35852164,1.6237742,-2.0383017,1.1427602,-0.8917945,0.2076105,-1.3489536,0.6207456,-0.44713888,-1.8621222,-0.5244267,-0.45581636,-0.3975574,-0.4345815,1.8005577,-2.0100255,0.3588848,-1.2393867,0.95991385,-0.65878433,0.7419609,0.43640068,-0.37811753,-1.3537853,1.0124421,0.12569557,0.45669934,-0.062139753,-0.68999034,-0.7770923,-1.26833,-0.42139238,-0.41232172,1.722412,0.38184437,-0.50226235,0.19698814,-2.7483191,-0.18802643,1.3159317,0.4502178,-0.26388723,0.5703611,-0.85277057,-0.46127146,0.2382723,-0.42989612,0.4115149,-2.6187692,0.5646321,1.1139393,-0.032928452,0.10219407,-0.6601092,-1.3054988,0.093954325,0.43201578,-1.4673975,0.08933542,-0.7154099,-1.6057762,0.40757596,-1.6277497,0.05748511,-0.1892006,0.10566295,-0.8918468,-0.17913234,-1.4436157,0.07747513,0.6109399,-0.8347807,-1.3056538,-0.8713027,0.28275943,0.87232286,0.8705629,-0.14861424,0.91572547,0.6586051,0.67494464,-1.7701943,0.16297512,0.4728508,1.0638494,1.7032028,-0.6542731,-0.017882321,2.1696196,-0.04748722,-0.77344686,-2.259672,-1.1815661,-0.58230156,-1.6384532,-1.8893389,0.917642,0.3281549,0.40393066,0.178792,-0.32735556,-1.1835171,-1.0626796,-0.12413608,-0.13082595,0.59983134,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061558,-0.10099141,0.51506233,-1.2538948,1.3633755,-0.588958,-0.21253218,-1.3333261,0.5079261,-0.97876984,-1.5163478,-0.66665024,1.8272513,-1.481488,2.3199954,-0.635016,0.18672499,0.83364874,0.9136821 +4,0,7,1.832777,0.9652215,-0.2531473,0.2162134,1.9031242,0.70369786,-0.9306243,-0.88834244,0.55274016,0.5570371,1.0132977,-0.9646427,-0.5195061,-0.055798862,-0.37479177,0.4407284,0.16671644,0.5790386,0.41375777,0.80011296,-1.5359619,-0.22593135,1.7854866,-0.71542126,-1.0921632,-0.04137182,-0.21795602,-0.33691144,-1.2671196,-0.7473329,0.18677165,-1.8774186,2.0318227,0.273334,-0.9697613,-0.5860969,-0.36416003,0.2273136,0.47210863,-1.3540341,-0.25599045,0.6586222,1.5556432,-0.8154356,1.168724,-2.2140863,0.42116508,0.4787695,-0.64788985,0.4423342,0.20755024,-0.55014634,-0.595621,-0.6086162,-1.3033568,-0.92190075,1.9484235,-0.028180895,0.9555864,-0.610766,1.3185904,0.42626792,-1.1561954,-0.5161907,-0.83520865,0.22098021,-0.32627407,-1.1956958,1.73692,-1.1766446,0.07778312,-1.4228519,-2.1649313,0.6194682,-0.44674367,-0.010885017,-0.43634287,1.7373236,0.6609659,-0.20005386,-0.5650337,0.29500005,0.115850784,-0.054047436,1.7766252,-1.624335,0.4819138,1.0377665,-1.2305183,0.80048895,-1.9219421,1.6361128,0.13642035,-1.2401028,0.56233996,-0.15820792,1.5966988,-0.2590406,-0.5514963,0.43703985,0.40010962,-0.12492114,1.6866367,2.0976324,-0.49593025,0.8581704,0.21792285,-0.63466465,-1.7050067,-1.6924849,-0.08375951,-0.38175452,-0.3269363,-0.96400464,-0.90264994,-0.5941345,0.1949616,-0.8319494,-0.5528981,-0.80228716,1.6503075,1.2991755,-1.0835283,0.3950482,0.2928661,-0.13108586,-0.38219264,-0.5976724,-1.3788452,-0.2650713,0.34214625,1.046247,1.518125,-0.5940697,0.589522,2.7725646,-1.0286809,1.1897798,0.33696088,-1.0014184,-0.029821016,-0.5898694,-0.9996754,0.0104257725,1.4441028,-0.87508523,0.57642156,2.500753,-1.5390791,-1.6458074,-1.7197642,-0.74723464,1.16423,-0.3134553,-0.005579411,1.5905838,-0.9592407,-0.41740352,-0.6339657,0.8530593,1.299676,-0.11439452,0.39143115,0.46125954,-3.0907333,-0.27514967,0.20107317,-1.4204426,-1.7638286,-0.4874675,-1.2546072,-0.23415713,-0.10110022,-0.24766764,1.7387943,-0.75891596,0.75030476,0.5836463,0.10834095,0.7989047,-0.48462987,-0.62584233,0.5027705,1.1866,-0.2813258,-0.8015657,0.4489704,1.1347668,0.07279327,-0.6131345,0.88922334,0.71706647,0.65837896,0.33229914,1.1745048,-0.74355304,0.5451966,0.36238006,1.4138216,0.37747213 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv index 5144f594..1ede8ed4 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,7,0.30457106,-1.0499812,-0.2708557,0.6033656,-2.1559174,-0.014660421,0.40023395,0.35113475,0.0902287,0.7888887,-0.34383535,0.93346864,-1.0638552,1.6174538,1.5091573,0.9228686,0.086696744,-0.50717336,-2.0618286,0.39436528,-0.021834815,0.6010914,-0.47710696,0.17810024,-0.91974175,-0.12123473,-1.365223,0.79932564,0.19411209,1.1538398,-0.63365114,-0.39145467,0.2746975,-1.130279,-0.6916063,-0.12119007,1.0064207,-0.330205,1.6648016,-0.45908698,-1.8615019,1.1402794,0.75518245,-1.5022097,-0.9118628,-2.2375493,-0.902504,0.6392769,-0.21022926,-1.8474433,-1.5057714,-1.960203,-0.3685194,1.2326003,1.5652041,1.0757546,-1.4903946,2.2756448,-0.32394972,-1.1672122,-0.059360582,-0.04470684,-0.8703109,1.0302415,-0.0895821,-0.403575,-0.37002468,-0.8056304,-1.1433159,-1.2743354,0.85718685,1.1835376,-0.6666402,-0.14671929,-0.04834712,-0.98218584,-0.13421746,0.78738457,0.38280028,-1.2351733,-0.48965338,-1.6121022,0.42098215,-0.85432166,0.9951741,-0.12262745,0.9710562,-0.5171932,0.16173087,0.17513205,-0.07830988,-0.34751597,-0.012498501,-0.66930187,1.9089013,-1.4641144,0.5140048,1.7203206,-0.9557444,0.13077603,-1.1026406,-0.9473788,-0.31690073,0.97551376,1.9448526,-0.476878,0.7957327,-1.8465495,0.67249143,1.7720664,1.2585933,0.45854238,0.5997015,-0.6044482,-0.76524645,-0.30329454,0.5679286,0.5396677,-1.7696911,1.5391197,1.026936,-0.31885958,0.50461066,-1.7645643,-0.50854623,-0.4742418,0.77532613,0.09777384,0.54422975,-0.1796674,-0.8478994,0.0031664053,-1.1256933,0.77754414,1.3871409,-0.26337987,-0.8610575,-0.51069754,-1.2064705,1.7107098,0.7312288,-0.28927425,-2.1887672,0.9429601,0.9586188,1.8643379,0.19833568,-1.2076133,1.2674617,0.3626933,1.0161105,-2.1542332,0.07333201,-0.60430324,0.2051994,0.90605885,0.19795726,0.60270673,2.1178296,0.3766683,-0.5104417,-2.3974814,0.124425165,1.0825484,-0.41810575,-1.0645667,0.04239827,0.48415333,-1.4814224,1.1013521,-0.101820946,-0.6659215,-0.4296166,0.30863544,0.20719278,0.43899494,-1.6712543,0.00065493764,0.7002628,-0.41546488,1.3948044,-1.0820502,-0.11341275,-0.15781793,-0.2200905,1.9745494,-0.07587735,-1.6396667,-0.65765786,-0.13210705,-0.30101702,-1.8123761,-0.7385888,1.5914155,-0.37091118,0.9381928,-1.189511,-0.54202545,0.30190322,-0.34896195 +5,0,7,0.8678485,-1.1492084,-0.29577827,0.9786946,-1.9542456,-0.07664234,-0.03973026,-0.09718513,-0.46550712,0.088307075,0.014937765,1.1039448,-1.9457144,0.7994327,1.8773035,1.5537525,0.39788535,-0.4953131,-1.4370357,1.0003624,0.841088,-0.99132866,0.15745488,0.4423288,-1.511852,-1.9748083,-1.3705088,0.117527954,0.0471839,0.72272456,0.15624413,-1.3321223,0.8274153,-0.50209063,-0.85796344,-0.82082087,1.3705729,-0.32510358,0.92136246,-0.4567902,-2.0167284,0.778191,1.3592294,-1.6879605,0.3511618,-1.6433352,-0.8796016,0.4710184,-0.49356312,-1.540319,-0.5620308,-0.7479297,0.11485024,0.5929443,1.0806792,0.8520335,-0.28449163,2.3426988,-0.7176778,-2.077216,0.44693425,-0.51118195,-1.8134435,-0.3199498,0.5275097,-0.7924806,-0.90600455,-0.5945148,0.62720704,-0.76678073,1.4406856,0.83508265,-1.3691335,0.43675628,-0.93423057,-0.587019,-0.5398221,1.3742958,-0.36840782,-1.3804276,-1.3538328,-1.2029364,-0.6361642,-0.20616663,1.1179503,-0.86969507,0.46374834,-0.9316529,0.36905083,0.18406925,0.57265496,-0.09701405,-0.3084512,-1.0851078,1.2294931,-0.43448195,0.4714254,0.2976226,-0.6675889,-0.24110621,-0.86843914,-0.15433894,0.3217168,1.7343627,0.64216596,-0.39611214,1.2057974,-3.0774295,0.8041049,1.0713865,0.31967443,0.8850117,0.5413772,-1.8904046,-0.64331496,-0.7131405,-0.8982892,0.49162266,-1.7892696,1.266022,1.2143359,0.16972244,-0.42226094,-0.920911,-1.287436,-0.30553937,0.78019506,-1.3130422,-0.54638034,-0.06269855,-1.2766076,0.3067186,-1.1979859,-0.5041536,0.24134868,0.9985403,-0.20058866,-0.19003277,-0.91562223,0.7388305,0.60628974,-0.39632004,-1.401826,0.266171,1.2859257,1.7502289,1.1291436,-0.2593596,1.0141768,-0.0024154119,-0.012608729,-1.6622946,0.84452707,0.4089601,0.24172992,0.8491719,-1.2459073,0.44094768,2.3070037,-0.20285222,-0.9055848,-1.9905902,-0.62915814,-0.7049501,-1.5236275,-1.6411532,0.28731275,0.23528811,-0.8580845,0.87269217,-0.8224613,-1.3814896,-0.8996288,0.0075937505,1.4490063,0.6224928,-1.3583354,-0.39259246,0.55505186,-1.1764414,1.2858897,-0.51201284,-0.36201963,0.028119631,-1.0583313,0.626196,-0.93444836,-0.6852238,-0.55748594,0.1277266,-1.1170981,-1.7487799,-0.62091154,1.1936655,-0.5524272,1.6852114,-1.5539126,0.93077433,0.54523623,-0.3293535 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv index 9f0978c3..541113f3 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,7,0.7273449,0.009315487,-0.5659161,0.0539636,-1.1747422,0.11731785,-0.24878183,-0.34799668,-0.39417046,1.5134698,0.180432,0.45988694,-0.48523727,1.8745505,1.0106969,0.83485544,0.46109983,0.18401664,-1.8427206,0.5820249,-0.9933856,0.57772356,-0.27879953,-0.88057303,-0.9495125,0.27947068,-0.98555374,0.65584594,-0.7251935,0.63879484,0.27707863,-0.23204361,0.8994904,-1.6550843,-0.41345245,-0.13837196,0.25872716,0.28248805,1.929113,-0.9793597,-1.2198358,1.0012894,0.7334509,-1.2398807,-0.88356876,-2.096589,-0.55407935,0.06886668,-0.776487,-0.90201944,-2.001808,-2.458255,-1.0559742,1.7568047,1.9512438,1.0935278,-1.6113944,1.89258,1.1544857,-0.70098376,-0.571621,0.7649165,-0.5899035,1.3507531,-0.7255975,0.17241018,0.50311905,-0.6263059,-0.36380523,-0.38990656,-0.27967066,1.416065,-1.308391,-0.352508,0.26046076,-0.18396786,0.50395614,0.2636389,0.86980325,-0.877985,0.18548113,-1.2215562,0.33346045,-0.9510769,1.7036265,-1.5579641,0.6795726,-0.18158613,0.011276826,-0.1970394,-0.26797757,0.3612404,-0.5695245,-1.4026842,1.758898,-1.2169626,0.73240304,1.9216541,-0.5449494,-0.14847618,-1.4680748,-1.6136966,-0.1330753,2.083131,2.207608,-0.20060927,-1.1179813,-1.3244749,-0.3105317,1.1410857,1.0294605,0.12662466,0.8479376,-0.43145418,0.2132454,-0.025244722,1.6760103,-0.2850787,-1.5536851,0.5495985,1.1164563,0.2283902,1.3229661,-1.758217,-0.4295333,-0.5159716,0.14204884,0.31548834,1.3842486,-0.54636705,-0.62329435,0.13254096,-0.53141403,0.2421158,1.3180143,0.27180845,-0.8231482,0.23262133,-1.0528578,1.495885,0.19461124,-1.0369684,-2.0902848,-0.4222444,1.0143939,0.5824076,-0.20892456,-0.4718485,0.06580811,-0.58581954,0.8422832,-2.566362,1.0881084,-0.64552516,0.3792994,2.2656064,1.8036302,0.2566192,1.7502713,0.65841585,0.25055784,-2.5194345,0.84616184,1.1300479,-0.60688585,-0.82479155,0.24982473,0.5697576,-0.6672031,1.3321275,0.23418252,0.32546026,0.52113616,0.41371918,-0.2717294,0.47879305,-1.3640656,-0.10326316,1.3061558,0.70007694,0.5445003,-1.2608218,0.51818657,-0.36812475,0.9051562,1.1091714,0.82054716,-1.0394655,-1.0836576,-0.22977057,0.17767808,-1.7726516,0.3174601,1.4640669,-0.17567706,1.0871913,0.17054728,-1.0595478,0.054115366,0.44907287 -7,0,7,0.19220954,-0.49153456,-0.04641067,0.18849212,-1.5853618,0.12341867,-0.11363969,0.13727675,-0.06847534,0.76124924,-0.28678593,0.8900653,-1.0943688,1.5146927,1.2307183,1.5759242,0.80081123,-1.0552121,-1.5437708,0.8671235,-0.33835396,0.6237686,0.060264308,-0.4205532,-0.569102,0.31872287,-1.1516503,0.56125844,0.025306754,0.6017618,-0.29687238,-0.3951651,0.7847005,-1.504742,-0.2827757,-0.21072185,1.2361257,-0.2929404,1.6530923,-0.54373467,-1.6885573,0.8691418,0.6955893,-1.2405534,-0.5988692,-1.744112,-1.3133477,0.17552854,0.058676194,-1.7747884,-1.4241207,-1.7917409,-0.62875485,1.7578604,1.5654361,1.3629228,-1.6896278,1.6548164,-0.14070357,-1.9311712,-0.15432832,-0.25670385,-0.4815931,0.8380533,0.28672034,-0.9617282,0.51135164,-1.1442822,-0.4330058,-0.7627599,0.6438905,1.7754638,-0.89877915,0.2844743,-0.36010924,-0.62290066,0.05098487,0.43144348,0.37151685,-1.350735,-0.3010244,-1.2662656,-0.017898949,-0.89459026,1.0812829,-1.0964411,0.66727376,-0.4757698,0.45214677,-0.045206342,0.10654671,-0.018967189,-0.5759011,-0.76332796,1.7140834,-1.397187,0.37946275,1.4883934,-0.9071629,-0.39879188,-1.280823,-1.1647131,-1.0890014,1.5997056,1.4125903,-0.36653465,0.25216198,-2.067858,0.7692397,1.5507644,1.0313568,0.47055215,1.0971524,-0.27837852,-0.19586825,-0.053837664,0.94147635,0.6782325,-1.8499793,1.3899486,1.4842832,-0.20198905,0.9118752,-1.3156699,-0.32807803,-0.46155733,0.59480095,-0.001722204,0.80457634,-0.21580535,-1.2434112,0.56428885,-1.0542293,0.7155026,1.2230334,-0.9761847,-1.017852,-0.1672411,-1.4611741,2.0070598,0.71912134,-0.6476812,-2.0907934,0.44325376,1.0635188,1.3988785,0.15533331,-0.9266868,1.1053526,0.25385013,1.2198808,-2.3114061,-0.13443123,-0.2354869,0.25447476,0.91357034,0.8403027,-0.059212927,1.9575791,0.24892993,-0.31545094,-2.6089191,0.80578184,1.2054881,-0.7192824,-1.2654837,-0.09570098,0.94349724,-0.8900375,1.2061056,-0.01412794,-0.66192263,-0.2441078,0.041381236,-0.2976183,0.9883735,-1.9825552,0.07066407,1.6886215,-0.68948716,0.5837726,-1.1841415,-0.10145782,-0.008195412,-0.1493982,1.5905204,0.13115445,-1.1599777,-1.202373,0.2164183,-0.3614637,-2.1209643,-0.1951186,1.9769924,-0.68308234,1.2002243,-0.90931207,-0.6301795,0.1339641,0.01462584 +6,0,7,0.47420257,1.2638454,-0.29428783,0.6063462,0.3250649,-0.011651794,-1.383389,-1.234404,-0.45170534,1.0377884,1.8840407,-0.33119473,-1.0696625,0.9726884,0.80814546,0.9354395,0.71671236,0.428451,-0.015223929,0.81312406,-1.2162952,-1.1050556,0.6366257,-1.6387161,-0.9819109,-0.4953308,0.12158297,-0.67469645,-1.717451,-0.21087128,1.0931989,-1.6311557,1.6655924,-1.1295466,-0.8290883,-0.27834374,0.3571047,0.7679167,1.286279,-1.5655476,-0.47575822,0.3837134,0.82579845,-0.65413463,-0.060213037,-1.6886673,0.31571612,-1.3439902,-1.3430762,0.0015742916,-0.8718748,-1.2474332,-0.8262217,0.5390429,0.43257564,0.7165555,-0.013134941,1.0078024,1.2916026,-1.6230772,0.18352468,1.4117193,-0.99339473,-0.17660125,-0.8539951,0.17099175,1.0725634,-0.23263906,1.7940855,0.49845868,-0.58279014,0.9100562,-2.1336784,-0.08051058,-0.15371843,0.53641343,0.036809027,0.27225932,0.43129542,-0.51692873,0.86170065,0.3777755,-0.3340567,-0.5066735,2.3349266,-3.2664793,0.23907657,0.13636138,-0.13565235,-0.29753345,-0.56251806,1.5495608,-0.25081062,-2.0128417,1.4139545,-0.16621536,0.784448,0.5935694,-0.85539657,-0.5690536,-0.5415991,-0.8971023,1.8330036,2.7651486,1.039496,-0.23426558,-0.57880366,-1.1803632,-1.0954609,-0.30837312,0.2056301,-0.45784757,0.79928094,-0.58580524,0.8425376,0.11244702,0.72019076,-1.2291323,-1.666961,-0.4446293,2.2034054,1.0664692,0.81338817,-0.4559747,-1.2628947,-0.2225234,-1.3892788,-0.7460107,0.097924024,-0.91731095,-1.1128799,0.40236434,-0.7147696,-0.7736082,0.39257404,2.3405876,-0.27565396,0.40534735,-0.81300443,-0.097918786,0.61959285,-1.4504018,-1.5624175,-1.1680082,1.2857004,-1.2578357,0.41585726,1.0423983,-0.53722256,-0.38153195,-0.51949257,-1.5859617,1.3256052,-0.097611226,0.5610492,2.6576302,1.24299,-0.7566358,0.91004014,0.7399129,-0.1096572,-2.0155513,-0.009600659,-0.6858703,-1.7821821,-1.058989,-0.13436024,0.42209816,-1.1379089,0.4846043,-0.6162597,-0.33495048,0.5386396,0.18685773,0.26678535,-0.20175369,-0.72045624,0.21726054,1.1120163,0.79319596,-0.36998135,-0.67134833,0.7267623,-0.18856248,0.4676755,-1.0685669,0.32332313,-0.06708168,-1.2248515,-0.7845494,0.5460868,-0.6168076,1.5106831,1.7673893,-0.6841837,0.44412613,0.7936944,-0.8888349,0.039817397,1.6578218 +7,0,7,-0.08779775,-0.7206459,0.39195007,0.30277744,-1.0405563,-0.8779835,-0.7976403,0.071234435,-0.29967046,0.27734953,-0.105664976,0.77108765,-1.7671883,0.824929,1.5373951,1.5010271,1.4846263,-0.7896349,-0.8870087,0.69192314,0.6787518,-0.4330691,0.6862604,-0.2904696,-0.9619547,-0.3613372,-0.92799646,0.18862405,-0.13149612,0.33348697,0.35246965,-0.86275643,0.7647196,-1.5118189,-0.24293661,-0.62797713,1.9434764,-0.1523092,1.2640053,-0.53051686,-1.5717334,-0.23882772,1.2569783,-1.5155659,0.316097,-1.4623227,-1.5276753,-0.6301773,-0.15530248,-1.2590177,-1.1136596,-0.8283695,-0.3316041,1.6386757,0.7145627,1.4172399,-0.92403394,1.1554213,-0.2054311,-2.2690709,0.032772172,-0.60741836,-0.840842,-0.43909273,1.1674483,-1.5343083,0.39456716,-0.6319559,0.694979,-0.17052399,0.6638801,1.6770401,-1.6856104,0.8501758,-1.0100726,-0.06956186,-0.49753255,0.45815906,-0.8491857,-1.5388988,-0.21994215,-0.6159065,-0.43685117,-0.5483946,1.8440413,-1.9056607,0.239437,-0.8901972,1.0178717,-0.41829032,0.47147453,0.2824819,-0.4255798,-1.3693498,1.3788786,-0.8324858,0.2925801,0.038576633,-0.9931528,-0.88978964,-1.3541443,-0.3884408,-0.5666751,2.0802114,0.20410398,-0.5688041,-0.25536698,-2.8470824,0.22910744,1.3398811,0.41405335,0.37236086,1.0213393,-0.612114,0.20765163,0.22666231,-0.052260194,0.20032823,-2.3570495,1.430299,1.4743409,-0.2883624,0.44256932,-0.7141606,-0.87645125,-0.20459764,0.5313735,-1.1576004,0.2882263,-0.31856775,-2.041501,0.55573547,-1.3157725,0.2728312,0.18704545,-0.34522098,-0.7096739,-0.432244,-1.6015022,1.0732054,0.9189849,-0.6834102,-1.5872613,-0.5969934,0.90725124,1.1939424,0.6279301,-0.4908578,0.9603637,0.6682552,0.66679686,-1.698892,0.26019415,0.5773275,0.53784454,1.2200284,0.32803503,-0.15348214,2.141097,-0.0141839655,-1.0378202,-2.6077065,-0.3066732,-0.06714368,-1.3892244,-1.7354015,0.5355618,0.9041617,-0.3285599,0.12410717,-0.4072241,-1.3432459,-0.7320013,-0.25400367,0.17272092,1.1034756,-2.2850537,0.62561816,1.75507,-1.3452936,-0.017986165,-0.54053295,0.05288172,0.2870577,-0.98898715,0.76313764,0.15638581,-0.6830085,-1.3387133,0.6244851,-0.7181842,-1.9862365,0.07094988,1.840984,-1.5815738,1.6396283,-0.85405743,0.19265085,0.44211808,0.6777788 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv index d965bd46..84ef00be 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,7,1.8829988,0.5603056,-0.6805401,0.873459,-0.75400966,0.6241306,-0.022826796,-0.65359944,0.45811382,1.1624973,-0.36711055,1.1964695,-0.9203239,1.9030054,0.92825997,1.2234915,0.3935566,-0.10803351,-1.7747352,1.0153017,-0.22650294,0.07317609,0.7041025,0.083895385,-0.5787242,-1.1430625,-1.0159122,0.3586008,-0.81441945,0.12919727,-0.23688294,-0.8359273,1.0575047,-0.58928937,-0.19002041,-0.26165125,0.6974495,-0.35162425,1.4806678,-0.91830134,-1.5502017,1.193903,1.0963876,-1.9676751,0.075405344,-2.0842352,-0.2591765,1.1972393,-0.45678777,-1.2595507,0.0008469863,-1.209172,-0.04429603,0.6055306,1.2668537,-0.2412063,0.19914478,1.9480219,1.0576845,-1.475916,0.17119397,-0.6035175,-1.7098999,-0.37294888,0.419368,0.268539,-0.70104766,-1.7786356,0.5031316,-1.5002457,0.9026701,0.80984163,-1.2359964,0.22069247,-0.42576674,-0.39630565,-1.4970282,2.616495,0.6003689,-1.1450349,-2.02723,-1.7124385,0.30198652,-0.6123571,1.4489877,-1.4337479,0.3514351,-0.39667892,-0.68725485,0.8674336,-0.02994205,1.0586603,-0.8096146,-1.0183178,0.82786477,0.15899718,1.4175017,1.6423237,-0.7518763,0.46193466,-1.7427615,-0.89581615,0.25311762,1.9719808,0.84027904,0.5098649,0.69561577,-2.01775,0.16369472,0.09517597,0.4123239,0.43099934,-0.5587974,-2.099149,-1.5859907,-0.90635055,-0.023114711,0.15737575,-1.1646839,-0.39253628,1.4398996,1.0370032,-0.44213772,-0.64347506,0.49100915,-0.8488655,0.52995205,-0.12177242,0.4132956,-0.117767714,-0.041891925,1.1423306,-0.9095124,-0.7704257,0.6956402,1.2622151,-1.6017178,1.253087,-0.88926196,0.024840193,-0.6669459,-0.84649396,-1.5089233,0.5503707,1.0900313,0.52742964,1.4928386,1.0869912,0.35689026,-0.5618133,-0.1295253,-2.3059578,0.9978885,-0.25662556,0.12965643,1.9835927,-1.0982833,-0.09509576,1.6303843,-0.04004063,0.85300845,-2.1637661,0.115972474,0.8912982,-1.8220121,-0.67457515,0.4750627,-0.7254808,-1.0370337,1.8635073,-0.7830165,-0.7419083,-0.59229213,0.36369795,0.009352995,-0.652557,-0.9893492,0.13321461,0.05142843,-0.173441,1.0776938,-1.6504616,-0.21089926,0.84927285,-0.2011813,1.2290883,-0.25737432,0.17806257,-0.74700785,-0.22532028,-0.73679703,-1.1095785,-1.5106932,1.1296397,0.6030286,0.907326,-0.8425243,0.72134006,1.3058224,0.4379919 +8,0,7,1.6896031,0.29085124,-0.23292182,1.3335884,0.45459226,0.34372637,-0.4165882,-0.42207715,0.60733074,1.2122438,0.8359352,0.5889716,-1.7851549,1.4177666,0.7491194,0.5095495,0.26941702,0.21018945,-0.88023686,0.56112635,0.4965653,-0.8069379,1.1553066,-0.012635032,-0.1019034,-1.7098439,-0.778535,0.08457131,-1.0872964,-0.46575657,0.1705186,-1.0981392,1.2801948,-0.2028321,-0.3777968,-1.0450279,0.83502,-0.4449086,0.3772813,-1.3267674,-1.3647468,0.4980426,1.0723178,-1.55848,0.6211332,-1.7105299,0.93637806,0.962023,-0.5543043,-0.2215327,0.51130736,-0.5170269,0.11910182,-0.16186877,0.3342436,-0.8031384,1.6559254,0.4785719,0.5240285,-0.85450006,1.1488028,-0.123829335,-2.314366,-1.7480177,0.34907198,0.33689144,-0.96712893,-1.1980494,1.7140707,-1.4368652,0.665594,-0.2777855,-1.740489,1.0585523,-0.34576628,-0.026606081,-1.963539,2.3253458,0.718786,-0.63990796,-2.111302,-0.76395285,-0.37198,-0.00446455,1.4715577,-1.4121685,0.046070743,0.04943243,-0.6720886,0.77220064,-0.78486633,1.6651013,-0.5048683,-1.0169151,0.19552472,0.60602754,1.0623702,0.15507461,-0.32467106,0.2723276,-0.9548157,-0.0605602,1.6082473,1.8419511,-0.6165263,0.5530546,0.5313712,-1.6408414,-0.0837646,-0.62233794,0.053751737,0.17250709,-0.5837834,-1.9890919,-2.1878119,-0.6350772,-1.3977064,-0.09614897,-0.99611235,-0.87689996,0.8914697,1.3250514,-1.3865021,0.07022134,0.14449094,-0.4635786,0.22937033,-1.0663302,-1.124088,0.17105857,0.38474694,1.002527,0.06262806,-1.439073,-0.079469405,2.1103234,-1.7293836,1.1202102,-0.19353467,-1.0497702,-0.18288192,-0.8191539,-0.91999054,-0.0011520431,1.4552093,0.0285639,1.5781827,1.5662957,-0.37651268,-0.7598728,-0.96915853,-1.9078715,1.1331103,-0.11489686,0.537274,2.1304922,-2.0829363,0.2657547,0.73497164,-0.30037352,0.74554676,-1.2468303,-0.9414173,-0.96966434,-2.6400287,-1.1223296,0.87630385,-0.9678277,-0.9243955,1.2501684,-1.4089605,-0.80661803,-0.8789456,0.509323,0.86616665,-1.0657727,-0.44514504,0.16784553,-0.82460415,-0.6202602,0.22096892,-0.5744518,-0.051139973,0.95496964,-0.73176867,0.21573815,-0.73088634,1.3564851,-0.56419003,-0.3550247,-1.0255396,-0.57220864,-0.90364045,0.36711964,-0.09569923,0.6653445,-0.5859866,1.2525154,1.7926838,0.031228097 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv index ea9dd586..69bb2f81 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,7,0.1209258,-0.7836567,-0.3029543,0.2785893,-1.0025321,0.037851073,0.048571438,0.33848727,-0.3773915,0.7844221,0.24281782,1.148343,-0.13137017,1.279799,0.97056156,1.0246092,0.80062383,-0.3923224,-1.8497859,1.1537666,-0.38878572,0.5604603,-0.58034015,-0.02841155,-0.48242685,0.8719435,-0.9715767,0.86573464,-0.0033297834,1.0148878,-0.93299323,-0.20949924,0.95323825,-1.5853611,-0.5756929,0.1248061,0.5185648,-0.11291537,1.8827963,-0.75403863,-1.9923172,0.3773292,0.76919514,-1.0892999,-0.5601977,-2.0243154,-0.80850774,0.68828875,0.8130654,-1.7597806,-1.9047588,-2.6262157,-1.1613489,1.2342267,1.8630753,0.9635703,-1.9320338,1.985816,-0.055163626,-0.7479937,-0.36713076,0.07263066,-0.35597026,0.9809213,0.099624224,-0.22642994,0.59534913,-1.3628237,-1.0601852,-1.4001173,0.26098126,1.0985968,-1.100743,0.23194666,-0.3807315,-1.1726305,-0.24944744,0.57557213,0.2954017,-1.1652223,0.08526788,-1.5450522,0.21617737,-0.8069991,0.8448825,-0.76840484,0.887578,-0.55467606,0.28331083,0.06474368,-0.70855623,-0.25272217,0.19233815,-1.6127638,1.925872,-1.4058347,0.109641865,2.0278912,-1.168832,-0.40527755,-1.4968951,-0.9538667,-0.92621404,1.25343,1.4133275,0.07042062,-0.17381254,-1.4111978,0.36360025,1.3456023,1.6989193,0.42588353,0.9820415,0.12705263,-0.5005522,0.054737598,0.76003623,0.84157014,-1.7930596,1.0273554,0.44291124,0.082684554,0.61543924,-1.5382718,-0.26630726,-0.56344163,0.47257867,0.62037295,1.3090107,-0.49892786,-0.3358481,-0.06688593,-0.927906,0.33645353,1.4333607,-0.5287842,-1.4776187,0.023554774,-1.1187627,1.6363778,0.19606885,-0.41932362,-2.4530096,0.52753305,1.0463974,1.1490204,0.4760272,-1.2210376,0.7896005,-0.003464025,0.8981069,-2.112449,0.16817431,-0.64763904,0.200444,1.2383525,0.66687185,-0.045646884,1.3314408,0.10086164,0.30638647,-2.6051254,0.5737982,1.2559868,-0.6507682,-1.2285036,0.194903,0.7337301,-0.36549726,1.3863009,0.23165633,-0.05751545,-0.071033075,0.66757375,-1.0468653,0.9908146,-1.5330824,-0.010820814,0.87953395,0.21151483,0.9051806,-1.0364068,-0.45686463,0.33169436,0.61652184,2.6955714,0.38302016,-1.3782058,-0.8940241,0.33452165,-0.84705555,-1.7417383,-0.18060239,1.1929514,-0.091192424,1.401481,-1.0531416,-1.0770215,0.70313454,-0.3485591 +9,0,7,-0.16720565,-0.95600957,0.28606528,0.6061069,-0.38458014,-0.20699821,-1.1377771,0.20950352,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458503,2.1207294,2.1566584,-0.24435447,-0.64201504,1.7221577,0.931517,-0.7352646,0.34909317,0.7247565,-0.5341214,-0.38585183,-0.7807762,0.55336505,0.0011219969,1.0769404,0.17883597,-1.319804,1.3214653,-1.3146976,-0.71112573,-0.4876438,1.6924084,-0.5158393,1.3672885,-0.55709517,-0.8911706,-0.76211774,1.6342849,-1.2171471,0.21610762,-2.0004432,-0.90466094,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178052,1.158086,0.932027,1.5196209,-1.0533147,1.268581,0.0013256798,-1.9838752,-0.02037545,-0.6469344,-1.380692,-1.059281,0.5494309,-1.3961787,-0.15649295,-0.5929407,0.9686789,-0.40543148,1.0557822,0.8631479,-2.2666907,0.67865163,-0.9861262,-0.4633933,-0.5806146,1.3590292,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.6836848,-0.48810723,1.0633672,-2.1536193,0.27614263,-0.9428519,0.8829793,-0.13327233,-0.69135016,0.057943318,0.29546723,-1.8476412,1.6050954,-0.77256197,-0.34552777,-0.3999227,-0.91350764,-1.4197913,-1.4342732,0.054446727,0.38957366,1.6343316,-0.018683603,0.20149976,-0.51843685,-2.7988346,-0.23812824,0.3947416,0.7759951,0.26147768,0.7695459,-0.8783734,0.24983662,0.22944754,-0.50273734,0.17921257,-2.96453,0.84934795,0.8776484,0.17855342,-0.3165259,-0.49537578,-1.4034133,-0.5197445,0.65165275,-1.1936586,0.4376411,-0.3197974,-1.1554341,-0.09437472,-1.4360906,-0.666431,0.19690531,0.22096209,-0.77558017,-0.6480959,-1.0999116,1.1237246,0.32265925,-0.71968275,-2.2545595,-1.4951689,0.5562803,1.1043609,1.1391095,0.12772344,0.39196163,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991098,-0.007137307,1.7125996,-0.8783491,-0.079967216,-2.1059916,-0.31304887,-0.31512117,-1.8248315,-1.5771934,0.5107034,0.7182178,-0.25824896,-0.45623496,-0.26445267,-0.9527643,-0.7283463,0.17178623,0.2119341,0.9493435,-1.3720604,0.15322246,0.70129305,-0.55172205,-0.15245205,0.06241885,-0.6320953,0.5529451,-0.4287735,1.0122429,-0.0774352,-0.28508043,-1.175873,0.21220754,-1.3312136,-1.4357239,0.21157016,0.5917681,-1.1742185,1.9612663,-1.2883048,0.06013697,1.073086,0.5143654 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv index 04665ca6..9a165d17 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,5,0.99609375,0.23242188,-0.5625,-0.53515625,1.359375,0.578125,-0.7109375,0.4609375,1.2265625,-0.52734375,0.734375,2.5625,0.026000977,0.6171875,-0.11767578,-0.09326172,-0.80859375,0.23925781,2.96875,1.59375,0.6640625,-1.09375,0.49414062,0.060791016,-0.17675781,1.203125,-0.1171875,-0.61328125,-1.765625,-1.46875,-0.15820312,0.8203125,-0.796875,1.34375,-0.6953125,-0.18359375,0.28125,0.734375,0.33203125,0.16992188,0.74609375,-0.34765625,0.31835938,-0.27734375,-0.08642578,0.15820312,0.080566406,-1.7890625,-0.34375,-0.67578125,0.7578125,-1.1875,0.41992188,0.13671875,-1.59375,0.30859375,0.3046875,-0.44921875,1.1484375,-1.109375,-0.12695312,-0.15039062,1.46875,-0.7734375,-0.6171875,-1.25,0.20898438,-1.78125,0.53515625,0.71875,-0.52734375,1.3515625,-0.73828125,-0.76953125,0.81640625,2.46875,-0.80078125,-0.06591797,-1.9296875,-0.19042969,-0.033935547,-0.19824219,0.45117188,-0.26367188,0.83203125,-0.73046875,-0.35351562,-1.9375,0.12988281,1.2421875,0.59765625,0.42578125,-1.46875,1.65625,-0.24609375,-0.08496094,0.008178711,1.2890625,-0.5703125,0.091796875,0.50390625,0.28125,0.6953125,-1.0546875,-1.0703125,-0.13476562,0.060546875,0.8515625,-0.09277344,-0.11279297,1.2734375,0.6875,0.28320312,-0.09716797,1.875,-0.8984375,-0.90234375,-0.94140625,0.27539062,-0.15917969,-0.421875,0.37695312,0.38671875,0.33398438,-1.40625,2.15625,-0.26367188,-1.1953125,1.7734375,1.921875,0.8671875,-2.078125,-1.140625,0.47851562,-1.9140625,0.171875,-1.421875,-0.24023438,0.35351562,-0.984375,1.3515625,-1.40625,-1.671875,2.078125,-0.47070312,-0.41992188,-0.55859375,1.5703125,0.21777344,0.47265625,0.83203125,-1.375,0.6484375,-0.8671875,-1.578125,0.76953125,1.1640625,0.18359375,-0.05810547,-1.171875,0.20117188,1.4375,0.484375,2.296875,1.046875,0.13085938,-0.9921875,-2.859375,1.09375,0.14160156,0.76171875,-0.63671875,-0.19140625,0.546875,-0.5546875,-0.49609375,-0.92578125,-0.52734375,-0.4375,0.76953125,-0.4765625,-0.51171875,-0.3515625,0.7734375,-1.4765625,1.2109375,-1.0,-1.921875,1.875,-1.0546875,-0.859375,-1.03125,-0.6875,-0.38867188,0.021728516,1.46875,-1.6328125,0.27734375,0.15917969,1.0859375 -0,0,6,1.1015625,0.88671875,1.1875,-0.51171875,0.19824219,-0.25,0.55078125,-1.09375,0.76953125,-0.87890625,0.91796875,-0.039794922,1.1015625,-0.43359375,0.59765625,-0.4453125,-0.24804688,-0.140625,2.328125,-0.010864258,-0.47070312,-1.296875,0.25,-0.12890625,-0.6484375,-0.734375,0.859375,-0.5859375,-0.9921875,1.265625,0.45898438,-0.6875,0.78515625,-1.3671875,0.70703125,-0.0072021484,0.11621094,-0.5703125,-0.625,1.109375,-1.421875,0.032470703,-0.5625,-0.08251953,-0.22167969,-1.296875,0.5703125,-1.109375,1.234375,-0.3671875,-0.78515625,0.58203125,-0.71875,1.34375,0.16210938,-0.043945312,0.75390625,-0.73046875,-1.421875,-0.71484375,1.1953125,0.7109375,-0.84375,1.140625,-0.21679688,0.051757812,0.35742188,-2.1875,-0.6640625,1.40625,-1.0546875,0.39257812,0.4453125,0.025634766,0.17382812,1.4609375,1.0390625,1.2109375,-0.828125,-0.265625,-1.3984375,-0.48242188,0.734375,-0.65625,0.11425781,-1.0546875,-0.6640625,-2.46875,1.546875,-1.03125,0.49804688,0.8203125,-0.73828125,0.5859375,-1.21875,-0.65625,-1.9765625,-0.046142578,-1.421875,0.43164062,-0.59765625,1.1015625,1.6015625,0.029663086,1.140625,2.15625,-0.515625,0.72265625,0.40625,-0.64453125,0.95703125,1.484375,0.76953125,0.33203125,0.83203125,0.46484375,-0.140625,-0.30273438,-0.40039062,1.0234375,0.29492188,-0.74609375,1.4140625,-0.640625,-1.5546875,1.3359375,-1.65625,-1.203125,-0.64453125,0.29882812,1.5625,-0.59375,-0.30273438,-0.984375,0.38671875,0.01586914,0.40625,-0.10205078,0.48828125,-1.7421875,2.421875,0.796875,-1.21875,2.296875,0.040771484,-1.84375,2.09375,-0.58203125,-0.61328125,0.98828125,-1.1640625,-0.28125,1.5390625,-1.3125,-0.8984375,0.71875,1.5703125,-1.3046875,0.58203125,0.43359375,-0.35546875,-0.28320312,2.484375,2.078125,0.060058594,-0.87890625,-1.2578125,0.69140625,0.5,-0.24121094,-0.24414062,-0.22265625,-1.7109375,-1.40625,-0.5859375,0.234375,1.3203125,-0.9921875,0.6015625,0.020507812,-1.8828125,-1.2734375,0.546875,-0.35742188,-1.890625,-0.375,0.26953125,-0.79296875,-0.57421875,-0.1875,-1.53125,1.3046875,0.24316406,-0.58984375,-0.90234375,1.3046875,1.2421875,-0.609375,1.5546875,1.1484375 -0,0,7,1.390625,1.453125,-0.890625,-1.4140625,-0.546875,-2.125,0.17285156,1.1171875,-0.43359375,-1.171875,0.104003906,-1.3359375,-2.234375,-0.20605469,-0.25390625,1.15625,-0.24511719,0.6171875,-0.15625,0.0019226074,0.6640625,-0.234375,-0.23242188,1.046875,-1.7109375,-0.34765625,-2.0,0.5859375,1.34375,0.51953125,0.5,1.875,-2.34375,-0.18847656,1.2578125,-0.25390625,1.1640625,2.046875,0.111328125,0.8125,-1.46875,-0.38476562,0.4453125,2.171875,0.5390625,1.6171875,0.43164062,0.63671875,-0.13183594,0.34375,0.36914062,-0.10253906,-0.8984375,-1.234375,-0.30078125,-0.296875,-0.34375,-0.01574707,-0.14160156,-0.546875,-0.24609375,0.88671875,-0.4375,-0.35742188,1.390625,0.0025939941,0.46484375,-0.1328125,-0.26757812,0.4140625,-0.515625,-0.24414062,0.13769531,-0.7734375,0.53125,0.07421875,2.234375,-0.078125,-0.265625,-0.19824219,0.88671875,0.7734375,1.6796875,0.48632812,0.67578125,0.59375,-0.77734375,0.34765625,-1.984375,0.25195312,0.484375,1.8046875,2.078125,-0.26367188,-0.05493164,-1.46875,-0.0390625,0.26953125,1.2265625,1.5234375,1.484375,-0.14941406,0.8515625,-0.28515625,-0.76171875,-0.91796875,-1.015625,-1.28125,-0.6796875,-0.032470703,-0.15234375,-0.25585938,2.6875,-0.6875,-0.076171875,-0.703125,-0.34179688,-1.5703125,0.7265625,0.48046875,1.90625,-2.046875,-0.85546875,-2.578125,-0.41601562,0.08105469,-0.80078125,1.375,0.04638672,-1.734375,0.97265625,-0.48242188,1.0,-0.45117188,-2.046875,0.2578125,0.56640625,-0.20996094,0.29101562,-2.34375,0.32421875,0.9609375,1.296875,1.109375,-0.6171875,-0.44921875,-1.921875,1.6796875,0.46484375,0.10546875,-0.26367188,-1.8828125,-0.58203125,1.5390625,-0.049316406,-0.071777344,-0.49023438,0.84375,-0.7265625,2.09375,-2.0625,0.94921875,-0.59375,0.0859375,-0.51953125,-0.25195312,-0.21875,-0.032714844,0.04711914,-0.5546875,-0.25976562,0.5078125,-1.1953125,0.9140625,1.265625,-0.15917969,1.1953125,-1.1796875,0.052246094,-0.42578125,1.125,0.5234375,-0.20507812,-1.375,-0.45703125,-0.12792969,-0.4140625,-0.37304688,-0.31445312,-0.953125,-0.890625,-0.2890625,-0.74609375,-0.7890625,1.4140625,0.53515625,1.1796875,-0.3984375,0.0047912598,0.24609375 +0,0,5,0.24902344,-0.003112793,-1.1171875,-0.2890625,1.21875,0.76953125,-0.56640625,1.03125,0.9609375,-0.14257812,0.66796875,2.828125,0.4453125,0.28320312,-0.91015625,-0.048583984,-0.67578125,0.5625,3.265625,1.6875,1.0078125,-0.90234375,0.63671875,0.2578125,0.028686523,0.7890625,-0.5703125,-0.44140625,-0.91796875,-0.875,0.095703125,0.05810547,0.16601562,1.1328125,-1.125,0.0028686523,0.2890625,0.22851562,0.19140625,0.015991211,-0.37695312,-0.42578125,-0.25195312,-1.078125,0.11767578,0.7578125,0.14355469,-1.484375,0.13183594,0.13085938,0.49804688,-1.546875,0.0703125,0.119140625,-1.3515625,0.052490234,-0.33789062,-0.44726562,1.2421875,-1.2578125,-0.06982422,-0.359375,2.21875,-0.40820312,-0.6953125,-1.15625,0.02746582,-1.4140625,-0.25976562,0.8125,0.044921875,1.40625,-0.53125,-0.78125,1.0859375,2.875,-0.91015625,-0.13671875,-2.328125,0.02319336,0.49609375,-0.06640625,0.546875,0.3125,0.044189453,-0.29492188,-1.15625,-1.34375,0.38671875,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.014099121,-0.024658203,-0.32617188,0.546875,-0.76953125,-0.25195312,-0.16210938,0.24316406,1.0078125,-1.2421875,-1.4765625,0.27148438,-0.63671875,0.6953125,-0.45507812,-0.14746094,1.2109375,0.49804688,0.13867188,-0.24902344,1.4296875,-1.53125,-1.0,-0.4140625,0.81640625,0.18847656,-0.21484375,0.39648438,0.4765625,-0.12402344,-1.4765625,2.421875,-0.49804688,-1.265625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40820312,-1.6796875,0.546875,-1.3671875,-0.609375,-0.083496094,-0.7890625,1.4140625,-1.640625,-0.87890625,2.03125,-0.66796875,-0.37695312,-0.14160156,1.0,-0.76953125,0.390625,1.09375,-0.9375,0.54296875,-0.87890625,-1.0390625,-0.0859375,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.375,0.73046875,2.28125,0.064941406,0.07910156,-1.28125,-2.359375,1.7734375,0.033691406,0.37890625,-0.78515625,-0.3359375,0.7421875,-0.95703125,-0.1953125,-0.90234375,-1.109375,-0.69140625,0.6484375,-0.76953125,-0.053222656,0.41210938,1.109375,-1.4453125,0.9453125,-0.9609375,-1.2890625,1.796875,-0.93359375,-1.4296875,-0.5390625,0.43359375,-0.578125,-0.20507812,1.375,-0.421875,0.31054688,0.33398438,1.21875 +0,0,6,0.29882812,0.5,0.65625,-0.48046875,0.25976562,-0.025512695,0.6796875,-0.6171875,0.58984375,-0.6640625,0.68359375,0.095703125,1.6015625,-0.73046875,0.007873535,-0.3125,-0.19628906,-0.005218506,2.625,0.16503906,-0.15234375,-1.3984375,0.6640625,0.057373047,-0.703125,-1.0,0.29296875,-0.3125,-0.37890625,1.609375,0.64453125,-1.0546875,1.5078125,-1.4140625,0.19238281,0.20996094,0.06982422,-1.046875,-0.84375,0.8203125,-2.140625,0.29101562,-0.82421875,-0.6484375,-0.28125,-0.51953125,0.31445312,-0.984375,1.3515625,0.671875,-0.78515625,0.34179688,-0.9296875,1.5390625,0.20117188,-0.30273438,0.140625,-0.421875,-1.1484375,-0.83203125,1.3359375,0.50390625,-0.051757812,1.25,-0.19140625,0.4453125,-0.05908203,-1.796875,-1.265625,1.5390625,-0.6640625,0.578125,0.640625,0.064453125,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.012451172,-0.80078125,-0.66796875,0.5625,-0.18066406,-0.27734375,-0.609375,-1.2421875,-1.953125,1.484375,-0.5,1.1953125,0.953125,-0.9609375,0.328125,-1.109375,-0.74609375,-1.8984375,-0.75,-1.296875,0.04248047,-1.375,1.125,1.796875,-0.017578125,0.44335938,2.609375,-1.03125,0.58984375,0.28515625,-0.625,0.69921875,1.1484375,0.640625,-0.078125,0.46484375,0.30859375,-0.21484375,0.24707031,-0.06347656,1.296875,0.5390625,-0.6171875,1.1875,-0.90625,-1.1171875,1.1171875,-1.8203125,-1.40625,-0.18847656,-0.10107422,1.1171875,-0.609375,-0.54296875,-1.3515625,0.38671875,0.40234375,0.40234375,-0.40820312,0.21582031,-1.8828125,2.484375,0.57421875,-0.671875,2.34375,-0.24902344,-1.5234375,2.21875,-1.0703125,-1.34375,0.82421875,-0.9609375,0.20019531,1.0390625,-1.4140625,-0.32617188,-0.030151367,1.2578125,-0.8203125,1.0859375,0.32421875,-0.390625,-0.53515625,2.390625,1.7734375,-0.94921875,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30664062,-0.50390625,-1.734375,-0.9140625,-0.88671875,0.265625,0.98046875,-1.4453125,0.5078125,0.2578125,-1.9296875,-1.015625,1.171875,0.26953125,-1.5390625,-0.41992188,0.43359375,-0.20898438,-0.65625,-0.05883789,-1.7109375,1.7890625,1.1875,-0.53125,-1.0859375,0.8984375,1.796875,-0.34570312,1.359375,1.0703125 +0,0,7,0.66796875,1.21875,-1.203125,-1.3125,-0.51171875,-1.8984375,0.31445312,1.1875,-0.53125,-0.6796875,-0.05419922,-1.1796875,-1.828125,-0.33203125,-0.9375,1.0703125,-0.27929688,0.91796875,0.1640625,0.022216797,0.90234375,-0.23339844,-0.03466797,1.328125,-1.7265625,-0.96484375,-2.390625,0.6640625,1.984375,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.73828125,-0.020141602,0.9453125,1.3671875,-0.044921875,0.6171875,-2.15625,-0.27734375,0.072265625,1.75,0.7109375,2.03125,0.43359375,0.5859375,0.18847656,1.25,0.28515625,-0.23242188,-1.3515625,-0.80078125,-0.1328125,-0.43164062,-0.9765625,0.012329102,-0.064941406,-0.609375,-0.1640625,0.53515625,0.34765625,-0.3828125,1.3359375,0.23632812,0.1640625,0.06542969,-1.0625,0.59375,0.047851562,-0.16796875,0.390625,-0.828125,0.6796875,0.09082031,2.09375,-0.044677734,-0.42578125,0.03955078,1.2734375,0.609375,1.578125,0.9140625,-0.08691406,0.9765625,-1.328125,0.515625,-1.7421875,0.35351562,0.9609375,2.203125,1.7890625,-0.40820312,-0.068359375,-1.421875,-0.33203125,0.012512207,0.96484375,1.03125,0.87890625,-0.18457031,1.0234375,-0.17285156,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0068969727,-0.37890625,-0.22851562,2.546875,-0.88671875,-0.47851562,-0.890625,-0.35546875,-1.03125,0.99609375,0.6875,2.0625,-1.8828125,-0.86328125,-2.96875,-0.21582031,0.19042969,-0.98046875,1.2421875,0.17089844,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.078125,-1.875,0.58984375,0.53515625,-0.546875,0.111816406,-2.1875,0.32226562,0.89453125,1.703125,1.21875,-0.62109375,-0.49414062,-1.625,1.078125,-0.37695312,0.12890625,-0.041015625,-1.359375,-0.7890625,1.4296875,0.19238281,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.96875,-0.33007812,0.079589844,-1.296875,-0.1484375,-0.26953125,0.29296875,0.46679688,-0.58203125,-0.32421875,0.47265625,-1.109375,0.9921875,0.953125,0.25,0.984375,-1.546875,0.041015625,-0.103515625,1.0,0.53125,0.62109375,-0.87890625,-0.49804688,-0.32421875,-0.24511719,0.0625,-0.54296875,-1.046875,-1.2421875,0.31640625,-0.036132812,-0.86328125,1.2890625,0.119140625,1.921875,-0.23046875,0.09375,0.42382812 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv index 855bd8e8..f802b0fc 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,5,1.703125,1.15625,-0.33398438,0.65234375,-1.03125,0.07519531,1.015625,1.7890625,0.23632812,-1.8828125,0.053466797,0.5625,0.203125,0.107421875,-0.71875,0.7890625,-0.37304688,0.578125,0.546875,-0.578125,0.45507812,-0.86328125,-0.21875,-0.5390625,0.24707031,-0.18554688,-1.09375,-0.265625,-2.171875,-0.69921875,0.24316406,-0.71484375,0.796875,0.765625,0.66796875,-1.671875,0.546875,-0.765625,-0.55078125,-0.3203125,-0.421875,-1.0234375,-0.89453125,0.75,-2.4375,0.4140625,0.8203125,0.671875,1.203125,0.39257812,-0.95703125,-0.34179688,-0.17578125,1.5078125,-1.0859375,0.66796875,1.7265625,0.42578125,0.071777344,-0.49609375,-0.083984375,0.91796875,-0.41992188,0.15039062,0.359375,-1.0390625,-0.62890625,-0.78125,0.15136719,-0.35351562,0.69140625,-2.09375,0.035888672,-0.76953125,1.8515625,2.703125,1.734375,1.03125,-0.6484375,-0.9375,-0.90234375,-0.984375,-0.74609375,-2.125,1.75,-1.015625,1.8046875,0.09765625,-0.96875,1.7109375,1.6953125,-1.4921875,0.53125,0.921875,-1.2109375,0.42773438,0.48632812,-0.22363281,0.23925781,1.09375,-0.63671875,1.1875,0.90234375,-0.3828125,2.484375,-0.78125,0.47460938,1.1171875,0.9765625,1.4453125,0.58984375,0.515625,0.27929688,0.04711914,1.9296875,-0.033203125,-1.5078125,-0.2578125,-0.5078125,-0.6484375,-0.38867188,-0.9765625,0.8515625,-0.20117188,-1.1328125,0.6484375,0.66015625,-0.44921875,-0.6328125,-0.61328125,0.09326172,-0.18847656,-0.25,-0.37109375,-1.9609375,-1.015625,0.1328125,0.48046875,-0.359375,-1.9296875,2.171875,-0.71484375,-0.640625,-1.7265625,-0.011352539,-0.47070312,-0.890625,-0.46484375,1.2890625,4.03125,-0.69140625,0.15820312,-1.8046875,0.69921875,-0.75390625,-0.61328125,-0.30078125,0.515625,-0.31640625,-0.55859375,0.15625,0.087402344,-0.40820312,0.24316406,-0.41992188,0.9140625,0.14355469,1.03125,1.6875,-1.6796875,-0.21191406,0.107910156,-0.39453125,-0.3671875,0.546875,0.78515625,1.0078125,1.0078125,-0.90234375,-0.54296875,-0.66015625,1.265625,-0.029785156,-0.515625,-0.28320312,-1.203125,1.109375,0.7109375,-0.7890625,-0.30273438,-0.53125,-1.609375,0.30273438,-0.38476562,-1.5,1.859375,-0.35546875,-0.04272461,-0.30273438,-0.111328125 -1,0,6,-0.032958984,1.6171875,-1.140625,-1.5625,0.23144531,-1.4921875,0.41796875,1.671875,1.5625,-0.859375,1.0078125,1.0390625,-1.4609375,0.54296875,-0.5078125,0.70703125,0.020874023,0.046875,-0.18945312,-0.17480469,-0.01928711,-0.37890625,1.4609375,0.07910156,-0.7578125,0.007659912,-1.953125,0.796875,0.59765625,-0.7109375,0.63671875,0.7265625,-1.9140625,0.05029297,1.96875,-1.171875,1.296875,1.734375,-0.33984375,1.6328125,-0.828125,0.625,0.29492188,0.15527344,-0.70703125,2.390625,0.11230469,1.375,1.1015625,0.24609375,-0.59375,1.046875,-0.099609375,-0.40429688,-1.3828125,0.0078125,0.08984375,0.21777344,-0.953125,1.2265625,0.23632812,1.1953125,-0.82421875,0.67578125,0.35351562,-1.421875,0.27539062,0.29101562,-0.85546875,0.7734375,-0.2890625,0.609375,1.6875,-0.57421875,0.20117188,2.078125,0.7578125,0.625,-1.15625,-0.21972656,0.026000977,-0.16992188,0.50390625,-0.78125,0.890625,1.1328125,-0.9921875,-0.734375,-1.3984375,-0.49414062,0.07324219,1.421875,1.234375,0.0016174316,0.43945312,-1.9296875,-0.24121094,0.052490234,0.6796875,-0.07373047,0.9375,0.76953125,0.84375,-0.1484375,-0.58203125,-0.46679688,-0.7890625,0.0003528595,0.008300781,0.49023438,-1.078125,0.29101562,1.625,-1.6796875,1.34375,0.02709961,-1.484375,-0.90625,0.52734375,-0.41015625,1.328125,-2.6875,0.53515625,-1.5546875,-0.072753906,0.921875,-0.33203125,-1.328125,0.73828125,-0.15527344,-1.015625,-1.3125,-0.35546875,1.3828125,-1.9140625,0.94140625,1.671875,0.19921875,1.0,-2.046875,1.3828125,0.37304688,0.38671875,1.0546875,-1.0546875,-1.4765625,-0.94140625,-0.734375,-0.68359375,-0.69921875,0.41015625,-1.734375,-0.25390625,0.71875,-1.421875,2.234375,0.1640625,-0.123046875,0.00065612793,0.515625,-0.30664062,0.8671875,0.3984375,0.78125,0.51171875,-0.49804688,-0.33398438,0.66796875,-0.75390625,-1.71875,-0.9375,-0.15136719,-1.671875,-0.64453125,0.9609375,-0.55859375,1.0625,0.75,-0.57421875,-0.734375,0.3359375,-1.3046875,-0.515625,-0.51953125,-0.032226562,0.21875,-1.140625,-1.21875,-1.0625,-1.1015625,0.31640625,0.23535156,-1.375,0.32421875,-0.66015625,3.34375,1.5625,0.119140625,-0.84765625,-0.39453125 -1,0,7,1.5703125,0.671875,-0.91015625,0.052734375,-1.5078125,0.123046875,0.4375,1.0703125,-1.25,-1.6796875,0.25976562,-0.296875,-0.80078125,0.23828125,-1.171875,-0.7734375,-1.1640625,0.115234375,-0.97265625,-0.46875,0.49023438,-0.42578125,-0.58984375,-0.4296875,-0.02746582,-1.4453125,-1.921875,-0.65234375,-0.81640625,0.055664062,-0.91796875,-1.125,-0.36914062,0.94921875,0.049072266,-0.515625,0.34960938,-1.7578125,0.59765625,0.50390625,1.2109375,0.0015792847,-0.39648438,1.6015625,0.67578125,-0.06225586,-0.82421875,0.3046875,-0.14453125,-0.09082031,0.26171875,-0.33203125,-1.0625,0.40039062,-1.2890625,-0.58203125,0.1640625,1.1875,-1.0078125,-1.3828125,-0.4453125,0.98046875,0.6953125,0.953125,1.6484375,-0.39648438,0.16210938,-0.953125,-1.34375,0.10498047,0.54296875,-0.5078125,1.328125,-0.66796875,0.78515625,0.9140625,2.75,1.3125,0.51171875,0.076660156,-0.98046875,-0.1640625,0.24902344,-1.859375,0.43359375,1.171875,0.47070312,-0.828125,0.099121094,1.1953125,0.114746094,1.1953125,0.58984375,0.5703125,-1.234375,-1.328125,-0.609375,-0.0012664795,1.359375,1.4609375,0.953125,1.3515625,-0.29296875,-1.625,1.2890625,-1.4921875,-0.43945312,1.1015625,0.4921875,-0.40429688,-0.3046875,1.2421875,1.6015625,0.515625,0.72265625,0.46484375,-0.30078125,-0.016967773,-0.13769531,1.609375,0.36914062,-2.265625,-0.81640625,-0.58984375,-0.33203125,-1.3046875,0.21777344,-0.875,-0.044921875,-0.18847656,0.90234375,-0.9296875,-0.018676758,0.58203125,-1.171875,2.265625,-0.47460938,-1.3359375,1.4609375,-2.28125,0.7421875,-0.47265625,-0.49609375,-0.625,1.078125,0.359375,0.28320312,0.77734375,2.71875,3.46875,0.13476562,-0.58203125,-1.4609375,0.8984375,-0.5078125,0.51953125,0.44140625,0.671875,-1.3671875,0.828125,0.8359375,1.53125,0.4140625,-0.40234375,0.080566406,-0.4375,-0.17382812,1.6484375,0.24414062,-1.5703125,-0.53515625,-1.15625,0.09277344,-0.6640625,0.8671875,1.15625,-0.30078125,1.1328125,1.1015625,-0.859375,0.096191406,0.20605469,0.6875,-1.078125,0.20996094,-0.064941406,0.31445312,1.40625,0.5546875,-1.4296875,0.16601562,-2.234375,0.13574219,-2.125,-0.78125,1.84375,-0.037841797,-1.140625,-1.0625,-0.1796875 +1,0,5,1.0546875,0.89453125,-0.546875,0.82421875,-0.65234375,-0.37695312,0.7734375,1.6484375,0.55859375,-1.6171875,-0.53515625,0.546875,0.7578125,-0.09765625,-1.4453125,0.83203125,-0.057617188,0.5859375,0.33789062,-0.37304688,0.83984375,-0.93359375,-0.035888672,-0.9140625,0.16015625,-0.9453125,-1.5078125,-0.14550781,-1.1484375,-0.8828125,1.3203125,-1.328125,1.71875,0.7578125,0.22753906,-1.578125,-0.12597656,-1.7265625,-0.7265625,-1.1328125,-1.2421875,-1.3046875,-1.28125,0.015991211,-1.875,0.92578125,0.48046875,1.015625,1.125,1.546875,-1.3125,-0.12792969,-0.73046875,1.7578125,-0.671875,0.5078125,1.15625,0.66796875,-0.15429688,-0.22753906,0.05419922,0.51171875,0.08251953,-0.12109375,0.7265625,-0.578125,-0.8984375,-0.40625,-0.703125,0.25195312,1.59375,-1.8125,0.57421875,-1.046875,2.296875,2.59375,1.53125,0.82421875,-0.34375,-1.125,-0.38671875,-1.25,-0.42578125,-1.2734375,0.9375,-1.1875,1.28125,0.59765625,-0.30664062,1.4921875,2.234375,-1.34375,0.16992188,0.734375,-0.4609375,0.5703125,0.18554688,-0.6796875,-0.21484375,0.58203125,-1.5703125,1.15625,1.03125,-0.029785156,2.0,-0.55859375,0.40234375,0.57421875,0.8828125,1.5859375,-0.31835938,0.014892578,0.296875,-0.609375,1.0,-0.29101562,-1.6875,0.17382812,-0.15136719,-0.28515625,-0.66796875,-0.41015625,0.22363281,-0.024902344,-0.578125,0.58984375,0.57421875,-0.58984375,-0.5,-0.515625,-0.37890625,0.2109375,-0.25585938,-1.28125,-1.75,-0.46679688,-0.609375,0.37890625,-0.4921875,-2.34375,2.171875,-0.66796875,-0.51953125,-1.9375,-0.30664062,-0.19238281,-0.7265625,-1.09375,0.609375,3.640625,-0.44726562,1.0546875,-1.796875,0.828125,0.19726562,-0.984375,0.14550781,1.203125,0.29492188,-0.8515625,0.2578125,0.36914062,-0.029174805,0.12451172,-0.8359375,0.53125,0.1484375,0.83203125,1.96875,-2.34375,-0.33398438,0.29882812,-0.4140625,-0.25195312,0.27734375,1.15625,1.0078125,1.203125,-0.42773438,0.3828125,-0.828125,1.4375,0.87109375,0.13476562,0.32226562,-1.203125,1.4375,0.91796875,-1.3203125,-0.19238281,-0.40429688,-0.828125,0.8125,0.29296875,-1.6796875,1.109375,0.052001953,-0.037109375,-0.35351562,-0.3828125 +1,0,6,-0.5546875,1.2734375,-1.359375,-1.5078125,0.31054688,-1.9609375,0.34179688,1.6328125,1.59375,-0.58203125,0.21679688,1.03125,-0.953125,0.515625,-1.2109375,0.53515625,0.26953125,0.22167969,-0.37304688,-0.07128906,0.33984375,-0.390625,1.328125,-0.036621094,-0.73828125,-0.9296875,-2.421875,1.1015625,1.578125,-0.47851562,1.375,0.20800781,-1.125,0.1484375,1.5703125,-1.09375,0.6640625,0.87109375,-0.77734375,1.0546875,-1.5546875,0.43164062,-0.21777344,-0.265625,-0.3203125,2.609375,-0.060058594,1.8125,1.15625,1.6015625,-1.0234375,1.078125,-0.63671875,-0.09033203,-0.828125,-0.088378906,-0.51953125,0.484375,-1.109375,1.3984375,0.39453125,0.9453125,-0.15917969,0.609375,0.546875,-1.1953125,-0.12451172,0.71875,-1.6484375,1.2578125,0.53125,0.78125,2.0625,-0.5390625,0.5625,2.078125,0.5078125,0.703125,-0.8359375,-0.40429688,0.48242188,-0.36328125,0.765625,-0.13183594,-0.12011719,0.9296875,-1.421875,-0.26757812,-1.15625,-0.68359375,0.58203125,1.5390625,0.99609375,-0.25976562,0.78515625,-1.875,-0.5390625,-0.25976562,0.41015625,-0.5625,0.14648438,0.4921875,0.6953125,0.15722656,-0.765625,0.06347656,-1.046875,-0.40039062,0.044677734,0.5703125,-1.6484375,-0.067871094,1.6640625,-2.3125,0.64453125,-0.14941406,-1.578125,-0.31054688,0.921875,0.083496094,1.1796875,-2.359375,0.028686523,-1.3671875,0.37890625,0.97265625,-0.25976562,-1.359375,1.03125,-0.24902344,-1.3203125,-0.91015625,-0.5390625,0.5859375,-1.90625,1.5390625,1.1953125,-0.19335938,0.9140625,-2.03125,1.3046875,0.12695312,0.6484375,0.83203125,-1.234375,-1.3359375,-0.81640625,-1.3046875,-1.4609375,-0.6953125,0.60546875,-0.61328125,-0.48242188,0.87109375,-0.73828125,1.8203125,0.5625,0.39453125,0.4609375,0.29492188,-0.26757812,1.1171875,0.7265625,0.36523438,0.02722168,-0.7265625,-0.38671875,0.76171875,-0.49414062,-2.0,-1.03125,-0.060791016,-1.5859375,-0.6953125,0.8515625,-0.12402344,1.0703125,0.84375,-0.31445312,0.020874023,0.08251953,-1.1171875,0.30664062,0.16894531,0.3359375,0.06591797,-0.83203125,-0.84765625,-1.7734375,-0.99609375,0.29101562,0.8203125,-0.7265625,0.6796875,-0.81640625,2.625,2.03125,0.100097656,-0.8984375,-0.48632812 +1,0,7,1.2578125,0.5703125,-0.98828125,0.10546875,-1.359375,-0.1171875,0.61328125,1.0078125,-1.1640625,-1.4609375,-0.21484375,-0.38085938,-0.4296875,0.453125,-1.75,-0.8203125,-1.0625,0.2890625,-0.953125,-0.53125,0.59375,-0.22070312,-0.578125,-0.46289062,-0.10107422,-2.1875,-2.390625,-0.43554688,-0.014282227,0.19238281,-0.3828125,-1.4453125,0.28710938,0.87890625,-0.32617188,-0.546875,-0.09814453,-2.375,0.44921875,-0.083496094,0.41210938,-0.21386719,-0.86328125,1.2421875,0.94140625,0.34960938,-1.0234375,0.6015625,-0.019897461,1.171875,0.16308594,-0.20117188,-1.65625,0.70703125,-0.90625,-0.671875,-0.640625,1.265625,-1.0546875,-1.0234375,-0.28125,0.765625,1.2734375,0.7734375,1.921875,-0.3515625,-0.28125,-0.5078125,-1.9375,0.49804688,1.2109375,-0.36523438,1.65625,-0.69140625,0.890625,0.82421875,2.515625,1.2265625,0.60546875,0.10253906,-0.4140625,-0.38476562,0.375,-1.3359375,-0.28125,1.0,0.32421875,-0.60546875,0.23828125,0.984375,0.5390625,1.34375,0.22363281,0.578125,-0.9609375,-1.2890625,-0.7421875,-0.13378906,1.1484375,1.0859375,0.390625,1.25,-0.30078125,-1.2421875,1.2734375,-1.078125,-0.7109375,0.69140625,0.41210938,-0.33398438,-0.9609375,1.0078125,1.578125,0.26953125,0.118652344,0.47070312,-0.30859375,0.515625,0.12451172,1.921875,0.30664062,-2.09375,-1.1484375,-0.6015625,-0.055664062,-1.25,0.17285156,-1.046875,0.0017166138,-0.16894531,0.421875,-0.5703125,-0.19140625,-0.022949219,-1.046875,2.453125,-0.91015625,-1.703125,1.4140625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.875,0.31054688,0.375,0.20019531,2.1875,3.578125,0.41992188,0.265625,-1.6171875,1.0234375,-0.008728027,0.29492188,0.66015625,1.140625,-1.359375,0.62890625,0.9765625,1.734375,0.8046875,-0.62109375,-0.5078125,-0.546875,-0.34765625,1.6796875,0.51953125,-1.7578125,-0.61328125,-0.93359375,0.23242188,-0.55078125,0.703125,1.390625,-0.3125,1.1171875,1.328125,-0.14257812,0.067871094,0.123535156,1.359375,-0.640625,0.48828125,-0.2890625,0.64453125,1.4140625,-0.0038909912,-1.5234375,0.21582031,-1.6015625,0.54296875,-1.7265625,-0.80859375,1.2109375,0.30664062,-1.0859375,-1.2421875,-0.35742188 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv index a4049a56..df728e04 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,5,1.7734375,0.96875,-0.4609375,-0.78125,1.203125,-0.75,-0.22753906,1.953125,-0.38671875,-1.609375,0.796875,0.68359375,-1.3359375,-0.5234375,-0.109375,2.40625,-0.0047912598,-1.6796875,-0.3046875,0.029785156,-1.03125,-0.9765625,-0.04248047,1.375,0.21289062,1.390625,-2.5,-0.6953125,-1.6796875,-0.48828125,-0.22753906,1.8203125,-0.025268555,1.0703125,0.97265625,-1.3515625,1.40625,0.859375,0.80859375,1.3515625,1.1796875,0.34179688,1.1640625,-0.32226562,-0.65234375,0.056396484,-0.5546875,0.24707031,-0.20703125,0.06982422,0.10498047,-1.9375,-0.5859375,-0.42773438,-0.95703125,0.44921875,1.625,-0.022583008,0.6796875,-0.51953125,-0.21679688,1.4296875,-0.9375,0.83203125,-0.13964844,-0.95703125,0.58984375,1.0546875,0.77734375,-0.73828125,-1.0390625,-0.16503906,0.5078125,-0.53125,1.875,1.7578125,1.2890625,0.7109375,-0.36914062,-0.28125,0.55859375,0.44726562,0.16210938,-1.296875,1.0859375,-1.53125,1.1015625,1.015625,0.24414062,1.4765625,0.40234375,-0.69140625,-0.84375,1.046875,-0.42773438,-0.13574219,-1.6484375,-0.06640625,-0.83984375,-0.076171875,0.012207031,-0.3671875,0.6640625,0.22363281,0.083984375,-0.60546875,-1.546875,-0.053466797,-0.30664062,0.022338867,-0.203125,-1.546875,1.8515625,-1.1640625,1.4609375,0.75,-2.125,-0.013977051,-0.484375,-1.578125,0.57421875,-1.0234375,-0.52734375,-0.875,-0.4140625,2.46875,-0.95703125,0.13671875,0.1875,-1.3984375,-0.6953125,-1.59375,0.29882812,0.17285156,-1.3203125,-0.26367188,1.3984375,0.890625,0.27539062,-1.234375,1.5625,-1.734375,-0.90234375,0.7734375,-0.65234375,-0.072265625,-0.64453125,1.125,0.7734375,0.53125,-0.84375,-2.234375,0.98046875,-0.59765625,-0.42773438,0.26171875,0.30859375,-0.89453125,0.62109375,1.1328125,-0.76171875,1.515625,1.03125,1.5546875,-0.092285156,1.4765625,0.53125,0.90625,0.2890625,0.5,-0.69140625,-0.19824219,-0.041503906,0.890625,-0.38671875,0.39453125,0.44726562,-0.46289062,0.083984375,-1.09375,0.83984375,-0.265625,-1.015625,-1.9375,-0.45703125,0.36132812,-1.890625,-0.81640625,0.31054688,-2.046875,0.39648438,1.0234375,-1.4765625,-0.38671875,0.071777344,2.359375,-0.5703125,0.671875,-0.88671875,0.515625 -2,0,6,0.92578125,0.53125,-0.47851562,-0.29296875,0.23242188,-0.30859375,0.5390625,0.94921875,-0.23144531,-0.5078125,-0.17089844,-1.015625,0.13867188,0.93359375,-1.0546875,0.89453125,-0.515625,-2.171875,0.359375,-1.046875,0.8359375,-0.67578125,-0.52734375,-0.27539062,-1.203125,-1.0859375,-1.5546875,-0.37890625,-3.03125,0.26757812,-1.09375,-0.5390625,0.010498047,0.46875,1.2734375,1.3984375,1.078125,-0.65625,-1.84375,2.125,-0.41210938,0.68359375,0.0035552979,0.734375,-0.08642578,0.31835938,0.74609375,-0.76953125,0.74609375,0.013366699,-1.71875,-1.03125,-0.86328125,0.875,-2.921875,0.82421875,0.81640625,-1.09375,-0.03466797,-2.0625,1.15625,-0.29882812,-0.4609375,0.13964844,0.014038086,-0.9296875,-0.61328125,-0.53515625,0.38867188,1.3671875,0.5390625,-1.96875,-1.1796875,-0.87109375,0.020263672,2.078125,1.484375,1.3125,-0.84375,-0.8125,1.0234375,0.41601562,0.09814453,-1.484375,0.21191406,-0.13671875,0.5546875,0.625,-0.98828125,0.6796875,1.1484375,-0.19433594,0.515625,0.3828125,-1.859375,-0.52734375,-0.122558594,0.20019531,1.5234375,-0.19921875,-1.3984375,0.104003906,1.6796875,0.98046875,0.15136719,-0.9921875,2.109375,-0.31054688,0.4296875,0.71484375,0.8046875,0.81640625,1.125,-0.66796875,1.15625,0.020874023,0.2578125,-1.09375,-0.640625,-1.5,0.77734375,-1.0625,0.8671875,-1.25,-0.71484375,1.375,-0.95703125,-2.3125,-0.73046875,0.40820312,1.2109375,-0.31640625,0.47265625,-0.20996094,-1.5546875,-0.5546875,-0.24121094,-0.18457031,0.49414062,-1.6328125,3.125,-0.421875,-0.22460938,0.10107422,-0.106933594,1.796875,-1.671875,0.86328125,-0.91796875,2.140625,0.053710938,-0.34765625,1.078125,-0.9765625,-0.73828125,-0.14257812,0.10839844,0.62890625,0.96484375,1.09375,-0.36523438,1.4453125,1.4296875,1.1484375,-0.48046875,0.83203125,-1.015625,-0.734375,1.78125,-0.048583984,0.99609375,-0.09814453,-0.5703125,-0.609375,1.1796875,0.6015625,-1.0,-0.375,1.0625,-0.93359375,0.00065612793,-0.8828125,0.109375,-0.28125,-0.13085938,0.23925781,1.078125,0.2578125,0.2578125,-1.6875,-0.20703125,-0.40429688,0.8515625,-0.35351562,1.4921875,0.71484375,0.53125,-0.33398438,1.515625,-0.057128906 -2,0,7,1.2734375,0.94140625,-0.05908203,0.140625,-0.060302734,-0.80078125,0.24023438,1.0390625,0.39648438,-0.9609375,0.75390625,1.3359375,-0.6328125,1.140625,-1.40625,1.1015625,0.48632812,-1.375,-0.375,-0.15234375,1.2265625,-0.71875,-0.68359375,0.59765625,0.03466797,-0.06298828,-0.3125,-0.041748047,-1.671875,-0.47460938,-1.1953125,0.118652344,1.53125,-0.3359375,2.125,1.171875,1.3984375,0.625,-2.0,2.359375,-0.875,0.69140625,-0.39257812,0.5703125,0.26367188,0.15429688,-0.17089844,-0.4296875,0.047607422,0.76171875,-1.0703125,0.15625,-0.30078125,-0.0859375,-1.28125,0.9609375,1.015625,0.41015625,0.03540039,-1.0859375,1.71875,-0.24121094,1.3203125,-0.1796875,-2.28125,-0.06689453,-0.6015625,0.16796875,0.28320312,0.93359375,-0.7421875,-1.2578125,-0.6953125,0.3203125,-0.21484375,2.046875,1.7265625,0.40429688,-1.3125,-1.609375,1.234375,-0.43359375,0.65625,-2.203125,-0.89453125,-0.73828125,0.44921875,1.2890625,-1.4609375,0.29492188,1.359375,-0.18261719,-0.6640625,0.515625,-2.03125,0.8203125,0.16308594,1.5078125,0.7109375,1.4140625,-1.765625,-0.05859375,1.4140625,0.8515625,-0.86328125,-0.014404297,1.1875,-1.09375,-1.4609375,0.13476562,0.953125,-0.053955078,2.1875,-0.875,0.27734375,-0.9140625,1.0234375,-0.7890625,-0.31835938,-2.078125,1.8984375,0.23339844,-0.35742188,-1.046875,0.484375,0.56640625,-1.0703125,-2.078125,-0.4765625,-0.11376953,0.49609375,-1.5390625,-0.24707031,0.044433594,-1.90625,1.4921875,0.3046875,-0.48046875,-0.25976562,-0.875,1.765625,-1.6953125,-1.3359375,-0.15332031,-0.25976562,1.25,-1.0703125,1.34375,-1.8125,-0.1875,0.60546875,-0.01953125,0.84375,-1.5,-0.9296875,-0.19042969,0.61328125,-0.44140625,0.6953125,0.8359375,-0.25976562,0.32226562,-0.39257812,1.375,-0.921875,1.5703125,-1.296875,-0.67578125,1.0390625,0.5390625,-1.1484375,-0.6484375,-0.62109375,-0.2890625,0.96484375,0.421875,0.94140625,-0.0024261475,0.265625,-0.96484375,-0.41601562,-0.45117188,-0.18652344,-1.3671875,0.54296875,-1.2890625,0.14648438,0.22949219,0.8515625,-1.4609375,1.1484375,0.6953125,-0.37304688,-0.87890625,-0.41796875,0.12402344,1.265625,1.7421875,1.4921875,-0.45117188 +2,0,5,1.2109375,-0.096191406,-1.3359375,-0.6015625,0.9609375,-1.484375,-0.8203125,3.140625,-0.5234375,-1.6640625,0.0234375,1.5859375,-0.53515625,-0.75,-0.5703125,1.75,-0.27148438,-1.40625,0.059570312,0.48632812,-1.375,-0.6796875,-0.44921875,1.2421875,-0.095703125,0.33007812,-2.484375,-0.15527344,-0.890625,-0.06933594,-0.020141602,0.7890625,0.6953125,0.7734375,-0.07373047,-1.0546875,1.25,-0.171875,0.515625,0.6953125,-0.06201172,-0.008300781,0.11279297,-0.78125,-0.115234375,0.65625,-0.46484375,0.96484375,-0.43945312,2.21875,-0.609375,-2.234375,-1.3359375,-0.048339844,-0.15039062,-0.33398438,0.921875,0.29882812,0.40234375,-1.046875,-0.3671875,1.4765625,-0.12988281,0.53515625,-0.26953125,-0.030273438,-0.00074005127,1.4765625,0.16796875,-0.11328125,-0.4140625,-0.2890625,0.9140625,-0.67578125,1.6328125,2.140625,0.62890625,0.26953125,-0.24414062,-0.75390625,1.671875,0.7578125,0.53515625,-0.6328125,-0.44140625,-1.1484375,1.328125,1.84375,0.50390625,1.65625,1.734375,-0.7734375,-1.046875,1.375,-0.28320312,0.033691406,-1.7265625,-0.73828125,-1.0859375,-0.21875,-1.0703125,-0.24804688,1.4296875,0.94140625,-0.46875,0.25390625,-1.640625,-0.62109375,-0.28515625,0.016479492,-1.140625,-1.9453125,1.421875,-2.265625,0.84765625,0.27539062,-2.0625,1.2734375,-0.30273438,-1.21875,1.2578125,-0.47265625,-0.92578125,-0.36523438,0.4140625,2.71875,-0.43945312,-0.41210938,0.4453125,-1.8671875,-1.484375,-1.640625,0.3671875,-1.1015625,-0.8984375,-0.012451172,1.3203125,0.34960938,0.43359375,-1.3515625,1.453125,-1.8203125,-0.6328125,-0.15917969,0.16210938,0.47070312,-0.32226562,0.83984375,-0.73828125,0.828125,-0.6171875,-0.019165039,0.80859375,-0.453125,0.046142578,-0.76171875,0.31835938,0.014770508,1.6640625,1.015625,-1.1484375,1.859375,1.2890625,0.8203125,-0.57421875,0.77734375,0.17285156,1.3203125,1.2578125,0.7734375,-1.2890625,-0.16796875,0.06640625,1.09375,-1.28125,0.43359375,0.35351562,-0.6953125,-0.056884766,-1.171875,0.46679688,0.38476562,0.3046875,-1.0859375,0.22265625,-0.24023438,-1.40625,0.0134887695,-0.84375,-1.34375,0.21386719,1.4375,-0.11621094,-0.42773438,0.123046875,1.1953125,0.49804688,0.6015625,-1.0703125,0.45703125 +2,0,6,0.31445312,-0.33398438,-0.72265625,-0.44140625,0.40625,-0.546875,-0.005645752,1.578125,-0.13769531,-0.8359375,-0.5390625,-0.37695312,1.2265625,0.5,-1.6484375,0.4453125,-0.51953125,-1.984375,0.42773438,-0.6953125,0.5625,-0.328125,-0.27734375,-0.06689453,-1.328125,-1.8125,-1.625,-0.088378906,-2.0625,0.48828125,-0.68359375,-1.1171875,0.55859375,0.076660156,0.546875,1.671875,0.625,-1.453125,-1.8671875,1.1875,-1.4765625,0.34960938,-0.54296875,-0.04272461,0.23144531,1.0625,0.5546875,-0.55078125,0.2421875,1.734375,-2.109375,-1.3203125,-1.4140625,0.7265625,-1.96875,0.6171875,0.12792969,-0.671875,-0.19238281,-2.171875,1.1875,-0.16015625,0.42773438,-0.07324219,0.17675781,0.05517578,-1.0859375,0.18652344,-0.67578125,2.0,0.90625,-1.609375,-0.45898438,-0.5,0.045410156,1.921875,1.109375,1.1015625,-0.61328125,-0.8828125,1.5546875,0.32226562,0.27539062,-0.5078125,-0.671875,-0.028320312,0.28125,0.9609375,-0.6640625,0.6796875,2.109375,-0.17285156,0.1484375,0.41992188,-1.3984375,-0.19824219,-0.3046875,-0.53125,1.421875,-0.33007812,-2.25,0.140625,2.21875,1.15625,-0.46875,-0.22851562,1.4765625,-0.9296875,0.40429688,0.7109375,0.27539062,0.35742188,0.859375,-1.4375,0.30859375,-0.47070312,0.18945312,-0.26953125,-0.66015625,-0.65625,1.3359375,-0.55078125,0.4140625,-1.1875,-0.24414062,1.2734375,-0.44921875,-2.3125,-0.006286621,-0.04321289,0.6796875,-0.061035156,0.19140625,-1.3046875,-1.328125,-0.20019531,-0.35351562,-0.46875,-0.01928711,-1.8046875,3.09375,-0.765625,0.390625,-0.052246094,-0.067871094,1.8359375,-1.21875,-0.016967773,-1.9296875,1.921875,0.23535156,1.140625,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.43359375,1.625,1.4453125,0.66796875,-0.72265625,1.34375,1.3671875,0.49609375,-1.3359375,0.53515625,-1.1171875,-0.33789062,2.375,-0.25390625,0.22949219,-0.1484375,-0.66796875,-0.31445312,0.12011719,0.453125,-0.94140625,-0.91796875,0.9296875,-0.5859375,-0.17871094,-0.107421875,1.2734375,0.49023438,0.66015625,-0.30078125,1.3203125,0.8203125,-0.5390625,-1.046875,-0.23730469,0.53515625,2.15625,0.02746582,0.828125,-0.15429688,1.4140625,-0.2109375,1.2265625,0.26953125 +2,0,7,0.7734375,0.110839844,-0.36914062,-0.22363281,0.2109375,-0.76171875,-0.26953125,1.4140625,0.5546875,-1.09375,0.5859375,1.421875,0.44335938,0.55078125,-1.59375,0.796875,0.18847656,-1.203125,-0.11621094,0.1171875,0.9921875,-0.53515625,-0.3984375,0.57421875,-0.29492188,-0.7265625,-0.51171875,0.061035156,-1.0078125,-0.061035156,-0.68359375,-0.51171875,1.796875,-0.453125,1.28125,1.59375,0.828125,-0.15820312,-2.21875,1.7265625,-1.8359375,0.37695312,-0.59765625,-0.049316406,0.62890625,0.81640625,-0.3359375,-0.1328125,-0.4453125,1.90625,-1.3671875,-0.10986328,-0.6875,-0.08984375,-0.796875,0.71484375,0.6171875,0.60546875,-0.079589844,-1.25,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53125,-0.52734375,1.265625,-0.10205078,-1.171875,-0.099609375,0.609375,-0.15625,1.9375,1.390625,0.38867188,-0.99609375,-1.46875,1.390625,-0.20019531,0.59765625,-1.2890625,-1.375,-0.33789062,0.19042969,1.40625,-0.8125,0.359375,1.9609375,-0.03515625,-0.8203125,0.62109375,-1.5390625,0.94140625,-0.17578125,0.88671875,0.73828125,0.9921875,-2.46875,0.011230469,2.0,1.03125,-1.390625,0.35351562,0.90625,-1.6640625,-1.0703125,0.18066406,0.578125,-0.36328125,1.546875,-1.5078125,-0.36132812,-1.21875,0.953125,-0.04736328,-0.3046875,-1.296875,2.125,0.44140625,-0.6015625,-1.2578125,0.60546875,0.41992188,-0.73046875,-2.171875,0.26367188,-0.36523438,0.1796875,-1.171875,-0.54296875,-0.79296875,-1.8515625,1.6640625,0.30664062,-0.625,-0.5390625,-1.3515625,1.8125,-1.6953125,-0.6875,-0.3828125,-0.17773438,1.3125,-0.5859375,0.5234375,-2.6875,-0.1171875,0.2578125,1.1328125,0.69921875,-1.03125,-0.23046875,-0.77734375,0.8984375,0.4765625,1.1171875,0.55078125,-0.41015625,0.36523438,-0.26171875,0.91796875,-1.5625,1.2734375,-1.1015625,-0.578125,1.3984375,0.091308594,-1.6796875,-0.7890625,-0.640625,-0.34960938,0.16503906,0.36523438,0.80078125,-0.46875,0.30859375,-0.8359375,-0.49804688,-0.031982422,0.640625,-0.49023438,1.234375,-1.5625,0.46875,0.61328125,0.24804688,-0.86328125,1.09375,1.546875,0.859375,-0.74609375,-0.7109375,-0.66796875,2.21875,1.6484375,1.2109375,-0.24121094 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv index f64c514e..f0aaa556 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,5,1.5078125,0.8671875,-0.5859375,0.064941406,0.94140625,-0.8125,0.20703125,2.078125,-0.27734375,-0.875,0.91015625,1.6640625,-0.78515625,-0.12988281,-0.36914062,1.921875,0.6875,-1.421875,0.34179688,0.89453125,-0.060791016,-1.1328125,-0.36328125,0.92578125,0.8359375,1.8515625,-2.640625,-0.26953125,-1.1328125,-1.2890625,-0.10253906,1.203125,0.67578125,1.40625,1.828125,-0.8359375,0.7734375,0.37304688,-0.0008163452,0.87109375,0.890625,0.95703125,0.5546875,-0.6015625,-0.625,0.5078125,-1.5234375,-0.29882812,0.119628906,-0.55078125,0.087402344,-1.5625,-0.5703125,-1.40625,-0.5625,0.49609375,1.4296875,-0.033691406,0.051757812,-0.6015625,0.546875,0.640625,0.390625,0.5546875,-1.1875,-1.25,0.85546875,-0.20507812,0.15917969,-0.9453125,-0.6171875,-0.38867188,0.22949219,-0.55859375,2.25,2.390625,1.5859375,0.4375,-0.74609375,-0.39648438,0.53515625,0.515625,0.24902344,-2.125,1.21875,-0.66015625,0.21777344,0.65234375,0.099121094,2.078125,0.86328125,-0.875,-0.31835938,0.8359375,-1.1015625,-0.07080078,-1.3203125,0.71875,-0.1640625,1.2109375,0.51953125,0.103027344,-0.38867188,0.62109375,-0.5859375,-0.78125,-0.91015625,0.3046875,-1.3671875,-0.013793945,0.011352539,-1.0703125,2.109375,-0.97265625,1.375,0.60546875,-1.328125,-0.40429688,-0.44726562,-0.71875,0.6875,-0.40429688,-0.55859375,-0.7265625,-0.78125,2.546875,-1.0,-0.041748047,0.91015625,-1.3125,-0.38671875,-2.96875,0.04345703,0.296875,-1.5390625,-0.099121094,1.28125,0.19238281,0.12890625,-0.82421875,1.140625,-0.94921875,-1.1953125,0.546875,-0.55078125,0.34179688,-1.0,1.1875,0.75,-0.08935547,0.05078125,-2.125,0.18359375,-1.375,-0.60546875,0.84375,0.75,-0.609375,0.44335938,0.98046875,-0.20800781,2.03125,0.1640625,1.2265625,-0.0625,1.15625,0.4375,0.36132812,0.27539062,1.015625,-0.59375,-0.37695312,-1.078125,0.79296875,-0.59375,0.53515625,0.3984375,-0.5234375,0.32617188,-0.27148438,-0.13183594,-0.55859375,-0.57421875,-2.328125,-0.32617188,0.27539062,-1.3671875,-1.234375,-0.0390625,-1.8203125,0.65625,0.24609375,-1.65625,-0.90625,0.064941406,2.84375,-1.171875,0.5859375,-1.140625,-0.11230469 -3,0,6,0.0043640137,1.171875,-0.86328125,-0.65234375,-0.55078125,0.42773438,0.005432129,1.484375,0.734375,-0.37695312,2.28125,0.69921875,0.921875,0.040283203,0.37304688,1.125,0.16015625,-1.109375,0.5078125,-0.5234375,0.7421875,-0.23046875,0.7109375,0.90625,0.19238281,0.6796875,0.3515625,-0.44921875,-1.84375,-2.296875,-0.6953125,2.15625,0.02709961,2.4375,1.78125,-0.52734375,0.6484375,0.9375,0.91796875,0.765625,0.828125,-0.62109375,0.6015625,-1.2734375,-0.017578125,0.45507812,0.16210938,-0.0625,0.44726562,-1.7734375,-1.5859375,1.2109375,-0.6640625,0.328125,-1.4453125,-0.68359375,0.18847656,-1.015625,0.65234375,0.5859375,-0.09472656,1.109375,0.028198242,1.546875,1.421875,-0.71875,-0.640625,0.15039062,-0.17578125,0.359375,-1.0078125,0.14257812,0.20214844,-0.11816406,-0.33203125,2.109375,-0.42382812,0.31054688,-0.21289062,0.024169922,-1.6015625,-0.099121094,0.91015625,-1.3046875,1.8515625,0.030395508,-0.578125,-0.89453125,0.67578125,-0.49609375,0.099121094,-0.22460938,-0.5234375,0.515625,-0.26757812,-1.0546875,0.53125,-0.3359375,-1.2890625,-0.66015625,-0.47851562,0.6328125,2.671875,-1.015625,-0.54296875,-1.6875,-0.5078125,0.8203125,-0.32226562,0.8671875,0.23144531,0.26171875,1.375,-0.33984375,2.390625,-0.044189453,-0.67578125,-1.3203125,-0.51171875,-1.015625,-0.49023438,-0.98828125,0.81640625,-0.79296875,-1.7109375,1.421875,-1.28125,-1.484375,0.98828125,0.83984375,-0.22363281,-0.70703125,0.5234375,-0.10986328,-1.9609375,1.21875,0.76171875,0.5625,-0.47070312,-1.609375,2.234375,-1.046875,-0.96875,0.63671875,-0.5,-0.39257812,-0.32617188,-1.2734375,-0.265625,0.016723633,0.34765625,0.028930664,1.609375,-2.4375,-0.703125,0.4296875,0.21582031,-1.3984375,1.0,-0.41015625,0.70703125,-0.44921875,0.65234375,-0.37109375,1.015625,2.53125,-1.0390625,0.1796875,1.25,-0.22167969,-0.8984375,-0.8046875,-2.03125,-1.875,-0.026367188,0.609375,0.09277344,-0.08203125,-1.4921875,-1.5078125,0.41992188,-0.8671875,-0.19726562,-0.54296875,-0.21875,-0.66015625,-0.6484375,-0.42773438,-0.3828125,0.671875,1.671875,-0.94921875,-0.36328125,-0.68359375,-0.96484375,1.6015625,0.95703125,1.859375,0.7109375,1.515625 -3,0,7,1.09375,1.171875,-0.28320312,0.38476562,-1.5703125,-1.2421875,0.7890625,0.83203125,-0.3515625,-0.40039062,1.984375,0.8515625,0.39257812,0.55078125,0.7421875,0.9296875,-0.90234375,-0.44335938,0.81640625,-0.69140625,1.0625,-0.34570312,2.046875,1.96875,0.110839844,0.91796875,-0.15820312,-1.2421875,-0.82421875,-0.45703125,-0.06542969,0.84375,0.056152344,1.8125,0.57421875,-0.8125,-0.04638672,1.203125,0.80859375,-1.234375,-0.087402344,-1.8046875,1.28125,0.040039062,0.38085938,-0.3671875,0.33398438,-0.58203125,-2.578125,-1.2734375,0.36914062,0.55078125,-1.265625,0.90234375,1.1640625,0.016357422,-0.1796875,-0.18164062,-0.50390625,0.5078125,0.47070312,0.45898438,-2.203125,-1.40625,1.15625,0.59765625,-0.578125,-0.30859375,1.5546875,-0.064941406,-1.890625,0.8828125,-1.0234375,0.32226562,1.1484375,0.49414062,1.5390625,1.0234375,-0.6015625,0.38671875,-1.4453125,0.47265625,1.671875,-0.34570312,1.7578125,-0.9375,-0.16894531,1.1796875,-0.32226562,0.86328125,-0.012878418,-1.046875,-0.90625,0.43945312,-0.59765625,-0.73828125,1.5,0.33203125,-0.26171875,0.037841797,0.0011062622,-1.421875,1.9140625,-0.33789062,-1.4609375,-2.0625,1.140625,-1.328125,0.83984375,0.546875,0.55078125,-1.03125,1.3359375,-0.43554688,0.78515625,-0.32617188,-0.22753906,-0.34375,-0.10498047,-1.6796875,0.7890625,0.43359375,-0.03491211,-2.375,-0.18359375,1.859375,-1.0078125,0.18066406,1.2578125,-1.1328125,1.03125,1.2109375,1.546875,-1.8125,-2.453125,-0.5078125,-1.15625,0.5546875,0.03881836,-0.9921875,0.47070312,0.21875,-0.31054688,0.96875,-0.62109375,0.3125,-1.5859375,0.13574219,0.071777344,0.42773438,-0.06933594,-1.0234375,-0.60546875,-0.07373047,-0.9765625,-1.671875,-0.8671875,-0.73046875,-0.27929688,1.6484375,-0.3515625,-1.5625,-0.26757812,-0.296875,1.9296875,0.110839844,-2.140625,-1.21875,1.5390625,-0.6875,0.16699219,0.87890625,-1.171875,-0.609375,0.27539062,-0.17675781,1.6171875,0.07519531,-0.34570312,-0.17578125,0.8671875,1.3515625,-0.33007812,-0.66015625,-0.1328125,-0.5625,-0.4453125,-0.32226562,1.1953125,1.1796875,0.56640625,0.012329102,-1.3359375,-0.734375,0.34960938,-0.86328125,-0.10205078,0.33007812,1.8828125,0.09667969 -4,0,5,2.625,0.2265625,-0.76171875,1.46875,0.4453125,-0.65234375,-0.095214844,1.1875,-0.06591797,-1.1875,1.6171875,0.85546875,-0.3828125,-0.008972168,-0.828125,0.9140625,0.1875,-0.16210938,0.22851562,0.36328125,0.65234375,-0.25976562,-0.32617188,0.171875,0.54296875,1.0234375,-0.88671875,0.69140625,-2.078125,-0.24414062,-0.671875,1.0078125,-0.05029297,1.625,0.89453125,0.43554688,0.8671875,-0.39257812,0.48632812,1.1484375,1.3203125,0.40234375,0.25195312,0.2421875,0.010009766,-0.99609375,0.74609375,-0.66015625,-0.73046875,-1.9296875,-0.072753906,-0.8671875,-1.8125,-1.09375,-1.9453125,0.046142578,1.5859375,-0.20703125,0.07763672,-0.42773438,0.053710938,0.119140625,-0.79296875,0.9921875,-0.14453125,-2.046875,0.51171875,-0.21777344,0.47460938,-0.3671875,0.008972168,-2.671875,-0.48632812,-0.45898438,1.3125,1.703125,0.984375,0.0074157715,-0.26367188,-1.6015625,-0.9453125,0.484375,-0.33398438,-2.078125,1.9296875,0.43164062,0.27539062,-0.9140625,0.5859375,0.1875,0.84765625,0.5390625,0.5625,0.71875,-0.05444336,-1.59375,-0.78515625,-0.12011719,-0.57421875,0.22167969,-0.25390625,1.1484375,0.1953125,-0.32421875,0.20605469,-2.15625,-0.71484375,1.046875,-0.35351562,1.0234375,0.16894531,1.0,0.025390625,0.74609375,1.78125,1.421875,-0.42773438,-1.90625,-0.30664062,-0.49414062,-0.70703125,-0.90234375,-0.4296875,0.18261719,-1.5703125,1.5390625,-0.796875,-0.703125,0.22753906,-0.36523438,1.3984375,-0.9609375,0.018798828,0.44921875,-1.6328125,0.9765625,0.66015625,-0.2578125,0.58203125,-2.078125,1.625,-1.125,-1.2578125,1.1171875,0.8515625,0.73046875,-2.15625,1.4140625,1.484375,2.03125,-0.34179688,-0.35742188,0.27148438,-0.13964844,0.59375,1.6015625,-1.546875,-0.08251953,0.8046875,-0.43945312,-0.50390625,1.7421875,0.68359375,1.2265625,0.061279297,0.828125,-0.01977539,0.26953125,0.12597656,-0.94921875,-0.3671875,-1.1484375,-0.1015625,-1.75,-0.68359375,-0.3203125,0.23144531,-0.765625,0.37304688,-0.3046875,0.12597656,-1.4765625,-0.59375,-2.328125,0.22070312,1.046875,0.265625,-0.42773438,0.125,-2.15625,0.60546875,-0.6875,0.03149414,-1.0546875,0.5390625,3.1875,-0.7578125,-0.42382812,0.70703125,0.8359375 -4,0,6,0.9609375,1.21875,-0.484375,-1.4609375,1.328125,0.35351562,-1.1953125,0.75,1.1484375,-0.24414062,0.3515625,0.609375,-1.5,0.36523438,0.41601562,-0.72265625,-1.2109375,0.037841797,1.59375,1.2578125,0.42773438,-0.6875,0.34570312,0.28320312,-1.046875,0.036376953,-1.359375,-1.2578125,-2.578125,-0.6640625,-0.7265625,0.46289062,-1.1015625,1.015625,-0.31640625,-0.20214844,0.50390625,0.67578125,0.546875,1.0625,-0.068359375,0.58203125,0.9453125,0.875,0.35742188,-0.13476562,0.6328125,-1.640625,0.48828125,-0.31835938,1.0234375,-0.80078125,0.69921875,0.38085938,-2.140625,-0.21386719,0.40820312,-1.21875,0.32617188,-1.546875,0.19628906,0.78515625,1.359375,-1.0390625,0.625,-1.2265625,0.35546875,-1.7109375,0.15820312,0.93359375,-0.07519531,1.578125,-0.41210938,-1.25,0.11035156,0.671875,-0.048828125,0.5078125,-0.6171875,0.049316406,0.38867188,-1.03125,0.40820312,-0.625,0.20019531,-0.6953125,0.1328125,-1.96875,1.1796875,0.23535156,0.55859375,1.59375,-1.03125,1.75,-0.55078125,-0.6484375,-0.484375,0.65625,-0.88671875,0.014282227,0.05859375,1.3046875,1.421875,-1.453125,-0.53125,0.31835938,-0.3046875,0.75,0.515625,-0.30078125,0.51953125,0.66796875,-0.015625,0.76953125,1.3515625,-0.45507812,-0.39648438,-1.09375,0.18359375,-0.38671875,0.07324219,-0.10058594,-0.5625,0.16503906,-1.09375,1.921875,0.025268555,-1.9453125,1.109375,2.9375,1.2578125,-1.3515625,-1.5,1.3125,-2.0625,-0.78515625,-0.93359375,-0.81640625,0.47265625,-1.7265625,1.9921875,-1.9296875,-1.859375,2.171875,0.84375,-0.6640625,0.4453125,0.75,-0.034423828,1.4140625,0.28320312,-0.8203125,1.0625,-0.7890625,-0.38867188,1.4296875,1.796875,0.039794922,0.32226562,-1.7578125,0.69140625,1.6015625,0.8046875,2.265625,-0.095703125,0.62890625,-1.2890625,-1.828125,1.4609375,-0.65234375,0.9765625,-1.28125,-0.021972656,-0.3203125,-0.27148438,-0.8125,-0.6171875,-0.54296875,0.18359375,-0.030273438,-0.38867188,-0.90625,0.23632812,0.45703125,-0.78125,1.40625,-0.46679688,-0.87890625,1.2109375,-0.99609375,-1.046875,-0.6171875,-0.43164062,-0.53125,-0.75390625,2.140625,-0.45117188,0.6796875,-0.5234375,0.39453125 -4,0,7,1.734375,-0.51171875,-0.18066406,0.24902344,-0.5390625,-0.765625,-0.69140625,0.37695312,-0.92578125,-0.625,0.48632812,1.03125,0.5625,0.640625,-0.1328125,1.3984375,-0.018188477,-0.5078125,1.734375,-0.49804688,1.9140625,0.14355469,-1.1328125,0.060791016,2.578125,0.1640625,-0.5078125,-1.46875,-0.96484375,0.052734375,-0.79296875,1.1796875,0.25585938,0.03112793,-1.2890625,-0.546875,0.6796875,-0.9453125,-2.015625,-0.62890625,0.006866455,-0.82421875,-0.4453125,0.067871094,-0.17578125,0.088378906,0.11816406,-0.80078125,-1.296875,-1.1640625,-0.38671875,-0.84765625,-1.1640625,-0.60546875,-0.43945312,2.53125,1.2421875,-0.033447266,0.0020599365,-0.671875,1.25,-0.35351562,-0.23632812,1.6328125,0.39453125,-0.40234375,-0.19921875,-0.609375,2.9375,-0.4453125,-0.359375,-0.26757812,-0.99609375,0.359375,1.3671875,2.28125,-0.0013809204,0.28125,-1.5078125,-0.37304688,0.56640625,-0.42773438,-0.48828125,-0.50390625,1.6328125,-0.859375,0.82421875,1.328125,0.10888672,1.578125,0.49023438,-0.58984375,0.90234375,0.9296875,-1.921875,1.625,-0.94140625,0.5859375,0.4921875,0.15234375,0.22558594,0.020385742,-0.91796875,0.19726562,-0.34765625,-0.7265625,0.13085938,-2.34375,-0.86328125,0.056396484,0.703125,-0.6171875,0.6328125,-0.40039062,-0.27539062,0.11328125,-0.796875,0.578125,-0.6875,0.06689453,0.5234375,1.0546875,0.19238281,-1.6640625,-1.3828125,0.93359375,-1.34375,-0.45703125,-0.21289062,0.28515625,1.5078125,-0.44140625,0.005706787,-0.74609375,-0.953125,-0.16503906,2.21875,-0.4453125,-1.5703125,-2.234375,2.015625,0.78125,-1.625,0.068359375,-0.59765625,-0.234375,0.053710938,-0.35742188,0.9296875,1.8359375,-0.34765625,-0.80859375,1.34375,-2.359375,-1.2109375,-0.97265625,1.5,0.8671875,0.921875,-0.4609375,-0.5234375,-0.609375,0.0859375,-0.33984375,-0.0051574707,-0.092285156,0.265625,-1.2578125,1.2421875,-0.12695312,0.6875,-0.15332031,-1.234375,0.20019531,0.100097656,1.9453125,0.24414062,0.67578125,1.078125,-0.16699219,-1.0859375,-0.06689453,-0.7421875,-0.037841797,-0.55859375,-0.44726562,0.72265625,-0.78515625,1.8515625,-1.1875,-0.06298828,-1.3515625,0.29492188,-0.87109375,-0.34960938,0.85546875,-0.29296875,2.96875,2.421875,0.43945312 +3,0,5,1.09375,-0.07519531,-1.4921875,0.24121094,0.8515625,-1.703125,-0.57421875,2.953125,-0.059326172,-0.76171875,0.22753906,2.6875,0.265625,-0.36328125,-0.703125,1.734375,0.27929688,-1.328125,0.359375,0.921875,-0.24414062,-0.734375,-0.65234375,0.55078125,0.94140625,1.328125,-2.703125,0.38085938,-0.60546875,-1.0234375,0.34570312,-0.042236328,1.6953125,1.3515625,0.55078125,-0.62890625,0.99609375,-0.015625,-0.40429688,0.10839844,0.044433594,0.30859375,-0.18164062,-1.65625,-0.13867188,0.875,-1.5703125,0.44921875,0.072265625,0.7890625,-0.8515625,-1.421875,-1.1796875,-1.046875,-0.18945312,-0.20800781,0.74609375,0.29882812,-0.24804688,-1.0703125,0.21289062,0.71484375,1.3125,0.80859375,-1.265625,-0.32421875,0.3125,0.28320312,-0.578125,-0.40234375,0.4140625,-0.42578125,0.50390625,-0.46679688,2.265625,3.09375,1.0390625,0.024169922,-0.80859375,-0.84375,1.4453125,0.6875,0.82421875,-1.6171875,0.03930664,-0.3984375,0.47460938,1.3125,0.578125,2.203125,1.8671875,-0.765625,-1.0078125,1.359375,-0.6171875,-0.091308594,-1.390625,0.0067749023,-0.1484375,0.6796875,-0.51171875,0.16601562,0.056640625,1.265625,-1.0390625,-0.18261719,-1.109375,0.03173828,-1.3828125,-0.35742188,-1.1328125,-1.53125,1.765625,-1.8828125,0.61328125,-0.036865234,-1.4609375,0.6953125,-0.0051879883,-0.39257812,1.2734375,0.11425781,-0.8828125,-0.10644531,-0.045166016,2.421875,-0.7578125,-0.62890625,1.40625,-1.5390625,-1.1640625,-2.8125,0.10205078,-0.89453125,-1.203125,0.33984375,1.1640625,-0.27929688,0.18359375,-1.1875,0.92578125,-1.2734375,-1.3984375,-0.55078125,-0.20117188,0.53515625,-0.8203125,0.765625,-0.34960938,0.02746582,0.41796875,-0.54296875,0.21386719,-1.2109375,0.28125,-0.12988281,0.96875,0.044189453,1.328125,0.58984375,-0.18164062,2.46875,0.42578125,0.94921875,-0.064453125,0.3984375,0.18652344,0.48046875,1.2734375,1.2578125,-1.03125,-0.640625,-0.88671875,0.9140625,-1.2890625,0.29492188,0.14257812,-0.30078125,0.23535156,-0.3046875,-0.546875,-0.32421875,0.49023438,-1.203125,0.546875,-0.5234375,-1.1015625,-0.90625,-0.51953125,-0.9921875,0.5703125,0.96875,-0.4296875,-0.80859375,-0.16503906,1.9296875,-0.18652344,0.93359375,-1.4609375,-0.16992188 +3,0,6,-0.31054688,0.45898438,-1.703125,-1.1796875,-0.609375,0.16015625,-0.45703125,2.109375,0.5625,-0.81640625,1.7421875,1.1171875,1.453125,-0.3671875,0.080078125,0.9609375,-0.07080078,-0.93359375,0.76171875,-0.53125,0.625,-0.010375977,0.8671875,0.96484375,-0.055419922,0.13574219,0.22558594,-0.30664062,-1.2890625,-1.7265625,-0.3125,1.6796875,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.24023438,0.52734375,0.75,-0.203125,-0.45117188,0.16503906,-1.5078125,0.27539062,0.84375,0.23828125,0.5546875,0.39648438,-0.30273438,-2.21875,0.796875,-0.9140625,0.35546875,-0.8671875,-1.015625,-0.24023438,-0.6171875,0.28320312,-0.047607422,-0.11816406,0.87109375,0.6875,1.5390625,1.4140625,0.08886719,-1.28125,0.54296875,-0.765625,0.54296875,-0.40429688,0.123535156,0.48632812,0.095703125,-0.625,2.421875,-0.609375,0.017333984,-0.14453125,-0.03112793,-0.88671875,0.092285156,1.0,-0.8359375,0.88671875,0.7578125,-0.61328125,-0.41210938,1.0859375,-0.34570312,1.3984375,-0.24902344,-0.875,0.8359375,-0.115722656,-1.125,0.671875,-0.8359375,-1.390625,-1.21875,-1.4140625,0.68359375,3.140625,-0.81640625,-1.2421875,-1.171875,-0.67578125,0.30664062,-0.15039062,0.9140625,-0.55078125,-0.47070312,0.87890625,-1.25,1.765625,-0.30273438,-0.5546875,-0.359375,0.011352539,-0.64453125,-0.0015106201,-0.828125,0.45898438,-0.43945312,-1.03125,1.28125,-0.88671875,-1.65625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.98046875,-1.734375,1.4921875,0.69140625,0.33398438,-0.43164062,-1.9765625,2.5,-1.375,-1.0078125,-0.064941406,-0.1796875,-0.26367188,0.328125,-1.59375,-1.1953125,0.24023438,-0.07080078,1.59375,1.421875,-2.109375,0.10449219,-0.18457031,0.4140625,-1.03125,1.6875,-0.578125,0.421875,-0.27539062,0.89453125,-0.71484375,-0.017578125,2.25,-0.9453125,-0.11328125,1.5859375,-0.2578125,-1.625,-1.1015625,-2.078125,-1.5546875,-0.734375,0.484375,-0.032470703,0.0038757324,-1.328125,-1.265625,-0.13183594,-0.48632812,0.7421875,-0.029785156,0.73828125,-1.0546875,-0.45703125,0.15429688,-1.1015625,1.078125,1.734375,-0.21484375,0.6875,-0.46484375,-0.94921875,0.75390625,1.90625,1.6015625,0.65625,1.4296875 +3,0,7,0.578125,0.421875,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.9140625,1.6796875,1.3984375,0.7578125,0.19824219,0.4296875,0.94921875,-0.83203125,-0.28125,1.0625,-0.7265625,0.80078125,-0.29101562,2.296875,1.9921875,-0.28320312,0.5546875,-0.17480469,-1.1640625,-0.578125,-0.32421875,0.35742188,0.64453125,1.0703125,2.125,0.00074768066,-0.4765625,-0.20507812,0.5,0.60546875,-1.2734375,-1.0703125,-1.84375,1.0,-0.48242188,0.66796875,0.20019531,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34960938,0.14648438,-1.65625,0.95703125,1.6328125,-0.11035156,-0.53515625,-0.021728516,-0.53125,0.028198242,0.24609375,0.26367188,-1.40625,-1.1796875,1.1328125,1.5234375,-1.0703125,-0.23925781,1.0234375,0.09277344,-1.4375,0.88671875,-0.890625,0.49609375,0.9375,0.66015625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.77734375,0.546875,1.7578125,0.03173828,1.0390625,0.059570312,-0.39257812,1.2578125,0.06689453,0.82421875,1.2265625,-0.90625,-1.3125,0.52734375,-0.42578125,-0.7578125,1.5625,-0.31640625,-0.51171875,-0.51171875,-0.9140625,-1.0078125,2.421875,-0.26367188,-1.953125,-1.6875,0.71484375,-1.515625,0.859375,0.640625,-0.26171875,-1.609375,0.92578125,-1.234375,0.2734375,-0.53515625,0.028686523,0.42578125,0.3515625,-1.359375,1.3671875,0.47265625,-0.31445312,-2.140625,0.45117188,2.03125,-0.73828125,-0.119628906,1.796875,-1.5859375,0.44921875,1.25,1.203125,-2.609375,-2.28125,-0.28320312,-1.0078125,0.5625,-0.028320312,-1.4765625,0.89453125,-0.099121094,-0.2890625,0.29296875,-0.40234375,0.54296875,-0.9921875,-0.30078125,-0.80078125,0.64453125,-0.43945312,0.29882812,-0.6953125,-0.15332031,-0.29101562,-2.109375,-0.7734375,-0.55859375,0.53515625,1.46875,-0.80859375,-1.375,0.076171875,-0.8515625,0.8984375,-0.04248047,-2.0,-1.5234375,2.046875,-0.60546875,-0.31054688,0.54296875,-1.5234375,-0.47265625,-0.22363281,-0.092285156,1.546875,0.21875,-0.3515625,0.11328125,0.47460938,1.765625,0.4765625,-0.25585938,0.63671875,-0.7109375,-0.37695312,0.31445312,0.52734375,1.5390625,0.828125,0.60546875,-0.21679688,-0.5078125,0.4140625,-1.546875,0.765625,0.1328125,1.8046875,0.20996094 +4,0,5,2.046875,0.008178711,-1.2265625,1.3046875,1.1015625,-1.0078125,-0.7109375,1.5546875,-0.13476562,-0.9296875,1.03125,1.0625,1.0546875,0.23925781,-1.75,0.84765625,-0.36914062,-0.08300781,0.37304688,0.011230469,0.87890625,0.49609375,0.6328125,0.36523438,0.40820312,0.088378906,-1.7734375,0.33203125,-1.6640625,0.45898438,0.1640625,0.79296875,1.34375,1.7578125,0.71484375,0.41015625,0.24414062,-1.2421875,0.73046875,0.9140625,-0.80078125,0.20507812,-1.0546875,-0.73046875,0.40429688,-0.106933594,1.296875,-0.20605469,-0.8203125,-0.78125,-0.44726562,-1.1953125,-2.203125,-1.546875,-1.6796875,-0.82421875,0.28125,0.29492188,0.3828125,-0.6953125,0.10058594,0.23242188,0.04711914,0.7578125,-0.21777344,-1.2578125,-0.051513672,0.20996094,0.13378906,0.921875,1.1953125,-2.828125,0.040527344,-0.037597656,0.61328125,2.03125,0.3984375,-0.65234375,0.15039062,-1.9375,-0.48046875,0.29882812,0.11279297,-1.6328125,1.125,0.64453125,0.25195312,-0.36914062,1.2734375,-0.06982422,1.953125,0.9296875,0.002456665,0.4765625,0.49804688,-1.546875,-0.18945312,-0.6328125,-0.67578125,-0.06738281,-0.90625,1.3203125,0.9453125,-0.29296875,-0.62890625,-1.859375,-1.25,-0.18066406,-0.118652344,1.390625,-0.37695312,0.51171875,0.38867188,-0.3203125,1.0,1.296875,-0.77734375,-0.8671875,0.078125,-0.265625,-0.12597656,-0.72265625,-1.0859375,0.83984375,-1.3671875,1.515625,-0.90625,-1.09375,0.14941406,0.29492188,0.6171875,-0.79296875,-0.40234375,-0.6171875,-0.84375,0.703125,0.13574219,-1.171875,0.484375,-2.28125,1.9765625,-1.984375,-1.09375,0.44726562,0.76171875,0.3125,-1.328125,0.6640625,1.421875,2.46875,-0.030517578,0.84765625,0.4609375,0.29101562,1.5234375,1.0859375,-0.953125,0.26953125,0.78515625,-0.97265625,-0.18847656,1.5,1.015625,1.15625,-0.67578125,0.88671875,-0.26367188,-0.15527344,1.1171875,-1.1328125,-1.2109375,-1.3828125,0.096191406,-1.828125,-1.6328125,-0.82421875,0.3515625,-1.8515625,0.5390625,-0.09326172,-0.48828125,-0.8828125,0.52734375,-2.0,1.5,0.39648438,0.58984375,-0.50390625,-0.053466797,-2.09375,1.125,-0.056396484,1.15625,-0.46875,-0.16992188,2.65625,0.609375,0.014770508,0.29296875,1.0234375 +4,0,6,0.38671875,1.015625,-0.84375,-1.046875,1.4921875,0.36132812,-1.2421875,1.28125,0.82421875,-0.13574219,0.16894531,0.70703125,-0.6484375,0.14550781,-0.390625,-0.62890625,-1.2109375,0.21386719,1.8671875,1.171875,0.6640625,-0.39453125,0.94921875,0.6796875,-0.84375,-0.78515625,-2.0625,-1.0625,-2.046875,-0.029174805,-0.38867188,0.07470703,0.22265625,1.046875,-0.5703125,0.096191406,0.38085938,-0.23925781,0.54296875,0.875,-1.671875,0.46875,-0.040527344,0.08105469,0.26953125,0.38085938,0.78125,-0.875,0.70703125,0.65234375,0.98046875,-1.2734375,0.103027344,0.28515625,-2.0,-0.6484375,-0.34179688,-1.0078125,0.6171875,-1.390625,0.28710938,0.76171875,2.0625,-0.71875,0.47851562,-1.0625,-0.04663086,-1.265625,-0.171875,1.484375,0.50390625,1.390625,0.04638672,-1.0390625,-0.040771484,0.83984375,-0.37890625,0.3046875,-0.71484375,0.063964844,0.51953125,-0.9140625,0.46484375,-0.32617188,-0.375,-0.26367188,-0.50390625,-1.34375,1.5,0.3828125,1.3125,1.7421875,-0.98046875,1.4375,-0.53515625,-0.73828125,-0.4140625,-0.024902344,-0.97265625,-0.095214844,-0.62890625,1.2265625,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.110839844,0.31445312,0.020263672,0.3515625,0.40039062,0.106933594,0.390625,0.99609375,-0.53125,-0.5703125,-0.31835938,0.6796875,0.07714844,0.25195312,-0.2265625,-1.0,0.22167969,-1.1640625,2.09375,-0.18554688,-2.1875,1.359375,2.828125,0.61328125,-1.625,-2.03125,0.48242188,-1.6875,-0.6953125,-1.1640625,-1.4765625,0.40820312,-1.6875,2.140625,-2.296875,-0.984375,1.8671875,0.796875,-0.7578125,0.78125,0.2265625,-0.37304688,1.75,0.37304688,-0.22460938,1.171875,-0.38085938,0.05444336,0.83984375,1.6796875,0.35351562,0.7578125,-2.046875,0.8828125,1.203125,0.97265625,2.21875,-1.0390625,1.0390625,-1.6171875,-1.4140625,2.03125,-0.81640625,0.390625,-1.5078125,0.11621094,-0.18847656,-0.71875,-1.0390625,-0.49023438,-1.375,0.23046875,0.0035247803,-0.8203125,-0.609375,0.83203125,0.60546875,-0.35546875,1.21875,-0.064941406,-0.56640625,1.0703125,-0.9765625,-1.109375,0.036865234,0.45898438,-0.5859375,-1.03125,1.9453125,0.7890625,0.671875,-0.421875,0.66015625 +4,0,7,1.2578125,-0.80078125,-0.62890625,0.19628906,-0.296875,-0.51953125,-0.765625,0.88671875,-0.6796875,-0.62890625,0.32421875,1.1953125,1.0546875,0.52734375,-0.6640625,1.5078125,-0.31054688,-0.44921875,2.265625,-0.46289062,1.6953125,0.14453125,-0.20214844,0.046142578,2.1875,-0.54296875,-0.984375,-1.3125,-0.546875,0.49023438,-0.30273438,0.5390625,1.0390625,-0.013305664,-1.984375,-0.13085938,0.53515625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.09716797,0.91796875,0.1953125,-0.68359375,-1.2578125,-0.10107422,-0.44335938,-1.0078125,-1.5859375,-0.59375,-0.5,1.953125,0.48632812,0.014770508,0.23535156,-0.71875,1.3203125,-0.578125,0.52734375,1.53125,0.5859375,0.1875,-0.48828125,-0.45898438,2.265625,-0.023071289,0.18359375,0.029052734,-0.37890625,0.28320312,1.0859375,2.375,-0.25195312,0.08203125,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111816406,0.99609375,-0.15625,0.3203125,1.5859375,0.5625,1.6015625,1.5859375,-0.40429688,0.2890625,0.97265625,-1.7265625,1.5546875,-0.90625,-0.030151367,0.38085938,-0.22167969,-0.83984375,0.19140625,-0.21777344,0.28710938,-0.91796875,-0.29882812,-0.4921875,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.6484375,-0.6796875,-0.609375,-0.10107422,-0.79296875,0.97265625,-0.24609375,0.21289062,0.78515625,1.1640625,-0.25195312,-1.7109375,-1.2109375,0.8984375,-1.421875,-0.9453125,0.024658203,0.23242188,0.96875,-0.29882812,-0.29296875,-1.296875,-0.61328125,-0.20605469,1.8671875,-0.62890625,-1.6875,-2.625,2.171875,0.64453125,-1.078125,-0.12792969,-0.84375,-0.20703125,0.6796875,-0.875,0.29882812,1.9140625,-0.36523438,-0.11035156,1.3203125,-2.09375,-0.30664062,-1.5859375,1.625,1.2734375,1.3984375,-0.83984375,-0.48046875,-0.8046875,0.36914062,-0.28515625,-1.1328125,0.18652344,0.09814453,-1.0859375,1.828125,-0.390625,0.30859375,-0.28125,-1.2890625,0.45703125,-0.51171875,1.6015625,0.21191406,-0.12695312,0.9765625,0.091308594,-1.328125,0.22558594,-0.020385742,0.5,0.019897461,-0.5546875,1.0,-0.44140625,1.5546875,-0.90234375,-0.16210938,-0.5390625,1.2421875,-0.67578125,-0.81640625,0.48046875,0.7109375,2.796875,2.171875,0.546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv index c8ece4d5..88760c11 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,5,1.890625,1.671875,-0.37304688,-0.3125,-0.74609375,-1.3984375,-0.87890625,0.22949219,0.5625,-1.1875,-0.19140625,-0.40039062,-2.421875,1.6015625,-0.6328125,1.2578125,0.546875,0.16992188,-1.4296875,0.5859375,1.7890625,0.5,-0.42773438,0.004333496,1.15625,-0.22167969,-1.609375,0.095703125,-2.140625,0.640625,-0.8828125,0.19726562,0.578125,0.75390625,0.29882812,0.24023438,1.046875,1.0078125,-0.62890625,0.55078125,-0.20605469,0.104003906,-0.33398438,0.8359375,-0.82421875,-0.03515625,1.0546875,-0.37304688,-0.46289062,-0.47460938,-0.33203125,-1.015625,-0.6328125,-0.390625,-0.5546875,2.375,1.6953125,-0.14257812,-0.15429688,-1.71875,0.56640625,0.7578125,0.38671875,0.37695312,0.98046875,0.4140625,-0.859375,1.0,1.640625,-0.6796875,-1.46875,-1.453125,-2.015625,-0.26757812,-0.19726562,0.47070312,1.0625,1.09375,0.107910156,-0.34765625,1.0234375,-1.3515625,0.9765625,-0.921875,0.45117188,-0.95703125,0.96875,0.42578125,-0.67578125,-0.66015625,2.84375,-0.4140625,1.5546875,1.1953125,-1.328125,0.72265625,-1.0234375,0.58203125,0.10253906,1.046875,-0.38671875,0.13378906,1.0703125,-1.6328125,0.546875,-0.578125,0.41601562,-0.44140625,-0.76171875,0.22265625,0.734375,-0.068847656,1.1953125,-0.05908203,0.53515625,-0.47460938,-0.17773438,0.07910156,0.18847656,-1.1015625,0.890625,-0.9921875,-0.4453125,-1.4140625,-1.3984375,2.484375,-0.40820312,-1.359375,-1.5078125,-1.203125,1.515625,-0.5546875,-1.5234375,0.28710938,-2.265625,1.5625,0.72265625,-0.4765625,-1.5390625,-2.3125,1.1640625,-2.234375,0.2109375,0.30273438,0.8203125,0.125,-1.0390625,0.34375,1.140625,1.828125,-1.2109375,-0.6953125,0.734375,-0.58203125,0.5625,0.15429688,0.41015625,0.06298828,0.21386719,0.49804688,-0.734375,-0.2734375,-0.765625,0.265625,-0.6796875,2.25,-0.107910156,0.19238281,1.515625,-0.57421875,-0.9609375,-1.125,-0.8515625,-1.3046875,0.33007812,1.2734375,1.15625,-0.33984375,-0.36328125,-1.6171875,0.69140625,1.34375,-0.5703125,-1.015625,0.234375,-1.109375,-0.06640625,1.0546875,0.6484375,-1.1171875,-0.1640625,0.34179688,0.10253906,-0.29882812,-0.52734375,1.203125,1.421875,0.23730469,0.73046875,1.1015625 -5,0,6,0.79296875,-0.24023438,-0.79296875,-1.0390625,0.19824219,-1.375,-1.296875,1.3125,-0.17578125,0.6328125,-0.9453125,-0.5078125,0.8359375,0.32421875,-0.8125,1.6328125,-0.18066406,-1.2109375,0.20214844,0.4140625,2.40625,-0.7109375,-1.265625,-0.02355957,0.77734375,-0.07763672,-1.640625,-1.1328125,-1.6640625,1.75,-0.28320312,1.4140625,-2.046875,1.1015625,-0.62890625,-0.13867188,-0.013183594,0.03491211,-0.3359375,-0.578125,0.5546875,0.03515625,-0.79296875,0.31835938,-0.33398438,1.5390625,-0.46484375,-0.71484375,1.0859375,-0.515625,-0.8671875,-3.375,-1.328125,0.2265625,-1.46875,2.03125,1.796875,-0.7421875,-0.65625,-2.03125,-1.0703125,-0.47851562,0.5,1.2734375,1.375,1.5859375,-1.3828125,1.0625,0.5546875,0.41015625,0.671875,-1.8515625,-1.5234375,-0.49023438,0.10595703,0.73046875,0.640625,0.08544922,0.59765625,-0.111328125,1.078125,0.11376953,0.103515625,0.67578125,0.22167969,-0.28320312,-0.23339844,-0.46875,0.060546875,-0.10595703,0.5390625,-0.47265625,2.765625,-0.26757812,-0.98046875,-0.28125,-1.625,1.0703125,-0.007293701,0.4140625,0.15820312,0.1640625,0.05029297,-0.104003906,0.8515625,0.38476562,-0.87109375,-1.6875,-1.1875,-0.91796875,0.60546875,1.0859375,-0.4453125,0.024414062,1.0078125,-2.609375,0.14648438,0.4921875,0.41992188,1.296875,0.24121094,-0.62109375,0.0070495605,-1.359375,-1.6875,0.9375,-1.5078125,-0.625,-0.78515625,0.75,2.328125,-1.546875,-0.76953125,0.5703125,-0.734375,0.1875,0.6484375,0.36132812,0.56640625,-2.015625,-0.12109375,2.46875,0.26367188,1.453125,0.6875,0.32421875,-1.1796875,1.3984375,0.7265625,1.40625,-0.122558594,-2.21875,0.68359375,-0.89453125,-0.38476562,0.40625,1.5234375,0.25390625,-0.07519531,0.59375,0.06347656,1.265625,0.15820312,0.65625,-0.11328125,1.296875,0.43945312,0.075683594,0.015197754,0.44140625,0.22851562,0.65625,-0.015258789,-0.34765625,-0.48632812,1.703125,-0.06982422,-1.2578125,-0.61328125,-0.75390625,-0.546875,0.83203125,-0.58984375,-0.5859375,-0.5390625,0.18554688,0.6953125,-0.15136719,0.14648438,-0.90625,-1.03125,-0.65625,0.53515625,-0.52734375,-0.048339844,1.171875,0.40820312,-0.19628906,1.8984375,1.5 -5,0,7,1.640625,0.83984375,0.90625,0.87109375,-1.1484375,-0.37109375,-1.3671875,-0.29492188,2.5625,-1.546875,1.96875,-0.04345703,-0.18457031,1.3125,0.07519531,-0.390625,-0.2734375,-0.016601562,2.171875,1.21875,0.044921875,-0.58984375,-0.4140625,0.37695312,-0.34765625,-0.1640625,1.078125,-0.48632812,0.4921875,0.013183594,-0.29882812,0.49023438,0.171875,-0.703125,0.9140625,0.42382812,1.296875,0.47070312,-0.104003906,1.34375,-1.7734375,-1.2109375,-1.4765625,1.015625,-0.49609375,-0.984375,0.59765625,-0.53125,0.8203125,-0.36914062,0.029541016,-0.33789062,-0.17578125,0.859375,0.8125,0.625,0.31054688,-0.66015625,-0.796875,0.92578125,1.2421875,-0.20507812,0.47070312,0.06640625,0.40429688,-0.06689453,0.31835938,-1.7890625,-0.75,0.16894531,-0.296875,1.40625,0.57421875,-0.8125,-0.53515625,0.6875,-0.34570312,0.7109375,-1.296875,0.65625,-2.53125,-0.71484375,0.984375,-1.8984375,-0.29492188,-0.22851562,0.17675781,-1.890625,0.37109375,0.16210938,0.69921875,1.015625,-0.31640625,1.0625,-0.53125,0.03930664,-1.6875,1.140625,-0.6015625,0.068359375,-1.265625,0.765625,0.6796875,-1.4921875,0.22070312,1.859375,-0.119140625,-0.064453125,-0.40429688,0.42382812,-0.22851562,0.5234375,1.734375,-0.31445312,0.89453125,0.34179688,-0.6953125,0.033691406,-0.71875,0.12988281,0.609375,-0.042236328,0.46679688,-1.3515625,-2.34375,0.921875,-0.072753906,0.13476562,-0.55859375,1.3203125,1.3203125,0.44335938,-0.8046875,0.22753906,-1.1484375,1.359375,0.26367188,-0.66015625,-0.27734375,-1.515625,1.75,-0.0234375,-1.1484375,1.625,-0.2265625,-0.11376953,1.1171875,-0.07910156,-0.375,0.26367188,-0.90625,-0.75390625,2.609375,-0.85546875,-1.296875,0.51171875,1.359375,-0.86328125,0.36914062,0.49023438,-0.796875,-0.14355469,1.28125,1.4765625,0.16503906,-0.59765625,-1.1015625,-0.7578125,0.50390625,-1.4921875,-1.703125,0.10205078,-3.078125,-0.75,-0.42578125,2.28125,0.875,-0.35351562,-0.62109375,-0.052001953,-0.21875,-0.1796875,-0.8203125,-1.359375,-1.703125,0.15527344,1.1015625,0.14453125,-0.37109375,-0.85546875,-1.5,-0.4453125,-0.18066406,-1.0390625,-2.609375,1.8984375,2.234375,0.2578125,0.69921875,1.2109375 +5,0,5,0.58984375,0.99609375,-0.34179688,-1.34375,-0.484375,-0.9140625,-0.88671875,0.4609375,0.94921875,-1.2421875,-0.19433594,-0.5859375,-1.09375,1.5390625,-1.671875,0.66796875,-0.3359375,0.453125,-0.8125,0.87890625,1.6640625,0.703125,0.06201172,0.34765625,0.40625,-0.58984375,-1.8828125,-0.15136719,-0.99609375,1.21875,-0.9296875,-0.2265625,0.83984375,0.2109375,-0.23046875,0.90625,0.40039062,-0.05908203,-0.58984375,0.62109375,-1.7890625,0.38085938,-0.12158203,0.41015625,-0.0019302368,1.3359375,0.70703125,0.13671875,-0.40234375,1.2578125,-0.41796875,-0.6796875,-1.5234375,-0.018432617,-0.041503906,1.8125,0.013305664,-0.23535156,0.40429688,-1.546875,0.29101562,0.39648438,1.2890625,0.24316406,0.96875,1.1796875,-1.5703125,1.46875,0.012756348,-0.22949219,-0.796875,-1.203125,-0.76953125,-0.07128906,-0.58984375,0.015563965,0.49414062,0.5546875,0.30859375,0.6484375,1.078125,-1.046875,1.015625,0.42382812,-0.53125,0.49609375,0.3515625,0.640625,-0.58984375,-0.50390625,3.59375,0.41992188,0.79296875,1.265625,-0.51953125,1.0390625,-0.98828125,0.31835938,-0.58203125,0.34570312,-0.828125,0.17089844,1.3828125,-1.140625,0.045410156,0.17773438,-0.390625,-1.8671875,-0.4453125,0.83203125,-0.15332031,-0.40625,0.4296875,-0.80859375,-0.625,-0.609375,-0.34960938,0.69921875,0.42773438,-0.12597656,0.734375,-1.0703125,-0.62890625,-1.8515625,-0.828125,1.65625,-0.35742188,-1.625,-1.1015625,-0.96875,1.3203125,0.2578125,-2.375,-0.5859375,-1.5703125,2.015625,0.14355469,-0.45507812,-1.34375,-2.5625,1.1015625,-2.21875,0.58203125,-0.09277344,0.6484375,0.35546875,-0.20605469,-0.76953125,-0.088378906,1.5625,-1.5859375,0.59765625,0.60546875,-0.09814453,1.296875,-0.064453125,0.4140625,0.9375,0.78515625,0.41601562,-0.87890625,-0.6640625,-0.37109375,0.09033203,-2.6875,2.390625,0.22949219,-0.0134887695,1.4140625,-0.9140625,-1.8984375,-0.86328125,-1.1171875,-0.9296875,-0.44921875,1.5078125,1.1796875,-0.99609375,-0.18261719,-0.91015625,0.44921875,1.3046875,0.50390625,-0.040771484,1.0078125,-1.109375,-0.13085938,1.609375,0.578125,-1.3125,-0.23730469,1.359375,1.2265625,0.38085938,-0.5546875,0.43554688,3.265625,-0.09863281,-0.18554688,0.45117188 +5,0,6,-0.44140625,-0.69921875,-0.38476562,-1.4375,0.17578125,-1.203125,-0.9609375,1.640625,0.057373047,0.8203125,-0.8671875,-0.53125,1.4140625,0.875,-2.15625,0.93359375,-0.51953125,-0.859375,0.10546875,0.5078125,2.46875,-0.18359375,-0.8515625,0.24316406,0.48046875,-0.38671875,-2.078125,-1.125,-0.42578125,1.75,-0.26757812,0.50390625,-0.98046875,0.5546875,-1.25,0.49804688,-0.37890625,-0.49804688,-0.27929688,-0.6015625,-0.9453125,0.328125,-0.6953125,-0.28710938,0.53515625,2.484375,-0.107910156,-0.3125,1.390625,1.0703125,-1.0078125,-2.421875,-2.34375,0.43945312,-0.609375,1.6640625,-0.28125,-0.80859375,-0.26757812,-1.5546875,-0.87890625,-0.80859375,1.578125,0.9609375,1.4375,2.015625,-1.6640625,1.625,-0.95703125,0.6171875,1.3046875,-1.2890625,-0.6953125,-0.265625,-0.234375,0.25,0.265625,-0.33984375,0.73046875,0.73046875,1.578125,-0.42382812,0.28320312,1.734375,-0.84375,0.64453125,-0.8203125,0.05126953,0.13476562,-0.11230469,1.4765625,-0.3671875,1.78125,-0.09765625,-0.15429688,0.027709961,-1.84375,0.78125,-0.54296875,0.375,-0.2890625,-0.26757812,0.36328125,0.17675781,0.3671875,1.3125,-1.671875,-2.59375,-1.0703125,-0.609375,-0.20019531,0.78125,-1.0546875,-0.53125,-0.09716797,-2.359375,-0.09716797,0.81640625,0.33007812,1.5859375,0.11279297,-0.3828125,-0.15917969,-1.6484375,-1.2578125,0.6328125,-1.359375,-0.77734375,-0.7890625,0.48046875,2.0625,-0.7578125,-1.7109375,-0.546875,-0.28710938,0.8359375,-0.13867188,0.07861328,-0.09716797,-2.046875,-0.32226562,1.609375,0.58984375,0.95703125,0.52734375,0.15917969,-0.51953125,0.20410156,-0.59765625,1.0234375,0.03515625,-0.90625,0.54296875,-0.52734375,0.43945312,-0.17382812,1.4140625,1.0078125,0.55078125,0.35742188,-0.19433594,0.875,0.4140625,0.50390625,-1.796875,1.734375,0.73828125,0.20800781,0.46289062,0.03930664,-0.49804688,0.63671875,-0.0390625,0.18066406,-1.1171875,1.984375,0.18164062,-1.671875,-0.57421875,-0.099609375,-0.6640625,0.875,0.91796875,0.3828125,0.28125,-0.28710938,0.28125,0.39453125,0.3203125,-0.796875,-1.453125,0.7578125,1.5078125,0.14746094,-0.55078125,0.2734375,2.375,-0.3984375,1.0078125,1.125 +5,0,7,0.91015625,0.5625,0.828125,0.203125,-1.140625,-0.08105469,-1.1953125,-0.031982422,2.609375,-1.46875,1.828125,-0.040771484,0.35351562,1.3671875,-0.62890625,-0.42578125,-0.4609375,0.18457031,2.265625,1.1484375,0.2421875,-0.5078125,-0.15722656,0.58203125,-0.48632812,-0.53515625,0.65234375,-0.5234375,0.90625,0.5078125,-0.40429688,-0.0074157715,0.78125,-0.66796875,0.37695312,0.91015625,0.94921875,-0.18847656,-0.20898438,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.23242188,0.515625,-0.29296875,0.87890625,0.6796875,-0.15429688,-0.265625,-0.74609375,0.95703125,0.9296875,0.40820312,-0.65625,-0.49804688,-0.578125,0.77734375,1.1875,-0.37890625,1.2578125,0.09765625,0.640625,0.51171875,-0.20703125,-1.25,-1.453125,0.41210938,-0.11230469,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.4765625,-1.09375,1.2578125,-1.8984375,-0.71484375,0.9296875,-1.1640625,-0.703125,0.51171875,-0.36523438,-1.5,0.47851562,0.28515625,1.5390625,1.1953125,-0.47070312,0.875,-0.45117188,0.16308594,-1.78125,0.73046875,-0.63671875,-0.3671875,-1.6875,0.609375,0.9140625,-1.2890625,-0.34960938,2.171875,-0.640625,-0.7890625,-0.375,0.7890625,-0.4765625,0.26171875,1.203125,-0.578125,0.26367188,0.34960938,-0.625,0.453125,-0.41015625,0.5546875,0.6875,-0.0013961792,0.4453125,-1.6875,-1.90625,0.5625,-0.16992188,-0.203125,-0.34570312,1.140625,1.078125,0.61328125,-1.5078125,-0.265625,-1.1015625,1.578125,0.16503906,-0.73046875,-0.41796875,-1.7578125,1.6796875,-0.26953125,-0.625,1.5078125,-0.28320312,-0.07519531,1.4609375,-0.734375,-1.1796875,0.22070312,-1.078125,-0.16503906,2.140625,-0.57421875,-0.60546875,0.19042969,1.40625,-0.39648438,0.65625,0.38867188,-0.75,-0.30664062,1.390625,1.2421875,-1.1796875,-0.14648438,-0.6640625,-0.6171875,0.64453125,-1.703125,-2.109375,-0.25585938,-3.0,-0.40039062,-0.578125,2.484375,0.80078125,-1.046875,-0.48046875,0.36328125,-0.33398438,-0.09277344,-0.06982422,-0.6640625,-1.1640625,0.20800781,1.125,0.58984375,-0.390625,-0.8203125,-1.5234375,0.296875,0.546875,-0.86328125,-2.796875,1.2578125,3.171875,0.19921875,0.34570312,0.859375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv index 7fb3dcc2..184fba8e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,5,0.94921875,0.62890625,0.4921875,-1.28125,1.1796875,0.37304688,0.73828125,0.33007812,-0.4921875,-1.1328125,0.36328125,-0.44921875,0.33398438,0.9609375,-0.61328125,1.015625,-0.71484375,-2.4375,0.81640625,-1.0703125,-0.09716797,-0.78515625,0.71484375,0.34960938,-1.1015625,-0.48632812,-0.69140625,-0.8828125,-2.875,-0.049804688,-0.91015625,0.3828125,-0.671875,-0.04321289,-0.022094727,0.59375,1.21875,0.42578125,-1.2421875,2.390625,-0.48046875,-0.004211426,0.515625,0.58203125,0.18847656,-0.39453125,0.73046875,-0.83984375,0.5234375,0.55078125,-1.3671875,-0.89453125,-0.27734375,1.2734375,-2.90625,0.40039062,0.17871094,-0.84375,1.2890625,-2.046875,1.71875,0.19726562,-0.62109375,0.73828125,-0.87109375,-0.5078125,-0.87890625,-0.22851562,1.421875,1.4453125,-0.33789062,-0.62109375,0.01940918,-0.30859375,-0.56640625,2.203125,1.0546875,1.1796875,-1.796875,-0.6796875,0.81640625,0.75,-0.11621094,-0.7421875,0.08642578,-0.75390625,0.42382812,1.125,-0.8671875,0.6328125,0.51953125,-0.055419922,-1.015625,0.50390625,-1.6875,-0.12695312,-0.29882812,-0.041259766,0.77734375,-0.7734375,-1.6328125,-0.34375,2.109375,0.94921875,-0.15917969,-0.73046875,0.765625,-0.58203125,0.8359375,0.82421875,1.0234375,-0.13574219,1.0703125,-0.64453125,1.1796875,0.21777344,-0.4375,-1.0625,-0.64453125,-1.984375,0.42382812,-1.0703125,0.875,-1.0546875,-0.03881836,1.0234375,-1.640625,-2.359375,-0.41992188,0.33007812,-0.15332031,0.3125,0.49804688,-0.45507812,-1.078125,-0.111328125,-0.73046875,0.6875,0.73046875,-1.421875,3.28125,-0.60546875,-0.022705078,0.74609375,-1.2734375,1.15625,-0.9140625,0.421875,-1.7109375,1.0234375,-0.609375,-0.859375,1.21875,-0.9453125,-1.328125,-0.71875,0.140625,0.70703125,0.5390625,1.6953125,-0.12890625,-0.030151367,1.890625,1.734375,-0.51953125,1.453125,-1.4296875,-0.984375,1.6953125,0.15722656,0.9296875,-0.3203125,0.37695312,0.51953125,1.578125,-0.0546875,-0.80859375,-0.104003906,0.8984375,-1.03125,0.16113281,-1.2265625,-0.82421875,0.15917969,-0.33398438,0.5859375,-0.05419922,-0.64453125,1.484375,-2.15625,0.87109375,0.6796875,0.29882812,0.4375,1.140625,0.06933594,0.5,0.39453125,1.421875,0.18554688 -6,0,6,1.75,1.09375,-0.24414062,0.59765625,1.21875,0.36914062,-0.49414062,0.010375977,0.13769531,-1.6015625,1.46875,-0.21191406,-0.020385742,0.033447266,-0.34960938,-0.29492188,-0.95703125,-0.6875,1.0859375,1.3203125,0.06591797,-2.1875,-0.092285156,-0.032714844,-1.0078125,-0.74609375,-0.90234375,-0.36523438,-0.38476562,-0.59375,-0.40625,0.27539062,0.8828125,0.41015625,0.12109375,-0.57421875,0.5078125,0.40234375,-0.06542969,1.2890625,0.42773438,0.62109375,0.1875,1.859375,-0.640625,-0.19628906,-0.7890625,-1.34375,0.08886719,0.5703125,1.0625,-1.3125,0.13085938,-0.5625,-1.109375,-1.9609375,0.93359375,1.28125,-0.31445312,-1.0703125,1.6484375,1.734375,1.140625,-0.18066406,-1.2265625,-1.0546875,0.6171875,-2.5,0.12451172,0.40820312,-0.103027344,0.106933594,1.234375,-1.6484375,0.43359375,0.65234375,0.33984375,-0.41992188,-1.578125,0.3125,-0.8203125,0.58203125,0.13769531,-0.11425781,-0.20117188,0.55859375,-2.4375,0.048095703,1.1875,1.0859375,1.03125,0.8203125,1.25,0.44335938,-0.6640625,-1.0078125,-0.66796875,1.828125,-0.096191406,0.390625,0.061767578,-0.41992188,0.578125,0.02331543,-0.59375,0.30664062,-0.40625,0.21777344,-0.040039062,-0.43359375,0.49023438,1.8671875,0.30859375,-0.39648438,-0.13085938,1.0546875,-0.44726562,-0.29882812,-0.64453125,0.49609375,-0.016357422,-1.3125,-1.1171875,-0.12207031,-1.2421875,1.5859375,-0.75,-0.3046875,-0.6015625,0.76171875,0.010803223,-2.359375,-0.24902344,1.5859375,-1.2578125,2.703125,-0.47070312,0.55859375,2.25,-1.2890625,1.3671875,-0.625,-0.7734375,0.890625,0.71484375,-0.11230469,-0.28710938,0.5078125,0.31445312,-0.010009766,-0.01159668,-0.9765625,-1.640625,0.8359375,-1.296875,1.75,0.6875,-0.953125,-0.7109375,1.3515625,0.65625,1.0703125,0.87890625,3.484375,-1.84375,1.34375,-2.171875,0.57421875,-0.25195312,-0.022705078,-1.71875,-1.6953125,0.8203125,-0.78515625,0.92578125,0.20703125,-0.37890625,-1.546875,1.4453125,-0.515625,0.4296875,0.35546875,0.053710938,-0.7890625,-1.453125,1.6796875,-1.0078125,-0.73828125,0.6796875,-0.45117188,1.0390625,0.77734375,-1.1328125,-0.875,-0.6015625,-0.30078125,-1.5625,-0.29882812,0.23144531,0.37304688 -6,0,7,-0.34765625,0.27929688,0.10546875,0.8515625,1.1875,-0.13476562,-0.44726562,0.58203125,0.78515625,-0.734375,0.44726562,1.59375,-0.9296875,-0.20605469,-0.65625,0.22070312,0.03540039,-1.1171875,1.4765625,-0.43554688,-0.265625,-2.015625,-1.1328125,0.2421875,-0.052246094,-0.041748047,1.0546875,0.5703125,-0.17285156,-0.21191406,0.46289062,0.7734375,0.5,-0.29882812,2.796875,0.453125,1.2265625,-0.068359375,-0.9140625,0.9921875,0.44921875,-1.0625,-1.3125,-1.5390625,-0.97265625,0.38476562,-0.35742188,-1.046875,0.62890625,0.6875,1.140625,-0.27539062,-0.69921875,-0.0021362305,-0.18847656,-1.453125,0.8984375,1.34375,0.32226562,0.31054688,0.62890625,0.8515625,-0.9921875,1.578125,-1.0390625,0.08935547,-0.81640625,-2.203125,0.97265625,-0.49804688,0.36132812,1.4609375,1.640625,-1.6953125,0.78515625,0.9140625,0.080078125,-0.5078125,-0.08544922,0.80859375,-1.8203125,0.34375,-0.31054688,-1.4296875,0.55078125,-1.65625,-0.10498047,-0.5546875,1.0546875,0.67578125,0.78125,-0.56640625,0.1015625,1.03125,-0.25585938,-0.27929688,-0.75390625,-0.48828125,-0.828125,-0.003540039,0.80859375,0.36914062,0.75,1.2734375,-0.5625,0.75,1.25,0.53125,0.07128906,0.734375,1.2265625,0.80078125,2.65625,-1.4765625,1.1328125,-0.28320312,-1.65625,-0.1328125,-1.046875,-1.015625,1.1484375,0.58984375,-0.69140625,-0.44921875,-1.265625,2.046875,-0.033935547,1.25,0.6953125,-1.2421875,2.046875,-2.1875,0.52734375,0.8359375,-0.1640625,0.82421875,0.53125,0.14941406,0.4921875,-0.64453125,1.5234375,0.30859375,-1.984375,1.4140625,-0.47070312,-1.125,0.31054688,0.3671875,0.6015625,-1.40625,0.35742188,-0.27734375,2.796875,-0.765625,-0.859375,0.6640625,0.27734375,-2.046875,0.78125,0.296875,0.5234375,0.44335938,0.8984375,0.375,0.8671875,0.765625,0.006866455,0.68359375,-0.828125,0.026367188,-1.125,-1.1640625,-2.3125,-1.484375,-0.051513672,0.97265625,-0.18359375,-1.1015625,-1.671875,-1.0859375,1.1640625,0.33398438,-0.5,-1.765625,-0.94140625,-1.203125,-0.640625,-0.17285156,-1.0234375,1.046875,-0.92578125,-0.75390625,-1.6328125,-1.1640625,-1.296875,0.9609375,-0.984375,0.1640625,0.19726562,1.6484375 -7,0,5,1.5546875,1.359375,-0.57421875,-0.25390625,-0.94140625,-0.37890625,-0.95703125,0.921875,-0.9375,-0.21875,2.265625,-0.26757812,-0.33007812,-0.77734375,-0.72265625,1.9453125,0.22851562,-1.7734375,0.234375,-0.014099121,1.8984375,0.40429688,-0.16796875,0.6796875,0.875,-0.32226562,-0.33789062,-1.75,-2.203125,-0.8125,-1.0078125,2.953125,-0.625,2.265625,0.5078125,-0.14160156,0.41015625,0.140625,0.7734375,0.41015625,1.0703125,-0.119628906,0.6875,0.08886719,0.50390625,-0.14257812,0.04345703,-0.15820312,0.44335938,-2.25,-0.83984375,-0.30078125,-0.9921875,-1.4609375,-1.265625,1.0703125,1.1953125,-0.58984375,0.08642578,-0.3046875,0.014770508,-0.057861328,0.8828125,1.4609375,1.421875,0.19726562,-0.15820312,-0.6484375,0.81640625,-0.28320312,-0.4609375,-0.71875,-1.3203125,-0.48046875,0.16015625,0.6796875,0.20605469,0.20703125,-0.02368164,-0.20996094,-0.6015625,-0.40234375,1.0234375,-0.359375,1.59375,0.19238281,-0.16796875,0.37695312,0.91796875,-0.54296875,-0.040771484,-0.14648438,1.1796875,1.0625,0.06982422,-1.2421875,0.71484375,0.90234375,-1.109375,-0.10205078,0.024658203,0.74609375,1.734375,-1.7265625,-0.69140625,-2.140625,-1.71875,-0.53125,-0.76171875,0.37109375,0.63671875,-0.44921875,0.27539062,0.703125,1.421875,-0.13378906,-0.026855469,-1.2734375,-0.36523438,-0.10058594,-0.328125,-0.09765625,-0.6875,-1.6953125,-1.9609375,1.109375,-2.078125,0.119140625,0.41796875,0.94921875,1.1796875,-0.5859375,-0.09765625,0.024047852,-1.71875,0.53515625,1.796875,-0.008544922,-1.0625,-2.3125,1.046875,0.06591797,-0.6015625,0.68359375,-0.106933594,0.56640625,-1.125,-0.20996094,0.8359375,1.171875,-0.2890625,-0.81640625,1.2265625,-1.9296875,-0.08544922,0.234375,-0.080078125,-0.93359375,0.25585938,-0.3515625,1.015625,-0.28125,0.3125,-0.72265625,0.33789062,3.15625,-0.94140625,-0.41992188,0.41210938,-0.375,-0.012329102,-0.67578125,-0.83984375,-1.3125,0.20410156,1.3828125,0.24804688,-0.44921875,0.88671875,-1.3125,0.84765625,-0.12158203,-0.296875,-1.7890625,0.095214844,0.092285156,0.16210938,-0.032470703,0.48828125,-0.14453125,1.9921875,-1.7265625,-0.78515625,-2.0,0.45507812,1.59375,0.72265625,2.515625,1.328125,0.796875 -7,0,6,1.4296875,1.3984375,-0.46289062,-0.3515625,-1.6015625,-1.1328125,0.66015625,0.61328125,-0.21777344,0.21679688,0.2265625,0.37695312,-0.390625,-0.859375,0.28515625,1.875,-1.1875,-0.76953125,0.265625,0.82421875,1.0,-1.0546875,0.82421875,-0.076171875,1.4140625,0.0068969727,-1.4296875,-0.80078125,0.25585938,-0.5078125,-0.7109375,0.16503906,0.89453125,-0.63671875,-0.07714844,-0.5078125,0.5703125,-0.70703125,-0.76953125,-0.38476562,0.45703125,-0.084472656,0.20605469,-0.10205078,-1.2109375,-0.31640625,-0.056396484,0.34765625,-0.59375,-0.79296875,0.7890625,0.17382812,-3.15625,-0.18359375,1.1953125,2.140625,0.93359375,0.34570312,0.34179688,-0.025878906,-0.92578125,-0.328125,-0.07470703,0.5390625,1.390625,-1.078125,-0.052001953,-0.73046875,0.96484375,0.022583008,-0.7890625,1.2578125,-0.50390625,-1.0234375,2.65625,1.140625,1.2109375,0.1328125,-1.4296875,0.041503906,0.08496094,0.37109375,1.203125,-0.5390625,1.0546875,-1.0,-0.609375,1.0859375,1.203125,0.111328125,-0.27539062,-0.83984375,1.5859375,0.63671875,-1.640625,0.69921875,-0.9296875,1.7421875,-0.94140625,0.9140625,1.078125,1.0234375,-0.8828125,0.65625,-0.19921875,-0.58984375,-1.3515625,-1.421875,-0.38476562,-0.0058288574,-0.75390625,-2.0625,0.97265625,-0.13867188,-0.43164062,0.87890625,-0.45507812,0.7421875,-1.3828125,-0.9765625,-0.095214844,0.24414062,-0.93359375,-1.4453125,0.31640625,1.015625,-1.453125,0.5703125,-0.515625,-0.984375,1.3515625,-0.78125,0.5703125,-1.6171875,-0.39453125,-0.97265625,2.53125,0.09082031,-0.90625,-2.40625,1.140625,0.41796875,-1.1484375,-1.0546875,-0.4296875,-0.51171875,0.20605469,1.2421875,2.734375,1.90625,-0.625,-2.125,-0.07470703,-0.73046875,-1.0078125,-0.765625,1.0,-0.15136719,0.65234375,0.828125,-0.5390625,-0.16699219,-0.171875,-0.43164062,-0.3046875,0.33789062,-0.40820312,-0.8125,0.29492188,1.15625,1.5,0.31445312,-0.40625,0.76171875,-1.53125,1.078125,2.890625,-0.53515625,1.3515625,1.140625,-0.46484375,0.49804688,-0.13574219,-1.5390625,-0.890625,-1.0,0.58203125,-0.4375,1.0625,-0.35742188,-0.2734375,-0.04736328,-0.43554688,-0.36914062,-1.15625,0.52734375,-0.6484375,2.21875,1.7890625,0.079589844 -7,0,7,1.65625,0.68359375,-0.87890625,-1.0234375,0.41015625,-0.9375,-0.44335938,1.4765625,0.6015625,0.35351562,-1.234375,1.53125,-0.46679688,0.9296875,0.6171875,0.7890625,0.609375,-0.5546875,0.87890625,1.640625,0.36914062,-0.31054688,-0.6953125,-0.55859375,-0.8671875,1.75,-0.14941406,-0.041015625,0.3359375,-2.265625,0.7890625,2.140625,-0.20117188,0.049072266,-0.009765625,-0.81640625,0.21972656,1.9609375,0.009460449,0.118652344,-0.38476562,-0.18554688,-0.14355469,0.98046875,-0.10058594,-0.40625,-0.53125,-0.65625,-0.44140625,-0.34570312,0.11328125,-1.4375,0.17578125,-0.953125,-0.115722656,0.6640625,-0.94140625,0.13964844,0.19238281,-0.62109375,-1.0390625,-0.20605469,0.62890625,-0.45703125,0.33789062,0.095214844,0.48828125,-0.38085938,0.4140625,0.953125,-0.31054688,2.125,-0.875,-0.65625,0.734375,1.6796875,0.50390625,-0.5859375,-2.5,0.33203125,0.87890625,0.7421875,1.640625,1.609375,0.043945312,0.06542969,-0.04296875,-0.8984375,-0.859375,1.5234375,0.4921875,0.58984375,0.016113281,1.5078125,-0.0390625,0.000541687,-1.25,0.9765625,0.24023438,0.87109375,1.21875,-0.24609375,-0.4765625,-0.27929688,-0.33398438,0.609375,0.08642578,-0.58984375,-1.4296875,-0.921875,0.33789062,-0.20410156,2.09375,-0.796875,0.64453125,-0.91796875,0.16210938,-0.15625,0.31835938,0.40234375,1.125,0.025390625,-0.96875,-0.6015625,-0.44335938,0.70703125,0.040771484,0.16308594,0.99609375,-0.14160156,0.98046875,-1.9453125,0.95703125,-0.234375,-1.203125,0.55859375,-1.34375,0.3984375,0.58984375,-1.96875,0.053710938,0.16601562,-1.359375,1.5078125,-0.43164062,0.12890625,-0.83984375,2.265625,0.8125,-1.90625,1.2734375,-2.71875,0.19824219,0.09765625,-0.12597656,1.0859375,1.1015625,0.6328125,-1.0078125,0.5546875,-1.7421875,1.875,-1.0390625,0.83203125,1.890625,-0.953125,-0.40039062,-2.625,-0.027954102,1.3359375,-0.31445312,0.7265625,-0.99609375,1.1953125,0.2890625,1.2890625,0.18261719,-1.34375,-0.8828125,0.39257812,-0.31054688,0.43945312,-1.0625,0.14453125,-2.125,0.29492188,-1.6484375,-2.40625,1.34375,-1.2421875,-1.390625,-1.6640625,-2.125,0.39453125,0.059326172,0.625,-0.66015625,-0.23730469,-0.70703125,1.0546875 +6,0,5,0.13769531,0.10595703,0.27148438,-0.8828125,1.3984375,0.6171875,0.48632812,1.03125,-0.49414062,-1.0390625,0.12792969,-0.26171875,0.58203125,0.35351562,-1.2578125,0.484375,-0.546875,-1.9140625,1.1328125,-0.5234375,-0.08544922,-0.6640625,1.2734375,0.52734375,-1.234375,-1.5078125,-0.9609375,-0.8671875,-1.7890625,0.43945312,-0.63671875,-0.26171875,0.013671875,-0.4609375,-0.52734375,0.953125,0.91796875,-0.73828125,-1.4609375,1.5703125,-1.7890625,0.03149414,-0.07714844,0.09423828,0.38085938,0.5234375,0.63671875,-0.69921875,0.37304688,1.859375,-1.1953125,-1.6015625,-0.97265625,1.1015625,-2.421875,0.092285156,-0.21484375,-0.8046875,1.328125,-1.71875,1.75,0.18554688,0.2890625,0.29882812,-0.515625,-0.067871094,-1.078125,0.16308594,0.546875,1.8515625,0.06298828,-0.31640625,0.57421875,-0.13769531,-0.671875,1.8671875,0.765625,1.1796875,-1.765625,-0.5234375,1.2890625,0.89453125,-0.12207031,0.12060547,-0.640625,-0.20117188,-0.46484375,1.4609375,-0.359375,0.99609375,1.3828125,0.21289062,-0.921875,0.36914062,-1.421875,0.22265625,-0.58984375,-0.640625,0.62109375,-0.890625,-2.359375,-0.17871094,2.5,0.78125,-0.79296875,0.0063171387,0.06640625,-1.0703125,0.48632812,0.984375,0.703125,0.03564453,0.5703125,-0.79296875,0.4921875,-0.3203125,-0.47460938,-0.3515625,-0.484375,-1.1953125,0.7109375,-0.7890625,0.60546875,-1.5625,-0.2265625,1.2578125,-1.3203125,-2.421875,0.014038086,0.17285156,-0.18652344,0.03955078,-0.021972656,-1.3671875,-1.0390625,-0.13769531,-0.66015625,0.25195312,0.20800781,-1.7265625,3.375,-0.40625,1.3203125,1.1015625,-1.2265625,1.078125,-0.6015625,-0.66796875,-2.515625,1.1015625,-0.30859375,-0.03540039,1.0625,-0.48828125,-1.1015625,-1.1953125,0.3828125,1.3515625,1.015625,1.421875,-0.26367188,-0.010314941,1.828125,1.25,-1.78125,1.65625,-1.671875,-0.24707031,2.109375,-0.20117188,0.3671875,-0.40039062,0.1015625,0.6171875,0.69140625,0.040283203,-0.8671875,-0.84375,0.859375,-0.609375,-0.30664062,-0.89453125,0.140625,0.85546875,0.14648438,0.5390625,0.59375,0.038085938,0.8671875,-1.828125,0.099609375,1.375,1.2578125,0.28515625,0.43945312,-0.18261719,1.6796875,0.15820312,1.4140625,0.5234375 +6,0,6,0.82421875,0.82421875,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39453125,-0.10058594,-1.4375,1.1015625,-0.19433594,0.53515625,-0.54296875,-0.99609375,-0.375,-0.8203125,-0.40039062,1.109375,1.2421875,0.20117188,-1.890625,0.36132812,0.35742188,-0.90234375,-1.625,-1.3828125,-0.35351562,0.22753906,0.05859375,-0.23828125,-0.32421875,1.7109375,0.20800781,-0.328125,-0.17089844,0.31640625,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71484375,-0.26953125,1.2734375,-0.27734375,0.25585938,-0.734375,-1.0234375,0.43945312,1.71875,1.140625,-1.765625,-0.4921875,-0.26757812,-1.0859375,-2.140625,0.38671875,1.3046875,-0.111328125,-1.015625,1.6171875,1.59375,1.734375,-0.34960938,-1.03125,-0.7109375,0.050048828,-2.078125,-0.3046875,0.85546875,0.3828125,0.16992188,1.3359375,-1.4921875,0.4609375,0.51953125,0.18554688,-0.20605469,-1.7109375,0.39453125,-0.2734375,0.71484375,-0.018432617,0.31835938,-0.7578125,0.7421875,-2.828125,0.453125,1.5859375,1.2109375,1.421875,1.1953125,1.125,0.22460938,-0.6328125,-0.93359375,-0.8671875,1.2421875,-0.23046875,0.12402344,-0.54296875,-0.39453125,0.89453125,-0.114746094,-1.0390625,0.77734375,-0.98828125,-0.18164062,-0.34960938,-0.33203125,0.18164062,1.96875,0.13378906,-0.63671875,-0.57421875,0.671875,-0.4140625,0.33203125,-0.46484375,0.84375,0.05078125,-1.1015625,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.6015625,-0.24121094,0.76171875,-0.04345703,-2.515625,-0.9375,0.7421875,-1.328125,2.546875,-0.31835938,0.01373291,1.8125,-1.3203125,1.421875,-0.75390625,0.12109375,1.171875,0.6640625,-0.20117188,-0.22460938,-0.27929688,-0.5625,0.20019531,0.43359375,-0.32226562,-1.3515625,1.015625,-1.1328125,1.234375,0.6953125,-0.36523438,-0.390625,1.046875,0.78515625,1.15625,1.0078125,3.046875,-2.671875,1.609375,-2.234375,1.1875,0.16796875,-0.296875,-1.7734375,-1.8359375,0.734375,-0.65234375,0.65625,0.27539062,-0.66796875,-1.96875,1.40625,-0.35742188,0.09814453,0.15039062,0.84375,-0.11621094,-1.0234375,1.578125,-0.4921875,-0.26953125,0.51171875,-0.36523438,0.66015625,1.546875,-0.31445312,-1.0390625,-0.82421875,-0.46679688,-0.46875,-0.19824219,0.19824219,0.51953125 +6,0,7,-0.91015625,0.03955078,-0.34375,1.078125,1.359375,-0.03100586,-0.43945312,1.0546875,0.59765625,-0.66015625,0.27539062,1.84375,-0.29296875,-0.6640625,-0.97265625,0.22949219,0.0019836426,-1.046875,1.9765625,-0.4765625,-0.123535156,-2.0625,-0.8203125,0.54296875,-0.12060547,-0.62890625,0.7109375,0.73828125,0.69140625,0.41015625,0.43554688,0.2734375,1.3203125,-0.52734375,2.140625,0.88671875,1.171875,-0.828125,-1.015625,0.6640625,-0.40625,-0.80859375,-1.859375,-1.875,-0.82421875,0.89453125,-0.3984375,-0.94140625,0.8515625,1.7578125,1.125,-0.5703125,-1.15625,0.31640625,-0.123046875,-2.03125,0.35742188,1.515625,0.43359375,0.15625,0.78125,0.83203125,-0.3515625,1.2890625,-1.3125,0.5546875,-1.3359375,-1.90625,0.47460938,-0.0546875,0.81640625,1.4453125,1.78125,-1.7734375,0.8125,0.921875,-0.08251953,-0.6953125,-0.28515625,0.9296875,-1.0390625,0.57421875,-0.29101562,-0.9140625,0.04296875,-1.3671875,-0.43554688,-0.19140625,1.5625,0.859375,1.4453125,-0.13769531,-0.20214844,1.0859375,-0.31835938,-0.27539062,-0.8203125,-0.9609375,-1.03125,-0.21777344,0.08300781,0.40625,1.390625,1.1796875,-1.0703125,1.3671875,0.61328125,0.19921875,-0.049316406,0.515625,0.75390625,0.83984375,2.5,-1.59375,0.76953125,-0.35351562,-1.5234375,0.671875,-0.83984375,-0.7890625,1.3125,0.46289062,-0.67578125,-0.64453125,-1.296875,2.03125,-0.06591797,0.76953125,0.8125,-1.2734375,1.4765625,-2.3125,0.15332031,0.19628906,-0.106933594,0.90234375,0.7265625,-0.12792969,0.41015625,-0.99609375,1.5625,0.265625,-1.453125,1.3828125,-0.36523438,-1.0234375,0.49414062,-0.31640625,-0.18652344,-1.2578125,0.78515625,0.22851562,2.671875,-0.93359375,-0.8203125,0.038330078,0.13867188,-1.578125,1.1875,0.12060547,0.63671875,0.6015625,1.125,0.48046875,0.0546875,0.7265625,0.023925781,0.984375,-0.33203125,-0.0034179688,-1.1875,-1.3984375,-2.359375,-1.28125,-0.4140625,0.9921875,-0.5,-1.5234375,-1.6328125,-0.953125,0.703125,0.16015625,0.25585938,-1.234375,-0.83203125,-1.21875,-0.25,0.19238281,-1.2578125,1.078125,-1.2265625,-0.03100586,-0.87109375,-1.1953125,-1.6171875,0.58203125,-0.18945312,0.21679688,0.20117188,1.609375 +7,0,5,0.8671875,1.2109375,-0.828125,-0.984375,-1.2890625,0.32421875,-0.5,1.515625,-0.7890625,-0.70703125,1.625,0.0040893555,-0.059326172,-0.28125,-1.15625,1.6328125,-0.28710938,-1.5234375,0.15136719,-0.66015625,1.3515625,0.84765625,0.48046875,1.125,0.8984375,-0.859375,-0.93359375,-1.9375,-1.6171875,-0.63671875,-1.2578125,2.453125,1.015625,2.515625,-0.171875,0.14648438,-0.40234375,-0.59765625,0.8671875,0.5625,-0.625,0.28125,0.63671875,0.20117188,1.3046875,0.36328125,0.578125,0.2734375,0.65625,-1.1796875,-0.84375,-0.51171875,-1.8984375,-1.609375,-1.03125,0.59765625,0.08300781,-0.33984375,0.3125,-0.75390625,-0.19140625,-0.515625,1.8515625,1.0,1.1796875,0.70703125,-0.88671875,-0.13867188,0.22558594,0.24902344,-0.036865234,-0.36132812,-0.671875,-0.1875,-0.4765625,-0.15820312,-0.23339844,-0.13183594,-0.01550293,0.45898438,-0.48242188,-0.546875,1.1328125,0.42382812,1.1171875,1.2890625,-0.97265625,0.52734375,1.375,-1.0234375,1.3359375,0.41015625,0.546875,1.21875,0.21972656,-1.3203125,0.76953125,0.99609375,-1.703125,-0.296875,-0.6484375,0.32421875,2.21875,-1.7734375,-1.21875,-1.4765625,-2.015625,-1.7109375,-0.47851562,0.9296875,0.20996094,-1.0078125,0.088378906,0.5703125,0.53125,0.20117188,0.0040283203,-0.98046875,-0.26757812,0.22851562,-0.36914062,-0.3125,-1.4375,-0.99609375,-1.4609375,1.0625,-1.75,-0.55078125,1.0390625,0.984375,0.9140625,-0.484375,-1.140625,-0.6484375,-1.765625,0.8203125,1.109375,-0.1875,-1.6640625,-2.4375,1.484375,-0.55078125,-0.640625,0.59375,0.4765625,0.18652344,-0.25,-0.5234375,0.72265625,1.5390625,-0.75390625,0.2734375,1.2734375,-1.21875,0.6796875,0.30859375,0.59375,-0.859375,0.7734375,-1.1484375,0.80078125,-0.40625,0.64453125,-0.64453125,-1.1328125,3.453125,-0.76171875,-1.1796875,0.328125,-1.015625,-1.0,-0.47070312,-1.2890625,-1.1171875,-0.38085938,1.1796875,0.7890625,-0.72265625,1.046875,-0.49804688,0.390625,0.34960938,0.73046875,-1.2890625,1.1484375,-0.053955078,0.08984375,0.28125,0.24609375,0.38085938,2.03125,-0.14257812,-0.033447266,-0.7265625,-0.0119018555,0.8359375,2.0625,1.796875,0.8515625,0.66796875 +7,0,6,0.5859375,1.3984375,-0.61328125,-0.51953125,-1.9140625,-0.7578125,1.0234375,0.9765625,0.18945312,0.011169434,0.115234375,0.43945312,-0.020263672,-0.828125,-0.51171875,1.8046875,-1.2578125,-0.82421875,0.34960938,0.27734375,0.45703125,-0.60546875,1.046875,0.3671875,1.28125,-0.51171875,-1.984375,-0.71875,0.5,-0.62890625,-0.73828125,-0.008300781,2.21875,-0.43554688,-0.625,-0.076660156,0.25976562,-1.28125,-0.51953125,-0.6796875,-0.4296875,0.18847656,0.29882812,-0.09814453,-0.73046875,0.15429688,0.37890625,0.66015625,-0.28125,-0.20117188,0.89453125,0.546875,-3.75,-0.15429688,1.15625,1.71875,-0.14941406,0.34179688,0.47265625,-0.095703125,-1.046875,-1.1171875,1.0390625,0.33007812,1.6015625,-0.375,-0.234375,-0.34765625,0.040771484,0.35351562,-0.32421875,1.125,-0.04248047,-0.98828125,2.453125,0.83203125,0.88671875,-0.12988281,-1.4375,0.34375,0.59375,-0.28125,1.53125,0.125,0.37304688,0.0019226074,-1.203125,1.1328125,1.6015625,-0.24707031,0.875,-0.3515625,0.99609375,0.5234375,-1.2734375,0.57421875,-0.83984375,1.828125,-1.3984375,0.35742188,0.33984375,0.97265625,-0.5625,0.71875,-0.62109375,-0.2109375,-1.6875,-1.75,-0.29101562,0.33398438,-1.46875,-2.296875,0.3046875,-0.20117188,-1.4140625,1.15625,-0.671875,1.03125,-1.140625,-0.546875,-0.12988281,0.41210938,-1.203125,-1.3359375,0.49023438,0.76171875,-1.625,-0.09667969,-0.18652344,-1.125,1.140625,-0.23144531,-0.11035156,-2.171875,-0.76171875,-0.66796875,1.6484375,0.048339844,-1.4296875,-2.796875,1.4453125,0.15136719,-1.390625,-1.21875,-0.328125,-0.44921875,0.40039062,0.77734375,2.25,1.96875,-0.5390625,-1.0703125,0.17382812,-0.31835938,-0.23925781,-1.2734375,1.234375,0.084472656,0.9921875,0.099121094,-0.27539062,-0.071777344,0.22949219,-0.40625,-1.15625,0.625,-0.515625,-1.375,0.57421875,0.46679688,0.84765625,0.61328125,-0.80078125,0.80859375,-1.59375,1.1328125,2.75,-0.35351562,1.6796875,1.8984375,-0.25195312,0.6484375,0.62109375,-1.0234375,0.045898438,-1.046875,0.4921875,-0.08691406,0.83984375,-0.041259766,0.18652344,0.96875,-0.012329102,0.3125,-1.09375,-0.20605469,0.014526367,2.0,1.0703125,0.028442383 +7,0,7,0.96484375,0.67578125,-1.0078125,-0.94921875,0.052734375,-0.69921875,-0.15136719,1.9921875,0.83203125,0.625,-1.328125,1.8359375,-0.36328125,1.1484375,0.020385742,0.7734375,0.62109375,-0.359375,0.87109375,1.421875,0.23535156,-0.052490234,-0.75390625,-0.328125,-0.6171875,1.3828125,-0.6484375,0.028320312,0.8984375,-2.203125,0.5625,1.7890625,1.1796875,0.16015625,-0.59765625,-0.41601562,0.22558594,1.4609375,0.09033203,-0.10644531,-0.984375,-0.07714844,-0.53515625,0.49414062,0.265625,0.049804688,-0.23828125,-0.33398438,0.06640625,0.17578125,0.099609375,-1.3828125,-0.359375,-0.7421875,0.068847656,0.50390625,-1.6484375,0.15234375,0.28125,-0.63671875,-1.1484375,-0.68359375,1.6171875,-0.34179688,0.45117188,0.55859375,0.25585938,-0.18066406,-0.29882812,1.0390625,0.21972656,2.109375,-0.87109375,-0.7421875,0.8671875,1.5859375,0.16894531,-0.81640625,-2.859375,0.7109375,1.609375,0.578125,1.84375,2.0625,-0.66796875,0.8046875,-0.6796875,-0.65234375,-0.5625,1.375,1.1484375,1.0,-0.16894531,1.2890625,0.021972656,0.111328125,-1.6328125,1.03125,-0.13085938,0.453125,0.66796875,-0.50390625,-0.48828125,-0.34570312,-0.6015625,0.94140625,-0.34570312,-0.91015625,-1.71875,-0.87109375,-0.17871094,-0.47070312,1.5859375,-0.83203125,-0.15234375,-1.0859375,0.21191406,0.19140625,0.8984375,0.80859375,1.2265625,0.06738281,-1.0703125,-0.77734375,-0.47070312,0.734375,-0.17871094,-0.234375,1.2265625,-0.5390625,0.8984375,-1.859375,0.29101562,-1.1640625,-1.359375,0.7734375,-1.578125,0.16699219,0.22167969,-2.0625,0.072265625,-0.13183594,-1.359375,1.2421875,-0.24023438,0.06738281,-0.53515625,1.71875,0.22167969,-1.875,1.5703125,-2.09375,0.34765625,0.20410156,0.1484375,0.46875,1.4140625,0.67578125,-0.54296875,0.23144531,-1.5703125,2.25,-0.83203125,0.796875,1.1640625,-0.78515625,-0.484375,-2.859375,0.23730469,1.2421875,-0.55859375,0.7421875,-1.1171875,1.3203125,0.09326172,1.703125,0.22558594,-1.4921875,-0.765625,0.8203125,-0.609375,0.51953125,-0.41992188,0.47460938,-1.7109375,0.29882812,-1.6953125,-2.046875,1.484375,-0.98046875,-1.5703125,-0.92578125,-1.5390625,0.48046875,0.072265625,0.06640625,0.24023438,-0.37890625,-0.85546875,1.265625 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv index 28d6a225..3da2498e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,5,1.7890625,0.8515625,0.26367188,-0.18652344,-0.059570312,-0.56640625,-1.6015625,0.59375,-0.08984375,0.57421875,0.33789062,0.31445312,-0.14648438,-0.13574219,-0.07714844,-0.35351562,-1.2109375,-2.171875,0.78515625,0.74609375,1.9453125,-1.28125,-1.265625,-0.16308594,1.609375,-0.068359375,-0.010253906,-0.359375,-0.515625,-0.36328125,-1.2109375,0.22558594,0.65234375,-0.60546875,0.52734375,-1.5234375,0.31640625,-0.52734375,-2.140625,-0.005493164,1.4609375,-0.8359375,-0.59375,0.43164062,-1.7734375,-0.20800781,-0.359375,0.34179688,1.953125,0.328125,0.14746094,-0.33984375,-1.484375,1.1171875,-0.78515625,0.8125,0.44726562,1.390625,0.7890625,-0.640625,-1.125,-1.0390625,-0.087402344,1.1875,1.2109375,0.4140625,-0.41992188,-2.0625,1.6796875,0.765625,0.28125,1.328125,-0.79296875,-1.109375,2.734375,1.625,-0.16113281,0.22949219,-0.35351562,-0.067871094,-1.0390625,0.3984375,-0.012390137,1.078125,0.27734375,-1.5390625,0.049804688,2.453125,0.109375,1.2734375,-0.296875,0.21386719,1.7578125,-0.41601562,-0.9921875,-0.30664062,0.70703125,1.46875,0.578125,-0.19824219,1.4609375,1.046875,-0.91015625,0.15527344,0.27734375,-0.08642578,-0.8125,-0.6796875,0.14453125,0.4609375,-0.24023438,0.10253906,0.008056641,-1.703125,-0.92578125,0.51171875,-0.875,0.58203125,-1.5625,0.203125,0.21582031,0.38476562,-2.171875,-0.984375,-1.1875,0.625,-0.36914062,1.0859375,0.42773438,-0.19824219,1.984375,-0.98828125,0.58984375,-0.546875,-0.65234375,0.23535156,1.015625,0.18164062,-0.21875,-1.953125,1.3515625,2.703125,-0.33007812,-0.671875,-1.484375,0.8203125,0.21777344,0.86328125,1.4921875,0.96484375,0.40039062,-0.24414062,0.95703125,-0.69921875,-1.7890625,-0.38085938,-0.045410156,-0.7890625,0.5703125,-0.20214844,0.37890625,0.33789062,-0.41210938,-1.2265625,1.7265625,0.119140625,0.29101562,-0.18261719,-1.828125,1.734375,0.32226562,0.8359375,-0.703125,-0.9140625,-1.2578125,1.8203125,0.25,-0.578125,0.35742188,-0.8828125,1.515625,0.734375,-0.19628906,-1.765625,-1.671875,-0.96484375,-0.21289062,-0.48046875,0.7890625,-0.14941406,-0.61328125,-1.421875,-0.49023438,-1.2890625,-0.16992188,-0.65625,-1.7109375,1.203125,1.2421875,0.9375 -8,0,6,1.46875,1.421875,0.018798828,0.24511719,0.045898438,-0.7265625,0.734375,0.81640625,1.0546875,-0.8203125,1.5703125,1.234375,-0.8359375,-0.89453125,0.21972656,0.265625,-0.671875,-0.91796875,0.71875,0.515625,-0.05517578,-0.74609375,-0.20214844,1.4765625,-0.029174805,0.58203125,-2.265625,-0.14355469,-0.2578125,0.51953125,-0.84375,-0.21972656,0.4375,-0.796875,1.2734375,0.09326172,0.6328125,-0.38867188,0.025390625,1.40625,-0.45117188,1.0859375,-0.17675781,-1.90625,-1.234375,-1.03125,0.1953125,-0.53515625,1.390625,0.65234375,0.734375,-0.7421875,-0.703125,0.61328125,0.3828125,0.48632812,0.7890625,-1.046875,-1.1796875,0.064453125,1.4453125,0.6484375,-0.18847656,0.96484375,0.44140625,-1.3125,0.51953125,0.21972656,-0.8203125,0.36914062,-0.5703125,0.6484375,0.94140625,-0.62109375,1.703125,0.703125,1.6171875,1.3125,-0.125,0.20117188,-0.4921875,-1.03125,0.7109375,-2.234375,0.31445312,0.020019531,0.46679688,-0.37890625,1.25,0.21484375,0.625,-0.76171875,-0.80078125,1.171875,-1.2109375,-0.65625,-2.71875,0.93359375,-0.73046875,-0.016357422,-0.8125,1.4375,0.13476562,0.091308594,-0.27929688,1.3828125,-0.49804688,0.46289062,-1.1328125,0.32617188,-0.20117188,-0.19433594,1.390625,-0.111816406,1.078125,2.03125,-0.5546875,-0.09765625,-0.46289062,-0.765625,0.328125,-0.78125,-0.35546875,-0.87109375,-1.6796875,2.5,-1.0859375,-0.68359375,0.33007812,-0.890625,1.5234375,-1.546875,-0.16894531,0.029541016,-1.53125,0.45507812,1.4140625,-0.29296875,0.22167969,-2.078125,1.96875,-0.765625,-1.6875,1.625,0.6875,-0.296875,0.83984375,-0.28515625,-0.25585938,1.078125,-1.5078125,-1.546875,0.92578125,-1.421875,0.5625,1.171875,1.4375,-1.3203125,0.7578125,0.092285156,-0.20605469,1.546875,2.0625,1.71875,-0.74609375,0.17480469,-0.56640625,0.34179688,0.31640625,0.23730469,-0.8203125,-0.0859375,-1.890625,-0.3203125,-1.3203125,0.94140625,1.3125,-0.96875,0.44726562,-0.14941406,-1.1328125,-1.4296875,-0.33203125,-1.859375,-0.8046875,0.33007812,-0.22753906,0.20117188,-1.4296875,-2.015625,-0.44335938,1.484375,-1.2890625,-1.1953125,-1.3046875,2.15625,0.875,0.9453125,-0.375,-0.4375 -8,0,7,1.640625,1.9765625,0.36132812,0.13574219,-1.796875,-0.22851562,-1.4921875,1.5546875,1.421875,-2.71875,2.03125,-0.84765625,-0.49609375,1.3125,-0.22363281,0.5234375,0.36523438,0.37304688,1.71875,0.08935547,-0.72265625,-0.111328125,-0.54296875,-0.234375,-0.703125,-0.5859375,-0.35742188,-0.31835938,-0.19824219,-0.6171875,-0.4765625,0.46679688,0.5703125,0.75,0.80078125,-0.14648438,1.7265625,0.68359375,-0.62109375,1.8515625,-1.578125,-0.22265625,0.19042969,2.328125,0.033447266,0.62890625,-0.71875,0.453125,0.052734375,-0.037841797,-0.56640625,-0.14257812,-0.22851562,-0.359375,-0.53125,-0.16796875,0.7265625,0.5546875,-1.1953125,0.33789062,0.38867188,0.875,1.1484375,-0.33984375,1.0703125,-0.11035156,0.3203125,-1.640625,-0.60546875,-0.15039062,-0.44921875,-0.27148438,0.38476562,-0.14746094,-0.94921875,0.734375,0.14453125,0.35546875,-1.6484375,1.2265625,-1.125,-0.75390625,1.078125,-1.8125,0.23242188,-0.12207031,0.48632812,-1.546875,-0.28515625,0.47265625,1.34375,1.53125,-0.12988281,1.0,-0.89453125,-0.23535156,-0.63671875,0.31835938,-0.04248047,-0.16503906,-1.875,0.83984375,1.5,-2.171875,0.53515625,1.3828125,-1.0390625,-0.12695312,-0.107910156,-0.0014190674,0.2265625,-0.15820312,1.6640625,-0.42578125,0.53515625,0.20214844,-0.51171875,-0.17089844,-0.48632812,0.65234375,1.3359375,-0.828125,-0.0040893555,-1.59375,-0.9765625,0.48632812,0.5390625,-1.328125,-0.421875,1.6953125,-0.67578125,1.0234375,-0.9921875,1.0859375,-2.21875,1.390625,0.98828125,-0.4609375,-0.66796875,-2.046875,1.5703125,-1.125,-0.9453125,0.09326172,-0.16699219,0.031982422,0.22851562,0.0035095215,0.0031433105,1.28125,-1.1875,-0.33789062,0.98046875,-0.375,-0.9453125,0.5625,1.0546875,-0.052734375,0.3359375,0.20703125,-0.71875,0.15820312,0.14355469,0.33007812,-0.41015625,0.8125,-0.7421875,0.7265625,0.5390625,-1.9609375,-1.984375,-1.0859375,-2.328125,-0.75,0.5625,2.296875,0.578125,-0.23632812,0.032470703,-0.76171875,0.69140625,-0.19628906,-0.8671875,-0.4140625,-0.734375,0.22460938,0.66796875,1.2109375,-0.23046875,-0.14550781,-0.18359375,-0.53515625,0.22753906,-1.546875,-3.125,2.109375,3.0625,0.58984375,-0.25195312,0.73046875 +8,0,5,1.0703125,0.25,-0.16601562,-0.29296875,0.10986328,-0.42382812,-1.28125,0.7890625,0.23828125,0.46875,0.1328125,0.921875,1.2421875,-0.13574219,-0.56640625,-0.12792969,-1.078125,-2.234375,0.93359375,0.21386719,1.78125,-1.03125,-1.2890625,-0.20898438,1.4140625,-0.30078125,-0.71484375,-0.010803223,0.25585938,-0.14355469,-0.84375,-0.61328125,1.953125,-0.94140625,-0.9296875,-0.41601562,0.09277344,-1.140625,-2.59375,-0.46484375,0.4453125,-0.87890625,-0.70703125,-0.29882812,-1.2265625,0.5234375,-0.31835938,0.50390625,1.7578125,1.4375,-0.27148438,0.359375,-1.6640625,1.2578125,-0.103515625,0.38085938,-0.5,1.8828125,0.7109375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.859375,0.41601562,0.94140625,1.421875,1.21875,-0.41601562,-0.94921875,2.90625,1.78125,-0.35546875,-0.111816406,-0.49804688,0.27148438,-0.34179688,0.26953125,-0.0005874634,2.359375,-0.48046875,-0.58984375,-0.4140625,2.5,1.0546875,0.92578125,0.8125,0.54296875,0.81640625,0.06689453,-0.84375,-0.13574219,0.5546875,1.0390625,0.51171875,-0.94140625,0.19335938,1.0390625,-0.46875,0.36914062,-0.16503906,0.76953125,-1.171875,-1.140625,0.37695312,0.33203125,-1.015625,-0.15625,-0.55859375,-1.9453125,-1.78125,0.103515625,-0.625,1.2109375,-1.265625,0.4453125,0.61328125,0.41210938,-2.21875,-1.359375,-0.8046875,0.18652344,-0.5625,0.43359375,0.6640625,-0.6328125,1.7734375,-0.25,0.14355469,-1.5,-0.65625,0.5703125,0.5546875,0.19335938,-0.74609375,-2.5,1.078125,2.578125,-0.71484375,-1.21875,-1.265625,1.21875,0.32421875,-0.15722656,0.32226562,0.60546875,0.55859375,0.98046875,0.6328125,-0.6171875,-0.78125,-1.453125,0.28710938,-0.05053711,1.171875,-0.65625,0.36132812,0.57421875,0.075683594,-1.0625,0.5859375,-0.28515625,0.578125,-0.74609375,-1.28125,1.265625,0.14160156,0.65234375,-0.90234375,-0.53515625,-1.7109375,1.84375,-0.17773438,-0.5859375,0.079589844,-0.484375,1.25,0.40429688,0.8203125,-0.6796875,-1.0703125,-1.5625,0.18847656,0.36328125,0.69140625,0.625,-0.29882812,0.3671875,0.80078125,-0.93359375,-0.640625,-1.8515625,-0.6953125,1.2578125,1.0234375,0.7265625 +8,0,6,0.87109375,0.9921875,-0.1796875,0.12597656,0.08154297,-0.609375,0.7578125,1.0703125,1.0703125,-0.796875,1.328125,1.546875,0.051757812,-1.03125,-0.14355469,0.296875,-0.6796875,-1.0078125,0.83984375,0.33398438,0.026855469,-0.36523438,-0.24609375,1.625,-0.18261719,0.14550781,-2.78125,0.21289062,0.3125,0.7890625,-0.5078125,-0.8984375,1.3671875,-0.7734375,0.578125,0.59375,0.53125,-0.94140625,-0.22167969,1.078125,-1.203125,1.1171875,-0.33984375,-2.40625,-0.8671875,-0.78515625,0.26171875,-0.22851562,1.296875,1.6015625,0.55859375,-0.47460938,-0.92578125,0.67578125,0.47460938,0.265625,0.19921875,-0.515625,-1.0625,-0.033935547,1.46875,0.2109375,0.6328125,0.859375,0.50390625,-0.43359375,-0.14160156,0.5625,-1.359375,0.67578125,-0.099121094,0.54296875,0.84765625,-0.42578125,1.8359375,0.8046875,1.390625,1.0546875,-0.35351562,0.37304688,-0.083984375,-1.1328125,0.83984375,-1.4453125,-0.45507812,0.36523438,-0.03149414,-0.036132812,1.7578125,0.19042969,1.3515625,-0.5390625,-1.03125,1.25,-1.1015625,-0.59375,-2.734375,0.49414062,-0.59765625,-0.3671875,-1.4609375,1.1640625,0.37890625,0.19628906,-0.59765625,1.8359375,-0.75390625,0.16796875,-1.15625,0.30859375,-0.56640625,-0.42773438,0.91796875,-0.25976562,0.36328125,1.765625,-0.5078125,0.5546875,-0.16015625,-0.44335938,0.578125,-0.625,-0.49023438,-0.9375,-1.328125,2.109375,-1.265625,-1.046875,0.71484375,-1.28125,1.3203125,-1.21875,-0.6875,-0.76953125,-1.6015625,0.6484375,1.09375,-0.52734375,0.05908203,-2.46875,1.703125,-0.94921875,-1.765625,1.375,0.7109375,-0.04321289,0.8671875,-0.89453125,-1.1640625,0.9140625,-1.2890625,-0.703125,0.68359375,-1.015625,1.1171875,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.06933594,1.65625,2.453125,1.453125,-1.5234375,0.099121094,-0.54296875,0.08496094,0.859375,-0.15527344,-1.015625,-0.29492188,-1.640625,-0.14941406,-1.5390625,1.0390625,0.90625,-1.1640625,0.29492188,0.049804688,-1.2734375,-1.40625,0.53515625,-1.0,-0.45507812,0.24609375,0.021606445,0.56640625,-1.6171875,-1.6328125,-0.23535156,2.46875,-0.36914062,-0.97265625,-1.5625,1.03125,1.4921875,1.09375,-0.41992188,-0.59375 +8,0,7,1.2578125,1.5546875,0.1015625,-0.2578125,-1.5859375,-0.019165039,-1.328125,1.4375,1.4140625,-2.65625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.4921875,0.46875,0.2890625,0.40625,1.859375,-0.015991211,-0.8046875,-0.036132812,-0.390625,-0.25,-0.86328125,-1.0625,-0.71484375,-0.22070312,0.099121094,-0.20605469,-0.25195312,0.016601562,1.0546875,0.71484375,0.09716797,0.29101562,1.40625,0.14648438,-0.88671875,1.6953125,-2.3125,-0.22265625,0.114746094,2.140625,0.25976562,0.91796875,-0.87109375,0.7109375,-0.061767578,0.88671875,-0.64453125,-0.08984375,-0.3515625,-0.24902344,-0.41601562,-0.45507812,0.19433594,0.80859375,-1.1328125,0.16601562,0.546875,0.65625,1.65625,-0.40820312,1.3671875,0.43164062,-0.36328125,-1.265625,-0.98046875,0.079589844,-0.27148438,-0.23730469,0.6171875,0.037841797,-0.91015625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66015625,0.953125,-1.2265625,-0.18066406,0.33398438,0.24511719,-1.3046875,0.103515625,0.51171875,1.9453125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.68359375,0.004760742,0.19335938,-0.703125,-2.390625,0.87890625,1.7265625,-1.7421875,0.03515625,1.546875,-1.1171875,-0.46289062,0.0546875,0.20410156,-0.08935547,-0.3125,1.3359375,-0.73046875,0.06542969,0.080566406,-0.3828125,0.24902344,-0.25390625,0.859375,1.6484375,-0.56640625,-0.15429688,-1.796875,-0.515625,0.20117188,0.39257812,-1.5625,-0.11816406,1.390625,-0.890625,1.109375,-1.3984375,0.6484375,-2.078125,1.515625,0.90625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.76171875,0.033691406,-0.19140625,0.20507812,0.48046875,-0.59375,-0.7578125,1.234375,-1.3984375,0.296875,0.58203125,-0.119628906,-0.31835938,0.09667969,1.1953125,0.34570312,0.52734375,0.037353516,-0.67578125,0.16699219,0.4375,0.13085938,-1.2578125,0.83984375,-0.6015625,0.6796875,0.66796875,-2.015625,-2.109375,-1.3359375,-2.171875,-0.49023438,0.34765625,2.296875,0.36914062,-0.52734375,0.037597656,-0.4453125,0.64453125,-0.27929688,-0.2578125,0.20898438,-0.38476562,0.14160156,0.91796875,1.4375,-0.47265625,0.045410156,0.080566406,0.25976562,0.78125,-1.4140625,-3.125,1.2578125,3.359375,0.64453125,-0.44726562,0.49609375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv index 4477b4bf..5c971edd 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,5,1.7421875,0.86328125,0.08642578,0.15820312,-0.040771484,-0.63671875,0.12792969,1.234375,0.028320312,-2.0,1.1875,0.027832031,-1.6875,-0.94921875,0.26953125,0.6015625,-1.03125,0.66796875,-0.765625,0.12792969,-0.055419922,0.2890625,-0.49804688,-0.484375,-0.30664062,-0.3125,-1.6875,0.110839844,-1.2265625,-0.2265625,-1.5390625,-0.38867188,-1.2421875,0.58984375,-0.061035156,-0.70703125,0.6015625,-0.100097656,0.34570312,0.9609375,0.8046875,0.328125,1.0859375,2.4375,-0.20410156,-0.33007812,-0.09033203,0.026245117,-2.28125,-0.984375,0.48242188,-1.203125,-1.53125,-0.26171875,-1.1171875,0.032226562,1.4609375,1.3046875,-0.7578125,-1.5546875,-0.27734375,1.453125,-0.9140625,0.33984375,0.984375,-0.46875,0.66796875,-0.63671875,0.74609375,0.21972656,-0.40429688,-1.7578125,-0.018676758,-1.15625,-0.053222656,1.4453125,2.109375,-0.07470703,0.27148438,-0.050048828,-0.24707031,0.68359375,-0.078125,-1.703125,0.9765625,0.640625,0.6015625,-2.0,-0.07421875,0.84765625,0.12060547,0.94921875,1.0546875,0.953125,-0.890625,-0.5390625,-1.046875,0.35546875,0.30664062,0.86328125,2.109375,0.41992188,-1.0703125,-0.53515625,0.9765625,-1.0859375,-0.484375,-0.36523438,0.73046875,-0.671875,-0.44140625,1.96875,0.41992188,1.0234375,0.63671875,0.47265625,-0.068359375,0.16503906,-0.51953125,0.875,0.92578125,-1.6953125,-0.74609375,-0.43554688,0.20117188,0.28320312,0.29492188,-0.71484375,-1.515625,-0.009338379,0.76953125,-1.0390625,-0.1640625,1.4453125,-0.64453125,1.0546875,0.12597656,-0.40039062,0.9375,-2.34375,1.6328125,-0.73046875,-1.2890625,0.15332031,1.59375,0.39453125,-1.0234375,0.76171875,2.90625,3.0,-0.89453125,-1.6015625,-2.421875,1.65625,-0.5078125,1.171875,0.0107421875,0.5625,-0.8359375,0.36132812,-0.94140625,0.828125,0.23046875,1.5625,-0.9609375,0.25195312,-0.82421875,0.37304688,0.56640625,-0.98046875,0.23339844,-1.265625,1.640625,-0.86328125,0.026611328,-0.091308594,0.55078125,-0.16699219,0.890625,-0.6875,-0.24023438,0.390625,0.58203125,-0.43945312,-0.34375,1.0703125,0.578125,0.36328125,1.5078125,-2.296875,-0.3203125,-0.671875,-0.24804688,-1.7578125,-1.265625,2.09375,0.09326172,-0.671875,-0.21484375,-0.4140625 -9,0,6,1.1328125,1.78125,0.05908203,-0.7734375,0.39453125,-0.114746094,0.078125,-1.1640625,2.09375,-1.5390625,2.453125,-1.359375,-1.0234375,0.3359375,0.5703125,-0.26171875,-0.88671875,-0.73046875,0.6015625,0.29101562,0.28320312,-0.859375,0.9296875,-0.28710938,-1.1015625,-1.28125,0.2578125,0.033447266,-0.8203125,0.43554688,0.43945312,0.041992188,0.087890625,1.015625,0.65625,-0.37890625,0.9453125,1.9140625,-0.4296875,0.35546875,0.65234375,0.07861328,1.015625,1.28125,-1.3046875,0.17480469,0.1875,-1.4140625,-1.515625,0.6328125,0.40234375,-0.49414062,-0.05517578,0.49609375,0.20214844,-0.32421875,0.84375,1.0078125,0.08691406,-0.32226562,0.83203125,2.09375,-0.84765625,0.87109375,1.2421875,-0.15332031,-0.27539062,-1.125,0.84375,0.875,-1.484375,0.5703125,0.052490234,-0.73046875,-0.44921875,-0.08935547,-0.16601562,-0.67578125,-0.2578125,1.0,0.053955078,0.23535156,0.57421875,1.625,1.0625,-0.6640625,-1.7109375,-0.9609375,0.8828125,-0.20996094,1.6875,-0.62890625,1.5859375,-0.111328125,-0.36914062,-0.19140625,-1.0625,0.47265625,-0.86328125,-1.078125,0.13476562,-0.70703125,1.46875,-0.5859375,0.10498047,0.15039062,-1.5390625,0.55859375,-0.0859375,-0.45507812,0.19628906,2.296875,-0.46484375,-2.0,0.14941406,0.8359375,-1.265625,-0.17773438,-0.36328125,-0.38085938,0.075683594,-1.3125,-0.26757812,-1.578125,-1.71875,2.421875,-1.5546875,-0.27539062,-0.66796875,-0.22851562,1.1796875,-0.032958984,-0.32421875,0.60546875,-1.40625,2.03125,-0.65234375,1.109375,1.046875,-0.8671875,1.359375,0.30859375,-0.55078125,2.234375,0.15234375,-1.5703125,-0.3125,0.029663086,-0.3359375,0.22753906,-0.6796875,-1.5390625,-0.1796875,0.0045166016,-1.140625,0.66015625,0.58984375,-0.8203125,-1.09375,2.15625,-0.28515625,-0.546875,1.3203125,1.6875,-0.94140625,1.890625,-1.0546875,1.4140625,-0.4921875,-0.076171875,-1.3203125,0.107910156,-0.26757812,-1.390625,1.0703125,0.1484375,0.14648438,-2.40625,-0.66015625,-2.03125,1.5234375,0.55078125,-0.48632812,0.1953125,-1.4765625,1.9140625,-1.734375,-1.28125,-0.296875,0.68359375,0.84765625,0.265625,-0.62890625,0.30664062,-0.022216797,-1.59375,-0.73828125,-0.08886719,1.5234375,0.953125 -9,0,7,0.546875,0.875,0.71484375,-2.0625,-0.20117188,0.33203125,1.6484375,-0.9140625,1.4296875,-0.85546875,1.375,-1.3515625,0.859375,-0.30664062,0.2578125,0.890625,-0.08251953,-1.1015625,2.09375,-1.171875,-0.91015625,-1.328125,0.96484375,-0.3828125,-2.203125,-1.1953125,0.83203125,-1.0234375,-1.078125,1.2578125,0.37695312,-0.57421875,-0.53125,0.34570312,1.6796875,0.55078125,0.21582031,0.54296875,-1.7890625,1.4765625,-0.9453125,0.18945312,1.0,1.34375,0.6796875,0.70703125,-0.83984375,-0.88671875,-0.75,0.37695312,-1.8984375,0.703125,-0.8828125,1.8046875,-0.6875,0.6171875,0.90625,0.17480469,-0.27929688,-0.41796875,0.31054688,0.20214844,-1.671875,0.875,0.51171875,1.0234375,-0.29882812,-1.40625,-0.35351562,2.125,-1.40625,-0.7890625,-0.29492188,0.6875,-0.4609375,1.109375,1.7421875,0.0859375,0.03100586,-0.052490234,0.40625,0.8359375,0.28320312,0.7109375,0.59375,-1.40625,-0.20703125,-1.5234375,-0.46875,-0.5625,0.41796875,-0.24121094,-0.78125,-0.58203125,-1.765625,0.40039062,-0.546875,-0.34765625,-0.50390625,-0.30859375,-0.796875,-0.029785156,2.40625,1.171875,0.94921875,1.0390625,-0.609375,-0.022583008,0.4609375,-0.80859375,0.890625,1.2734375,1.0859375,-2.203125,1.15625,-0.27734375,0.12792969,-0.48046875,-0.73828125,0.011169434,1.421875,-0.41015625,1.234375,-1.703125,0.47460938,0.33007812,-2.4375,-1.578125,-0.67578125,0.703125,0.8046875,0.40820312,0.8125,-1.2578125,0.734375,-0.08300781,-0.40820312,0.9375,0.15332031,-0.671875,2.453125,1.96875,-0.984375,1.6015625,-0.83203125,-0.75,0.1015625,0.6953125,-1.7890625,0.609375,-0.53125,-1.015625,0.22851562,-1.25,-1.796875,-0.34179688,0.68359375,-0.67578125,0.029663086,2.375,-1.8125,-0.24316406,1.296875,0.52734375,-0.57421875,-0.16992188,-0.359375,0.98046875,-0.3046875,0.65625,0.36523438,0.65625,-1.21875,-0.66015625,0.49414062,-0.22460938,1.0078125,-1.1015625,-0.25976562,-0.69921875,-0.40234375,-1.6015625,0.3203125,0.28320312,-1.109375,-0.018920898,0.09863281,-0.890625,-0.76171875,-0.020874023,-0.34570312,0.765625,0.13183594,0.0146484375,0.26953125,-0.15625,1.046875,-0.85546875,2.546875,0.60546875 +9,0,5,0.78515625,1.0,-0.059570312,0.65234375,0.36132812,-0.49804688,0.3359375,1.0859375,-0.15917969,-1.0625,0.72265625,-0.25,-1.125,-0.859375,-1.0546875,0.1484375,-1.0859375,1.375,-0.43554688,0.30078125,-0.025146484,0.79296875,-0.33203125,-0.13964844,-0.609375,-1.4765625,-2.765625,0.3125,-0.63671875,0.51171875,-1.046875,-1.1171875,-0.38476562,0.21972656,-0.63671875,-0.8984375,0.515625,-1.2578125,0.63671875,-0.103515625,-0.7578125,0.43945312,0.40039062,1.59375,0.29882812,0.69921875,0.05517578,0.29492188,-2.140625,0.8125,1.28125,-1.2890625,-2.296875,-0.14355469,-0.92578125,-0.44726562,0.078125,1.0078125,-0.2734375,-0.8125,-0.07763672,1.265625,-0.07373047,-0.17089844,1.3046875,-0.5859375,0.33789062,-0.0017471313,0.22070312,0.94140625,0.18164062,-2.015625,0.8984375,-1.1171875,-0.1328125,1.265625,1.765625,-0.13085938,0.22851562,-0.3671875,0.90234375,0.47265625,-0.17480469,-1.1015625,-0.4609375,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.62109375,1.6796875,0.8828125,0.59765625,-0.27734375,-0.20898438,-1.09375,0.80078125,0.12207031,0.60546875,1.6796875,0.67578125,-0.90625,-0.21289062,0.50390625,-0.35546875,-0.94921875,-0.52734375,0.42578125,-0.1640625,-1.59375,2.015625,0.07763672,0.5,-0.36328125,0.16796875,-0.47851562,1.578125,-0.30078125,1.4453125,1.4609375,-1.296875,-0.77734375,-1.03125,0.02319336,0.20605469,0.33789062,-1.0546875,-2.203125,0.18457031,0.22265625,-0.76953125,-0.85546875,0.21289062,0.2421875,1.0,-0.44335938,-1.109375,1.2421875,-1.90625,1.3515625,-0.5390625,-0.43945312,-0.1171875,1.1796875,0.33789062,-0.97265625,-0.119140625,2.203125,3.46875,-0.27929688,-0.75,-2.375,2.21875,-0.48828125,0.2421875,0.203125,1.265625,-1.4921875,0.44335938,-0.95703125,1.0625,0.66015625,1.7421875,-1.9296875,0.23339844,-1.265625,0.828125,1.2109375,-1.1484375,-0.06542969,-1.0703125,1.8359375,-0.80078125,-0.47851562,0.0008468628,0.040039062,-0.734375,1.21875,0.17675781,-0.5546875,0.31445312,1.546875,0.30664062,-0.068847656,0.44140625,1.296875,0.50390625,0.94921875,-2.96875,-0.12402344,-0.10107422,0.007446289,-1.2421875,-1.40625,1.6640625,1.234375,-0.5390625,-0.890625,-0.51171875 +9,0,6,-0.16699219,1.359375,-0.18457031,-0.94140625,0.55859375,0.32421875,0.57421875,-0.81640625,1.5859375,-1.4609375,2.109375,-1.296875,-0.46484375,-0.18066406,-0.43164062,-0.47851562,-1.0546875,0.03173828,0.9296875,0.640625,0.30664062,-0.98046875,1.2578125,0.07373047,-1.609375,-2.046875,-0.65234375,-0.01574707,-0.09667969,1.328125,0.62890625,-0.27734375,0.703125,0.83984375,0.111816406,-0.17480469,0.59375,0.64453125,-0.3046875,-0.0014801025,-0.45117188,0.5703125,1.046875,0.90625,-0.7265625,0.99609375,0.07324219,-1.6484375,-0.70703125,2.25,0.578125,-1.109375,-0.609375,0.84765625,0.34765625,-0.51171875,-0.010070801,1.09375,0.546875,-0.171875,0.96875,1.6875,0.20800781,0.5,1.0,0.24511719,-0.85546875,-0.8984375,0.24414062,0.9765625,-1.1015625,0.5,0.38867188,-0.53515625,-0.53515625,-0.34179688,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.091796875,-0.038085938,2.1875,0.28320312,0.020141602,-2.21875,-0.55078125,0.66796875,-0.13378906,2.203125,0.044921875,1.3203125,-0.72265625,-0.11621094,-0.049072266,-1.2109375,0.21386719,-0.81640625,-1.5390625,-0.41210938,-0.625,1.5078125,-0.45117188,-0.54296875,1.1015625,-2.03125,0.33007812,-0.21191406,-0.34179688,-0.49414062,2.109375,-0.43164062,-2.59375,-0.5859375,0.65625,-0.98046875,0.84765625,-0.24902344,0.13085938,0.5625,-1.1796875,0.025756836,-2.21875,-1.2734375,2.28125,-1.4609375,-0.70703125,-0.41601562,-0.38085938,1.0859375,0.07714844,-1.0546875,-0.0390625,-1.078125,2.34375,-0.5390625,0.62890625,0.72265625,-0.89453125,1.4296875,0.22265625,0.16894531,2.203125,0.0625,-1.0703125,-0.052246094,-0.75390625,-1.265625,0.6484375,-0.5,-0.65234375,-0.68359375,0.053466797,-0.87109375,-0.05078125,0.20214844,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.140625,-2.4375,1.921875,-0.78515625,2.03125,-0.028686523,-0.14941406,-1.2421875,-0.026245117,-0.484375,-1.1171875,0.6015625,0.33203125,-0.111816406,-2.6875,-0.49414062,-0.94140625,1.2890625,0.57421875,0.5078125,0.8046875,-1.0078125,1.7734375,-1.2734375,-0.25585938,-0.72265625,0.125,0.48828125,0.6640625,0.36328125,0.41796875,-0.12695312,-1.71875,0.2109375,-0.036132812,1.0078125,0.7265625 +9,0,7,-0.31445312,0.34179688,0.5546875,-2.0625,-0.029174805,0.671875,1.8046875,-0.69921875,1.0390625,-0.98046875,1.125,-1.3671875,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.043701172,-0.62890625,2.109375,-0.734375,-0.78125,-1.40625,1.25,-0.15429688,-2.46875,-1.6171875,0.18457031,-0.79296875,-0.515625,1.65625,0.53125,-0.546875,-0.122558594,0.099121094,1.109375,0.7734375,-0.20898438,-0.14160156,-1.8046875,0.9609375,-1.53125,0.51953125,0.95703125,0.96875,0.59765625,1.3671875,-0.98828125,-1.1484375,-0.2265625,1.609375,-1.78125,0.25390625,-1.0,1.890625,-0.25195312,0.62109375,0.20898438,0.28125,-0.047851562,-0.34375,0.60546875,-0.043945312,-0.70703125,0.52734375,0.6328125,1.421875,-0.7890625,-1.1015625,-0.98828125,2.109375,-1.109375,-0.57421875,0.080078125,0.859375,-0.4140625,0.76953125,1.5703125,0.1953125,-0.21386719,0.2265625,1.125,0.4609375,-0.16308594,1.2578125,0.16894531,-0.82421875,-0.65625,-1.28125,-0.5703125,-0.32421875,0.875,0.037109375,-0.83984375,-1.0078125,-1.5390625,0.484375,-0.5703125,-0.60546875,-0.25195312,-0.62109375,-1.375,0.06225586,2.3125,1.1796875,0.17480469,1.7734375,-0.9296875,-0.10449219,0.53515625,-0.79296875,0.40039062,1.015625,0.90234375,-2.59375,0.54296875,-0.34179688,0.28515625,0.18945312,-0.76953125,0.53515625,1.75,-0.38671875,1.234375,-2.0625,0.83203125,0.15625,-2.140625,-1.6171875,-0.19238281,0.24707031,0.71875,0.68359375,0.32617188,-1.515625,0.578125,0.40234375,-0.25585938,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25585938,1.7109375,-0.87109375,-0.35546875,0.18945312,-0.15332031,-2.421875,0.66015625,-0.5390625,-0.13867188,-0.41210938,-1.2578125,-1.234375,-0.93359375,0.3359375,-0.07519531,-0.05444336,2.09375,-2.0625,-0.67578125,1.171875,-0.0077209473,-1.6875,-0.109375,-0.17285156,1.3515625,0.024414062,0.46679688,0.3515625,0.49804688,-1.375,-0.29296875,0.03564453,-0.14941406,0.765625,-1.2890625,-0.25390625,0.11279297,-0.27539062,-1.140625,1.0390625,0.79296875,-0.63671875,-0.17382812,0.3671875,0.021606445,-1.1484375,-0.17089844,-0.54296875,1.203125,1.2578125,0.13671875,-0.030883789,-0.45703125,1.34375,-0.6875,2.0625,0.5859375 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv index 3841e07f..fb1845ae 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -1,8,124 -1,9,124 -1,10,124 -1,11,124 -1,12,124 +1,8,113 +1,9,113 +1,10,113 +1,11,113 +1,12,113 1,13,113 -1,14,124 -1,15,124 -1,16,124 -1,17,124 -1,18,124 -1,19,124 -1,20,124 -1,21,124 -1,22,124 -1,23,124 -1,24,124 -1,25,124 -1,26,124 -1,27,124 +1,14,113 +1,15,113 +1,16,113 +1,17,113 +1,18,113 +1,19,113 +1,20,113 +1,21,113 +1,22,113 +1,23,113 +1,24,113 +1,25,113 +1,26,113 +1,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv index 58d912fa..b59ddd38 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId 2,8,103 -2,9,124 -2,10,103 -2,11,124 -2,12,103 -2,13,124 -2,14,124 -2,15,124 -2,16,124 -2,17,124 -2,18,124 -2,19,124 -2,20,124 -2,21,124 -2,22,124 -2,23,124 -2,24,124 -2,25,124 -2,26,124 -2,27,124 +2,9,122 +2,10,122 +2,11,122 +2,12,122 +2,13,122 +2,14,122 +2,15,122 +2,16,122 +2,17,122 +2,18,122 +2,19,122 +2,20,122 +2,21,122 +2,22,122 +2,23,122 +2,24,122 +2,25,122 +2,26,122 +2,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv index 081f39f9..ec95ae85 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv @@ -1,5 +1,5 @@ sequenceId,itemPosition,itemId -3,8,124 +3,8,103 3,9,124 3,10,124 3,11,124 @@ -19,23 +19,23 @@ sequenceId,itemPosition,itemId 3,25,124 3,26,124 3,27,124 -4,8,124 -4,9,124 -4,10,113 -4,11,113 -4,12,113 -4,13,113 -4,14,113 -4,15,113 -4,16,113 -4,17,113 -4,18,113 -4,19,113 -4,20,113 -4,21,113 -4,22,113 -4,23,113 -4,24,113 -4,25,113 -4,26,113 -4,27,113 +4,8,122 +4,9,122 +4,10,122 +4,11,122 +4,12,122 +4,13,122 +4,14,122 +4,15,122 +4,16,122 +4,17,122 +4,18,122 +4,19,122 +4,20,122 +4,21,122 +4,22,122 +4,23,122 +4,24,122 +4,25,122 +4,26,122 +4,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv index da076443..e689f7f2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -5,8,124 -5,9,103 -5,10,124 -5,11,124 -5,12,124 -5,13,124 -5,14,113 -5,15,124 -5,16,124 -5,17,124 -5,18,124 -5,19,124 -5,20,124 -5,21,124 -5,22,124 -5,23,124 -5,24,124 -5,25,124 -5,26,124 -5,27,124 +5,8,103 +5,9,122 +5,10,122 +5,11,122 +5,12,122 +5,13,122 +5,14,122 +5,15,122 +5,16,122 +5,17,122 +5,18,122 +5,19,122 +5,20,122 +5,21,122 +5,22,122 +5,23,122 +5,24,122 +5,25,122 +5,26,122 +5,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv index 541bd2be..0acf1d86 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv @@ -1,41 +1,41 @@ sequenceId,itemPosition,itemId -6,8,124 -6,9,124 -6,10,124 -6,11,124 -6,12,124 -6,13,124 -6,14,124 -6,15,124 -6,16,124 -6,17,124 -6,18,124 -6,19,124 -6,20,124 -6,21,124 -6,22,124 -6,23,124 -6,24,124 -6,25,124 -6,26,124 -6,27,124 -7,8,124 -7,9,124 -7,10,124 -7,11,124 -7,12,124 -7,13,124 +6,8,113 +6,9,113 +6,10,113 +6,11,113 +6,12,113 +6,13,113 +6,14,113 +6,15,113 +6,16,113 +6,17,113 +6,18,113 +6,19,113 +6,20,113 +6,21,113 +6,22,113 +6,23,113 +6,24,113 +6,25,113 +6,26,113 +6,27,113 +7,8,113 +7,9,113 +7,10,113 +7,11,113 +7,12,113 +7,13,113 7,14,113 -7,15,124 -7,16,124 -7,17,124 -7,18,124 -7,19,124 -7,20,124 -7,21,124 -7,22,124 -7,23,124 -7,24,124 -7,25,124 -7,26,124 -7,27,124 +7,15,113 +7,16,113 +7,17,113 +7,18,113 +7,19,113 +7,20,113 +7,21,113 +7,22,113 +7,23,113 +7,24,113 +7,25,113 +7,26,113 +7,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv index 79dc2ec9..a074f362 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId -8,8,103 -8,9,124 -8,10,103 +8,8,122 +8,9,122 +8,10,122 8,11,122 8,12,122 8,13,122 -8,14,122 +8,14,113 8,15,122 8,16,122 8,17,122 8,18,122 8,19,122 8,20,122 -8,21,122 -8,22,122 -8,23,122 -8,24,122 -8,25,122 -8,26,122 -8,27,122 +8,21,113 +8,22,113 +8,23,113 +8,24,113 +8,25,113 +8,26,113 +8,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv index 31db896c..c97879eb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId -9,8,103 -9,9,124 +9,8,113 +9,9,113 9,10,113 9,11,113 9,12,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv index c936861c..c3d900b3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,124 +1,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv index d279d22f..90765ba3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,124 -4,8,124 +3,8,103 +4,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv index 81899090..60a3b97e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,124 +5,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv index 25ad0933..953b3bbc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,124 -7,8,124 +6,8,113 +7,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv index bc91b117..f3ae7b5b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,103 +8,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv index b949bc17..ba964099 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,103 +9,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv index 8892a7bd..5158426c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId 1,6,122 -1,7,111 -1,8,117 +1,7,124 +1,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv index 8812ffc8..613c7045 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -2,6,122 +2,6,121 2,7,102 2,8,126 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv index 60c4449f..a4583793 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId -3,6,122 +3,6,121 3,7,109 -3,8,124 +3,8,102 4,6,127 4,7,119 4,8,120 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv index 6475d519..79312602 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId 8,6,104 -8,7,122 +8,7,121 8,8,112 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv index d566f05c..2ee41e48 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId 9,6,118 9,7,118 -9,8,103 +9,8,118 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv index c3d900b3..1213b475 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,113 +1,8,127 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv index 52479655..90765ba3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,113 -4,8,124 +3,8,103 +4,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv index 4e9004da..60a3b97e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,113 +5,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv index 953b3bbc..132c76ec 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,113 -7,8,113 +6,8,122 +7,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv index 346e8242..bc91b117 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,113 +8,8,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv index ba964099..824e36f4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,113 +9,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv index cbe044a8..84336320 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -1,6,122,6,1 +1,6,122,0,1 1,7,121,9,1 1,8,108,9,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv index c9b5b93b..f2206ac1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 2,6,121,6,1 -2,7,102,6,5 -2,8,112,3,0 +2,7,127,7,5 +2,8,112,4,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv index c39abddc..bba6a834 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 3,6,121,6,1 3,7,109,3,1 -3,8,110,2,6 -4,6,102,6,1 -4,7,119,1,1 -4,8,102,0,6 +3,8,110,0,2 +4,6,121,6,1 +4,7,121,3,1 +4,8,102,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv index f6da44a0..a3007f68 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -5,6,126,6,1 -5,7,113,6,0 +5,6,113,6,1 +5,7,113,4,0 5,8,121,4,5 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv index 71855096..3fe6eafb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -6,6,102,5,5 -6,7,118,5,1 -6,8,109,5,6 +6,6,102,4,5 +6,7,118,9,1 +6,8,121,4,6 7,6,109,3,1 -7,7,121,2,6 -7,8,119,5,7 +7,7,121,0,2 +7,8,108,5,7 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv index 03e17fbc..e453627c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -8,6,102,8,6 -8,7,121,6,1 +8,6,102,8,8 +8,7,121,4,1 8,8,121,3,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv index 59439ca4..62834e55 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -9,6,122,6,1 -9,7,118,4,4 +9,6,108,9,1 +9,7,118,4,8 9,8,103,4,8 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv index 7e8daf90..8302df2f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,113 +2,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv index 18e88ed1..3ee3129e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,113 +3,8,122 4,8,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv index 953b3bbc..c71ccfa4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 6,8,113 -7,8,113 +7,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv index 5aa808f6..7240bc4f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,113 +0,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv index c3d900b3..dea53fa9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,113 +1,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv index 7e8daf90..1616d64b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,113 +2,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv index 18e88ed1..a467ff6d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,113 -4,8,113 +3,8,122 +4,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv index 4e9004da..81899090 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,113 +5,8,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv index 953b3bbc..3e2fb799 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 6,8,113 -7,8,113 +7,8,128 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv index ba964099..56680af1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,113 +9,8,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv index 9576f383..f27b432d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,115 +0,8,100 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv index 598df3ba..53195e3d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,110 +2,8,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv index 04c6c551..b08ec867 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 3,8,115 -4,8,115 +4,8,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv index 3e9b1443..a620b023 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,115 +5,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv index f97711ff..ebfed34f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 6,8,115 -7,8,115 +7,8,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv index 0d49e5bc..ae1ba6f4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,115 +8,8,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv index 41144ce1..56680af1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,115 +9,8,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv index 9576f383..f27b432d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,115 +0,8,100 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv index 598df3ba..8302df2f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,110 +2,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv index 04c6c551..b08ec867 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 3,8,115 -4,8,115 +4,8,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv index 3e9b1443..a620b023 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,115 +5,8,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv index f97711ff..ebfed34f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId 6,8,115 -7,8,115 +7,8,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv index 0d49e5bc..a2894aea 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,115 +8,8,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv index 41144ce1..56680af1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,115 +9,8,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv index a7c99704..31f237e5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,109,6,0.035670765 +0,8,109,[other],0.00014168024 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv index d440d67e..5875e518 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,102,1,-0.094851345 +1,8,102,[unknown],-0.09726027 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv index 6c270219..7521792f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,[mask],9,-0.12064132 +2,8,[mask],[unknown],-0.12791729 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv index fc5d931d..9bf8759e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,103,4,0.08533255 -4,8,110,4,0.072973825 +3,8,103,4,0.043316968 +4,8,110,4,0.032937437 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv index 7d6c2949..c93e224e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,110,5,-0.04847882 +5,8,110,9,-0.075533785 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv index 9c8622d1..ddd61771 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,122,7,-0.012625184 -7,8,113,4,0.0941027 +6,8,122,7,-0.04820269 +7,8,113,[other],0.057539806 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv index d71ac4b8..2911647f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,110,7,-0.03440542 +8,8,110,[mask],-0.095947556 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv index 9a89327f..9ad6394e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,114,6,0.0070434585 +9,8,114,6,-0.0014844015 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv index b87c3693..09619471 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,102,6,0.035670765 +0,8,102,4,0.016973361 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv index d672e857..99102984 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,100,1,-0.094851345 +1,8,100,[unknown],-0.09465362 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv index cff9a2a5..b2187677 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,100,9,-0.12064132 +2,8,100,[unknown],-0.12798095 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv index e3a13c6f..2fbedb5c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,111,4,0.08533255 -4,8,109,4,0.072973825 +3,8,111,4,0.058097668 +4,8,128,4,0.047720857 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv index dcae774d..5063e0ad 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,102,5,-0.04847882 +5,8,102,6,-0.06665557 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv index 0ab95c0d..2740828e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,110,7,-0.012625184 -7,8,102,4,0.0941027 +6,8,110,7,-0.029965512 +7,8,102,4,0.083941795 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv index edf48cd7..a3fb49ac 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,[mask],7,-0.03440542 +8,8,128,0,-0.07864175 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv index b1aaa3c1..5d07e206 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,111,6,0.0070434585 +9,8,125,6,0.00074065477 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 314cd804..9216a636 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,0.045526013 -0,22,0.20925649 -0,23,0.28213653 -0,24,0.33005765 -0,25,0.3220708 -0,26,0.13737482 -0,27,0.20725977 -0,28,0.09843891 -0,29,-0.060299788 -0,30,-0.003611853 -0,31,0.045026835 -0,32,0.029302716 -0,33,-0.05430965 -0,34,-0.06728829 -0,35,0.009834763 -0,36,0.23521377 -0,37,0.08845534 -0,38,0.040534228 -0,39,0.050268207 -0,40,-0.2969103 -1,19,0.25617927 -1,20,0.21324992 -1,21,0.38596562 -1,22,0.37797877 -1,23,0.07298081 -1,24,-0.05381047 -1,25,0.03778875 -1,26,0.098938085 -1,27,-0.020615114 -1,28,-0.037088 -1,29,0.020941481 -1,30,-0.024234157 -1,31,0.1423666 -1,32,0.09594302 -1,33,0.07198246 -1,34,-0.112713516 -1,35,0.042281352 -1,36,-0.053560883 -1,37,-0.032595392 -1,38,0.102931514 -2,17,0.38596562 -2,18,-0.12868722 -2,19,0.10043562 -2,20,0.014514559 -2,21,0.15434688 -2,22,0.08995288 -2,23,0.14536166 -2,24,0.06599232 -2,25,0.15235017 -2,26,0.0074636657 -2,27,0.047772314 -2,28,0.24220227 -2,29,-0.00005520758 -2,30,0.07148328 -2,31,-0.028352378 -2,32,-0.10422748 -2,33,-0.070782535 -2,34,0.0664915 -2,35,-0.12369544 -2,36,-0.27095303 -3,17,0.13038632 -3,18,0.14036989 -3,19,0.37398535 -3,20,-0.042578958 -3,21,0.34603137 -3,22,0.26216942 -3,23,-0.1177053 -3,24,0.25617927 -3,25,-0.029849913 -3,26,-0.0600502 -3,27,0.10343069 -3,28,0.07048492 -3,29,-0.07228007 -3,30,-0.015623331 -3,31,-0.0010243154 -3,32,0.12589371 -3,33,0.19228444 -3,34,0.086957805 -3,35,0.003563835 -3,36,-0.004672607 -4,14,0.13038632 -4,15,0.04877067 -4,16,0.0894537 -4,17,0.054261632 -4,18,0.18928936 -4,19,0.053263277 -4,20,-0.10322913 -4,21,-0.14116667 -4,22,-0.25897273 -4,23,-0.039583888 -4,24,-0.068785824 -4,25,-0.112713516 -4,26,0.09943727 -4,27,-0.0018198809 -4,28,0.14036989 -4,29,-0.15813874 -4,30,0.09494466 -4,31,-0.07976775 -4,32,0.24719404 -4,33,0.0709841 -5,14,0.23321705 -5,15,0.37198862 -5,16,0.21524663 -5,17,0.26416612 -5,18,0.40193933 -5,19,0.07697424 -5,20,0.18729265 -5,21,0.22722691 -5,22,-0.043577317 -5,23,0.0550104 -5,24,-0.08925214 -5,25,0.00047516936 -5,26,-0.09324556 -5,27,-0.14216504 -5,28,-0.09973488 -5,29,-0.09374474 -5,30,-0.043826904 -5,31,-0.14216504 -5,32,0.04278053 -5,33,-0.17211573 -6,18,0.4438703 -6,19,0.022938194 -6,20,0.23022199 -6,21,0.4119229 -6,22,0.19927293 -6,23,0.12539454 -6,24,-0.11371187 -6,25,-0.021613471 -6,26,0.16033702 -6,27,0.23022199 -6,28,-0.1501519 -6,29,-0.058802254 -6,30,-0.028976351 -6,31,-0.1591371 -6,32,-0.106224194 -6,33,-0.022861416 -6,34,-0.03384334 -6,35,0.09344713 -6,36,-0.021987854 -6,37,-0.14016832 -7,15,0.12339783 -7,16,0.3041004 -7,17,-0.0067005185 -7,18,0.00015538326 -7,19,-0.09374474 -7,20,0.07198246 -7,21,0.034544088 -7,22,0.23321705 -7,23,-0.06778747 -7,24,0.0054045552 -7,25,0.020067917 -7,26,-0.032221008 -7,27,0.033545732 -7,28,-0.04806992 -7,29,-0.034342516 -7,30,-0.13417818 -7,31,-0.094743095 -7,32,-0.118204474 -7,33,0.16233373 -7,34,-0.09524228 -8,20,0.18329921 -8,21,0.116409324 -8,22,0.2921201 -8,23,0.0100843515 -8,24,-0.052812114 -8,25,0.07198246 -8,26,0.08595945 -8,27,-0.26096946 -8,28,-0.00040619232 -8,29,0.09993644 -8,30,-0.312884 -8,31,-0.12070037 -8,32,-0.13417818 -8,33,-0.18709108 -8,34,0.06898739 -8,35,0.010333941 -8,36,-0.00027359813 -8,37,0.011956271 -8,38,-0.12519297 -8,39,0.086957805 -9,16,0.25817597 -9,17,0.3939525 -9,18,0.12489536 -9,19,0.20126964 -9,20,0.40393606 -9,21,0.27215296 -9,22,0.14835674 -9,23,-0.006326135 -9,24,-0.14715682 -9,25,-0.058053486 -9,26,-0.058552664 -9,27,0.22023842 -9,28,-0.00056998525 -9,29,0.024810111 -9,30,0.10992001 -9,31,0.010833119 -9,32,0.038287926 -9,33,0.020567097 -9,34,0.12739125 -9,35,-0.18709108 +0,21,-0.11176976 +0,22,0.34597677 +0,23,0.26810494 +0,24,0.27209836 +0,25,0.26411152 +0,26,0.20620683 +0,27,0.10986541 +0,28,0.16327749 +0,29,0.084906496 +0,30,0.23715588 +0,31,-0.2280783 +0,32,0.08041389 +0,33,-0.15819333 +0,34,0.06743526 +0,35,0.0055371495 +0,36,-0.011310118 +0,37,-0.0062559377 +0,38,-0.18614732 +0,39,0.11385884 +0,40,0.20321175 +1,19,0.100880206 +1,20,0.36195046 +1,21,0.14430872 +1,22,0.29406223 +1,23,0.17126435 +1,24,0.056453336 +1,25,0.11335966 +1,26,-0.08231824 +1,27,0.08191143 +1,28,-0.31693202 +1,29,0.09788513 +1,30,0.084407315 +1,31,-0.12325086 +1,32,0.047468126 +1,33,-0.04812452 +1,34,-0.14221963 +1,35,-0.08581249 +1,36,0.013212016 +1,37,-0.18015718 +1,38,-0.096794404 +2,17,0.18623969 +2,18,0.056702927 +2,19,-0.09579605 +2,20,0.06793443 +2,21,0.10287692 +2,22,0.20520847 +2,23,0.023881953 +2,24,-0.027907796 +2,25,0.0060675265 +2,26,-0.19513254 +2,27,-0.10478126 +2,28,0.07941554 +2,29,0.07442375 +2,30,0.21419367 +2,31,-0.16917527 +2,32,-0.07033796 +2,33,-0.11326729 +2,34,-0.122751676 +2,35,-0.120754965 +2,36,-0.13822621 +3,17,0.2740951 +3,18,0.2092019 +3,19,0.3060425 +3,20,0.06444018 +3,21,0.19821997 +3,22,0.13033172 +3,23,0.066936076 +3,24,-0.109273866 +3,25,-0.049871642 +3,26,0.07592129 +3,27,-0.0027070923 +3,28,-0.042134378 +3,29,-0.09779277 +3,30,-0.011247721 +3,31,-0.043631915 +3,32,-0.061851922 +3,33,-0.027783003 +3,34,-0.23007502 +3,35,0.0060675265 +3,36,-0.015740326 +4,14,0.090896636 +4,15,0.16227913 +4,16,0.15728734 +4,17,0.10487363 +4,18,-0.042134378 +4,19,0.08340896 +4,20,0.13732022 +4,21,0.09788513 +4,22,-0.10178619 +4,23,-0.15519828 +4,24,-0.18315226 +4,25,-0.008658233 +4,26,0.00049856835 +4,27,-0.011122926 +4,28,0.07592129 +4,29,0.001980504 +4,30,0.027500995 +4,31,-0.05411466 +4,32,0.028374556 +4,33,0.01265044 +5,14,0.27010167 +5,15,0.22916903 +5,16,0.19622326 +5,17,0.1493005 +5,18,0.042975523 +5,19,0.15129721 +5,20,0.04372429 +5,21,-0.10428208 +5,22,-0.020295328 +5,23,-0.05661055 +5,24,-0.018049026 +5,25,-0.122751676 +5,26,-0.071336314 +5,27,-0.025911083 +5,28,0.096387595 +5,29,-0.039888076 +5,30,-0.042134378 +5,31,-0.018049026 +5,32,-0.12325086 +5,33,-0.029405331 +6,18,0.100880206 +6,19,0.21319532 +6,20,0.32001948 +6,21,0.3539636 +6,22,0.38591102 +6,23,0.03823333 +6,24,-0.08281741 +6,25,-0.18315226 +6,26,-0.03489629 +6,27,-0.036144238 +6,28,0.05919882 +6,29,0.03848292 +6,30,-0.089306735 +6,31,-0.06784207 +6,32,-0.1267451 +6,33,0.054456625 +6,34,-0.06634453 +6,35,-0.004025235 +6,36,-0.10478126 +6,37,0.09189499 +7,15,0.20121504 +7,16,0.26610824 +7,17,0.118351445 +7,18,0.14630543 +7,19,-0.09330016 +7,20,0.12833501 +7,21,-0.01792423 +7,22,-0.05960562 +7,23,-0.021293685 +7,24,0.12284405 +7,25,0.15529063 +7,26,0.03012168 +7,27,-0.09379934 +7,28,0.04946484 +7,29,-0.06784207 +7,30,-0.087310016 +7,31,-0.04537904 +7,32,0.059947584 +7,33,0.33798993 +7,34,-0.15619662 +8,20,0.2391526 +8,21,0.010279343 +8,22,0.12134651 +8,23,0.29805565 +8,24,-0.25203884 +8,25,-0.03177643 +8,26,-0.053116303 +8,27,0.030371271 +8,28,-0.055861782 +8,29,-0.040137667 +8,30,-0.07183549 +8,31,0.14630543 +8,32,-0.10028865 +8,33,-0.12824264 +8,34,0.021760445 +8,35,0.005661944 +8,36,0.12833501 +8,37,-0.21509966 +8,38,-0.13423277 +8,39,-0.07433138 +9,16,0.27209836 +9,17,-0.05860726 +9,18,0.17326106 +9,19,0.41985515 +9,20,0.11735309 +9,21,0.35196692 +9,22,0.13532351 +9,23,-0.008096658 +9,24,-0.049871642 +9,25,-0.04812452 +9,26,-0.042633556 +9,27,-0.1591917 +9,28,-0.2280783 +9,29,-0.12624593 +9,30,0.08989828 +9,31,-0.023415193 +9,32,-0.15519828 +9,33,-0.14022292 +9,34,0.10337609 +9,35,-0.071336314 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 8a20bbbe..44ec0f7b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,0.33205438 -0,9,-0.029600324 -0,10,0.42190647 -0,11,0.29611352 -0,12,-0.30689386 -1,8,0.3180774 -1,9,0.34603137 -1,10,0.37797877 -2,8,0.045026835 -2,9,0.14336495 -3,8,0.40992618 -3,9,0.3360478 -4,8,-0.25897273 -5,8,0.16433044 -6,8,0.38596562 -6,9,0.32606423 -6,10,0.36000836 -7,8,0.216245 -8,8,0.19228444 -8,9,-0.25398096 -8,10,0.473821 -8,11,0.46583417 -9,8,0.36999193 -9,9,0.31608066 +0,8,0.2900688 +0,9,-0.17616376 +0,10,0.3799209 +0,11,0.26610824 +0,12,-0.2989616 +1,8,0.28208193 +1,9,-0.003034678 +1,10,0.33798993 +2,8,-0.14820977 +2,9,0.11785226 +3,8,0.36993733 +3,9,0.29605892 +4,8,-0.13523114 +5,8,0.1403153 +6,8,0.3359932 +6,9,0.26810494 +6,10,0.31402937 +7,8,-0.15320155 +8,8,0.16826928 +8,9,-0.25703064 +8,10,0.41785845 +8,11,0.40987158 +9,8,0.31602606 +9,9,0.25812137 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index a06dd55d..dcfed5d1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.0067936005 -0,9,0.047275458 -0,10,0.06949562 -0,11,0.34379116 -0,12,0.53735346 -1,8,0.17491794 -1,9,0.031227563 -1,10,-0.15887825 -2,8,0.0593731 -2,9,-0.139127 -3,8,0.09344401 -3,9,0.183806 -4,8,0.33984092 -5,8,0.015025363 -6,8,0.35564193 -6,9,0.31218916 -6,10,0.0023722164 -7,8,0.6124082 -8,8,0.2608359 -8,9,0.30428866 -8,10,0.116651736 -8,11,0.1709677 -9,8,0.007306172 -9,9,-0.15789069 +0,8,-0.19187672 +0,9,-0.078307025 +0,10,0.01989374 +0,11,0.13599409 +0,12,0.30980512 +1,8,0.08809729 +1,9,-0.026706878 +1,10,-0.23631705 +2,8,0.046866544 +2,9,-0.18792649 +3,8,0.08710972 +3,9,0.17352147 +4,8,0.3789345 +5,8,-0.18002598 +6,8,0.2999295 +6,9,0.33548176 +6,10,0.007902182 +7,8,0.66335255 +8,8,0.19821054 +8,9,0.19031003 +8,10,-0.03189158 +8,11,-0.01386856 +9,8,0.001099186 +9,9,-0.2531056 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index fae6087b..b3488afb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.08213164 -0,9,-0.36485112 -0,10,-0.04796779 -0,11,-0.23358852 -0,12,-0.23358852 -1,8,-0.24276772 -1,9,-0.048351455 -1,10,0.042246565 -2,8,-0.377702 -2,9,-0.29325333 -3,8,-0.115176775 -3,9,0.27402145 -4,8,0.16019934 -5,8,-0.36485112 -6,8,0.08217611 -6,9,-0.06515011 -6,10,0.18131152 -7,8,0.20058784 -8,8,-0.22624514 -8,9,-0.115176775 -8,10,-0.29508916 -8,11,-0.29508916 -9,8,-0.14087854 -9,9,0.024806082 +0,8,-0.075993046 +0,9,-0.34528795 +0,10,-0.06383061 +0,11,-0.22871205 +0,12,-0.23330164 +1,8,-0.2268762 +1,9,-0.10984136 +1,10,-0.017590366 +2,8,-0.3618105 +2,9,-0.29939193 +3,8,-0.13783793 +3,9,0.23850942 +4,8,0.10357512 +5,8,-0.3471238 +6,8,0.09990344 +6,9,-0.1116772 +6,10,0.15314281 +7,8,0.12560523 +8,8,-0.1773085 +8,9,-0.111218244 +8,10,-0.29939193 +8,11,-0.29204854 +9,8,-0.14334546 +9,9,-0.018737767 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index 953319ec..8f72a904 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.061894365 -0,9,-0.20701185 -0,10,-0.11131864 -0,11,-0.020215044 -0,12,-0.03547547 -1,8,-0.035131253 -1,9,0.03623706 -1,10,-0.06484892 -2,8,-0.3391924 -2,9,-0.2226165 -3,8,0.095901884 -3,9,0.5291603 -4,8,0.41166648 -5,8,-0.13311926 -6,8,0.38780054 -6,9,0.3217103 -6,10,0.47775677 -7,8,0.41350234 -8,8,-0.054174513 -8,9,-0.03547547 -8,10,-0.03593443 -8,11,-0.1601979 -9,8,0.055054426 -9,9,0.23542577 +0,8,-0.081780255 +0,9,-0.22130415 +0,10,-0.060438603 +0,11,-0.065946124 +0,12,-0.09807333 +1,8,-0.055734262 +1,9,-0.02922931 +1,10,-0.12492251 +2,8,-0.25710306 +2,9,-0.24058047 +3,8,0.01597827 +3,9,0.36891866 +4,8,0.3579036 +5,8,-0.12675835 +6,8,0.3395452 +6,9,0.2771266 +6,10,0.3175151 +7,8,0.35606775 +8,8,-0.03835114 +8,9,-0.016148943 +8,10,-0.05389842 +8,11,-0.12675835 +9,8,-0.001691699 +9,9,0.18900627 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index 923104fa..2a8d05f6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,121,4,9,8,1 -0,9,121,4,3,8,0 -0,10,121,4,3,6,1 -0,11,121,6,3,6,1 -0,12,121,6,3,6,1 -0,13,121,6,3,6,1 -0,14,121,4,3,6,1 -0,15,121,4,3,6,1 -0,16,121,4,3,6,1 -0,17,121,4,3,6,1 -0,18,121,4,3,8,1 -0,19,121,4,5,6,1 -0,20,121,4,3,8,1 -0,21,121,4,3,6,1 -0,22,121,4,3,6,0 -0,23,121,4,3,8,0 -0,24,121,4,3,6,0 -0,25,121,4,3,6,0 -0,26,121,4,3,6,0 -0,27,121,4,3,6,0 -0,28,121,4,3,6,0 -0,29,121,4,3,6,0 -0,30,121,4,3,6,0 -0,31,121,4,3,6,0 -0,32,121,4,3,6,1 -0,33,121,4,3,6,0 -0,34,121,4,3,6,1 -0,35,121,4,3,6,0 -0,36,121,4,3,6,1 -0,37,121,4,3,6,1 +0,8,113,6,2,0,1 +0,9,113,6,2,0,1 +0,10,113,6,2,0,1 +0,11,113,6,2,0,1 +0,12,113,6,2,0,1 +0,13,113,6,2,0,2 +0,14,113,6,2,0,2 +0,15,113,6,2,0,2 +0,16,113,6,2,0,2 +0,17,113,6,2,0,2 +0,18,113,6,2,0,2 +0,19,113,6,2,0,2 +0,20,113,6,2,0,2 +0,21,113,6,2,0,2 +0,22,113,6,2,0,2 +0,23,113,6,2,0,2 +0,24,113,6,2,0,2 +0,25,113,6,2,0,2 +0,26,113,6,2,0,2 +0,27,113,6,2,0,2 +0,28,113,6,2,0,2 +0,29,113,6,2,0,2 +0,30,113,6,2,0,2 +0,31,113,6,2,0,2 +0,32,113,6,2,0,2 +0,33,113,6,2,0,2 +0,34,113,6,2,0,2 +0,35,113,6,2,0,2 +0,36,113,6,2,0,2 +0,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index aa4c0f4a..cd416b33 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,103,4,9,8,1 -1,9,121,4,3,6,1 -1,10,121,4,3,6,1 -1,11,121,4,3,6,1 -1,12,121,6,3,6,1 -1,13,121,4,3,6,0 -1,14,121,4,3,6,0 -1,15,121,4,3,6,0 -1,16,121,4,3,6,0 -1,17,121,4,3,6,1 -1,18,121,4,3,6,1 -1,19,121,4,3,6,1 -1,20,121,4,3,6,1 -1,21,121,4,3,6,1 -1,22,121,4,3,6,1 -1,23,121,4,3,6,1 -1,24,121,4,3,6,1 -1,25,121,4,3,8,1 -1,26,121,4,3,6,1 -1,27,121,4,3,6,1 -1,28,121,4,3,6,1 -1,29,121,4,3,6,1 -1,30,121,4,3,6,1 -1,31,121,4,3,6,0 -1,32,121,4,3,8,1 -1,33,121,4,3,6,0 -1,34,121,4,3,8,1 -1,35,121,4,3,6,1 -1,36,121,4,3,6,0 -1,37,121,4,3,6,0 +1,8,113,6,0,9,0 +1,9,100,6,0,8,0 +1,10,121,6,0,8,0 +1,11,120,4,0,8,0 +1,12,120,4,0,8,0 +1,13,120,0,0,5,0 +1,14,109,4,8,8,0 +1,15,109,4,9,5,0 +1,16,109,4,9,5,0 +1,17,109,4,9,5,0 +1,18,109,4,0,5,0 +1,19,109,4,9,5,0 +1,20,109,4,0,9,0 +1,21,109,4,0,5,0 +1,22,127,4,0,9,0 +1,23,120,4,0,9,0 +1,24,120,4,0,9,0 +1,25,109,4,0,5,0 +1,26,109,4,9,5,0 +1,27,127,4,0,9,0 +1,28,109,4,9,5,0 +1,29,109,4,9,5,0 +1,30,109,4,3,5,0 +1,31,109,4,3,5,0 +1,32,109,4,3,5,0 +1,33,109,4,3,5,0 +1,34,127,6,3,5,0 +1,35,109,6,3,5,0 +1,36,112,6,3,5,0 +1,37,103,6,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index a00ae412..cedb1297 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,103,4,9,8,1 -2,9,103,4,9,5,1 -2,10,103,4,3,6,0 -2,11,121,4,3,6,0 -2,12,121,4,3,6,0 -2,13,121,6,3,6,0 -2,14,121,4,3,6,0 -2,15,121,4,3,6,0 -2,16,121,4,3,6,0 -2,17,121,4,3,6,0 -2,18,121,4,3,6,0 -2,19,121,4,3,6,1 -2,20,121,4,3,6,1 -2,21,121,4,3,6,1 -2,22,121,4,3,6,0 -2,23,121,4,3,6,1 -2,24,121,4,3,6,1 -2,25,121,4,3,6,1 -2,26,121,4,3,6,1 -2,27,121,4,3,6,1 -2,28,121,4,3,6,1 -2,29,121,4,3,6,1 -2,30,121,4,3,6,1 -2,31,121,4,3,8,1 -2,32,121,4,3,6,1 -2,33,121,4,3,6,1 -2,34,121,4,3,6,1 -2,35,121,4,3,6,1 -2,36,121,4,3,6,1 -2,37,121,4,3,6,0 +2,8,113,4,2,0,1 +2,9,113,6,2,0,0 +2,10,113,6,2,0,0 +2,11,113,6,2,0,1 +2,12,113,6,2,0,1 +2,13,113,6,2,0,1 +2,14,113,6,2,0,2 +2,15,113,6,2,0,2 +2,16,113,6,2,0,2 +2,17,113,6,2,0,2 +2,18,113,6,2,0,2 +2,19,113,6,2,0,2 +2,20,113,6,2,0,2 +2,21,113,6,2,0,2 +2,22,113,6,2,0,2 +2,23,113,6,2,0,2 +2,24,113,6,2,0,2 +2,25,113,6,2,0,2 +2,26,113,6,2,0,2 +2,27,113,6,2,0,2 +2,28,113,6,2,0,2 +2,29,113,6,2,0,2 +2,30,113,6,2,0,2 +2,31,113,6,2,0,2 +2,32,113,6,2,0,2 +2,33,113,6,2,0,2 +2,34,113,6,2,0,2 +2,35,113,6,2,0,2 +2,36,113,6,2,0,2 +2,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index 48a9f496..477f3560 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,103,4,9,8,1 -3,9,103,4,9,8,1 -3,10,121,4,3,6,1 -3,11,121,4,3,6,0 -3,12,121,4,3,6,1 -3,13,121,6,3,6,1 -3,14,121,4,3,6,1 -3,15,121,6,3,6,0 -3,16,121,4,3,6,0 -3,17,121,4,3,6,0 -3,18,121,4,3,6,1 -3,19,121,4,3,6,1 -3,20,121,4,3,6,1 -3,21,121,4,3,6,1 -3,22,121,4,3,6,1 -3,23,121,4,3,6,1 -3,24,121,4,3,6,1 -3,25,121,4,3,6,1 -3,26,121,4,3,8,1 -3,27,121,4,3,6,1 -3,28,121,4,3,6,1 -3,29,121,4,3,6,1 -3,30,121,4,3,6,1 -3,31,121,4,3,6,1 -3,32,121,4,3,6,0 -3,33,121,4,3,8,1 -3,34,121,4,3,6,0 -3,35,121,4,3,8,1 -3,36,121,4,3,6,1 -3,37,121,4,3,6,0 -4,8,103,4,9,8,1 -4,9,103,4,9,8,1 -4,10,121,4,3,6,1 -4,11,121,4,3,6,0 -4,12,121,4,3,6,1 -4,13,121,6,3,6,0 -4,14,121,4,3,6,1 -4,15,121,6,3,6,0 -4,16,121,4,3,6,0 -4,17,121,4,3,6,0 -4,18,121,4,3,6,1 -4,19,121,4,3,6,1 -4,20,121,4,3,6,1 -4,21,121,4,3,6,1 -4,22,121,4,3,6,1 -4,23,121,4,3,6,1 -4,24,121,4,3,6,1 -4,25,121,4,3,6,1 -4,26,121,4,3,8,1 -4,27,121,4,3,6,1 -4,28,121,4,3,6,1 -4,29,121,4,3,6,1 -4,30,121,4,3,6,1 -4,31,121,4,3,6,1 -4,32,121,4,3,6,0 -4,33,121,4,3,8,1 -4,34,121,4,3,6,0 -4,35,121,4,3,8,1 -4,36,121,4,3,6,1 -4,37,121,4,3,6,0 +3,8,121,4,2,8,1 +3,9,121,4,2,8,1 +3,10,121,4,9,8,0 +3,11,109,4,9,5,0 +3,12,109,6,9,5,0 +3,13,121,6,0,5,0 +3,14,109,4,9,5,0 +3,15,109,4,0,5,0 +3,16,120,8,0,9,0 +3,17,120,4,0,5,0 +3,18,127,4,0,9,0 +3,19,120,4,0,9,0 +3,20,109,4,0,8,0 +3,21,109,4,9,5,0 +3,22,109,4,0,5,0 +3,23,109,4,9,5,0 +3,24,109,4,9,5,0 +3,25,109,4,3,5,0 +3,26,109,4,9,5,0 +3,27,127,4,0,9,0 +3,28,127,4,0,5,0 +3,29,127,4,0,9,0 +3,30,109,4,0,5,0 +3,31,109,4,0,9,0 +3,32,109,4,0,5,0 +3,33,109,4,9,5,0 +3,34,109,4,9,5,0 +3,35,109,4,9,5,0 +3,36,109,4,3,5,0 +3,37,109,4,3,5,0 +4,8,113,7,2,8,1 +4,9,113,6,2,8,0 +4,10,121,6,2,8,0 +4,11,121,4,2,8,0 +4,12,109,4,9,5,0 +4,13,109,6,9,5,0 +4,14,121,6,0,9,0 +4,15,120,4,0,5,0 +4,16,120,9,0,9,0 +4,17,120,0,0,5,0 +4,18,109,4,0,5,0 +4,19,109,4,0,5,0 +4,20,127,4,9,9,0 +4,21,127,4,9,5,0 +4,22,109,4,9,5,0 +4,23,109,4,9,5,0 +4,24,109,4,9,5,0 +4,25,109,6,3,9,0 +4,26,109,4,0,5,0 +4,27,127,6,0,9,0 +4,28,127,9,0,5,0 +4,29,127,4,0,9,0 +4,30,120,4,0,5,0 +4,31,109,4,3,9,0 +4,32,109,4,9,5,0 +4,33,109,4,9,5,0 +4,34,109,4,9,5,0 +4,35,109,4,9,5,0 +4,36,109,4,3,5,0 +4,37,109,4,3,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index 551fdd40..e21fb885 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,103,3,9,8,1 -5,9,103,4,3,8,1 -5,10,121,4,3,6,1 -5,11,121,4,3,6,0 -5,12,121,4,3,6,1 -5,13,121,6,3,6,1 -5,14,121,6,3,6,1 -5,15,121,4,3,6,1 -5,16,121,4,3,6,0 -5,17,121,4,3,6,1 -5,18,121,4,3,6,1 -5,19,121,4,3,6,1 -5,20,121,4,3,6,1 -5,21,121,4,3,6,1 -5,22,121,4,3,6,1 -5,23,121,4,3,6,1 -5,24,121,4,3,6,1 -5,25,121,4,3,8,1 -5,26,121,4,3,6,1 -5,27,121,4,3,6,1 -5,28,121,4,3,6,1 -5,29,121,4,3,6,1 -5,30,121,4,3,6,1 -5,31,121,4,3,6,0 -5,32,121,4,3,8,1 -5,33,121,4,3,6,0 -5,34,121,4,3,8,1 -5,35,121,4,3,6,1 -5,36,121,4,3,6,0 -5,37,121,4,3,6,0 +5,8,113,6,2,1,1 +5,9,113,6,2,0,2 +5,10,113,6,2,0,2 +5,11,113,6,2,0,2 +5,12,113,6,2,0,2 +5,13,113,6,2,0,2 +5,14,113,6,2,0,2 +5,15,113,6,2,0,2 +5,16,113,6,2,0,2 +5,17,113,6,2,0,2 +5,18,113,6,2,0,2 +5,19,113,6,2,0,2 +5,20,113,6,2,0,2 +5,21,113,6,2,0,2 +5,22,113,6,2,0,2 +5,23,113,6,2,0,2 +5,24,113,6,2,0,2 +5,25,113,6,2,0,2 +5,26,113,6,2,0,2 +5,27,113,6,2,0,2 +5,28,113,6,2,0,2 +5,29,113,6,2,0,2 +5,30,113,6,2,0,2 +5,31,113,6,2,0,2 +5,32,113,6,2,0,2 +5,33,113,6,2,0,2 +5,34,113,6,2,0,2 +5,35,113,6,2,0,2 +5,36,113,6,2,0,2 +5,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index d875f86b..908877f2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,4,9,8,1 -6,9,121,4,9,8,1 -6,10,121,4,3,6,1 -6,11,121,6,3,6,1 -6,12,121,6,3,6,1 -6,13,121,4,3,6,1 -6,14,121,4,3,6,1 -6,15,121,4,3,6,1 -6,16,121,4,3,6,0 -6,17,121,4,3,8,1 -6,18,121,4,3,6,1 -6,19,121,4,3,6,1 -6,20,121,4,3,6,1 -6,21,121,4,3,6,0 -6,22,121,4,3,6,1 -6,23,121,4,3,6,0 -6,24,121,4,3,6,0 -6,25,121,4,3,6,0 -6,26,121,4,3,6,1 -6,27,121,4,3,6,1 -6,28,121,4,3,6,1 -6,29,121,4,3,6,1 -6,30,121,4,3,6,1 -6,31,121,4,3,6,1 -6,32,121,4,3,6,1 -6,33,121,4,3,6,1 -6,34,121,4,3,8,1 -6,35,121,4,3,6,1 -6,36,121,4,3,6,1 -6,37,121,4,3,6,1 -7,8,121,4,9,8,1 -7,9,103,4,9,5,1 -7,10,121,4,3,6,1 -7,11,121,4,3,6,1 -7,12,121,6,3,6,1 -7,13,121,6,3,6,1 -7,14,121,4,3,6,1 -7,15,121,4,3,6,1 -7,16,121,4,3,6,0 -7,17,121,4,3,6,1 -7,18,121,4,3,6,1 -7,19,121,4,3,6,1 -7,20,121,4,3,6,1 -7,21,121,4,3,6,1 -7,22,121,4,3,6,1 -7,23,121,4,3,6,1 -7,24,121,4,3,6,1 -7,25,121,4,3,8,1 -7,26,121,4,3,6,1 -7,27,121,4,3,6,1 -7,28,121,4,3,6,1 -7,29,121,4,3,6,1 -7,30,121,4,3,6,1 -7,31,121,4,3,6,0 -7,32,121,4,3,8,1 -7,33,121,4,3,6,0 -7,34,121,4,3,8,1 -7,35,121,4,3,6,1 -7,36,121,4,3,6,0 -7,37,121,4,3,6,0 +6,8,113,6,2,8,0 +6,9,113,6,2,8,0 +6,10,113,6,2,8,0 +6,11,121,6,2,8,0 +6,12,121,6,0,8,0 +6,13,109,6,0,8,0 +6,14,109,4,0,8,0 +6,15,109,4,0,5,0 +6,16,109,4,0,5,0 +6,17,109,4,9,5,0 +6,18,109,4,0,5,0 +6,19,109,4,9,5,0 +6,20,109,4,9,5,0 +6,21,109,4,3,9,0 +6,22,109,4,0,5,0 +6,23,109,4,3,9,0 +6,24,109,4,0,5,0 +6,25,127,4,0,9,0 +6,26,109,4,0,5,0 +6,27,127,4,0,9,0 +6,28,109,4,0,5,0 +6,29,109,4,9,5,0 +6,30,109,4,9,5,0 +6,31,109,4,9,5,0 +6,32,109,4,3,5,0 +6,33,109,4,3,5,0 +6,34,109,4,3,5,0 +6,35,109,4,3,5,0 +6,36,109,6,3,5,0 +6,37,127,6,3,9,0 +7,8,109,4,9,6,0 +7,9,121,4,9,6,0 +7,10,121,4,2,8,1 +7,11,109,4,9,8,0 +7,12,109,4,9,5,0 +7,13,109,4,9,5,0 +7,14,109,6,3,5,0 +7,15,121,6,0,5,0 +7,16,109,6,0,8,0 +7,17,109,4,0,5,0 +7,18,127,4,0,9,0 +7,19,120,4,0,5,0 +7,20,127,4,3,9,0 +7,21,109,4,9,5,0 +7,22,109,4,3,0,0 +7,23,109,4,9,5,0 +7,24,109,4,9,5,0 +7,25,109,4,3,5,0 +7,26,109,4,3,5,0 +7,27,109,6,3,5,0 +7,28,109,6,3,5,0 +7,29,112,6,3,9,0 +7,30,121,6,3,5,0 +7,31,112,6,3,9,0 +7,32,121,6,3,5,0 +7,33,103,6,3,0,0 +7,34,103,6,3,0,0 +7,35,103,6,2,0,0 +7,36,103,6,2,0,0 +7,37,103,6,2,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index c203f13c..d1cabc88 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,103,4,9,8,1 -8,9,121,4,3,6,1 -8,10,121,4,3,6,1 -8,11,121,6,3,6,1 -8,12,121,6,3,6,1 -8,13,121,6,3,6,1 -8,14,121,4,3,6,1 -8,15,121,4,3,6,1 -8,16,121,4,3,6,1 -8,17,121,4,3,8,1 -8,18,121,4,5,8,1 -8,19,121,4,9,6,1 -8,20,121,4,3,6,1 -8,21,121,4,3,6,1 -8,22,121,4,3,6,0 -8,23,121,4,3,6,0 -8,24,121,4,3,6,0 -8,25,121,4,3,6,0 -8,26,121,4,3,6,0 -8,27,121,4,3,6,1 -8,28,121,4,3,6,1 -8,29,121,4,3,6,1 -8,30,121,4,3,6,0 -8,31,121,4,3,6,1 -8,32,121,4,3,6,1 -8,33,121,4,3,6,1 -8,34,121,4,3,6,1 -8,35,121,4,3,6,1 -8,36,121,4,3,6,1 -8,37,121,4,3,6,1 +8,8,113,6,2,8,0 +8,9,113,6,2,8,0 +8,10,113,6,2,8,0 +8,11,113,6,2,0,0 +8,12,113,6,2,0,0 +8,13,113,6,8,0,0 +8,14,113,6,8,0,0 +8,15,113,9,7,0,0 +8,16,113,6,2,0,1 +8,17,113,6,2,0,1 +8,18,113,6,2,0,1 +8,19,113,6,2,0,1 +8,20,113,6,2,0,2 +8,21,113,6,2,0,2 +8,22,113,6,2,0,2 +8,23,113,6,2,0,2 +8,24,113,6,2,0,2 +8,25,113,6,2,0,2 +8,26,113,6,2,0,2 +8,27,113,6,2,0,2 +8,28,113,6,2,0,2 +8,29,113,6,2,0,2 +8,30,113,6,2,0,2 +8,31,113,6,2,0,2 +8,32,113,6,2,0,2 +8,33,113,6,2,0,2 +8,34,113,6,2,0,2 +8,35,113,6,2,0,2 +8,36,113,6,2,0,2 +8,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index 629630a6..f9969b00 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,103,4,9,8,1 -9,9,103,4,3,8,0 -9,10,121,4,3,7,0 -9,11,121,4,3,7,0 -9,12,121,4,3,6,0 -9,13,121,4,3,6,0 -9,14,121,4,3,6,0 -9,15,121,4,3,6,0 -9,16,121,4,3,6,0 -9,17,121,4,3,6,0 -9,18,121,4,3,6,1 -9,19,121,4,3,6,1 -9,20,121,4,3,6,0 -9,21,121,4,3,6,1 -9,22,121,4,3,6,1 -9,23,121,4,3,6,1 -9,24,121,4,3,6,1 -9,25,121,4,3,6,1 -9,26,121,4,3,6,1 -9,27,121,4,3,6,1 -9,28,121,4,3,6,1 -9,29,121,4,3,8,1 -9,30,121,4,3,6,1 -9,31,121,4,3,6,1 -9,32,121,4,3,6,1 -9,33,121,4,3,6,1 -9,34,121,4,3,6,1 -9,35,121,4,3,6,0 -9,36,121,4,3,8,1 -9,37,121,4,3,6,0 +9,8,100,6,0,9,0 +9,9,100,9,8,9,0 +9,10,109,4,9,5,1 +9,11,113,6,0,9,0 +9,12,100,9,0,9,0 +9,13,109,4,9,5,1 +9,14,112,6,3,9,0 +9,15,121,6,0,5,0 +9,16,109,4,0,8,0 +9,17,109,4,0,5,0 +9,18,127,4,0,9,0 +9,19,109,4,9,5,0 +9,20,127,4,0,5,0 +9,21,127,4,0,9,0 +9,22,109,4,9,5,0 +9,23,109,4,9,5,0 +9,24,109,4,3,5,0 +9,25,109,4,3,5,0 +9,26,109,4,3,5,0 +9,27,109,6,3,5,0 +9,28,121,6,3,0,0 +9,29,109,4,3,7,0 +9,30,112,6,3,5,0 +9,31,103,6,3,0,0 +9,32,103,6,2,0,0 +9,33,103,6,2,0,0 +9,34,113,6,2,0,0 +9,35,113,6,2,0,0 +9,36,113,6,2,0,0 +9,37,113,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index 2a8d05f6..9f00e61d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,113,6,2,0,1 -0,9,113,6,2,0,1 -0,10,113,6,2,0,1 -0,11,113,6,2,0,1 -0,12,113,6,2,0,1 -0,13,113,6,2,0,2 -0,14,113,6,2,0,2 -0,15,113,6,2,0,2 -0,16,113,6,2,0,2 -0,17,113,6,2,0,2 -0,18,113,6,2,0,2 -0,19,113,6,2,0,2 -0,20,113,6,2,0,2 -0,21,113,6,2,0,2 -0,22,113,6,2,0,2 -0,23,113,6,2,0,2 -0,24,113,6,2,0,2 -0,25,113,6,2,0,2 -0,26,113,6,2,0,2 -0,27,113,6,2,0,2 -0,28,113,6,2,0,2 -0,29,113,6,2,0,2 -0,30,113,6,2,0,2 -0,31,113,6,2,0,2 -0,32,113,6,2,0,2 -0,33,113,6,2,0,2 -0,34,113,6,2,0,2 -0,35,113,6,2,0,2 -0,36,113,6,2,0,2 -0,37,113,6,2,0,2 +0,8,102,6,3,8,1 +0,9,121,6,3,8,1 +0,10,121,6,3,8,1 +0,11,121,6,3,8,1 +0,12,121,6,3,8,1 +0,13,104,6,3,8,0 +0,14,104,3,3,0,0 +0,15,104,3,3,0,0 +0,16,104,3,3,0,0 +0,17,104,3,3,0,0 +0,18,104,3,3,0,0 +0,19,104,3,3,0,0 +0,20,104,3,3,0,1 +0,21,103,6,3,0,1 +0,22,113,6,3,8,1 +0,23,113,6,3,8,1 +0,24,113,6,3,8,1 +0,25,104,6,3,8,1 +0,26,104,6,3,8,1 +0,27,104,6,3,8,1 +0,28,104,6,3,8,1 +0,29,104,6,3,8,1 +0,30,104,9,3,0,0 +0,31,104,3,3,0,1 +0,32,104,9,3,0,1 +0,33,104,9,3,0,1 +0,34,104,3,3,8,1 +0,35,104,6,3,8,0 +0,36,121,6,3,8,0 +0,37,121,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index fed4cb3b..81ebca01 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,4,2,6,0 -1,9,109,4,9,6,1 -1,10,121,6,2,0,0 -1,11,121,6,2,8,0 -1,12,121,6,0,8,0 -1,13,109,6,0,8,0 -1,14,121,6,0,8,0 -1,15,109,4,9,8,0 -1,16,109,4,9,5,0 -1,17,120,6,0,9,0 -1,18,109,4,0,5,0 -1,19,109,4,0,5,0 -1,20,109,4,9,5,0 -1,21,127,4,0,9,0 -1,22,120,4,0,5,0 -1,23,127,4,0,9,0 -1,24,127,4,0,5,0 -1,25,109,4,9,5,0 -1,26,109,4,3,5,0 -1,27,109,4,3,5,0 -1,28,109,4,3,5,0 -1,29,109,4,9,6,0 -1,30,109,4,3,8,0 -1,31,109,4,9,8,0 -1,32,109,4,0,8,0 -1,33,109,4,0,8,0 -1,34,109,4,9,8,0 -1,35,109,4,0,5,0 -1,36,109,4,0,5,0 -1,37,109,4,0,5,0 +1,8,121,6,2,8,1 +1,9,121,6,3,8,1 +1,10,121,6,3,8,0 +1,11,121,6,3,8,0 +1,12,121,6,3,8,0 +1,13,121,3,3,8,0 +1,14,104,3,3,8,0 +1,15,104,3,3,0,0 +1,16,104,3,3,0,0 +1,17,104,3,3,0,0 +1,18,104,3,3,0,0 +1,19,104,3,3,0,0 +1,20,104,3,3,0,0 +1,21,104,3,3,0,0 +1,22,121,6,3,0,1 +1,23,113,6,3,8,1 +1,24,121,6,3,8,1 +1,25,104,6,3,8,1 +1,26,104,6,3,8,0 +1,27,104,6,3,0,0 +1,28,104,9,3,0,1 +1,29,104,3,3,0,1 +1,30,104,9,3,0,1 +1,31,104,3,3,0,1 +1,32,104,3,3,0,1 +1,33,103,6,3,8,1 +1,34,113,6,3,8,1 +1,35,121,6,3,8,1 +1,36,121,6,3,8,1 +1,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index c4fe8a8e..c3ecaba4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,103,4,2,6,1 -2,9,113,6,2,0,1 -2,10,113,6,2,0,1 -2,11,113,6,2,0,1 -2,12,113,6,2,0,1 -2,13,113,6,2,0,2 -2,14,113,6,2,0,2 -2,15,113,6,2,0,2 -2,16,113,6,2,0,2 -2,17,113,6,2,0,2 -2,18,113,6,2,0,2 -2,19,113,6,2,0,2 -2,20,113,6,2,0,2 -2,21,113,6,2,0,2 -2,22,113,6,2,0,2 -2,23,113,6,2,0,2 -2,24,113,6,2,0,2 -2,25,113,6,2,0,2 -2,26,113,6,2,0,2 -2,27,113,6,2,0,2 -2,28,113,6,2,0,2 -2,29,113,6,2,0,2 -2,30,113,6,2,0,2 -2,31,113,6,2,0,2 -2,32,113,6,2,0,2 -2,33,113,6,2,0,2 -2,34,113,6,2,0,2 -2,35,113,6,2,0,2 -2,36,113,6,2,0,2 -2,37,113,6,2,0,2 +2,8,102,6,3,8,1 +2,9,121,6,3,8,1 +2,10,104,6,3,8,1 +2,11,104,6,3,8,1 +2,12,104,6,3,8,1 +2,13,104,6,3,8,1 +2,14,104,6,3,8,0 +2,15,104,9,3,0,0 +2,16,104,3,3,0,0 +2,17,104,3,3,0,0 +2,18,104,3,3,0,1 +2,19,104,3,3,0,1 +2,20,104,3,3,0,1 +2,21,103,6,3,0,1 +2,22,113,6,3,8,1 +2,23,113,6,3,8,1 +2,24,113,6,3,8,1 +2,25,104,6,3,8,1 +2,26,104,6,3,8,1 +2,27,104,6,3,8,1 +2,28,104,6,3,8,1 +2,29,104,6,3,8,1 +2,30,104,9,3,0,0 +2,31,104,3,3,0,1 +2,32,104,9,3,0,1 +2,33,104,9,3,0,1 +2,34,104,3,3,8,1 +2,35,104,6,3,8,0 +2,36,121,6,3,8,0 +2,37,121,6,3,8,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index 6052a5e2..cfc7190a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,109,4,2,6,1 -3,9,113,4,2,0,1 -3,10,113,6,2,0,0 -3,11,113,6,2,0,0 -3,12,113,6,2,0,0 -3,13,113,6,2,0,0 -3,14,113,6,2,0,0 -3,15,113,6,2,0,0 -3,16,113,6,2,0,1 -3,17,113,6,2,0,1 -3,18,113,6,2,0,1 -3,19,113,6,2,0,2 -3,20,113,6,2,0,2 -3,21,113,6,2,0,2 -3,22,113,6,2,0,2 -3,23,113,6,2,0,2 -3,24,113,6,2,0,2 -3,25,113,6,2,0,2 -3,26,113,6,2,0,2 -3,27,113,6,2,0,2 -3,28,113,6,2,0,2 -3,29,113,6,2,0,2 -3,30,113,6,2,0,2 -3,31,113,6,2,0,2 -3,32,113,6,2,0,2 -3,33,113,6,2,0,2 -3,34,113,6,2,0,2 -3,35,113,6,2,0,2 -3,36,113,6,2,0,2 -3,37,113,6,2,0,2 -4,8,121,4,9,6,1 -4,9,113,4,2,6,1 -4,10,113,6,2,0,0 -4,11,113,6,2,0,0 -4,12,113,6,2,0,0 -4,13,113,6,2,0,1 -4,14,113,6,2,0,1 -4,15,113,6,2,0,1 -4,16,113,6,2,0,2 -4,17,113,6,2,0,2 -4,18,113,6,2,0,2 -4,19,113,6,2,0,2 -4,20,113,6,2,0,2 -4,21,113,6,2,0,2 -4,22,113,6,2,0,2 -4,23,113,6,2,0,2 -4,24,113,6,2,0,2 -4,25,113,6,2,0,2 -4,26,113,6,2,0,2 -4,27,113,6,2,0,2 -4,28,113,6,2,0,2 -4,29,113,6,2,0,2 -4,30,113,6,2,0,2 -4,31,113,6,2,0,2 -4,32,113,6,2,0,2 -4,33,113,6,2,0,2 -4,34,113,6,2,0,2 -4,35,113,6,2,0,2 -4,36,113,6,2,0,2 -4,37,113,6,2,0,2 +3,8,121,6,3,8,1 +3,9,121,6,3,8,0 +3,10,121,3,3,8,0 +3,11,121,3,3,8,0 +3,12,121,3,3,8,0 +3,13,121,3,3,8,0 +3,14,104,3,3,0,0 +3,15,104,3,3,0,0 +3,16,104,3,3,0,0 +3,17,104,3,3,0,0 +3,18,104,3,3,0,0 +3,19,104,3,3,0,0 +3,20,104,3,3,0,0 +3,21,121,3,3,0,1 +3,22,113,6,3,8,1 +3,23,121,6,3,8,1 +3,24,104,6,3,8,1 +3,25,104,6,3,8,0 +3,26,104,6,3,0,0 +3,27,104,3,3,0,1 +3,28,104,9,3,0,1 +3,29,104,3,3,0,1 +3,30,104,9,3,0,1 +3,31,104,3,3,0,1 +3,32,103,6,3,8,1 +3,33,113,6,3,8,1 +3,34,113,6,3,8,1 +3,35,121,6,3,8,1 +3,36,121,6,3,8,1 +3,37,104,6,3,8,1 +4,8,102,6,2,8,1 +4,9,121,6,3,8,1 +4,10,121,6,3,8,1 +4,11,121,6,3,8,1 +4,12,121,6,3,8,1 +4,13,121,6,3,8,0 +4,14,104,6,3,8,0 +4,15,104,3,3,0,0 +4,16,104,3,3,0,0 +4,17,104,3,3,0,0 +4,18,104,3,3,0,0 +4,19,104,3,3,0,0 +4,20,104,3,3,0,0 +4,21,104,3,3,0,0 +4,22,121,6,3,0,1 +4,23,113,6,3,8,1 +4,24,121,6,3,8,1 +4,25,104,6,3,8,1 +4,26,104,6,3,8,0 +4,27,104,6,3,0,0 +4,28,104,9,3,0,1 +4,29,104,3,3,0,1 +4,30,104,9,3,0,1 +4,31,104,3,3,0,1 +4,32,104,3,3,0,1 +4,33,103,6,3,8,1 +4,34,113,6,3,8,1 +4,35,121,6,3,8,1 +4,36,121,6,3,8,1 +4,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index 77123cc4..69802abf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,103,4,2,0,1 -5,9,113,6,2,0,1 -5,10,113,6,2,0,1 -5,11,113,6,2,0,1 -5,12,113,6,2,0,2 -5,13,113,6,2,0,2 -5,14,113,6,2,0,2 -5,15,113,6,2,0,2 -5,16,113,6,2,0,2 -5,17,113,6,2,0,2 -5,18,113,6,2,0,2 -5,19,113,6,2,0,2 -5,20,113,6,2,0,2 -5,21,113,6,2,0,2 -5,22,113,6,2,0,2 -5,23,113,6,2,0,2 -5,24,113,6,2,0,2 -5,25,113,6,2,0,2 -5,26,113,6,2,0,2 -5,27,113,6,2,0,2 -5,28,113,6,2,0,2 -5,29,113,6,2,0,2 -5,30,113,6,2,0,2 -5,31,113,6,2,0,2 -5,32,113,6,2,0,2 -5,33,113,6,2,0,2 -5,34,113,6,2,0,2 -5,35,113,6,2,0,2 -5,36,113,6,2,0,2 -5,37,113,6,2,0,2 +5,8,113,6,3,8,1 +5,9,121,6,3,8,0 +5,10,104,6,3,8,0 +5,11,104,3,3,0,0 +5,12,104,3,3,0,0 +5,13,104,3,3,0,0 +5,14,121,6,3,8,1 +5,15,104,3,3,8,0 +5,16,104,3,3,0,0 +5,17,104,3,3,0,0 +5,18,104,3,3,0,0 +5,19,121,3,3,0,1 +5,20,104,4,3,8,1 +5,21,104,3,3,0,0 +5,22,104,3,3,0,0 +5,23,104,3,3,0,1 +5,24,103,6,3,8,1 +5,25,113,6,3,8,1 +5,26,104,6,3,8,1 +5,27,104,9,3,8,1 +5,28,121,6,3,8,1 +5,29,104,6,3,8,1 +5,30,104,6,3,8,0 +5,31,104,6,3,0,0 +5,32,104,9,3,0,0 +5,33,104,3,3,0,1 +5,34,104,3,3,0,0 +5,35,104,3,3,0,1 +5,36,104,3,3,0,1 +5,37,103,6,3,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index f7596c81..4ff6731c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,4,2,6,0 -6,9,121,4,2,6,1 -6,10,113,4,2,0,1 -6,11,113,6,2,0,0 -6,12,113,6,2,0,0 -6,13,113,6,2,0,0 -6,14,113,6,2,0,0 -6,15,113,6,2,0,0 -6,16,113,6,2,0,0 -6,17,113,6,2,0,1 -6,18,113,6,2,0,1 -6,19,113,6,2,0,1 -6,20,113,6,2,0,2 -6,21,113,6,2,0,2 -6,22,113,6,2,0,2 -6,23,113,6,2,0,2 -6,24,113,6,2,0,2 -6,25,113,6,2,0,2 -6,26,113,6,2,0,2 -6,27,113,6,2,0,2 -6,28,113,6,2,0,2 -6,29,113,6,2,0,2 -6,30,113,6,2,0,2 -6,31,113,6,2,0,2 -6,32,113,6,2,0,2 -6,33,113,6,2,0,2 -6,34,113,6,2,0,2 -6,35,113,6,2,0,2 -6,36,113,6,2,0,2 -6,37,113,6,2,0,2 -7,8,109,4,9,6,0 -7,9,109,4,9,6,0 -7,10,121,4,9,6,0 -7,11,121,4,2,8,1 -7,12,109,4,9,8,0 -7,13,109,4,9,8,0 -7,14,109,4,0,5,0 -7,15,109,6,0,5,0 -7,16,109,6,0,8,0 -7,17,109,4,0,5,0 -7,18,109,4,0,5,0 -7,19,127,4,0,5,0 -7,20,127,4,0,5,0 -7,21,109,4,9,5,0 -7,22,109,4,3,0,0 -7,23,109,4,3,0,0 -7,24,109,4,9,5,0 -7,25,109,4,3,0,0 -7,26,109,4,3,0,0 -7,27,121,4,3,0,0 -7,28,109,4,9,8,0 -7,29,109,4,0,8,0 -7,30,109,4,9,8,0 -7,31,109,4,9,8,0 -7,32,109,4,0,5,0 -7,33,109,4,9,5,0 -7,34,109,4,0,5,0 -7,35,109,4,0,5,0 -7,36,127,4,0,5,0 -7,37,109,4,0,5,0 +6,8,102,6,2,8,1 +6,9,113,6,3,8,1 +6,10,121,6,3,8,1 +6,11,121,6,3,8,1 +6,12,121,6,3,8,1 +6,13,121,6,3,8,0 +6,14,121,6,3,8,0 +6,15,104,3,3,8,0 +6,16,104,3,3,0,0 +6,17,104,3,3,0,0 +6,18,104,3,3,0,0 +6,19,104,3,3,0,0 +6,20,104,3,3,0,0 +6,21,104,3,3,0,0 +6,22,104,3,3,0,0 +6,23,121,6,3,0,1 +6,24,113,6,3,8,1 +6,25,121,6,3,8,1 +6,26,104,6,3,8,1 +6,27,104,6,3,8,0 +6,28,104,6,3,0,0 +6,29,104,9,3,0,1 +6,30,104,3,3,0,1 +6,31,104,9,3,0,1 +6,32,104,3,3,0,1 +6,33,104,3,3,0,1 +6,34,103,6,3,8,1 +6,35,113,6,3,8,1 +6,36,121,6,3,8,1 +6,37,121,6,3,8,1 +7,8,102,6,2,8,1 +7,9,121,6,3,8,1 +7,10,121,6,3,8,1 +7,11,104,6,3,8,0 +7,12,121,6,3,8,0 +7,13,104,6,3,8,0 +7,14,104,6,3,0,0 +7,15,104,3,3,0,0 +7,16,104,3,3,0,0 +7,17,104,3,3,0,0 +7,18,104,3,3,0,0 +7,19,104,3,3,0,0 +7,20,104,3,3,0,1 +7,21,103,6,3,8,1 +7,22,113,6,3,8,1 +7,23,113,6,3,8,1 +7,24,104,6,3,8,1 +7,25,104,6,3,8,1 +7,26,104,6,3,8,1 +7,27,104,6,3,8,1 +7,28,104,6,3,8,0 +7,29,104,9,3,0,0 +7,30,104,3,3,0,1 +7,31,104,9,3,0,1 +7,32,104,3,3,0,1 +7,33,104,9,3,0,1 +7,34,103,3,3,8,1 +7,35,104,6,3,8,1 +7,36,121,6,3,8,1 +7,37,121,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index 49dff757..7d0ff1de 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,103,4,2,0,0 -8,9,113,6,2,0,0 -8,10,113,6,2,0,0 -8,11,113,6,2,0,0 -8,12,113,6,2,0,0 -8,13,113,6,2,0,0 -8,14,113,6,7,0,0 -8,15,113,6,7,0,0 -8,16,113,6,2,0,1 -8,17,113,6,2,0,1 -8,18,113,6,2,0,1 -8,19,113,6,2,0,2 -8,20,113,6,2,0,2 -8,21,113,6,2,0,2 -8,22,113,6,2,0,2 -8,23,113,6,2,0,2 -8,24,113,6,2,0,2 -8,25,113,6,2,0,2 -8,26,113,6,2,0,2 -8,27,113,6,2,0,2 -8,28,113,6,2,0,2 -8,29,113,6,2,0,2 -8,30,113,6,2,0,2 -8,31,113,6,2,0,2 -8,32,113,6,2,0,2 -8,33,113,6,2,0,2 -8,34,113,6,2,0,2 -8,35,113,6,2,0,2 -8,36,113,6,2,0,2 -8,37,113,6,2,0,2 +8,8,113,6,3,8,1 +8,9,121,6,3,8,1 +8,10,121,6,3,8,1 +8,11,104,6,3,8,1 +8,12,104,6,3,8,0 +8,13,121,6,3,8,0 +8,14,104,6,3,8,0 +8,15,104,3,3,0,0 +8,16,104,3,3,0,0 +8,17,104,3,3,0,0 +8,18,104,3,3,0,0 +8,19,104,3,3,0,0 +8,20,104,3,3,0,0 +8,21,104,3,3,0,0 +8,22,121,6,3,0,1 +8,23,113,6,3,8,1 +8,24,121,6,3,8,1 +8,25,104,6,3,8,1 +8,26,104,6,3,8,0 +8,27,104,6,3,0,0 +8,28,104,9,3,0,1 +8,29,104,3,3,0,1 +8,30,104,9,3,0,1 +8,31,104,3,3,0,1 +8,32,104,3,3,0,1 +8,33,103,6,3,8,1 +8,34,113,6,3,8,1 +8,35,121,6,3,8,1 +8,36,121,6,3,8,1 +8,37,104,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index 4a0c0385..057d4027 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,103,4,3,0,0 -9,9,103,4,2,0,0 -9,10,121,6,2,0,0 -9,11,121,6,2,0,0 -9,12,121,6,2,0,1 -9,13,113,6,2,8,0 -9,14,121,6,2,8,0 -9,15,121,6,2,8,0 -9,16,121,4,2,8,0 -9,17,109,4,9,8,0 -9,18,109,4,0,5,0 -9,19,109,4,0,5,0 -9,20,120,4,0,5,0 -9,21,109,4,0,5,0 -9,22,109,4,9,5,0 -9,23,109,4,0,5,0 -9,24,109,4,9,5,0 -9,25,127,4,0,9,0 -9,26,109,4,9,5,0 -9,27,109,4,3,9,0 -9,28,109,4,0,5,0 -9,29,109,4,3,9,0 -9,30,120,4,0,5,0 -9,31,109,4,3,9,0 -9,32,120,4,0,5,0 -9,33,109,4,9,5,0 -9,34,127,4,0,9,0 -9,35,109,4,9,5,0 -9,36,109,4,9,5,0 -9,37,109,4,0,5,0 +9,8,113,6,3,8,1 +9,9,121,6,3,8,1 +9,10,104,6,3,8,1 +9,11,104,6,3,8,1 +9,12,104,6,3,8,0 +9,13,104,6,3,8,0 +9,14,104,3,3,0,0 +9,15,104,3,3,0,0 +9,16,104,3,3,0,0 +9,17,104,3,3,0,0 +9,18,104,3,3,0,1 +9,19,103,4,3,0,1 +9,20,103,6,3,8,1 +9,21,113,6,3,8,1 +9,22,113,6,3,8,1 +9,23,113,6,3,8,1 +9,24,104,6,3,8,1 +9,25,104,6,3,8,1 +9,26,104,6,3,8,1 +9,27,104,6,3,8,1 +9,28,104,9,3,8,0 +9,29,104,3,3,0,0 +9,30,104,3,3,0,0 +9,31,104,3,3,0,1 +9,32,104,9,3,0,1 +9,33,104,3,3,0,1 +9,34,104,3,3,0,1 +9,35,103,6,3,8,1 +9,36,121,6,3,8,1 +9,37,113,6,3,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index 68b4bc7d..9e3ea8c3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,15 +1,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,104,4,2,8,1 -0,9,102,6,2,8,1 -0,10,102,6,2,8,0 +0,8,102,6,2,0,1 +0,9,102,6,2,0,1 +0,10,102,6,2,0,1 0,11,102,6,2,8,1 0,12,102,6,2,8,1 0,13,102,6,2,8,1 0,14,102,6,2,6,1 0,15,102,6,2,8,1 -0,16,102,6,2,6,1 -0,17,102,6,2,8,1 -0,18,102,6,2,6,1 +0,16,102,6,2,0,1 +0,17,102,6,2,0,1 +0,18,102,6,2,0,1 0,19,102,6,2,0,1 0,20,102,6,2,0,1 0,21,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index 875d7e7d..2a623d17 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,15 +1,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,104,4,7,6,0 -1,9,103,4,9,8,1 -1,10,102,6,2,8,0 +1,8,102,6,2,8,1 +1,9,102,6,2,8,1 +1,10,102,6,2,8,1 1,11,102,6,2,8,1 1,12,102,6,2,8,1 1,13,102,6,2,8,1 1,14,102,6,2,8,1 1,15,102,6,2,8,1 -1,16,102,6,2,8,1 -1,17,102,6,2,6,1 -1,18,102,6,2,8,1 +1,16,102,6,2,6,1 +1,17,102,6,2,0,1 +1,18,102,6,2,0,1 1,19,102,6,2,0,1 1,20,102,6,2,0,1 1,21,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index aaa36998..a8977415 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,16 +1,16 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,110,4,2,6,0 -2,9,110,4,2,8,1 -2,10,110,6,2,8,0 -2,11,102,6,2,8,0 +2,8,102,6,2,8,1 +2,9,102,6,2,8,1 +2,10,102,6,2,8,1 +2,11,102,6,2,8,1 2,12,102,6,2,8,1 2,13,102,6,2,8,1 -2,14,102,6,2,8,1 -2,15,102,6,2,8,1 -2,16,102,6,2,8,1 -2,17,102,6,2,6,1 -2,18,102,6,2,8,1 -2,19,102,6,2,6,1 +2,14,102,6,2,0,1 +2,15,102,6,2,0,1 +2,16,102,6,2,0,1 +2,17,102,6,2,0,1 +2,18,102,6,2,0,1 +2,19,102,6,2,0,1 2,20,102,6,2,0,1 2,21,102,6,2,0,1 2,22,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 9d5383b8..780b6ded 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,15 +1,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,104,4,2,6,0 -3,9,103,6,5,8,1 -3,10,102,4,2,6,0 +3,8,102,6,2,8,1 +3,9,102,6,2,8,1 +3,10,102,6,2,8,1 3,11,102,6,2,8,1 3,12,102,6,2,8,1 3,13,102,6,2,8,1 3,14,102,6,2,8,1 3,15,102,6,2,8,1 -3,16,102,6,2,8,1 -3,17,102,6,2,8,1 -3,18,102,6,2,6,1 +3,16,102,6,2,6,1 +3,17,102,6,2,0,1 +3,18,102,6,2,0,1 3,19,102,6,2,0,1 3,20,102,6,2,0,1 3,21,102,6,2,0,1 @@ -29,14 +29,14 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 3,35,102,6,2,0,1 3,36,102,6,2,0,1 3,37,102,6,2,0,1 -4,8,110,4,2,6,0 -4,9,110,4,2,8,1 -4,10,102,6,2,6,0 -4,11,102,6,2,8,1 -4,12,102,6,2,8,1 +4,8,113,5,2,0,1 +4,9,102,6,2,0,1 +4,10,102,6,2,0,1 +4,11,102,6,2,0,1 +4,12,102,6,2,0,1 4,13,102,6,2,0,1 4,14,102,6,2,8,1 -4,15,102,6,2,6,1 +4,15,102,6,2,8,1 4,16,102,6,2,0,1 4,17,102,6,2,0,1 4,18,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index 956ddf9b..a6dfbfa4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,8 +1,8 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,110,4,9,6,0 -5,9,110,4,2,8,1 -5,10,110,4,2,6,0 -5,11,113,6,2,8,2 +5,8,113,7,2,4,2 +5,9,113,5,2,0,1 +5,10,113,6,2,0,1 +5,11,113,6,2,0,1 5,12,113,6,2,0,1 5,13,113,6,2,0,1 5,14,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index b4ef4bd3..eeb5e8ef 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,14 +1,14 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,110,4,2,8,0 -6,9,102,6,2,8,0 +6,8,102,6,2,8,1 +6,9,102,6,2,8,1 6,10,102,6,2,8,1 6,11,102,6,2,8,1 6,12,102,6,2,8,1 6,13,102,6,2,8,1 6,14,102,6,2,8,1 -6,15,102,6,3,6,1 -6,16,102,6,2,8,1 -6,17,102,6,2,6,1 +6,15,102,6,2,8,1 +6,16,102,6,2,6,1 +6,17,102,6,2,0,1 6,18,102,6,2,0,1 6,19,102,6,2,0,1 6,20,102,6,2,0,1 @@ -29,17 +29,17 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,35,102,6,2,0,1 6,36,102,6,2,0,1 6,37,102,6,2,0,1 -7,8,104,4,7,6,0 -7,9,124,4,9,8,1 -7,10,110,6,2,8,0 -7,11,102,4,2,6,0 +7,8,102,6,2,8,1 +7,9,102,6,2,8,1 +7,10,102,6,2,8,1 +7,11,102,6,2,8,1 7,12,102,6,2,8,1 7,13,102,6,2,8,1 -7,14,102,6,2,6,1 +7,14,102,6,3,6,1 7,15,102,6,2,8,1 -7,16,102,6,2,8,1 -7,17,102,6,2,6,1 -7,18,102,6,2,8,1 +7,16,102,6,2,0,1 +7,17,102,6,2,0,1 +7,18,102,6,2,0,1 7,19,102,6,2,0,1 7,20,102,6,2,0,1 7,21,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index 11f63b7e..811522ec 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,15 +1,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,110,4,2,6,0 -8,9,102,4,2,8,1 -8,10,102,6,2,8,0 +8,8,102,6,2,8,0 +8,9,102,6,2,8,1 +8,10,102,6,2,8,1 8,11,102,6,2,8,1 8,12,102,6,2,8,1 8,13,102,6,2,8,1 -8,14,102,6,2,8,1 -8,15,102,6,2,6,1 -8,16,102,6,2,8,1 -8,17,102,6,2,6,1 -8,18,102,6,2,8,1 +8,14,102,6,2,6,1 +8,15,102,6,3,6,1 +8,16,102,6,2,6,1 +8,17,102,6,2,0,1 +8,18,102,6,2,0,1 8,19,102,6,2,0,1 8,20,102,6,2,0,1 8,21,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index c00f4102..12621cb2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,17 +1,17 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,110,4,8,6,0 -9,9,110,4,2,8,0 -9,10,102,4,2,8,0 -9,11,102,6,2,8,1 -9,12,102,6,2,8,0 +9,8,113,6,2,6,1 +9,9,102,6,2,0,1 +9,10,102,6,2,0,1 +9,11,102,6,2,0,1 +9,12,102,6,2,0,1 9,13,102,6,2,0,1 9,14,102,6,2,0,1 9,15,102,6,2,0,1 -9,16,102,6,2,8,1 -9,17,102,6,2,8,1 -9,18,102,6,2,6,1 -9,19,102,6,2,8,1 -9,20,102,6,2,6,1 +9,16,102,6,2,0,1 +9,17,102,6,2,0,1 +9,18,102,6,2,0,1 +9,19,102,6,2,0,1 +9,20,102,6,2,0,1 9,21,102,6,2,0,1 9,22,102,6,2,0,1 9,23,102,6,2,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 0920b6c1..2a8d05f6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,121,4,9,2,1 -0,9,113,9,7,8,1 -0,10,113,3,1,6,1 -0,11,113,9,3,2,1 -0,12,127,6,1,7,1 -0,13,121,6,1,7,1 -0,14,121,9,1,7,1 -0,15,121,6,0,7,1 -0,16,121,6,0,7,1 -0,17,121,6,7,7,1 -0,18,113,6,7,7,1 -0,19,121,6,7,2,1 -0,20,113,6,7,2,0 -0,21,113,4,7,2,0 -0,22,121,6,1,2,0 -0,23,127,4,0,8,1 -0,24,127,6,0,2,0 -0,25,127,4,0,8,1 -0,26,127,4,1,8,1 -0,27,127,4,1,8,0 -0,28,127,4,1,8,1 -0,29,127,4,1,7,1 -0,30,127,0,1,0,1 -0,31,113,1,4,0,1 -0,32,113,1,9,7,1 -0,33,113,1,7,7,1 -0,34,113,6,9,0,1 -0,35,113,1,7,7,1 -0,36,113,6,7,7,1 -0,37,113,6,7,2,1 +0,8,113,6,2,0,1 +0,9,113,6,2,0,1 +0,10,113,6,2,0,1 +0,11,113,6,2,0,1 +0,12,113,6,2,0,1 +0,13,113,6,2,0,2 +0,14,113,6,2,0,2 +0,15,113,6,2,0,2 +0,16,113,6,2,0,2 +0,17,113,6,2,0,2 +0,18,113,6,2,0,2 +0,19,113,6,2,0,2 +0,20,113,6,2,0,2 +0,21,113,6,2,0,2 +0,22,113,6,2,0,2 +0,23,113,6,2,0,2 +0,24,113,6,2,0,2 +0,25,113,6,2,0,2 +0,26,113,6,2,0,2 +0,27,113,6,2,0,2 +0,28,113,6,2,0,2 +0,29,113,6,2,0,2 +0,30,113,6,2,0,2 +0,31,113,6,2,0,2 +0,32,113,6,2,0,2 +0,33,113,6,2,0,2 +0,34,113,6,2,0,2 +0,35,113,6,2,0,2 +0,36,113,6,2,0,2 +0,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index a73055c6..cd416b33 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,0,7,6,0 -1,9,121,6,3,8,0 -1,10,121,9,0,8,0 -1,11,121,4,0,8,0 -1,12,127,6,0,7,0 -1,13,121,6,0,7,1 -1,14,127,6,7,7,1 -1,15,127,6,7,7,1 -1,16,127,4,1,7,1 -1,17,127,4,1,2,1 -1,18,127,4,1,2,1 -1,19,127,6,7,2,1 -1,20,113,6,7,0,1 -1,21,113,1,7,0,1 -1,22,113,1,7,0,1 -1,23,113,1,7,0,1 -1,24,113,1,7,0,1 -1,25,113,1,7,0,1 -1,26,113,6,7,2,1 -1,27,113,6,1,2,1 -1,28,113,6,0,2,1 -1,29,113,6,0,2,1 -1,30,113,6,0,2,1 -1,31,113,6,0,2,1 -1,32,113,1,8,2,1 -1,33,113,1,1,8,1 -1,34,113,1,0,8,1 -1,35,113,1,8,8,1 -1,36,113,1,0,7,1 -1,37,113,1,8,7,1 +1,8,113,6,0,9,0 +1,9,100,6,0,8,0 +1,10,121,6,0,8,0 +1,11,120,4,0,8,0 +1,12,120,4,0,8,0 +1,13,120,0,0,5,0 +1,14,109,4,8,8,0 +1,15,109,4,9,5,0 +1,16,109,4,9,5,0 +1,17,109,4,9,5,0 +1,18,109,4,0,5,0 +1,19,109,4,9,5,0 +1,20,109,4,0,9,0 +1,21,109,4,0,5,0 +1,22,127,4,0,9,0 +1,23,120,4,0,9,0 +1,24,120,4,0,9,0 +1,25,109,4,0,5,0 +1,26,109,4,9,5,0 +1,27,127,4,0,9,0 +1,28,109,4,9,5,0 +1,29,109,4,9,5,0 +1,30,109,4,3,5,0 +1,31,109,4,3,5,0 +1,32,109,4,3,5,0 +1,33,109,4,3,5,0 +1,34,127,6,3,5,0 +1,35,109,6,3,5,0 +1,36,112,6,3,5,0 +1,37,103,6,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index 087f11a3..cedb1297 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,121,4,7,8,0 -2,9,121,0,3,7,0 -2,10,121,0,7,6,1 -2,11,113,0,7,6,0 -2,12,121,4,1,6,1 -2,13,127,0,7,7,1 -2,14,127,6,7,0,1 -2,15,127,6,1,0,1 -2,16,127,6,7,2,1 -2,17,127,6,7,0,1 -2,18,127,6,1,0,1 -2,19,127,6,1,0,1 -2,20,113,6,7,0,1 -2,21,113,1,7,0,1 -2,22,113,1,7,0,1 -2,23,113,1,7,0,1 -2,24,113,1,7,0,1 -2,25,113,6,7,2,1 -2,26,113,6,1,2,1 -2,27,113,6,0,2,1 -2,28,113,6,0,2,1 -2,29,113,6,0,2,1 -2,30,113,6,0,2,1 -2,31,113,1,8,2,1 -2,32,113,1,1,8,1 -2,33,113,1,0,8,1 -2,34,113,1,8,8,1 -2,35,113,1,0,7,1 -2,36,113,1,8,7,1 -2,37,121,6,7,7,1 +2,8,113,4,2,0,1 +2,9,113,6,2,0,0 +2,10,113,6,2,0,0 +2,11,113,6,2,0,1 +2,12,113,6,2,0,1 +2,13,113,6,2,0,1 +2,14,113,6,2,0,2 +2,15,113,6,2,0,2 +2,16,113,6,2,0,2 +2,17,113,6,2,0,2 +2,18,113,6,2,0,2 +2,19,113,6,2,0,2 +2,20,113,6,2,0,2 +2,21,113,6,2,0,2 +2,22,113,6,2,0,2 +2,23,113,6,2,0,2 +2,24,113,6,2,0,2 +2,25,113,6,2,0,2 +2,26,113,6,2,0,2 +2,27,113,6,2,0,2 +2,28,113,6,2,0,2 +2,29,113,6,2,0,2 +2,30,113,6,2,0,2 +2,31,113,6,2,0,2 +2,32,113,6,2,0,2 +2,33,113,6,2,0,2 +2,34,113,6,2,0,2 +2,35,113,6,2,0,2 +2,36,113,6,2,0,2 +2,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index c6ba0686..477f3560 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,4,9,6,0 -3,9,121,0,3,8,1 -3,10,121,0,7,8,0 -3,11,121,4,0,8,0 -3,12,127,4,0,8,0 -3,13,127,4,0,7,0 -3,14,127,6,0,7,1 -3,15,127,6,7,7,1 -3,16,127,6,7,7,1 -3,17,127,6,1,7,1 -3,18,127,6,1,7,1 -3,19,124,6,7,2,1 -3,20,113,6,7,2,1 -3,21,113,6,7,2,1 -3,22,113,6,7,2,1 -3,23,113,6,1,2,1 -3,24,113,1,2,8,1 -3,25,113,1,1,8,1 -3,26,113,1,0,8,1 -3,27,113,1,0,8,1 -3,28,113,1,0,7,1 -3,29,121,1,8,7,1 -3,30,121,6,0,7,1 -3,31,121,6,0,7,1 -3,32,121,6,7,7,1 -3,33,113,6,7,7,1 -3,34,121,6,7,7,1 -3,35,113,6,7,7,1 -3,36,113,6,7,2,1 -3,37,113,6,7,2,1 -4,8,113,4,9,8,1 -4,9,121,1,7,2,0 -4,10,113,3,7,8,0 -4,11,121,6,9,6,0 -4,12,121,9,1,7,1 -4,13,127,6,9,7,1 -4,14,127,6,1,7,1 -4,15,127,6,1,7,1 -4,16,127,9,1,7,1 -4,17,127,4,1,2,1 -4,18,127,6,1,2,1 -4,19,127,4,1,2,1 -4,20,113,6,2,2,1 -4,21,113,1,3,2,1 -4,22,113,6,7,8,1 -4,23,113,1,1,0,1 -4,24,113,1,2,8,1 -4,25,113,1,1,7,1 -4,26,113,1,8,2,1 -4,27,113,6,7,7,1 -4,28,121,6,0,2,1 -4,29,113,6,0,7,1 -4,30,121,6,8,2,1 -4,31,113,6,7,7,1 -4,32,121,6,7,2,1 -4,33,113,6,7,7,1 -4,34,121,6,7,2,1 -4,35,113,6,7,2,1 -4,36,113,4,1,2,1 -4,37,113,6,0,2,0 +3,8,121,4,2,8,1 +3,9,121,4,2,8,1 +3,10,121,4,9,8,0 +3,11,109,4,9,5,0 +3,12,109,6,9,5,0 +3,13,121,6,0,5,0 +3,14,109,4,9,5,0 +3,15,109,4,0,5,0 +3,16,120,8,0,9,0 +3,17,120,4,0,5,0 +3,18,127,4,0,9,0 +3,19,120,4,0,9,0 +3,20,109,4,0,8,0 +3,21,109,4,9,5,0 +3,22,109,4,0,5,0 +3,23,109,4,9,5,0 +3,24,109,4,9,5,0 +3,25,109,4,3,5,0 +3,26,109,4,9,5,0 +3,27,127,4,0,9,0 +3,28,127,4,0,5,0 +3,29,127,4,0,9,0 +3,30,109,4,0,5,0 +3,31,109,4,0,9,0 +3,32,109,4,0,5,0 +3,33,109,4,9,5,0 +3,34,109,4,9,5,0 +3,35,109,4,9,5,0 +3,36,109,4,3,5,0 +3,37,109,4,3,5,0 +4,8,113,7,2,8,1 +4,9,113,6,2,8,0 +4,10,121,6,2,8,0 +4,11,121,4,2,8,0 +4,12,109,4,9,5,0 +4,13,109,6,9,5,0 +4,14,121,6,0,9,0 +4,15,120,4,0,5,0 +4,16,120,9,0,9,0 +4,17,120,0,0,5,0 +4,18,109,4,0,5,0 +4,19,109,4,0,5,0 +4,20,127,4,9,9,0 +4,21,127,4,9,5,0 +4,22,109,4,9,5,0 +4,23,109,4,9,5,0 +4,24,109,4,9,5,0 +4,25,109,6,3,9,0 +4,26,109,4,0,5,0 +4,27,127,6,0,9,0 +4,28,127,9,0,5,0 +4,29,127,4,0,9,0 +4,30,120,4,0,5,0 +4,31,109,4,3,9,0 +4,32,109,4,9,5,0 +4,33,109,4,9,5,0 +4,34,109,4,9,5,0 +4,35,109,4,9,5,0 +4,36,109,4,3,5,0 +4,37,109,4,3,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index 67fdd593..e21fb885 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,0,7,4,1 -5,9,113,1,9,6,1 -5,10,113,1,9,2,1 -5,11,113,1,7,2,1 -5,12,113,6,9,7,1 -5,13,121,1,3,2,1 -5,14,113,6,7,7,1 -5,15,121,6,3,2,1 -5,16,113,6,0,7,1 -5,17,121,1,8,2,1 -5,18,113,6,7,7,1 -5,19,121,6,1,2,1 -5,20,113,6,0,2,1 -5,21,113,4,7,2,1 -5,22,113,6,1,2,1 -5,23,113,1,0,2,1 -5,24,113,1,7,2,1 -5,25,113,1,7,7,1 -5,26,113,1,7,2,1 -5,27,113,1,1,7,1 -5,28,121,6,9,2,1 -5,29,113,6,0,7,1 -5,30,121,1,8,2,1 -5,31,113,6,7,7,1 -5,32,121,6,7,7,1 -5,33,113,6,7,7,1 -5,34,121,6,7,2,1 -5,35,113,6,7,7,1 -5,36,121,6,1,2,1 -5,37,113,6,7,8,1 +5,8,113,6,2,1,1 +5,9,113,6,2,0,2 +5,10,113,6,2,0,2 +5,11,113,6,2,0,2 +5,12,113,6,2,0,2 +5,13,113,6,2,0,2 +5,14,113,6,2,0,2 +5,15,113,6,2,0,2 +5,16,113,6,2,0,2 +5,17,113,6,2,0,2 +5,18,113,6,2,0,2 +5,19,113,6,2,0,2 +5,20,113,6,2,0,2 +5,21,113,6,2,0,2 +5,22,113,6,2,0,2 +5,23,113,6,2,0,2 +5,24,113,6,2,0,2 +5,25,113,6,2,0,2 +5,26,113,6,2,0,2 +5,27,113,6,2,0,2 +5,28,113,6,2,0,2 +5,29,113,6,2,0,2 +5,30,113,6,2,0,2 +5,31,113,6,2,0,2 +5,32,113,6,2,0,2 +5,33,113,6,2,0,2 +5,34,113,6,2,0,2 +5,35,113,6,2,0,2 +5,36,113,6,2,0,2 +5,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index f223e485..908877f2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,4,7,8,0 -6,9,121,6,7,8,0 -6,10,121,6,7,7,0 -6,11,121,6,7,7,1 -6,12,127,6,7,7,1 -6,13,127,4,7,0,1 -6,14,127,4,1,0,1 -6,15,127,4,1,0,1 -6,16,127,4,1,0,1 -6,17,127,4,1,2,1 -6,18,127,6,7,8,1 -6,19,113,6,1,0,1 -6,20,113,1,7,0,1 -6,21,113,6,7,0,1 -6,22,113,1,7,0,1 -6,23,113,1,7,0,1 -6,24,113,1,7,0,1 -6,25,113,6,7,0,1 -6,26,113,6,1,2,1 -6,27,113,6,0,2,1 -6,28,113,6,0,2,1 -6,29,113,6,0,2,1 -6,30,113,6,0,2,1 -6,31,113,6,8,2,1 -6,32,113,1,1,2,1 -6,33,113,1,8,8,1 -6,34,113,1,0,8,1 -6,35,113,1,8,7,1 -6,36,121,1,8,2,1 -6,37,113,6,7,7,1 -7,8,121,4,9,6,0 -7,9,121,0,3,8,0 -7,10,121,0,3,6,0 -7,11,121,0,3,7,0 -7,12,121,0,9,7,0 -7,13,127,0,9,7,1 -7,14,127,6,7,7,1 -7,15,127,6,1,7,1 -7,16,127,6,7,2,1 -7,17,127,4,1,8,1 -7,18,127,6,1,8,1 -7,19,127,6,1,8,1 -7,20,127,6,1,0,1 -7,21,113,1,7,0,1 -7,22,113,1,7,0,1 -7,23,113,1,7,0,1 -7,24,113,1,1,0,1 -7,25,113,1,4,0,1 -7,26,113,1,7,7,1 -7,27,113,6,7,2,1 -7,28,113,6,7,2,1 -7,29,113,6,7,7,1 -7,30,121,6,7,2,1 -7,31,113,6,7,7,1 -7,32,121,6,7,2,1 -7,33,113,6,7,7,1 -7,34,121,6,1,2,1 -7,35,127,6,0,8,1 -7,36,127,6,0,2,1 -7,37,127,4,0,2,1 +6,8,113,6,2,8,0 +6,9,113,6,2,8,0 +6,10,113,6,2,8,0 +6,11,121,6,2,8,0 +6,12,121,6,0,8,0 +6,13,109,6,0,8,0 +6,14,109,4,0,8,0 +6,15,109,4,0,5,0 +6,16,109,4,0,5,0 +6,17,109,4,9,5,0 +6,18,109,4,0,5,0 +6,19,109,4,9,5,0 +6,20,109,4,9,5,0 +6,21,109,4,3,9,0 +6,22,109,4,0,5,0 +6,23,109,4,3,9,0 +6,24,109,4,0,5,0 +6,25,127,4,0,9,0 +6,26,109,4,0,5,0 +6,27,127,4,0,9,0 +6,28,109,4,0,5,0 +6,29,109,4,9,5,0 +6,30,109,4,9,5,0 +6,31,109,4,9,5,0 +6,32,109,4,3,5,0 +6,33,109,4,3,5,0 +6,34,109,4,3,5,0 +6,35,109,4,3,5,0 +6,36,109,6,3,5,0 +6,37,127,6,3,9,0 +7,8,109,4,9,6,0 +7,9,121,4,9,6,0 +7,10,121,4,2,8,1 +7,11,109,4,9,8,0 +7,12,109,4,9,5,0 +7,13,109,4,9,5,0 +7,14,109,6,3,5,0 +7,15,121,6,0,5,0 +7,16,109,6,0,8,0 +7,17,109,4,0,5,0 +7,18,127,4,0,9,0 +7,19,120,4,0,5,0 +7,20,127,4,3,9,0 +7,21,109,4,9,5,0 +7,22,109,4,3,0,0 +7,23,109,4,9,5,0 +7,24,109,4,9,5,0 +7,25,109,4,3,5,0 +7,26,109,4,3,5,0 +7,27,109,6,3,5,0 +7,28,109,6,3,5,0 +7,29,112,6,3,9,0 +7,30,121,6,3,5,0 +7,31,112,6,3,9,0 +7,32,121,6,3,5,0 +7,33,103,6,3,0,0 +7,34,103,6,3,0,0 +7,35,103,6,2,0,0 +7,36,103,6,2,0,0 +7,37,103,6,2,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index c09630f3..d1cabc88 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,4,3,8,0 -8,9,121,1,3,8,0 -8,10,121,9,0,7,0 -8,11,121,4,9,7,1 -8,12,127,6,7,7,1 -8,13,127,6,7,7,1 -8,14,127,6,7,0,1 -8,15,127,6,1,0,1 -8,16,127,4,1,2,1 -8,17,127,4,1,2,1 -8,18,127,6,7,2,1 -8,19,113,6,7,0,1 -8,20,113,1,1,0,1 -8,21,113,1,2,8,1 -8,22,113,1,1,0,1 -8,23,113,1,2,8,1 -8,24,113,1,9,7,1 -8,25,113,6,7,7,1 -8,26,121,6,1,2,1 -8,27,113,6,0,7,1 -8,28,121,6,7,2,1 -8,29,113,6,0,7,1 -8,30,121,6,7,2,1 -8,31,113,6,0,7,1 -8,32,121,1,7,2,1 -8,33,113,6,7,8,1 -8,34,113,1,1,2,1 -8,35,113,6,7,8,1 -8,36,102,1,1,2,1 -8,37,113,6,7,8,0 +8,8,113,6,2,8,0 +8,9,113,6,2,8,0 +8,10,113,6,2,8,0 +8,11,113,6,2,0,0 +8,12,113,6,2,0,0 +8,13,113,6,8,0,0 +8,14,113,6,8,0,0 +8,15,113,9,7,0,0 +8,16,113,6,2,0,1 +8,17,113,6,2,0,1 +8,18,113,6,2,0,1 +8,19,113,6,2,0,1 +8,20,113,6,2,0,2 +8,21,113,6,2,0,2 +8,22,113,6,2,0,2 +8,23,113,6,2,0,2 +8,24,113,6,2,0,2 +8,25,113,6,2,0,2 +8,26,113,6,2,0,2 +8,27,113,6,2,0,2 +8,28,113,6,2,0,2 +8,29,113,6,2,0,2 +8,30,113,6,2,0,2 +8,31,113,6,2,0,2 +8,32,113,6,2,0,2 +8,33,113,6,2,0,2 +8,34,113,6,2,0,2 +8,35,113,6,2,0,2 +8,36,113,6,2,0,2 +8,37,113,6,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index ac971d29..f9969b00 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,121,0,9,2,0 -9,9,121,3,3,8,0 -9,10,121,3,0,8,0 -9,11,121,3,0,8,0 -9,12,121,3,0,7,0 -9,13,121,6,8,7,1 -9,14,127,0,7,7,1 -9,15,127,0,7,7,1 -9,16,127,4,7,7,1 -9,17,127,6,7,7,1 -9,18,127,6,7,7,1 -9,19,127,6,7,2,1 -9,20,113,6,7,2,1 -9,21,113,6,7,2,1 -9,22,113,6,7,2,1 -9,23,113,6,1,2,1 -9,24,113,1,2,8,1 -9,25,113,1,1,8,1 -9,26,113,1,0,8,1 -9,27,113,1,0,8,1 -9,28,113,1,0,7,1 -9,29,121,1,8,7,1 -9,30,121,6,0,7,1 -9,31,121,6,0,7,1 -9,32,121,6,7,7,1 -9,33,113,6,7,7,1 -9,34,121,6,7,7,1 -9,35,113,6,7,7,1 -9,36,113,6,7,2,1 -9,37,113,6,7,2,1 +9,8,100,6,0,9,0 +9,9,100,9,8,9,0 +9,10,109,4,9,5,1 +9,11,113,6,0,9,0 +9,12,100,9,0,9,0 +9,13,109,4,9,5,1 +9,14,112,6,3,9,0 +9,15,121,6,0,5,0 +9,16,109,4,0,8,0 +9,17,109,4,0,5,0 +9,18,127,4,0,9,0 +9,19,109,4,9,5,0 +9,20,127,4,0,5,0 +9,21,127,4,0,9,0 +9,22,109,4,9,5,0 +9,23,109,4,9,5,0 +9,24,109,4,3,5,0 +9,25,109,4,3,5,0 +9,26,109,4,3,5,0 +9,27,109,6,3,5,0 +9,28,121,6,3,0,0 +9,29,109,4,3,7,0 +9,30,112,6,3,5,0 +9,31,103,6,3,0,0 +9,32,103,6,2,0,0 +9,33,103,6,2,0,0 +9,34,113,6,2,0,0 +9,35,113,6,2,0,0 +9,36,113,6,2,0,0 +9,37,113,6,2,0,1 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv index feb89b42..0cf0e0be 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0091290055,0.0077892784,0.007239608,0.020136122,0.006804843,0.065107465,0.09113526,0.03846739,0.046789855,0.011856737,0.010647341,0.0430088,0.01229634,0.024512613,0.043958448,0.015431894,0.10510967,0.008920799,0.012439459,0.013178185,0.0115483245,0.042840227,0.020539861,0.013582593,0.07060103,0.024588121,0.021217003,0.10432629,0.008402498,0.025339192,0.025642872,0.0106556,0.026757332 +0.009402489,0.007112399,0.006294906,0.025800984,0.005330445,0.058306154,0.09866103,0.031214684,0.053123873,0.008108479,0.006941985,0.03378066,0.015496237,0.024613176,0.034951206,0.013683666,0.15753025,0.0058497526,0.010813744,0.012419266,0.00899315,0.0433608,0.024071196,0.0070383553,0.061834656,0.040662296,0.013590249,0.08462712,0.007689061,0.02625725,0.025855735,0.011850585,0.024734205 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv index d7938c94..7a95c833 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008205366,0.008331864,0.0074459263,0.021188624,0.0073211472,0.061644685,0.07545811,0.034722853,0.043902382,0.010114443,0.010213885,0.042470828,0.012390661,0.022267908,0.032764185,0.01806368,0.12040593,0.009458063,0.014117386,0.011872736,0.013330289,0.041174386,0.020099496,0.013925595,0.072014526,0.024408026,0.018947104,0.13367255,0.00828295,0.024368336,0.02391859,0.011060069,0.022437433 +0.008010792,0.007172111,0.0058797314,0.027109819,0.005602905,0.055375658,0.075244375,0.029313534,0.04922832,0.006365298,0.006468321,0.034970127,0.01725487,0.02158429,0.023749217,0.016210178,0.18300672,0.006796729,0.011571762,0.008914565,0.0113315275,0.037273988,0.022148373,0.007266352,0.05995564,0.03540441,0.009834666,0.13455547,0.0071732774,0.021706866,0.02286324,0.011315751,0.01934116 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv index 06ba23c9..c2b44898 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012586267,0.009460248,0.01056256,0.024452873,0.0086881975,0.052435704,0.10992195,0.0706047,0.03934652,0.017093472,0.012070613,0.038141258,0.016003482,0.024356524,0.05110281,0.022539876,0.057360444,0.0130562065,0.014306477,0.011672565,0.013660459,0.019611526,0.033125043,0.01840493,0.062889695,0.025482355,0.023796566,0.06978374,0.011446344,0.029403456,0.027195802,0.014777219,0.034660116 +0.012989526,0.008451789,0.008343688,0.025282253,0.0077611837,0.049804118,0.12995926,0.073096894,0.043786965,0.012898271,0.010859507,0.029631373,0.019566044,0.019631185,0.046036806,0.028859269,0.060753997,0.012488813,0.016959455,0.0091642905,0.0140438145,0.013560966,0.04981232,0.0114713255,0.055660956,0.039123084,0.016607726,0.044842925,0.010157406,0.035077438,0.033839993,0.018593594,0.030883798 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv index d6044728..45b924b2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008913519,0.007365497,0.007884704,0.019221375,0.008245324,0.061635274,0.10626261,0.04613362,0.039076947,0.013314558,0.01237192,0.04430893,0.014824947,0.02413848,0.04149791,0.018489841,0.07907649,0.010472187,0.011848482,0.012690502,0.011933226,0.034617245,0.024047974,0.015420446,0.064966045,0.021884238,0.020587962,0.12284686,0.008948034,0.029838102,0.020556517,0.010585136,0.025995124 -0.0094871465,0.011149254,0.009741706,0.023295518,0.012869805,0.05367749,0.048896357,0.031161776,0.05537468,0.012018335,0.013214679,0.028068008,0.016052,0.03157924,0.03311481,0.021816775,0.052957285,0.012617017,0.022129932,0.015422226,0.02169244,0.031480502,0.015010904,0.02252592,0.07512524,0.07089812,0.022424813,0.11010506,0.011601552,0.021417523,0.044051338,0.016005058,0.02301758 +0.0084459195,0.005478003,0.005521863,0.022377402,0.0057007815,0.048822228,0.13396627,0.047674347,0.044100903,0.008718914,0.0076107793,0.030250654,0.022718882,0.023471467,0.03372159,0.020928407,0.121317275,0.007938454,0.010315681,0.009893803,0.009422824,0.028209142,0.035702728,0.00701184,0.057384826,0.034776427,0.009679542,0.101385765,0.0068074698,0.034072928,0.021294992,0.011075436,0.02420245 +0.01495256,0.011281415,0.011318162,0.04048125,0.013168076,0.043056514,0.0334818,0.020567056,0.03463795,0.00803167,0.010289714,0.013072755,0.027047135,0.024557816,0.022758493,0.027457278,0.042199492,0.008637161,0.033859514,0.014415746,0.032140847,0.015577597,0.018920667,0.013239309,0.03609407,0.24212311,0.0075512324,0.030155562,0.013689231,0.021117214,0.06719196,0.031909913,0.015017748 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv index d211d4e4..a80d23ab 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.00905651,0.008449699,0.007513583,0.01789081,0.009958172,0.059586458,0.09060577,0.05163472,0.05080496,0.015027517,0.0131017715,0.046035837,0.0129659865,0.021924116,0.043815948,0.022697417,0.07993372,0.0115594845,0.015695909,0.011922975,0.012971503,0.034338184,0.025293143,0.016621767,0.06711588,0.022368787,0.02659395,0.0939604,0.010572614,0.026793035,0.024672363,0.012390149,0.026126813 +0.010768626,0.0071453005,0.0061826305,0.020636555,0.007476879,0.053042114,0.121259026,0.055434912,0.06060058,0.011440382,0.008968602,0.034554403,0.018097715,0.020440187,0.040972438,0.030373393,0.08881224,0.010173473,0.015603304,0.009588735,0.01265485,0.026746185,0.037209485,0.0092568,0.06076117,0.03545333,0.017796088,0.065680444,0.0107882945,0.024638936,0.028522931,0.013651196,0.025268821 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv index 8e0cfcaa..9e3adcef 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008020919,0.0066487696,0.0072186273,0.023239477,0.009595765,0.059273914,0.062329326,0.027587652,0.0486198,0.008902664,0.009877493,0.03435876,0.017895322,0.022803104,0.0360042,0.016689297,0.112537004,0.008584821,0.014853362,0.013560702,0.015122532,0.043928403,0.0197575,0.01412689,0.07697556,0.037536968,0.014428177,0.14790235,0.008241942,0.016693683,0.024688615,0.013138984,0.018857364 -0.0086295465,0.007917115,0.007522475,0.023743981,0.0073922593,0.06037666,0.08741754,0.043700412,0.04167852,0.012650199,0.01019312,0.043437473,0.013766954,0.021962289,0.04165744,0.018287549,0.10325626,0.009215165,0.01214539,0.011779306,0.012235232,0.045917273,0.018463248,0.014126799,0.068317495,0.021482795,0.016241094,0.12552734,0.008585244,0.025119003,0.02262137,0.01049176,0.02414174 +0.008686484,0.005960353,0.008075502,0.039276745,0.0097908955,0.05850304,0.05206207,0.01889337,0.048300233,0.00518526,0.006793675,0.025432974,0.031197455,0.021319006,0.02276724,0.014915394,0.15458107,0.0053153243,0.016606817,0.011906255,0.0143988915,0.038660195,0.019179536,0.007658729,0.052357905,0.0989535,0.005735836,0.11204717,0.008564646,0.016890625,0.025278362,0.020940961,0.013764397 +0.008197727,0.007059469,0.0055742837,0.023094872,0.0057917624,0.051699355,0.11453689,0.0425388,0.043388393,0.00957253,0.0075618536,0.034410797,0.019690048,0.022121822,0.03347103,0.017320948,0.1331481,0.007196628,0.0096377,0.010214877,0.009963169,0.045684543,0.02452887,0.007794731,0.060744867,0.027903598,0.010524433,0.115211345,0.0076923347,0.03072128,0.020051872,0.0100175515,0.022933505 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv index e2701732..f309bc23 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.00940564,0.0063802544,0.0065206103,0.027256832,0.0066316505,0.05138203,0.10203898,0.048445128,0.049608555,0.00873864,0.010182529,0.026134778,0.014573924,0.02411956,0.038605724,0.036600724,0.07013269,0.011340922,0.020680869,0.011217838,0.01796068,0.016984288,0.026266541,0.013434889,0.07714,0.08002693,0.012619701,0.06227914,0.007597093,0.02409692,0.043419037,0.014213739,0.0239632 +0.011856947,0.007223844,0.0070571597,0.032826528,0.008080109,0.040391415,0.09255855,0.039391916,0.052117735,0.007856196,0.009969194,0.01840535,0.020338742,0.020724263,0.03398534,0.041261356,0.058055624,0.012493181,0.027867151,0.0117967855,0.0220204,0.011738093,0.035083402,0.009734925,0.05840189,0.1281792,0.009151511,0.030461226,0.008224331,0.028107058,0.059158992,0.020592097,0.024889482 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv index 99ee0e82..d6b436bb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.009661113,0.007831191,0.009208629,0.018906532,0.008831174,0.065691166,0.10545667,0.038684368,0.039912082,0.01415859,0.013239993,0.03936315,0.0131430235,0.025695173,0.04284285,0.015051846,0.08823259,0.009918131,0.012693808,0.015639171,0.01375921,0.053180333,0.021613518,0.016188124,0.064060025,0.024109922,0.022105852,0.08915296,0.01004957,0.026042204,0.028148724,0.010506249,0.026922056 +0.010474039,0.006521543,0.0074160905,0.023902066,0.0066056135,0.057496417,0.12374015,0.03752914,0.047728445,0.009753353,0.0080655515,0.027190102,0.014648493,0.026415588,0.031456366,0.0145098185,0.13790837,0.006406579,0.010360853,0.01592334,0.009660522,0.059283886,0.031192504,0.007285326,0.06007168,0.037452072,0.011793553,0.05825485,0.008734745,0.027273804,0.028270483,0.011573875,0.02510079 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv index a2fc7cd2..4cab3548 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0042463774,0.005140092,0.0060796365,0.016366256,0.0067424467,0.03495936,0.06623093,0.020122634,0.050006244,0.00649412,0.0041204235,0.02871717,0.018642396,0.028757636,0.033106435,0.01599839,0.23275402,0.007276528,0.008622721,0.017800169,0.010982657,0.028370103,0.02974473,0.0034585185,0.06776658,0.046286162,0.0064784237,0.120085396,0.0039499593,0.021950865,0.015566807,0.018041762,0.015134025 +0.0018376797,0.0023137012,0.0024238364,0.009155929,0.0033391858,0.037196394,0.11448541,0.03619819,0.020103797,0.0032478096,0.0022368645,0.042428207,0.030106904,0.017886922,0.041678857,0.017872667,0.17781384,0.002194447,0.005525137,0.01080326,0.0041624387,0.026048908,0.038844123,0.0014777568,0.105031826,0.010042691,0.004704572,0.116676375,0.0022287897,0.06710731,0.0103819845,0.011351856,0.023092275 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv index 609b1f0f..4526ff20 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0041903867,0.0054771546,0.0058246264,0.015669782,0.0071306545,0.030696195,0.06473787,0.018447235,0.05242684,0.0068101883,0.004801957,0.029178623,0.022633398,0.02907579,0.033386257,0.018674878,0.19909294,0.006572294,0.009357265,0.01596702,0.013374633,0.026702495,0.032056045,0.003591021,0.07047866,0.053875104,0.0050279247,0.13526632,0.0042218207,0.021093741,0.021248914,0.019235754,0.013676274 +0.0048656277,0.007918645,0.0054325806,0.0121447295,0.007898342,0.017814836,0.075257584,0.011748432,0.021347238,0.00770395,0.0054659205,0.023766177,0.042818088,0.014586231,0.021619631,0.062280655,0.065641224,0.0032016544,0.038712315,0.010045757,0.03476402,0.009708087,0.06701612,0.015924746,0.021149337,0.11031023,0.00664596,0.060393848,0.006036425,0.027078018,0.14114997,0.010524234,0.02902941 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv index a7ac31d6..a6528ce7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0054918397,0.0063162544,0.0061463765,0.016365495,0.0076878374,0.034990918,0.0610308,0.020188866,0.0626216,0.008143705,0.0056989286,0.028557653,0.01842186,0.026081735,0.02933535,0.018272739,0.24774212,0.008434298,0.009743969,0.017181823,0.013515602,0.028113525,0.035016388,0.004349286,0.05375894,0.048733603,0.0074889436,0.08502142,0.0040941467,0.018917236,0.024357485,0.024139129,0.014040137 +0.0023688173,0.0032759958,0.0024291654,0.0072109625,0.0038664865,0.03368376,0.037551492,0.020473365,0.020303426,0.00320672,0.002927277,0.019001897,0.0069159083,0.008086997,0.020394612,0.011339872,0.576207,0.0024872613,0.0064319503,0.010710103,0.005667849,0.009287372,0.02400277,0.002055522,0.026548946,0.011598315,0.0042506577,0.04309646,0.002323081,0.030272912,0.01817002,0.013025035,0.010827967 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv index 942890e0..29abb8a1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004381987,0.006287049,0.006620055,0.019419348,0.006867307,0.03929928,0.07064888,0.017149057,0.060524255,0.006789356,0.0050974856,0.027337514,0.024331838,0.03136498,0.029390393,0.020899236,0.15376608,0.0074551413,0.009935729,0.015628591,0.013709809,0.03817771,0.03494091,0.0051154993,0.06018743,0.075591475,0.0067811315,0.11117232,0.0047863433,0.015857743,0.028808644,0.024059782,0.017617658 -0.004469706,0.006364652,0.0068032146,0.020612448,0.007166283,0.039386127,0.08379896,0.017597469,0.06735702,0.007070649,0.005259082,0.027966166,0.024157904,0.03855127,0.026747128,0.019213978,0.11608029,0.0063566845,0.010583058,0.01697354,0.012141066,0.043337125,0.031579476,0.004105956,0.061916213,0.07502441,0.0060634622,0.11869589,0.005418634,0.019128878,0.027781855,0.025369624,0.01692181 +0.0066867806,0.009659095,0.006985347,0.018342886,0.008343686,0.02827222,0.13270424,0.009605769,0.023481674,0.0065346137,0.008042574,0.01586629,0.06682908,0.029205475,0.01841571,0.035887375,0.0029870616,0.00378063,0.021729896,0.010461546,0.025363758,0.0364591,0.043761298,0.02097016,0.028998114,0.09809047,0.012051953,0.032568526,0.00945276,0.014552994,0.11844721,0.013847485,0.08161431 +0.0062105553,0.008430051,0.0066421693,0.034530688,0.009992443,0.030213395,0.02225522,0.0048418874,0.034004305,0.006981886,0.0063810414,0.009619785,0.016620198,0.025754781,0.010917337,0.020015128,0.0059674657,0.004531538,0.036805414,0.011499066,0.03323312,0.025179174,0.01618241,0.030543782,0.015805239,0.36270088,0.008696667,0.013364138,0.008154805,0.006193264,0.11358851,0.015613565,0.03853005 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv index 7f7b97c7..b868c8da 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005170072,0.0052365907,0.00694314,0.017285356,0.008234528,0.037991844,0.07294639,0.022531565,0.05857518,0.0065963003,0.005045354,0.026125679,0.020520791,0.035622887,0.0324971,0.01749203,0.16650967,0.007892656,0.009556492,0.017534178,0.011642951,0.03663207,0.033574145,0.0035568238,0.07068761,0.048016,0.0072974605,0.12339532,0.0045464407,0.022555495,0.018934185,0.020668464,0.01818533 +0.0040303203,0.0029316142,0.0041374513,0.010778411,0.0056618657,0.032110527,0.1331622,0.03412711,0.018952146,0.00459283,0.0029058945,0.023700856,0.08413434,0.023126962,0.058894433,0.033277348,0.027406437,0.0037933602,0.005311759,0.011036976,0.007056581,0.04888226,0.041817285,0.0038434942,0.10182688,0.010030801,0.0061456566,0.10456378,0.0049827173,0.06323838,0.008559678,0.016620507,0.058359172 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv index 220a5080..c5d59b6b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0050350777,0.005766118,0.006457709,0.019448206,0.007035608,0.036554355,0.06908976,0.016720336,0.073623985,0.007380201,0.0050186585,0.027139133,0.019853646,0.03107149,0.027048368,0.018990275,0.18321688,0.0086597875,0.00932425,0.017520232,0.013038053,0.03883165,0.028723942,0.0043549896,0.060425516,0.060644113,0.0076746633,0.10625886,0.0049037784,0.016128076,0.024719888,0.024399208,0.014943133 -0.0042376784,0.005924756,0.0069834692,0.018832779,0.0078081987,0.04281036,0.07998875,0.020728823,0.057859186,0.006507186,0.005319783,0.035538692,0.020944735,0.03357084,0.033523228,0.017411817,0.14398022,0.0064492146,0.010395881,0.018382689,0.010860411,0.03802423,0.034201827,0.003840388,0.06658509,0.059049625,0.0067133494,0.10930205,0.00455577,0.024278667,0.023504738,0.026207874,0.015677737 +0.0028121886,0.004768915,0.0026038273,0.024106294,0.00428334,0.04001045,0.042205393,0.0055848244,0.051259898,0.0029990096,0.0024799826,0.018063348,0.013305797,0.016817851,0.013413405,0.02079274,0.06953616,0.002443421,0.023023874,0.012457441,0.017435335,0.022667246,0.025499817,0.009044353,0.021868205,0.2366301,0.006028528,0.06351859,0.0038850654,0.008795736,0.16167547,0.015960602,0.03402277 +0.0049432945,0.008161541,0.005641948,0.0334701,0.006687145,0.020943755,0.048687987,0.0067313584,0.026358342,0.0061188038,0.00532264,0.014945954,0.022759516,0.02219019,0.0143439155,0.022385858,0.0037059456,0.0030287185,0.029329462,0.010064615,0.025855048,0.019193592,0.026798103,0.025868736,0.018704478,0.27705717,0.008246222,0.02213319,0.0063955006,0.008136024,0.18003964,0.013626517,0.05212471 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv index 83108e29..420af8d1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005213573,0.005612019,0.005980635,0.014423169,0.008148407,0.035215456,0.08324456,0.021167181,0.05202259,0.006690955,0.0051461984,0.03389285,0.022059022,0.028906152,0.04061394,0.018913923,0.16657288,0.005920637,0.008955144,0.018136969,0.010939499,0.027240243,0.03896024,0.0037672839,0.06677831,0.05034332,0.006739948,0.11629482,0.004037235,0.02923933,0.021340776,0.020757355,0.016725339 +0.008235056,0.006630053,0.008237326,0.0065348125,0.013050176,0.030923633,0.14479923,0.043974973,0.015504926,0.009599815,0.00887134,0.027437832,0.024815973,0.021933725,0.078563236,0.020613033,0.04735088,0.005203651,0.006880082,0.015798736,0.006727233,0.021745805,0.099310055,0.006908331,0.07205278,0.00884878,0.012542185,0.016972749,0.0075840293,0.11026282,0.012869484,0.040418718,0.038798563 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv index d3b4ccb7..0010dfae 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004618134,0.006132982,0.006672614,0.015618401,0.0074373814,0.03397381,0.07677221,0.019593101,0.05670967,0.0069386126,0.0054081944,0.030513486,0.021875117,0.02945475,0.029283365,0.017094098,0.20585725,0.007897137,0.009288681,0.016525654,0.011750388,0.03215573,0.031738274,0.0035157073,0.06421899,0.043070234,0.00695176,0.11497121,0.004500923,0.020835267,0.023099473,0.021389142,0.014138295 +0.0014310861,0.002243976,0.0017065166,0.016686594,0.0020667855,0.053174898,0.095879674,0.014162464,0.032807916,0.0018454238,0.0015201237,0.026181472,0.039513864,0.022075271,0.021645933,0.0206909,0.15128985,0.0018012328,0.008061768,0.0071523706,0.007267346,0.053755138,0.028755592,0.00226818,0.050142813,0.034830853,0.0034951526,0.19666047,0.0019271312,0.020879522,0.041771542,0.010048885,0.02625917 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 7e5bfc90..068b8b9f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.016444147,0.017504703,0.010868917,0.024397992,0.02378631,0.05476737,0.018488651,0.01870659,0.03153483,0.01417574,0.018273251,0.04281981,0.028775947,0.030504966,0.017300766,0.020425139,0.019642664,0.01798995,0.01798995,0.06529241,0.026927112,0.06377991,0.09389312,0.034339547,0.03991245,0.021912975,0.010130945,0.04549251,0.012461275,0.0647843,0.021114701,0.01657312,0.03898788 -0.018649058,0.011534323,0.009525009,0.04894217,0.016076498,0.027988719,0.09323943,0.032794107,0.024086585,0.014523906,0.023028513,0.028638465,0.056332096,0.02776413,0.029872134,0.031101944,0.02357462,0.010298991,0.0192035,0.01811063,0.018979773,0.07148915,0.060672056,0.015280495,0.074919984,0.019054057,0.016522154,0.039403025,0.012767332,0.009750889,0.041294016,0.035528205,0.019054057 -0.009243722,0.015240321,0.012585413,0.012245942,0.011020156,0.044706393,0.04126598,0.022088086,0.022789238,0.016350478,0.017748276,0.052165084,0.025299398,0.037463184,0.07560385,0.03431107,0.060041644,0.014372992,0.013344871,0.014485721,0.019722441,0.03816479,0.025200764,0.012536347,0.06316938,0.05865078,0.021873433,0.038314164,0.036381554,0.024521017,0.025949989,0.020953465,0.062190026 +0.013403586,0.013561583,0.010157157,0.02523759,0.02000361,0.05363709,0.021128021,0.025016747,0.02920473,0.01225187,0.0151882535,0.046147842,0.030095028,0.030087681,0.019925622,0.02262283,0.03150853,0.014046838,0.017826365,0.06419519,0.02504119,0.059139382,0.08537767,0.030591354,0.04970318,0.023754872,0.006926579,0.045255262,0.009768042,0.06675244,0.026345653,0.018249106,0.037849132 +0.016586032,0.009750425,0.008877863,0.044213485,0.015101754,0.030926332,0.10564914,0.038188923,0.021930052,0.012667373,0.019466935,0.031108072,0.05049339,0.026259657,0.033276457,0.033570215,0.030092146,0.008471316,0.018575478,0.017898783,0.018978879,0.06433024,0.053123724,0.01424231,0.08489147,0.020401172,0.012519794,0.03767036,0.009599258,0.0104606785,0.04588504,0.03737721,0.017415995 +0.007843759,0.0123399645,0.010932602,0.012196199,0.010071585,0.041178703,0.048805505,0.02791397,0.021404997,0.01442688,0.014203211,0.060977157,0.024207711,0.034439713,0.07799098,0.035463613,0.07618432,0.0120071145,0.012583348,0.013552799,0.017436162,0.038533,0.023809142,0.010679349,0.07326574,0.052771334,0.016932746,0.037566938,0.030193252,0.02263027,0.02893749,0.023646941,0.054873504 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index c1bad420..06bccafb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.018813502,0.0097793965,0.019639514,0.023574388,0.030255334,0.08317135,0.027166266,0.015935654,0.042812943,0.011081507,0.016963415,0.03456955,0.039287366,0.025708733,0.03456955,0.021297682,0.02741194,0.017777506,0.02591037,0.016123498,0.03373579,0.01538515,0.036263976,0.033180345,0.039828185,0.11821033,0.015935654,0.05716278,0.01116842,0.03830239,0.035701755,0.008766194,0.014509578 -0.013969102,0.009713985,0.01286894,0.013969102,0.015045315,0.06638303,0.04526929,0.020847589,0.039484575,0.014639493,0.013645508,0.046162147,0.04162265,0.021467391,0.05503346,0.02815642,0.026431143,0.014356339,0.012231754,0.020206176,0.039484575,0.038720876,0.0321792,0.0149866585,0.092163704,0.023808694,0.018834226,0.04049995,0.016524045,0.019508144,0.04734924,0.046797603,0.03763967 -0.017729616,0.014929833,0.020768544,0.022854377,0.015403757,0.04781904,0.025558222,0.03895261,0.058589116,0.019701704,0.013646972,0.08070991,0.04781904,0.021261055,0.05070465,0.018726205,0.047077674,0.024115471,0.022086421,0.015646331,0.028528795,0.032546125,0.01435788,0.021136845,0.0401891,0.06310296,0.017626034,0.050903104,0.02488098,0.021302622,0.018873077,0.016655432,0.025796438 +0.019326234,0.008987534,0.01819081,0.021602122,0.03681829,0.06312124,0.03617675,0.017055342,0.04511071,0.0098323915,0.015110195,0.03783893,0.03835981,0.024985593,0.032971486,0.02502222,0.035477027,0.018369326,0.027649779,0.01682375,0.034184624,0.014531332,0.031430904,0.032019537,0.049933005,0.109490566,0.01257582,0.058377594,0.009717841,0.035477027,0.039423183,0.011185166,0.0128238555 +0.013355161,0.00794364,0.011924816,0.012399847,0.015252072,0.053862467,0.053862467,0.02285139,0.041217204,0.0128435325,0.011512868,0.051597085,0.037019096,0.019892447,0.055139776,0.030555336,0.03286122,0.013459907,0.0118320165,0.019393725,0.037602063,0.035810128,0.028006654,0.01410586,0.10880518,0.02236568,0.01507438,0.038644433,0.01388717,0.016685817,0.053027406,0.057112765,0.030096311 +0.015875405,0.0123637775,0.019149387,0.021762764,0.015875405,0.039832875,0.029979475,0.041419636,0.06085663,0.01757247,0.011569412,0.094256595,0.044872865,0.018487863,0.052461695,0.019603502,0.055845182,0.022963623,0.021300191,0.0145680895,0.028087579,0.031850714,0.013212684,0.019527076,0.04851914,0.05921513,0.014739814,0.050255228,0.023121139,0.019951142,0.019951142,0.019527076,0.021425363 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 4bb17616..b9936480 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.014180237,0.016257722,0.02075337,0.015035935,0.023724249,0.09210627,0.033686046,0.016321354,0.029331319,0.01988051,0.02091614,0.022904685,0.020075608,0.043507922,0.036637343,0.019610556,0.02790456,0.0151538635,0.01619434,0.025217365,0.032018133,0.042417135,0.02589112,0.017960545,0.12688175,0.066083014,0.015881114,0.024741694,0.022048742,0.031521738,0.026837192,0.013960393,0.02435811 -0.010987974,0.009621391,0.008102024,0.010004664,0.01264708,0.09947699,0.039184675,0.038127735,0.026918061,0.008229612,0.013890101,0.029495217,0.02808619,0.054296385,0.039108217,0.046989605,0.02911958,0.009696852,0.010649909,0.018258192,0.032708064,0.031547327,0.04019234,0.021597609,0.04019234,0.045543887,0.023859728,0.069717936,0.013890101,0.030031558,0.07900077,0.007976414,0.02085151 -0.016185524,0.016569352,0.011432509,0.008799916,0.01716223,0.0705819,0.029802466,0.025813933,0.0328878,0.008075258,0.016122423,0.023230024,0.018376462,0.034974713,0.0608454,0.10472156,0.020986577,0.009367462,0.015996957,0.017637983,0.0325523,0.024179006,0.022515312,0.025738416,0.0861416,0.026348786,0.020620897,0.04803876,0.019523472,0.043314718,0.05390604,0.013629578,0.02392066 +0.012297478,0.013665343,0.018972449,0.011826368,0.024950994,0.078946404,0.037073772,0.020235552,0.029241972,0.015067184,0.017892724,0.023132304,0.015667394,0.04334363,0.0390813,0.022333188,0.037584122,0.00976618,0.017546648,0.0258028,0.034895677,0.030525848,0.022267856,0.016710458,0.13534562,0.093021594,0.011826368,0.024006857,0.01638725,0.025976619,0.04160183,0.016841521,0.01616473 +0.011090748,0.008306586,0.0069948467,0.009486419,0.01348292,0.08195016,0.0491262,0.049899824,0.026644321,0.007049708,0.012324387,0.03201389,0.02492027,0.049318474,0.041046478,0.048176013,0.046149794,0.00805102,0.012421048,0.019088384,0.0321235,0.02361709,0.03528076,0.020478847,0.047244202,0.053118087,0.01741415,0.06137783,0.010177442,0.028612677,0.08655661,0.010257265,0.016200101 +0.015800804,0.01356804,0.009696641,0.008967927,0.01755835,0.065492526,0.037830207,0.038803037,0.030613404,0.0072624483,0.013835645,0.025572212,0.017904656,0.035158474,0.062493403,0.09418089,0.030650796,0.0078525795,0.018222168,0.018400995,0.032899566,0.02009147,0.021096846,0.026204217,0.08847476,0.029853182,0.01636618,0.04572115,0.013781705,0.039645717,0.059865013,0.016238818,0.01989622 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index b9714301..48bf280b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.013940462,0.019203799,0.019620843,0.012943281,0.026376959,0.08539569,0.034201056,0.016171219,0.036371298,0.017553693,0.018832363,0.023096437,0.022320347,0.02289433,0.035982683,0.026197264,0.0309963,0.018396111,0.017349185,0.024706373,0.039096992,0.03601784,0.021845924,0.017417088,0.139698,0.046610545,0.013511559,0.03353955,0.018649349,0.01886918,0.03457043,0.012447432,0.04517649 -0.018725712,0.011787114,0.01107297,0.033447456,0.019894524,0.08055031,0.03819819,0.035431203,0.03186907,0.018291932,0.019207258,0.02245556,0.13702068,0.054503065,0.023191012,0.02562002,0.01916978,0.013834468,0.016687555,0.02840035,0.030843345,0.021892576,0.026087089,0.01579946,0.04885623,0.023418596,0.015923375,0.042116705,0.01549387,0.026875785,0.03695072,0.019433666,0.016950345 -0.020445274,0.016654389,0.013200464,0.028482636,0.033642784,0.083429486,0.028041055,0.019777574,0.025619086,0.021657871,0.030393722,0.014611581,0.022830635,0.123300776,0.01745365,0.037973646,0.017728506,0.027734673,0.01872503,0.024196517,0.019738983,0.021280492,0.021657871,0.019509016,0.022542626,0.05344693,0.025725637,0.07596341,0.020049827,0.038271476,0.015432905,0.013780033,0.026701493 -0.016903484,0.014345801,0.01919161,0.02922801,0.017169677,0.073139146,0.028308017,0.035229895,0.035195507,0.019079488,0.01275942,0.023376677,0.053509746,0.026592921,0.03432988,0.015330795,0.024594432,0.016969644,0.017645637,0.023376677,0.03652613,0.047130045,0.024142297,0.023931038,0.06951778,0.054352403,0.024307897,0.06207239,0.022835156,0.02310433,0.034129318,0.010332893,0.03134177 -0.012535897,0.012634218,0.007906292,0.027009122,0.012584961,0.057965416,0.026101558,0.024281856,0.028694961,0.0115486095,0.016803129,0.074138895,0.03044326,0.030756325,0.042741016,0.019302549,0.026152587,0.010392624,0.011822477,0.047309995,0.01809768,0.06803367,0.085000664,0.020993682,0.06697891,0.02416358,0.010151879,0.041750923,0.010474134,0.058648694,0.01960652,0.01673762,0.028236296 -0.020117404,0.02431366,0.01404421,0.041117303,0.020796577,0.08436723,0.027712893,0.025282206,0.0328136,0.018245693,0.022224486,0.02491456,0.034054168,0.03721901,0.018496858,0.032352228,0.03961943,0.016101766,0.03537617,0.02481743,0.02498766,0.016743189,0.031564236,0.05642065,0.06519394,0.03134155,0.0072011556,0.046229426,0.02007815,0.036965452,0.027564444,0.01680872,0.02491456 +0.014360831,0.018260473,0.018224843,0.011053926,0.03076024,0.07321574,0.037321977,0.01873005,0.036528688,0.015227427,0.015527761,0.02097666,0.020291606,0.022482706,0.037103932,0.02936596,0.033982046,0.013024708,0.019821553,0.028408663,0.050124213,0.025789138,0.018803358,0.019362386,0.14334947,0.056798175,0.010143653,0.031520464,0.013229817,0.017977372,0.050320394,0.014586981,0.033324774 +0.01811298,0.010022493,0.010627294,0.029121654,0.02044467,0.07640756,0.046524912,0.04837825,0.029228497,0.015523141,0.01671908,0.021955362,0.12305657,0.05190229,0.027959907,0.030796167,0.022829963,0.0101011,0.016204689,0.027190795,0.0332174,0.017317316,0.02210596,0.016141513,0.05655991,0.03148033,0.012669618,0.03716541,0.011312696,0.025932973,0.047257572,0.02219248,0.013539525 +0.0188605,0.014545823,0.011733642,0.027108917,0.03445344,0.08535639,0.038024917,0.02668049,0.023018274,0.0188605,0.02539817,0.013825609,0.023982013,0.11485958,0.021226147,0.043937705,0.021122757,0.019535357,0.01927009,0.024431145,0.02162367,0.017409071,0.021350885,0.01799681,0.02659432,0.069665864,0.020835934,0.06621647,0.014320311,0.03824837,0.020714207,0.016482577,0.022310078 +0.016216978,0.013081708,0.014939779,0.024982793,0.017741427,0.057494164,0.03569894,0.043145325,0.033766083,0.014881535,0.010308138,0.02417871,0.0764655,0.026581064,0.04486404,0.018091345,0.031891134,0.012629794,0.014939779,0.023734218,0.031922292,0.033275068,0.015534913,0.023116592,0.07858521,0.06695543,0.014311432,0.06540441,0.016028045,0.02678954,0.036832146,0.011410069,0.024202334 +0.011195347,0.0092090415,0.0072849514,0.026208512,0.011416156,0.057524852,0.029870834,0.03149794,0.026517449,0.009281268,0.01366335,0.078934886,0.03681583,0.030525122,0.050370444,0.020671988,0.037873372,0.00787691,0.01097881,0.042916153,0.016871985,0.061715156,0.057300583,0.019230815,0.08402575,0.0281726,0.0070058694,0.04515177,0.0079386905,0.060521476,0.021453522,0.017407559,0.022571096 +0.01740354,0.01922637,0.01123657,0.03960435,0.018671269,0.0817404,0.03641405,0.032466494,0.028904509,0.014204355,0.018381797,0.028214265,0.03581451,0.036342997,0.021490498,0.035640057,0.050952412,0.011684184,0.033546194,0.023464803,0.024068216,0.015661491,0.026706208,0.0505559,0.078608975,0.03567488,0.005650102,0.044790044,0.014204355,0.04054354,0.028234936,0.018238753,0.02165905 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index c35131db..5bf42858 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.015050883,0.01172164,0.012093725,0.022309033,0.010756382,0.094016306,0.022882726,0.03638838,0.029932264,0.010672675,0.015347736,0.027256964,0.022027602,0.037543472,0.08695087,0.023957483,0.07613672,0.010714447,0.015407805,0.012674115,0.016659811,0.021770975,0.033035073,0.019553527,0.0648693,0.03820925,0.009755615,0.032081287,0.012924089,0.10570537,0.0215594,0.0116304215,0.018404752 -0.01221852,0.020105632,0.011523162,0.04298132,0.016506167,0.056940995,0.022168143,0.083172925,0.026531791,0.014566641,0.0132113695,0.06253745,0.035355467,0.036727987,0.024466112,0.017230876,0.11821256,0.01090991,0.019639885,0.026805244,0.014284897,0.02955142,0.036549088,0.017708533,0.03152267,0.038228378,0.0096279625,0.02415747,0.01929767,0.024778698,0.03875462,0.014008602,0.029717823 -0.0134996595,0.008414936,0.008818777,0.03387192,0.012195926,0.014370312,0.033657596,0.01964189,0.031905293,0.0134996595,0.019757316,0.038307022,0.07952743,0.028943907,0.039215446,0.05639339,0.046569496,0.01007136,0.015844474,0.011457012,0.019000426,0.048709184,0.071847044,0.01907479,0.08498784,0.01888942,0.009314485,0.045937136,0.01634743,0.01713196,0.024065744,0.06390209,0.024829673 +0.010741137,0.008597097,0.008732483,0.021761348,0.010615999,0.06205288,0.03822967,0.056279518,0.025933884,0.009895199,0.010699261,0.033606037,0.021071235,0.029112015,0.10072176,0.022342766,0.12244653,0.008139568,0.015147431,0.010699261,0.015325984,0.020106312,0.028507149,0.015266233,0.0655409,0.02857683,0.007127244,0.026108587,0.010492319,0.10311031,0.022039376,0.016799457,0.014174217 +0.009333175,0.014287093,0.009333175,0.03983506,0.0151492385,0.035707913,0.03427296,0.105981335,0.024172984,0.012510196,0.010052225,0.06503865,0.027972776,0.027532374,0.029922616,0.0156913,0.18455555,0.009046024,0.017920028,0.020828241,0.013008546,0.023856388,0.02995185,0.012364448,0.035987977,0.02517892,0.00704505,0.020148035,0.016284535,0.030334523,0.033939894,0.018131264,0.024625693 +0.010948875,0.0068784477,0.007794302,0.033332005,0.011385028,0.014280026,0.04296665,0.029207861,0.02900534,0.012024987,0.01593052,0.041807696,0.07056385,0.026035152,0.04887815,0.056921564,0.06475303,0.008232424,0.014906994,0.010086576,0.017841335,0.04450406,0.061787773,0.01656512,0.09203261,0.017360097,0.0076137474,0.04060063,0.013258555,0.019253442,0.023659023,0.06759603,0.02198812 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 6fdccfca..15dcf397 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.013031122,0.011321634,0.010389316,0.012531906,0.014766195,0.104928374,0.035284165,0.027871214,0.020864384,0.010389316,0.017811432,0.024512332,0.020182995,0.08139971,0.029885026,0.043062516,0.016154267,0.010552924,0.013817477,0.024947023,0.036833324,0.051740803,0.04085048,0.033833183,0.039362326,0.033146404,0.022692353,0.050938636,0.017263431,0.053175114,0.046470832,0.012385906,0.017603923 -0.013867004,0.0117917815,0.01430719,0.011837933,0.013572258,0.038663756,0.02143049,0.018033074,0.02613567,0.012749956,0.014475838,0.04330135,0.019403422,0.029014427,0.033526108,0.025405882,0.021388676,0.013921278,0.016086007,0.024153845,0.020156674,0.32372767,0.016957058,0.01336184,0.04830615,0.016403275,0.014877124,0.025381085,0.016825097,0.016661588,0.018156769,0.017359182,0.028760536 -0.02343217,0.018681755,0.01668093,0.015979351,0.02779923,0.038860146,0.042846564,0.01560919,0.039012242,0.023295274,0.038633116,0.022228505,0.060541473,0.026786525,0.037848905,0.03317399,0.03386134,0.021544605,0.028099464,0.034529194,0.031596933,0.040725086,0.03131662,0.013299196,0.04855152,0.04276296,0.021798568,0.028569853,0.029247366,0.014549365,0.03781196,0.029795108,0.03053148 -0.015153667,0.017171355,0.015880907,0.04367764,0.013012349,0.09067712,0.021834187,0.05186848,0.02257132,0.019533848,0.019572038,0.028627018,0.09138831,0.06738551,0.024596829,0.029257633,0.03824542,0.014573139,0.02051132,0.022926766,0.016708186,0.023174377,0.017306032,0.017855383,0.055864554,0.033130992,0.013425405,0.041758977,0.02423915,0.028627018,0.018748865,0.0150945885,0.025601646 -0.020325784,0.03276724,0.017183015,0.036877196,0.0409791,0.060563177,0.054928415,0.013097705,0.02611157,0.020930074,0.021573389,0.027016183,0.022258202,0.041219912,0.019700425,0.035533786,0.029733112,0.020991484,0.033840418,0.018255536,0.018219914,0.018835029,0.020807795,0.015075367,0.14931092,0.027404804,0.014328933,0.0464354,0.020167608,0.028804252,0.016817788,0.013252097,0.01665435 -0.014279534,0.026315438,0.013732494,0.018192599,0.034430902,0.022774111,0.018624028,0.013572506,0.040204696,0.016825402,0.018770097,0.065004244,0.019747883,0.029950626,0.025983466,0.04906778,0.041724697,0.02481782,0.01630774,0.040957645,0.027930688,0.04398407,0.07167262,0.020374749,0.04398407,0.026008852,0.0155002875,0.031533923,0.028012637,0.030362919,0.0260597,0.021021511,0.062270254 +0.011449223,0.008812782,0.008951563,0.014304557,0.012673135,0.088313274,0.04466766,0.040118113,0.019976614,0.008214416,0.014027881,0.034923363,0.0200548,0.07524385,0.032968048,0.04163484,0.031914745,0.008343774,0.014360543,0.024238,0.029458722,0.049249835,0.036670923,0.027613169,0.055049576,0.03465159,0.015466914,0.052528672,0.012428015,0.048962105,0.049927797,0.016272627,0.016528884 +0.01242395,0.008741341,0.012918863,0.0126689905,0.012136149,0.03917598,0.026045907,0.02556709,0.024926098,0.010878774,0.011535247,0.05655713,0.019660482,0.029255617,0.03887111,0.02514614,0.0321624,0.010836362,0.015983855,0.023936106,0.017657993,0.2894735,0.014244129,0.0121836485,0.06459027,0.01704799,0.01135641,0.026951538,0.012918863,0.01786614,0.021508634,0.019737432,0.025035877 +0.019095432,0.015463947,0.0148135545,0.016017271,0.02569571,0.03876264,0.05160351,0.019207647,0.036166057,0.019740103,0.031347863,0.026176937,0.057680424,0.025998604,0.03910483,0.03476358,0.042780813,0.01607996,0.028070044,0.03522492,0.029742124,0.04114191,0.026955184,0.01176435,0.06334955,0.042365067,0.016655328,0.029546713,0.022676386,0.014080084,0.04580756,0.034661878,0.027459998 +0.012427352,0.012427352,0.011812032,0.044231243,0.012922402,0.08660057,0.032709766,0.07465436,0.020609653,0.0156484,0.016271763,0.031952046,0.09075662,0.0546183,0.03434656,0.031395294,0.053145062,0.010713048,0.016208325,0.019398829,0.014700311,0.02252502,0.012722059,0.013384786,0.06958552,0.03223411,0.009985658,0.03335491,0.01854668,0.042703256,0.015285905,0.013863714,0.018259136 +0.0175087,0.024107471,0.015511848,0.03606612,0.04308127,0.057521038,0.0672489,0.017136548,0.023082271,0.018029237,0.017170051,0.03007557,0.023931548,0.03831727,0.02473345,0.03831727,0.036348987,0.017338548,0.031151721,0.015941853,0.018348955,0.019839952,0.018894475,0.0121516315,0.16644265,0.023990046,0.012784643,0.04135001,0.018931413,0.033748895,0.0147726275,0.013139047,0.012985972 +0.011374115,0.021458177,0.012639273,0.019884368,0.034073096,0.020920198,0.021291187,0.017754741,0.037733898,0.014950992,0.014661813,0.07216797,0.019923242,0.028580561,0.030113481,0.052593373,0.055985354,0.019652708,0.01661401,0.03874207,0.025682075,0.045249857,0.06596687,0.016484719,0.052593373,0.02253194,0.01215507,0.030408999,0.026111996,0.032960337,0.027338427,0.022269435,0.05913232 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 74de4f73..891c35c6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.01910463,0.02436371,0.021312755,0.02668002,0.029352391,0.070567615,0.022909949,0.013841413,0.03352967,0.023545036,0.025808707,0.034057684,0.031127442,0.056261405,0.02002148,0.035972085,0.04840573,0.025758348,0.038366944,0.02652415,0.030842822,0.029618738,0.034543376,0.017982226,0.04520731,0.032403,0.018123262,0.04100125,0.022118514,0.023962572,0.035972085,0.020257486,0.020456282 -0.013497088,0.009385752,0.010718865,0.022892157,0.017195737,0.047109466,0.042228654,0.023229958,0.034365196,0.015841454,0.01488167,0.039592747,0.037339516,0.025289863,0.04841539,0.025228195,0.036049604,0.009608328,0.015474488,0.012289238,0.024380473,0.03366762,0.052554406,0.010148417,0.2136187,0.02663978,0.014536936,0.043314595,0.011321378,0.008347861,0.026646286,0.017845849,0.016344316 -0.009544797,0.0067682746,0.008827494,0.02225743,0.00889673,0.03658895,0.043281052,0.023995617,0.03151086,0.010858004,0.017283395,0.049428515,0.06729738,0.028021205,0.06756077,0.07025208,0.047720984,0.008758798,0.011423627,0.010320387,0.020766476,0.04203145,0.031113345,0.019470233,0.094904505,0.027490968,0.008489318,0.034540378,0.013618987,0.026697252,0.028558182,0.05139752,0.02032508 +0.016557448,0.020405825,0.017625311,0.025519764,0.03680612,0.06548598,0.03477934,0.021892255,0.029666752,0.022543117,0.019700896,0.034173325,0.027245352,0.046527296,0.022107093,0.042529393,0.057565864,0.019357618,0.046165217,0.027687918,0.035638895,0.025644677,0.032544788,0.017625311,0.044396657,0.027566511,0.015253436,0.038048714,0.016557448,0.025694814,0.04571658,0.022499131,0.018471168 +0.012519716,0.008405341,0.010099248,0.021738015,0.018539116,0.04669845,0.04799298,0.030121356,0.03165953,0.0144665055,0.012816613,0.040493153,0.034098655,0.024898428,0.05459602,0.026919158,0.040335283,0.007896087,0.016138554,0.012967691,0.025155049,0.032252446,0.047619496,0.0095991995,0.2101071,0.025044747,0.012917135,0.04153446,0.0099039115,0.009017614,0.028981574,0.019657847,0.014809568 +0.009015803,0.0061482433,0.008469563,0.021126784,0.009229606,0.037883893,0.05087888,0.031684104,0.028091125,0.010216243,0.015396422,0.050680522,0.056981638,0.026749171,0.074900955,0.0725965,0.05147862,0.007532985,0.011897433,0.010136739,0.022011328,0.039779596,0.028429195,0.019273764,0.093946844,0.02702198,0.007894501,0.032245975,0.011531387,0.026202993,0.028933344,0.053738806,0.01789508 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index b406953d..44487bad 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.015481911,0.021790396,0.019840382,0.03492312,0.020390378,0.059813716,0.027535558,0.028744513,0.04444978,0.020833192,0.014430728,0.048249777,0.029595483,0.019685984,0.057973444,0.018601947,0.035025585,0.018277813,0.016224904,0.025851479,0.029047865,0.061471812,0.022220174,0.02191845,0.041189697,0.06392057,0.01972447,0.050961923,0.024214173,0.033323877,0.018894885,0.01597336,0.019418672 -0.013983444,0.010351101,0.01371298,0.024782542,0.011960674,0.073268,0.036626223,0.02346937,0.02346364,0.022808464,0.020010805,0.03494899,0.019855078,0.04996443,0.029229501,0.023452187,0.026665796,0.013343096,0.015357809,0.02130139,0.01657335,0.20548517,0.04207427,0.009028391,0.04006921,0.015752748,0.028000148,0.020666188,0.018927356,0.024217322,0.020828273,0.027378248,0.02244389 -0.012367314,0.014458855,0.009707215,0.026529063,0.018349245,0.059930302,0.13718182,0.03231419,0.018601837,0.015572799,0.02426137,0.023676222,0.026946833,0.040948816,0.021202514,0.05785998,0.014515445,0.011172936,0.013424592,0.019570857,0.021961171,0.045237765,0.03869391,0.013635999,0.041593663,0.022746976,0.036456212,0.028863892,0.020113382,0.012033726,0.06530834,0.032015786,0.022746976 +0.012167323,0.016182173,0.019519432,0.031962857,0.019672524,0.042634357,0.030798472,0.034057528,0.04888053,0.015380938,0.010864196,0.07139911,0.027352633,0.018229676,0.069473244,0.016793964,0.05759534,0.015024639,0.014849597,0.022335472,0.023510464,0.06300949,0.016533598,0.019904418,0.051830195,0.050432164,0.013415492,0.05670241,0.024244925,0.03049917,0.019481344,0.02006053,0.015201745 +0.0109462105,0.008198333,0.012648323,0.023094064,0.010776506,0.070822805,0.049057525,0.03391485,0.023337783,0.018674767,0.014758534,0.046446733,0.017254474,0.044146996,0.03610217,0.023224108,0.042788733,0.0104449475,0.0142208915,0.019532802,0.0133592915,0.18805672,0.035611942,0.007946097,0.052837033,0.015406512,0.020093884,0.019705232,0.015497048,0.023872638,0.02404923,0.03451628,0.018656539 +0.01147871,0.0120766675,0.00944213,0.024731357,0.017097488,0.060144126,0.1535834,0.041579332,0.018271415,0.013791987,0.019640686,0.02893507,0.023210282,0.035703883,0.024359824,0.055624224,0.022061061,0.0103297215,0.013631306,0.018271415,0.019640686,0.040378857,0.03815534,0.013057991,0.04629459,0.02357579,0.027908226,0.02653935,0.01587448,0.012411445,0.06579788,0.036837246,0.019564113 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index c5305b93..bb8ba9c4 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.021211134,0.028320579,0.023478584,0.058909986,0.13095303,0.09981858,0.10119266,0.05229339,0.18758154,0.118306205,0.10178733,0.036364343,0.039782714 -0.016987843,0.024144594,0.015347238,0.05002766,0.08610305,0.046630908,0.095680416,0.25555444,0.118380524,0.08460274,0.08410848,0.03582306,0.08660904 -0.03188173,0.04349213,0.038607225,0.03515228,0.05744916,0.060088728,0.064544536,0.08375145,0.061064795,0.27327284,0.060530446,0.032006513,0.15815818 +0.015025156,0.019444002,0.016373487,0.078113556,0.1282854,0.08043589,0.11321145,0.07098442,0.1760316,0.1118925,0.11634979,0.035484683,0.038368087 +0.012999591,0.01708764,0.012599636,0.06817954,0.07748421,0.039885454,0.0934638,0.2801235,0.10305166,0.07075717,0.101851076,0.03280888,0.089707874 +0.025136897,0.034358066,0.031900384,0.042926658,0.059018586,0.05193135,0.06720416,0.11265576,0.05965599,0.23942567,0.0725941,0.02938801,0.1738044 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 5dc72934..8a8365f8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.036800325,0.042522695,0.031600185,0.123525076,0.04186344,0.10062151,0.12113588,0.06976658,0.029225392,0.18399003,0.06321378,0.057444494,0.098290615 -0.023137681,0.02156669,0.017740281,0.07512827,0.09349864,0.04173359,0.115230136,0.07210918,0.043226883,0.15873621,0.05558578,0.03740975,0.24489695 -0.03727073,0.06427239,0.031631254,0.054867815,0.053701587,0.09143873,0.115476556,0.026950166,0.027481709,0.1778087,0.052355234,0.033020034,0.23372512 +0.034291983,0.032466996,0.029909998,0.16106153,0.04377453,0.09321527,0.11443302,0.09523961,0.023753362,0.10792062,0.08903354,0.067189634,0.10771004 +0.020611567,0.017356684,0.01605231,0.09023478,0.0966189,0.037395693,0.10224941,0.094196565,0.03358682,0.112299,0.067714855,0.04229219,0.2693913 +0.03479445,0.054101624,0.031929184,0.06602827,0.057086926,0.08603304,0.10489644,0.034523677,0.022729797,0.13338077,0.05976819,0.033461496,0.2812662 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index dc7b23c0..27982a02 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.020409178,0.02520197,0.032233812,0.12212525,0.036383294,0.0602501,0.0626177,0.04644414,0.08024828,0.33719864,0.04397243,0.08328219,0.04963303 -0.018363692,0.022676133,0.023579445,0.082380764,0.027245997,0.11293152,0.13254708,0.07497192,0.07754087,0.18692133,0.097163096,0.057175048,0.08650309 -0.015567869,0.014854965,0.02337014,0.12197339,0.0134203425,0.0694305,0.18382038,0.11868336,0.12584524,0.1414916,0.04014407,0.09117559,0.04022255 +0.017545573,0.016227003,0.028927766,0.17582504,0.035030115,0.05548813,0.057663318,0.06000796,0.07401406,0.27232316,0.06309156,0.09522173,0.0486345 +0.014570021,0.015269251,0.02170198,0.118239954,0.02797496,0.09802437,0.12247076,0.116862416,0.06581848,0.12247076,0.1319062,0.06262835,0.08206254 +0.012689575,0.010939098,0.021585695,0.15763971,0.014379173,0.062643535,0.1632803,0.1765481,0.10177984,0.09413096,0.057163052,0.084543414,0.042677484 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index b1f3057f..556d2b62 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.021790942,0.02875576,0.023932666,0.11462324,0.033882566,0.074223466,0.087884694,0.03663579,0.07831908,0.31525108,0.041190725,0.09521178,0.048298124 -0.019185683,0.01774385,0.017605767,0.11346654,0.04976387,0.07859597,0.28414276,0.10032964,0.06620061,0.09333503,0.042648513,0.07882658,0.038155284 -0.049818195,0.04616438,0.07234362,0.14387244,0.037678268,0.15077703,0.11031084,0.13836077,0.054394927,0.069640145,0.04336742,0.054607823,0.028664112 -0.022936853,0.028434087,0.022405522,0.04789797,0.036652986,0.1330277,0.16882095,0.031969305,0.054701194,0.24659441,0.06426521,0.067086786,0.07520705 -0.01597938,0.02019983,0.017826287,0.037008327,0.15703289,0.073062755,0.15339524,0.051783957,0.12617949,0.14410149,0.08930007,0.02306893,0.09106136 -0.028527373,0.050263055,0.0540826,0.15242085,0.032834806,0.13770077,0.070279166,0.104757205,0.073994376,0.10133605,0.056182116,0.12104672,0.016574996 +0.019172488,0.01932286,0.023036273,0.20292799,0.03028061,0.07068008,0.0837709,0.042287517,0.07884933,0.21601573,0.054938298,0.11836687,0.040351033 +0.013898927,0.011343973,0.015028323,0.16800593,0.04053331,0.06949026,0.26021266,0.13033302,0.052788023,0.07113817,0.049856827,0.079515524,0.037855063 +0.033207193,0.02873843,0.053064942,0.20104882,0.02988324,0.13392739,0.11727074,0.17263922,0.043395016,0.05972081,0.047289208,0.053953256,0.025861789 +0.01586071,0.017016059,0.019585362,0.06508605,0.037604593,0.13971801,0.16591924,0.055089667,0.04819104,0.16919172,0.10221989,0.07776479,0.086752884 +0.011261298,0.013583719,0.013583719,0.044976395,0.14044411,0.06680432,0.15245065,0.07024145,0.10684425,0.12988958,0.116887964,0.023654649,0.10937799 +0.018765636,0.029638039,0.04139015,0.19101273,0.034113172,0.11185279,0.07816212,0.1505144,0.065538496,0.0822338,0.07793347,0.09948393,0.01936132 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 7a6d6645..bc78ed18 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.021908142,0.024061386,0.026947476,0.05529263,0.035699606,0.055726297,0.103704534,0.12558115,0.045839198,0.3591476,0.039055485,0.076020196,0.031016354 -0.031836722,0.03900717,0.033890016,0.036358677,0.06507003,0.07140441,0.04242466,0.11265075,0.088420585,0.23159625,0.14606592,0.054314982,0.04695982 -0.0118632335,0.019789722,0.010469266,0.04605744,0.101288736,0.03852003,0.21526752,0.2169559,0.096273586,0.13005732,0.03852003,0.046919998,0.02801721 +0.017322686,0.016020864,0.0268299,0.08280347,0.045728423,0.046267454,0.111206844,0.21773246,0.03754178,0.22116125,0.05969938,0.06348763,0.05419789 +0.02507379,0.024976037,0.03481151,0.056836713,0.074419186,0.054873265,0.049670782,0.18239927,0.070286855,0.1535956,0.16607644,0.048425484,0.058555067 +0.008939866,0.014064383,0.009591076,0.05823833,0.09724553,0.03360716,0.19875696,0.2737993,0.077986516,0.10722134,0.04580116,0.039870534,0.03487773 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index f5d1ffa1..466b8da1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.019913744,0.02274221,0.032832213,0.12439244,0.026381426,0.079455666,0.09334777,0.11459569,0.13293332,0.11731324,0.09190055,0.060269855,0.08392191 -0.017521279,0.033905335,0.016459718,0.045982454,0.0826155,0.044134606,0.0711495,0.08046563,0.19895993,0.1259736,0.060649738,0.052003276,0.17017946 -0.025699943,0.03512766,0.01985938,0.048484996,0.0704764,0.038580187,0.07725216,0.15866601,0.17562728,0.14334281,0.07823914,0.10631546,0.0223285 -0.021763925,0.03864713,0.032927766,0.06163743,0.033446305,0.11904154,0.23581937,0.08023351,0.070469536,0.1138123,0.043452136,0.103829876,0.0449191 -0.035014756,0.06755865,0.06371388,0.10998025,0.038008157,0.13370198,0.07059374,0.07311969,0.049186207,0.12958841,0.064717226,0.113471396,0.05134574 -0.044106077,0.03992442,0.04333755,0.04750411,0.14632298,0.071626194,0.04958979,0.079012446,0.19158807,0.16007784,0.05232613,0.05032155,0.024262724 +0.013754733,0.015586155,0.022677721,0.12847804,0.03051621,0.06587699,0.08986748,0.15864919,0.103033565,0.09547677,0.12501256,0.049436044,0.10163449 +0.013943452,0.025645932,0.013620452,0.05140305,0.07930422,0.041708842,0.07060354,0.10202771,0.17053087,0.10506101,0.07977025,0.044659745,0.2017209 +0.018764257,0.02466515,0.015314939,0.057096727,0.06734212,0.033450905,0.075309195,0.19099866,0.17664489,0.12380064,0.10006119,0.09039775,0.026153553 +0.014145564,0.020581674,0.029252458,0.070930876,0.034199588,0.10051818,0.2977565,0.12706688,0.046110548,0.08801666,0.046020575,0.077826284,0.047574252 +0.026296157,0.044383164,0.062163893,0.15014632,0.03826068,0.13198708,0.09405097,0.09818031,0.03994053,0.08800825,0.07123646,0.09924066,0.05610558 +0.034638647,0.031049881,0.038869288,0.061015755,0.14413515,0.06952924,0.05955869,0.10260714,0.18291703,0.14987685,0.054070164,0.04865788,0.023074314 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 81f95111..a0e4ca20 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.044508155,0.08047588,0.044508155,0.05337343,0.06501244,0.10866292,0.057261333,0.064758986,0.11499529,0.079421885,0.09061411,0.14939743,0.047009982 -0.012853926,0.02102762,0.016504768,0.088702664,0.063192055,0.041492984,0.12681279,0.11774168,0.07601974,0.21071875,0.06582174,0.07075447,0.088356845 -0.011193676,0.014945519,0.013086734,0.07242391,0.087019324,0.05896654,0.2649157,0.11393881,0.05971991,0.20471099,0.019190425,0.03407726,0.045811202 +0.034407627,0.052876856,0.04070077,0.09763607,0.057229374,0.09744556,0.06497616,0.10934721,0.109133855,0.04522797,0.11106918,0.13876884,0.041180536 +0.0108207315,0.016371245,0.015992004,0.12677342,0.058041103,0.041157305,0.12335392,0.1565443,0.07547841,0.14253521,0.076667026,0.06862328,0.08764204 +0.010323195,0.013255244,0.013783273,0.09987551,0.08344912,0.057697766,0.24241307,0.14760642,0.05647656,0.16022526,0.02466751,0.033980932,0.056246158 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 55254927..3724cf36 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.03258783,0.04750771,0.034689564,0.0454208,0.056416802,0.106019855,0.053991236,0.023748815,0.043766156,0.28041837,0.04988499,0.026701512,0.1988464 -0.02455211,0.0374375,0.024744675,0.051875398,0.11622004,0.027604679,0.038625892,0.22227663,0.1474909,0.11622004,0.06943205,0.04445813,0.079061925 -0.027025884,0.03122835,0.031596463,0.08698541,0.055997707,0.056547236,0.067414336,0.21009848,0.09963192,0.10380335,0.10002187,0.03098533,0.09866369 +0.027727641,0.038949795,0.032799017,0.049429864,0.06950336,0.087946326,0.038047526,0.030811826,0.03009807,0.18509464,0.07083959,0.02142626,0.31732604 +0.020138782,0.02752645,0.021105262,0.05810302,0.11679962,0.026471928,0.03851643,0.2511587,0.10718136,0.10187445,0.08782126,0.035069607,0.10823318 +0.023077397,0.02427956,0.028720284,0.102021314,0.054821804,0.052516073,0.06696441,0.23307347,0.076410435,0.08334873,0.11628466,0.028385684,0.110096104 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 6a547fcd..801421f5 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.017289048,0.016052337,0.023816664,0.022026813,0.09165594,0.034517944,0.036103908,0.02730594,0.11362295,0.14877227,0.39813527,0.0136234425,0.05707744 -0.019879099,0.019879099,0.028475493,0.0552105,0.080095805,0.04910524,0.08279988,0.06850958,0.17240135,0.12712078,0.11001386,0.107885994,0.07862336 -0.028068636,0.036751684,0.030827366,0.19407536,0.14006053,0.1583997,0.07188607,0.0728045,0.052336797,0.053473387,0.031681933,0.09230354,0.037330437 +0.011098017,0.012674333,0.016274165,0.025602855,0.10047324,0.047448613,0.043594476,0.029584043,0.11252469,0.14505006,0.39121857,0.01773458,0.046722345 +0.013920534,0.0164024,0.022595258,0.06077886,0.0823278,0.060823392,0.09757592,0.069157906,0.16761106,0.104888335,0.100870125,0.14114267,0.061905783 +0.019095892,0.028002275,0.021808194,0.20934938,0.12697682,0.17906602,0.07730733,0.07637869,0.052111182,0.04527498,0.026305703,0.106716566,0.031607028 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 97f72b85..64bbe388 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.028672202,0.035683133,0.04295809,0.05304616,0.20614591,0.06991537,0.099297024,0.038885273,0.108631276,0.13206205,0.030881178,0.055105437,0.09871691 -0.01782257,0.03189652,0.03448836,0.090687424,0.24411833,0.09002563,0.051571313,0.08114297,0.06220688,0.11419271,0.09202563,0.054790262,0.03503147 -0.038860124,0.03483399,0.03840739,0.11969761,0.24464603,0.101586044,0.07508794,0.03708059,0.077282585,0.058908433,0.050584264,0.046418726,0.07660632 +0.028366636,0.033554886,0.04283361,0.06522581,0.20635305,0.08057263,0.12913246,0.036709156,0.08909872,0.09540245,0.027493887,0.064884335,0.100372225 +0.015950827,0.027133264,0.032474265,0.11224481,0.24183615,0.102800645,0.06656782,0.08485103,0.0548107,0.08240122,0.07644393,0.067781396,0.034703974 +0.0346278,0.030558925,0.03476333,0.13378303,0.2403646,0.1126566,0.09158917,0.03893308,0.0698818,0.043517902,0.041769095,0.05421182,0.07334285 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index be8b8095..c6da86b1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.020406444,0.035674796,0.030395307,0.051704157,0.2998705,0.12500462,0.033382714,0.056234058,0.076600574,0.12598504,0.067698866,0.03051427,0.046528704 -0.015827617,0.024323527,0.020968191,0.17016296,0.15676147,0.063647375,0.036371585,0.03074782,0.1898305,0.057951596,0.07677339,0.11029547,0.0463386 -0.017605642,0.022783393,0.029254457,0.20951222,0.16063859,0.06966567,0.046384685,0.0307784,0.1224463,0.08047888,0.09829233,0.08552304,0.026636485 +0.015611125,0.028825635,0.024946507,0.05949394,0.25792566,0.17865989,0.061143175,0.05961025,0.08167672,0.07912997,0.05406415,0.05513047,0.043782484 +0.013057961,0.019449774,0.017848115,0.16736537,0.14540955,0.07191268,0.05906717,0.032956194,0.17133433,0.038080808,0.052356172,0.16933823,0.041823585 +0.015269818,0.018708972,0.024979755,0.21079336,0.16036314,0.06840117,0.06590937,0.03468096,0.12343589,0.05596387,0.06995491,0.1263631,0.025175674 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 0c828e54..b138c563 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.019000068,0.031819124,0.030243652,0.07024996,0.21407309,0.13396353,0.028858693,0.026585873,0.06696755,0.16285823,0.15180056,0.022563139,0.041016474 -0.017298587,0.02785987,0.026171926,0.022916906,0.29258338,0.047437537,0.034001548,0.03626522,0.08464918,0.20266658,0.11324245,0.06333742,0.03156937 -0.0686808,0.047946926,0.05949635,0.06376796,0.06336447,0.15089422,0.07095185,0.051540107,0.055402566,0.20384508,0.026530573,0.08195969,0.055619407 -0.028476672,0.036995783,0.024548426,0.05917686,0.32845432,0.06365823,0.01987992,0.022703582,0.13638632,0.07755896,0.11989127,0.025526324,0.056743342 -0.016698256,0.012903412,0.01798473,0.037851244,0.29368037,0.023183238,0.032629814,0.026476089,0.12052618,0.07571856,0.26531813,0.021524908,0.055505183 -0.045183532,0.035257764,0.031236647,0.11381345,0.10505485,0.08457898,0.07918349,0.04026563,0.08683875,0.17422402,0.07487796,0.07225598,0.057228997 +0.01688767,0.02476413,0.02698642,0.07116921,0.2106128,0.1646674,0.04896163,0.025952587,0.05929015,0.12724508,0.16085288,0.03118275,0.031427316 +0.014174571,0.020224977,0.022126192,0.0230076,0.35156232,0.052318905,0.053994514,0.03936724,0.0823695,0.12882835,0.09388537,0.09206946,0.026071027 +0.051626947,0.03439096,0.048215687,0.060181446,0.07837651,0.17194399,0.10227216,0.056314826,0.054316334,0.15594643,0.024674308,0.116798475,0.04494196 +0.019099979,0.023038972,0.014644466,0.044235647,0.47743943,0.06330279,0.023493377,0.01940076,0.11745949,0.038357608,0.09147754,0.02800827,0.040041707 +0.010872557,0.00997722,0.011483708,0.037251316,0.3685879,0.028645372,0.035406873,0.025929531,0.12250072,0.057527177,0.22182012,0.023840794,0.046156727 +0.03117595,0.026252784,0.023167998,0.11226891,0.13280286,0.08968357,0.100637205,0.042946685,0.09678186,0.12972648,0.068729214,0.096971065,0.048855443 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 15afec14..8748c33c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.022081608,0.018594578,0.018740417,0.103307895,0.47212556,0.04692973,0.030657277,0.045264293,0.059411697,0.078746155,0.02350575,0.05239225,0.028242808 -0.027631663,0.025856346,0.021603787,0.16926447,0.12096786,0.07964316,0.043301236,0.1349494,0.09815427,0.05714117,0.099311285,0.0701477,0.052027624 -0.026684716,0.020863418,0.016504321,0.07736575,0.10974434,0.03814951,0.06553134,0.049032796,0.21570995,0.21236569,0.061913315,0.043144707,0.062990114 +0.016345652,0.013981177,0.014882885,0.11213945,0.46299294,0.050342005,0.03998455,0.06528273,0.05401568,0.042521786,0.016603058,0.08975528,0.021152845 +0.021561448,0.02073544,0.017325114,0.17226464,0.13950415,0.09796191,0.052949805,0.16631368,0.06838009,0.038587876,0.062359657,0.103468396,0.038587876 +0.020325927,0.01738569,0.014526288,0.09583984,0.1389025,0.047259193,0.0788357,0.06192797,0.20210195,0.15195979,0.05210722,0.065693036,0.05313494 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index bf39a092..0bb283aa 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.016777907,0.029446134,0.027233222,0.09903301,0.15368521,0.065074414,0.049991827,0.071156874,0.1554968,0.06006656,0.10398861,0.11969016,0.048359197 -0.023548124,0.02840446,0.027638298,0.0627111,0.20662825,0.07437815,0.030832749,0.047290612,0.15904744,0.048412077,0.11411094,0.045656934,0.13134089 -0.020972665,0.028554477,0.028778432,0.029231627,0.05453193,0.057009615,0.037976593,0.024233868,0.18987098,0.32806766,0.0779229,0.04914536,0.073703915 -0.02953646,0.036472656,0.021108754,0.053275105,0.39211807,0.06938212,0.028074007,0.041734517,0.065625556,0.09798792,0.073174864,0.06043496,0.031075094 -0.054990366,0.03739047,0.034580532,0.07439615,0.102434985,0.16691916,0.07954307,0.051911525,0.051206626,0.2151673,0.025698068,0.05061005,0.05515171 -0.035944857,0.03580472,0.038714133,0.05932095,0.06886392,0.0958184,0.08983742,0.06345591,0.0639536,0.14272109,0.23808104,0.028769901,0.038714133 +0.011731772,0.022969693,0.018313037,0.12035259,0.14745906,0.07250908,0.05957885,0.068290815,0.15881966,0.04703879,0.07210307,0.15333316,0.0475004 +0.01647793,0.022347387,0.019721499,0.07884245,0.21705416,0.08566629,0.034075696,0.04938655,0.16707255,0.04240789,0.09426995,0.057626065,0.115051664 +0.014698837,0.023034362,0.022065567,0.03471401,0.057541963,0.07060523,0.0458093,0.026512388,0.21431695,0.279522,0.07709165,0.06710933,0.06697838 +0.019589733,0.019976106,0.014787107,0.039495137,0.57698613,0.047154225,0.023537608,0.0401759,0.043186717,0.049152493,0.045644898,0.058029015,0.022284957 +0.04979851,0.031715743,0.031346247,0.074355975,0.15856877,0.17689624,0.089297146,0.055445857,0.042346075,0.1642426,0.021044873,0.059688386,0.04525359 +0.027977334,0.027116563,0.0300153,0.06489063,0.08352489,0.118712805,0.09957648,0.06747558,0.053875085,0.14319499,0.2226528,0.02989828,0.031089291 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 4e43aa2e..f8f40bba 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.04036501,0.0526459,0.035483122,0.057146583,0.056979407,0.10676387,0.06257964,0.06425163,0.12384826,0.17465405,0.050137047,0.100884765,0.07426074 -0.0159961,0.026167873,0.02203556,0.084553465,0.22782892,0.074536234,0.040371586,0.03837265,0.13551247,0.18814044,0.07248592,0.03346922,0.040529598 -0.018406145,0.016499165,0.01400266,0.088499516,0.33661324,0.033329222,0.051798053,0.042049877,0.14087047,0.096441306,0.039967842,0.07855951,0.042963065 +0.0342464,0.038354147,0.0311817,0.06441956,0.055262636,0.10589919,0.09309136,0.071602516,0.12141403,0.13439308,0.04130904,0.15468548,0.054140862 +0.0143472245,0.022048492,0.020232834,0.09900767,0.2333686,0.08585151,0.05457054,0.04249958,0.13348985,0.1477598,0.06448847,0.047783565,0.034551915 +0.015537152,0.014036647,0.01318621,0.09705379,0.33219895,0.034673247,0.06452561,0.04620453,0.1406619,0.06882144,0.033279873,0.10210958,0.037711035 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index d35903cd..8f216025 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.04502345,0.037545096,0.032875586,0.1290136,0.23822105,0.09531464,0.04755424,0.04746145,0.110351175,0.038585886,0.04271068,0.039655525,0.09568769 -0.024061177,0.0339317,0.034197826,0.027478727,0.10804553,0.092235915,0.03138169,0.15936935,0.15446608,0.06424972,0.027264884,0.13900442,0.104313046 -0.01398243,0.020826768,0.033673387,0.059273835,0.023971463,0.071147464,0.054311454,0.12708203,0.15815614,0.043747153,0.033022083,0.31823865,0.04256715 +0.03765263,0.032458596,0.023470555,0.16874741,0.20756285,0.13245134,0.058517206,0.05027286,0.09747293,0.02659562,0.028421698,0.04208667,0.09428967 +0.01482675,0.025518453,0.02444518,0.04046103,0.08994222,0.11892158,0.036410987,0.1750695,0.14627604,0.042735364,0.020108057,0.18062681,0.08465808 +0.010264666,0.017460784,0.026728721,0.06693403,0.021815348,0.07467031,0.06196434,0.12652327,0.14004847,0.03016953,0.022773158,0.36467987,0.03596743 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv index a0bbf05d..8cd9eea8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0051731854,0.006115724,0.004452979,0.02984497,0.0035049068,0.023042496,0.04243705,0.017752096,0.043330517,0.005744317,0.005712806,0.02443036,0.03076382,0.016793936,0.020566238,0.014915136,0.23716973,0.006960561,0.016510267,0.008906468,0.016893843,0.032925818,0.022828635,0.0059587103,0.08213512,0.101522684,0.009693471,0.08036983,0.0065862564,0.016128413,0.025845902,0.011681713,0.02330209 +0.0053320643,0.005789764,0.0048760655,0.03720358,0.0035652393,0.025075478,0.04443915,0.016188094,0.035687704,0.0061186426,0.005490237,0.021655092,0.025955843,0.01783606,0.021378342,0.014357306,0.21706626,0.0067667514,0.016861673,0.011250843,0.018886115,0.02848178,0.022863349,0.006047647,0.06405485,0.14882801,0.010209717,0.07615009,0.0072470545,0.015511747,0.021830576,0.013150852,0.023844091 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv index 68d35a3b..fafc83a6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0051706634,0.006392545,0.004375827,0.030993352,0.0034347752,0.021954894,0.041624684,0.017873196,0.04168018,0.00586722,0.005894553,0.022671,0.0292719,0.01654101,0.019867422,0.013532966,0.2661518,0.007395097,0.01631813,0.008761997,0.016077364,0.033230375,0.020873664,0.0064080334,0.07242437,0.097736195,0.008801166,0.08053392,0.0065339063,0.015795996,0.02301082,0.012271813,0.02052921 +0.005414255,0.0058297557,0.0046986197,0.036962785,0.0031884725,0.025659159,0.04501603,0.017804626,0.042272698,0.0064299456,0.0062360885,0.021977006,0.028345384,0.016593426,0.020529402,0.01365076,0.22053148,0.007261174,0.018225364,0.011267549,0.016855016,0.032483425,0.02040384,0.006038296,0.061356742,0.13856283,0.010517521,0.07868338,0.006724646,0.016816795,0.021524182,0.011967941,0.020171447 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv index 6ae5b497..a0bb7db1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0064157196,0.006527345,0.0056665037,0.027466085,0.0044602095,0.026517421,0.049759857,0.01652433,0.041261666,0.006874849,0.0067948974,0.023469295,0.029153131,0.016635327,0.019607816,0.016634526,0.17611296,0.007703006,0.023564544,0.010035094,0.022443883,0.03051713,0.025578223,0.0072342893,0.08143584,0.14751312,0.013761597,0.055317592,0.0074805734,0.01573484,0.03309507,0.01149615,0.027207157 +0.010200325,0.008255294,0.008725317,0.028328693,0.0071364073,0.031695973,0.050800975,0.014434751,0.036991633,0.010709722,0.009840103,0.023735259,0.027150556,0.015559098,0.017729346,0.021140106,0.07350094,0.010444301,0.03560199,0.015230986,0.03764622,0.023684604,0.0285523,0.010491406,0.051373497,0.22636293,0.02416806,0.02768691,0.010378675,0.017089728,0.040571064,0.013346023,0.031436794 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv index 99c55a45..c4c85200 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0055406922,0.006386817,0.004625329,0.02794532,0.0038382933,0.023122994,0.047041234,0.017717674,0.043066762,0.0060848948,0.006028181,0.024094954,0.031411633,0.017373681,0.020232791,0.016327478,0.21710728,0.0073115835,0.017294787,0.008706568,0.019171692,0.034296166,0.022187935,0.0064854,0.08433365,0.10816069,0.01044296,0.07764751,0.0066119726,0.016789336,0.028201265,0.012045506,0.022366948 -0.005273,0.006350921,0.0045870915,0.029855195,0.003674753,0.022280036,0.04056523,0.018330282,0.042522132,0.0058698533,0.005789554,0.023899432,0.030028421,0.016782813,0.018927349,0.014220322,0.25088266,0.0070974855,0.017512802,0.008408013,0.01705966,0.032813244,0.022579813,0.0065027904,0.08215564,0.09919083,0.009322651,0.072932474,0.0066912686,0.015727002,0.02790005,0.011463137,0.022804117 +0.006770478,0.0070975553,0.0061097112,0.032388054,0.00469689,0.029014563,0.054458927,0.015219773,0.036924854,0.0077053085,0.0074958084,0.02382878,0.028791584,0.017738653,0.01888046,0.020983137,0.11063638,0.008250365,0.025185334,0.012733429,0.02757118,0.027456699,0.025177583,0.008029096,0.0590341,0.21493421,0.017014707,0.05102823,0.007797203,0.017581401,0.030098991,0.014413131,0.024953334 +0.006460396,0.007043518,0.0061552622,0.043098416,0.0042703887,0.024615532,0.040515337,0.016898174,0.034789506,0.007203162,0.006736328,0.023457414,0.025878392,0.016775291,0.016562976,0.015162665,0.20098755,0.008355655,0.024063585,0.011879982,0.021613166,0.027997697,0.02484585,0.007972056,0.05440866,0.17081757,0.011742848,0.048810504,0.00834056,0.015540331,0.02875625,0.013147283,0.02509769 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv index ac00fb4a..f67dd196 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005243044,0.0068628322,0.004119111,0.027635053,0.0037787466,0.021621196,0.03984544,0.020376597,0.036851183,0.005732252,0.0054553016,0.02128327,0.026677908,0.019110823,0.01986349,0.013093736,0.30414927,0.006873597,0.014688124,0.007742951,0.014003141,0.031778734,0.020403402,0.006862341,0.07797771,0.064194806,0.0077092745,0.088538475,0.0069644405,0.016042879,0.022522885,0.012781177,0.019216869 +0.0055265864,0.0069941594,0.0047999513,0.03426367,0.0041857036,0.022670772,0.03401926,0.020106943,0.023731828,0.0055064764,0.0053447303,0.014821653,0.01768129,0.021764157,0.019465126,0.010148312,0.37970722,0.0066347406,0.0131839905,0.0095445,0.013646816,0.025851715,0.020261735,0.008503725,0.052374292,0.05979142,0.0068904874,0.08166511,0.008144954,0.014931847,0.014926138,0.01588961,0.017021054 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv index 545f567e..3aa6ada2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005483725,0.0066012214,0.005198228,0.033509348,0.0042043817,0.02317797,0.03937999,0.017307758,0.037636165,0.005854237,0.0058676037,0.02215927,0.024298837,0.016519763,0.01830959,0.013106523,0.27282035,0.0074146762,0.019438406,0.0094330795,0.016409066,0.027353697,0.023160962,0.0076946104,0.074612305,0.11091272,0.0100175105,0.06297743,0.007235825,0.013821495,0.024065388,0.011177126,0.022840766 -0.005132123,0.006258132,0.004523277,0.028863266,0.0038300497,0.02196964,0.043445766,0.018415095,0.051318515,0.0059415693,0.0059717335,0.024573747,0.03365483,0.017032608,0.022367323,0.015106722,0.21536613,0.0069446526,0.016772965,0.008130857,0.016136188,0.037611797,0.023627339,0.005972406,0.0856897,0.09184303,0.009807569,0.08422559,0.0065450855,0.01732655,0.02972546,0.012266841,0.023603454 +0.0079358015,0.008644697,0.008528162,0.050991315,0.006794538,0.027761,0.0358331,0.017671429,0.028613957,0.008022484,0.00793928,0.02051466,0.018362291,0.019954775,0.018463802,0.013146331,0.21864693,0.010478101,0.024880765,0.014835908,0.021379687,0.021088064,0.027753515,0.012069517,0.05148979,0.15231076,0.013349637,0.044053532,0.01088003,0.014509736,0.024076153,0.014572965,0.024447259 +0.005569799,0.005660792,0.005039816,0.03242026,0.0038034345,0.024715062,0.04848758,0.019317342,0.07592577,0.0073058056,0.0071936473,0.028503245,0.039357413,0.016763123,0.02464078,0.017066706,0.107044116,0.006419049,0.021850476,0.009070911,0.016291386,0.042864792,0.028132914,0.005143986,0.0739408,0.13126431,0.012961439,0.079355635,0.007179912,0.021646269,0.03454433,0.011274988,0.029244097 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv index 981d5e28..e7303aa2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0055701155,0.0063301595,0.0042756563,0.029668182,0.003665929,0.023308653,0.041472793,0.01839364,0.03860736,0.0060253735,0.0056214742,0.020402266,0.027661264,0.016783247,0.01859294,0.013065602,0.28502858,0.006916266,0.01649864,0.008324767,0.015853647,0.026072072,0.02126262,0.007229569,0.07821424,0.10320244,0.009021552,0.0650905,0.006879877,0.015151082,0.022952529,0.012675275,0.020181743 +0.006583762,0.0068928897,0.0048378515,0.03660268,0.004346066,0.02784286,0.042631052,0.017884584,0.033521336,0.0069473158,0.00634369,0.018111208,0.024766268,0.018511454,0.018494321,0.013050359,0.25470728,0.007486415,0.018900618,0.010490363,0.018111968,0.02067791,0.02412442,0.009464144,0.0647224,0.13972172,0.010750387,0.05095635,0.008137707,0.015822683,0.021603521,0.016543148,0.020411285 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv index af6571aa..27cebee6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005370935,0.0065400284,0.004214182,0.028507866,0.004052519,0.023884999,0.0431287,0.01866619,0.038549002,0.0058642467,0.005612742,0.022007838,0.028794203,0.018062135,0.018920997,0.014034251,0.28207308,0.00724066,0.01554973,0.008246547,0.015637344,0.029362565,0.020395592,0.0072190757,0.08529724,0.08158563,0.008495348,0.07213983,0.0073112454,0.015740085,0.024467451,0.01239826,0.020629534 +0.008046482,0.010288932,0.0069967234,0.03990826,0.007162291,0.03375451,0.03726217,0.021291917,0.027013969,0.007882263,0.0078681735,0.01970519,0.02320241,0.024027871,0.017250976,0.014517644,0.26696384,0.011102694,0.021171335,0.014237669,0.020665448,0.017218802,0.024644138,0.013858891,0.057388205,0.10421708,0.01121666,0.042277344,0.01241735,0.016171634,0.01957094,0.01778471,0.02291343 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv index 9391aa2a..46d86b6f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.003818576,0.0031525614,0.0051886565,0.027662326,0.006760011,0.041391376,0.062559254,0.016534436,0.041413,0.006456904,0.0038409191,0.031356983,0.025992455,0.02640143,0.038692255,0.022995137,0.17438106,0.00587134,0.01310105,0.012426717,0.017008489,0.037873317,0.023261664,0.0044478937,0.07316778,0.08910169,0.00722368,0.09950632,0.0060560848,0.021839175,0.01798219,0.013436582,0.01909868 +0.0012847829,0.0013862588,0.0013743622,0.0049335216,0.002629261,0.04421479,0.07391029,0.04052809,0.04858283,0.0037130984,0.001400662,0.06348066,0.056958914,0.019132532,0.07674131,0.02009592,0.03749449,0.0011936828,0.0070741074,0.0039621834,0.0048973863,0.08357048,0.02983897,0.0016369526,0.09871048,0.0017693046,0.013229287,0.16916683,0.0018953648,0.019495614,0.012248143,0.0025117958,0.050937597 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv index 79957644..9d87985f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038112525,0.0032467076,0.005103138,0.028848037,0.006253271,0.040058028,0.06397161,0.015401709,0.039240718,0.007229387,0.0042264964,0.031109253,0.022743622,0.026395943,0.03867059,0.0224054,0.16184604,0.006153928,0.014256049,0.012480883,0.018035192,0.033755783,0.022141878,0.0048214206,0.06857576,0.11654172,0.0072527346,0.091533765,0.0067206784,0.023300141,0.021024033,0.014561617,0.018283268 +0.015949078,0.013059553,0.009781349,0.048254672,0.01312685,0.01593082,0.028322889,0.007367935,0.007820241,0.0077832667,0.014817788,0.002786293,0.010103129,0.011100873,0.013910568,0.012986693,0.032847404,0.017707605,0.018416008,0.024353962,0.032842595,0.002778024,0.03274647,0.05513109,0.009160907,0.3112136,0.0045494093,0.0028305363,0.019623127,0.03260526,0.07252648,0.09204435,0.0055211657 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv index fc35a03f..110272db 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038847511,0.0034304704,0.0054487633,0.030906213,0.0065313987,0.04176309,0.0651858,0.015840625,0.039366536,0.00712093,0.0041720322,0.030338436,0.021227272,0.027650725,0.03322719,0.02358945,0.17575502,0.0062058195,0.015167547,0.013033766,0.018510986,0.03583581,0.021288542,0.0049735317,0.066214904,0.10693726,0.0075933044,0.08376561,0.007044815,0.021833733,0.02074671,0.015919521,0.019489419 +0.0006185576,0.0006328632,0.00043876236,0.0064425473,0.0018244528,0.065627284,0.1284394,0.011077401,0.04086932,0.0013103667,0.00057274237,0.05383014,0.0138934385,0.03555001,0.035452865,0.016880834,0.100283615,0.0006685078,0.013122532,0.008209185,0.014611625,0.022872807,0.024365555,0.0038333896,0.035221875,0.08512628,0.003992684,0.14880891,0.00076322147,0.02621189,0.05397747,0.01884453,0.025624936 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv index dfae95aa..d92c0440 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038600573,0.0032016537,0.0050423536,0.030087678,0.0062640845,0.042983707,0.06558176,0.016441714,0.037939113,0.0068796654,0.0041524945,0.033378396,0.02355689,0.02613971,0.03884025,0.022489678,0.16319337,0.005882346,0.0136809675,0.012107426,0.018530237,0.035350807,0.02193522,0.0048262407,0.069117285,0.106256664,0.007452489,0.08964618,0.0068337126,0.02311564,0.021159057,0.014839026,0.019234167 -0.0038384346,0.0032803454,0.005382596,0.028020917,0.0065062335,0.040472195,0.059231486,0.01510768,0.044317365,0.00677788,0.004063074,0.030269165,0.023738174,0.028254144,0.035682805,0.02283463,0.17437491,0.0062798257,0.014255069,0.013157966,0.018651582,0.03610014,0.021770932,0.0047950475,0.06709478,0.10704565,0.007234076,0.09272612,0.0065334365,0.020849966,0.019035984,0.013944705,0.018372733 +0.008535063,0.010116155,0.004999788,0.027722772,0.007546305,0.050576966,0.040861025,0.009750304,0.0048526525,0.0060036117,0.007846482,0.01775664,0.0069292323,0.034353506,0.021897852,0.011217101,0.012552527,0.009145636,0.011646283,0.026980927,0.0408808,0.010849433,0.05207903,0.02948556,0.016560948,0.22770509,0.00622852,0.007239846,0.012705731,0.037399787,0.10941857,0.108829156,0.009326774 +0.0008166164,0.0005132967,0.00059320376,0.006916493,0.002581364,0.021923427,0.050397992,0.009789066,0.11758413,0.001491984,0.0006522989,0.013462131,0.023066303,0.012532,0.02107708,0.016029773,0.19077104,0.00079144875,0.01853323,0.005924662,0.009348377,0.015089126,0.008362901,0.0038307437,0.022829419,0.035089612,0.0039825533,0.32077447,0.0008275365,0.014444679,0.024167405,0.0045341994,0.021271454 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv index 4800fc39..135277b4 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004071277,0.0036563596,0.005473332,0.026431864,0.0070418348,0.040103372,0.058523994,0.014499132,0.048744615,0.0068927244,0.003979709,0.024812536,0.02332055,0.028595718,0.034942232,0.022658326,0.19808845,0.0063588833,0.014898518,0.014481609,0.017180959,0.036216,0.021954877,0.004474714,0.07242044,0.09361984,0.0072108386,0.08443967,0.0062276307,0.019533861,0.01759654,0.013579895,0.01796969 +0.0006395509,0.0005395344,0.0006403406,0.0073080775,0.0016307676,0.04628504,0.114420965,0.033811003,0.04748827,0.0018689088,0.0006519,0.033128954,0.04977551,0.015585043,0.048301417,0.019319415,0.11359712,0.0006475441,0.0067579355,0.0037142283,0.0035758512,0.040649626,0.021625642,0.0012714841,0.08745198,0.003365021,0.0064466624,0.21271876,0.0010225932,0.022955855,0.010015839,0.0032300227,0.03955918 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv index bda5f04e..e5581ce7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0042564487,0.0033090666,0.0054760864,0.029484103,0.0063959234,0.032995798,0.058816995,0.013607776,0.048283372,0.0057379017,0.0038245237,0.021225223,0.023702899,0.026598837,0.030306822,0.02262228,0.23025683,0.0063128057,0.014794539,0.013137006,0.019704955,0.031384137,0.019589942,0.004760695,0.06250796,0.106131054,0.006412059,0.074764796,0.005834489,0.019974858,0.01842272,0.012555495,0.016811622 -0.0038192424,0.0033686042,0.0054370016,0.02769945,0.006779793,0.04220823,0.05973473,0.015520086,0.04562838,0.0071383878,0.00422071,0.03299786,0.025394814,0.0281485,0.038514096,0.023156043,0.16337366,0.0063498737,0.014283524,0.012739055,0.01869462,0.036976255,0.023111258,0.004908983,0.07237423,0.09736417,0.0072591524,0.08847638,0.006704482,0.022873966,0.021077238,0.0138563765,0.019810876 +0.0017209036,0.0015223114,0.0009925718,0.017091438,0.0052904864,0.029449824,0.05233395,0.005048244,0.11915878,0.0020151085,0.0016928521,0.011555765,0.01666688,0.016796239,0.025025416,0.015222794,0.24491838,0.002148038,0.034079727,0.010994179,0.035693437,0.0076755397,0.015851151,0.01280274,0.021139963,0.12886791,0.003564564,0.062393457,0.001786263,0.017634643,0.0507273,0.016218634,0.011920487 +0.027149918,0.03692235,0.0297103,0.07504655,0.025415707,0.06079237,0.025890756,0.02272309,0.008084381,0.018789234,0.039250992,0.011783172,0.017395535,0.029108455,0.016487945,0.0140047455,0.021839352,0.052460495,0.012594856,0.029682744,0.036679644,0.009503126,0.053610098,0.036722347,0.033857927,0.029855149,0.0132688945,0.0007574541,0.05655436,0.031545028,0.02689056,0.07513626,0.020486278 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv index 0c133e09..fd8cc3b9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0038691815,0.0031717422,0.005064685,0.029039107,0.0061659142,0.037487313,0.06612843,0.01513539,0.03811665,0.0066099614,0.0039828895,0.026459182,0.02207245,0.029161863,0.032705896,0.02051133,0.18691592,0.0063597304,0.0139315445,0.013663895,0.017307293,0.030300051,0.019515662,0.004841311,0.059204914,0.1291775,0.0065799546,0.08632184,0.006249234,0.022190582,0.020693045,0.014265866,0.016799755 +0.00085969456,0.0007951353,0.00066271354,0.018881613,0.0021610884,0.061503798,0.16510883,0.011513276,0.036499035,0.0013508685,0.0008861966,0.012494069,0.020483125,0.02126216,0.037900373,0.016543375,0.20081232,0.0012051113,0.011987639,0.0088223675,0.012496148,0.008076034,0.025651107,0.005890034,0.034473073,0.09267589,0.00274839,0.04009039,0.0014759087,0.044728093,0.048980862,0.031187622,0.019793583 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv index 1ffc4204..fc6463da 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.004423313,0.004286555,0.00660057,0.023772126,0.008373217,0.040369432,0.054351408,0.01465567,0.05245067,0.008132533,0.0042896164,0.029554067,0.024817849,0.03035214,0.039045297,0.025620734,0.17074145,0.0072791767,0.015768386,0.016019871,0.01698007,0.041483015,0.025339559,0.00460742,0.08207413,0.08653425,0.008505664,0.07673737,0.00643838,0.020246439,0.016483322,0.014442152,0.01922423 +0.0068634474,0.009162191,0.009985762,0.015698336,0.0108448705,0.0904677,0.042359415,0.06670113,0.03318652,0.011744499,0.008607542,0.061853275,0.05889687,0.030315023,0.05424857,0.02326838,0.035711277,0.007862204,0.008442241,0.014744367,0.0083070565,0.06985575,0.029260479,0.0033493678,0.15207788,0.0012586035,0.028393278,0.01334909,0.010879728,0.022950096,0.0053134672,0.0070398482,0.047001738 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index 35ddcd10..11f16da0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.029515171,0.029384783,0.02892698,0.031414278,0.030240053,0.03790003,0.031263754,0.030703781,0.02985053,0.03231135,0.030141735,0.028332692,0.033920184,0.027992733,0.031994548,0.032312855,0.032003276,0.029009493,0.025961198,0.028668242,0.031744353,0.028004343,0.0351939,0.028472656,0.033312727,0.029293254,0.025253193,0.03191485,0.031521086,0.030837052,0.027421221,0.028424587,0.026759079 +0.031412095,0.029059455,0.028553972,0.032031063,0.03308489,0.036242105,0.030798635,0.031423856,0.029171485,0.033814613,0.03109685,0.027981894,0.031494338,0.028169379,0.03019742,0.03245603,0.031989317,0.03025197,0.027243363,0.028524006,0.030921329,0.026887607,0.033563793,0.028870368,0.032369044,0.030635152,0.025346385,0.0325448,0.03363609,0.029415186,0.025767326,0.027363604,0.027682606 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index b475e5bf..76fb6eb8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02660504,0.030707078,0.032001417,0.035039,0.029511122,0.034290012,0.03181159,0.0294397,0.0321122,0.03097334,0.0332632,0.027464185,0.030202633,0.028321788,0.025869891,0.03017357,0.031728413,0.033907395,0.02845779,0.031313535,0.028817244,0.02832817,0.033035055,0.026313312,0.030338703,0.028560834,0.03160956,0.031486206,0.030627396,0.029206958,0.030443136,0.027497737,0.030542677 +0.02718314,0.030715112,0.031837214,0.035137605,0.030595766,0.03317532,0.031649627,0.029798042,0.03140365,0.031467617,0.03369167,0.027727356,0.028963719,0.027858147,0.025119768,0.030851895,0.03187139,0.03497891,0.02884058,0.031090252,0.028769664,0.028061062,0.032640804,0.026473435,0.030201206,0.02919215,0.031749595,0.031676207,0.03188455,0.02838132,0.029804083,0.0268488,0.030360317 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index ca893131..f277d42b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027332451,0.031302933,0.030766888,0.034912553,0.029892711,0.03336584,0.031323344,0.029848998,0.03191401,0.031425472,0.033242542,0.027521798,0.029320594,0.027383283,0.025944008,0.03078899,0.032123405,0.03406133,0.028520554,0.031947363,0.0294212,0.028340716,0.032867085,0.02619513,0.02996483,0.028789517,0.03081592,0.031394005,0.03228332,0.029442273,0.02991017,0.026885256,0.03075153 +0.027903663,0.031013355,0.030396728,0.034959204,0.031085547,0.03232213,0.031048927,0.030432688,0.031227158,0.03177365,0.03364062,0.027822366,0.027917664,0.027073784,0.025336333,0.031431273,0.032738667,0.034493793,0.029069608,0.031952385,0.029592805,0.028263152,0.032590456,0.026255373,0.0297492,0.029384159,0.0307498,0.031711757,0.033399194,0.028632063,0.028912678,0.02644551,0.030674366 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index 736eedb1..1fd43647 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03185726,0.028593035,0.029586729,0.02717517,0.029036317,0.03239331,0.030127635,0.029756432,0.028826356,0.03008631,0.027377693,0.03182702,0.03495427,0.032569427,0.03616851,0.031138953,0.02905974,0.026557622,0.028117852,0.02744148,0.032749053,0.030639345,0.031042855,0.03220263,0.033083834,0.030625483,0.027325926,0.030158056,0.028103651,0.03071186,0.029626483,0.033320524,0.027759206 -0.031184139,0.0276112,0.032012727,0.027526684,0.029155925,0.032260306,0.030398509,0.029150296,0.029186625,0.029938763,0.02798222,0.03192229,0.034919117,0.034535985,0.03453919,0.0301626,0.02843686,0.026707487,0.02883699,0.027758451,0.03170132,0.030358283,0.030214984,0.032069325,0.033027902,0.029928787,0.02964113,0.029945217,0.026400918,0.029637858,0.030964117,0.033538274,0.028345458 +0.032669287,0.02876315,0.030224655,0.027241936,0.029947326,0.031176692,0.029444885,0.029328013,0.028524838,0.03066203,0.027863681,0.03166694,0.034933478,0.032277443,0.03640189,0.029949818,0.028301675,0.026075223,0.029140284,0.027568853,0.0323754,0.03053253,0.029847682,0.033827864,0.032350555,0.0302727,0.027539514,0.029550968,0.028082011,0.03102456,0.030212617,0.03395407,0.028267471 +0.03143606,0.028259205,0.03223914,0.027423099,0.029374318,0.030516151,0.029467668,0.028255668,0.028395286,0.030080462,0.028519074,0.031538118,0.034919344,0.03331209,0.034968793,0.029315263,0.027845407,0.02649866,0.030031862,0.027775807,0.032202866,0.030588228,0.028885216,0.033773314,0.03254831,0.030060904,0.03000054,0.02907594,0.026533103,0.030174984,0.03166629,0.035144202,0.029174669 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 136902ac..9c79cfda 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027090317,0.031356793,0.031175932,0.034752592,0.028963773,0.035918295,0.032366708,0.029567668,0.031858996,0.031686503,0.031844135,0.027539104,0.03215706,0.02786867,0.028114032,0.030691825,0.03100698,0.032229245,0.026652839,0.030048568,0.02923739,0.02832744,0.035018757,0.0267673,0.031383105,0.028060874,0.028454317,0.03174636,0.030990787,0.030642902,0.030124784,0.02802195,0.028333979 +0.027990196,0.031357266,0.032083645,0.035231497,0.030950967,0.03400702,0.031629156,0.029572189,0.031043753,0.03288654,0.03334564,0.027693558,0.030571442,0.027530046,0.027211161,0.030589903,0.030670388,0.03259379,0.02737541,0.03036181,0.0295517,0.027888844,0.034106847,0.02740788,0.030691696,0.027825894,0.02871136,0.031667218,0.032172386,0.02943597,0.029995803,0.02745374,0.028395284 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index 7b1ad181..b0bcf281 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.031245146,0.026523279,0.03429213,0.028590597,0.030950105,0.030549498,0.030602774,0.029434195,0.02976708,0.030371303,0.02923278,0.03193279,0.032057486,0.036185876,0.031233333,0.028832216,0.028311577,0.027465537,0.031915396,0.028459525,0.029657632,0.029486306,0.02885231,0.031842597,0.032040454,0.029984664,0.032361843,0.029286683,0.025559865,0.028563855,0.03226416,0.032237228,0.029909858 -0.031189607,0.027768781,0.03171535,0.0286404,0.02989582,0.03686473,0.030307468,0.029793784,0.029219873,0.03136719,0.029169736,0.030565001,0.035063583,0.033113644,0.033308994,0.03176959,0.030947847,0.027378758,0.026388302,0.028127484,0.03166254,0.02842469,0.033268318,0.029070573,0.033865992,0.028430037,0.027634714,0.031596266,0.02863526,0.028753258,0.02869571,0.030206194,0.027160522 +0.0324019,0.026557397,0.03567093,0.028395623,0.03214945,0.030262461,0.029736726,0.02918344,0.02924375,0.031181242,0.030299323,0.031787664,0.031068454,0.03598506,0.03070766,0.028389841,0.028155206,0.027619353,0.033341076,0.028269062,0.029442511,0.028486561,0.028317692,0.032146245,0.031487968,0.02932897,0.03275529,0.028782543,0.025840137,0.02867312,0.032408092,0.031715825,0.030209484 +0.03502903,0.026921587,0.029170362,0.02918356,0.03458919,0.03605911,0.029871225,0.03156951,0.027554981,0.033587333,0.03044571,0.029222019,0.030610982,0.032198284,0.030960076,0.033182647,0.031899124,0.029759252,0.028811408,0.026992684,0.030438298,0.025892453,0.03120597,0.0292835,0.03345653,0.031768657,0.026362149,0.032247383,0.03288019,0.027643709,0.025063304,0.027542502,0.028597245 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index 5bd5387d..cb27b45f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03022107,0.026185002,0.035542563,0.030422375,0.030111654,0.032666244,0.03029986,0.028772637,0.029862503,0.031565245,0.030188533,0.031473093,0.03380565,0.034408633,0.031200787,0.029270852,0.029954033,0.026347158,0.029255822,0.028777694,0.031132765,0.028987736,0.03171347,0.029104978,0.032444056,0.027695423,0.03135624,0.030321337,0.025290275,0.027976021,0.03161053,0.03318183,0.028853968 +0.02995065,0.026482854,0.036322676,0.030786272,0.030653637,0.030291405,0.02871537,0.027630482,0.028931543,0.031819902,0.03167783,0.030811392,0.033273786,0.03227268,0.031228758,0.028594691,0.030216627,0.026278855,0.031208765,0.02872123,0.031650018,0.029130049,0.030444073,0.030609695,0.03161625,0.028118087,0.032231912,0.029491147,0.025260435,0.02785982,0.03239316,0.0353287,0.029997202 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index 211a7d66..006a90b1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.030450879,0.031356543,0.026286202,0.030208621,0.029305283,0.033798173,0.029997792,0.031071521,0.029736698,0.031199083,0.029278152,0.029431423,0.03262524,0.026415547,0.03385641,0.032870974,0.031922586,0.029316304,0.026414368,0.029405521,0.03292572,0.03013779,0.033768725,0.029333936,0.031706,0.030111287,0.025230156,0.03123331,0.033786975,0.032116424,0.027622495,0.029445931,0.027633844 +0.031105757,0.031319205,0.025952792,0.03074406,0.03020676,0.03298403,0.029882036,0.031156622,0.029681066,0.031637415,0.029420717,0.029296836,0.032249913,0.026572065,0.0334537,0.03261439,0.03169759,0.029466227,0.026537174,0.029645033,0.032349445,0.030258182,0.032920852,0.029934868,0.031194655,0.030517844,0.025205344,0.031641852,0.03456159,0.0313981,0.027084364,0.029406648,0.027902825 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index 488a103e..a462c215 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.069280244,0.08278568,0.072002776,0.068465054,0.073495515,0.069683656,0.08337737,0.08428103,0.079714045,0.08516558,0.07238791,0.07722001,0.08214111 +0.07371652,0.08747254,0.07478085,0.066930644,0.07320184,0.068280794,0.08230257,0.08293058,0.07530409,0.0836406,0.07084773,0.0773642,0.083227016 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index 287c3c11..1ffe1910 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.08120824,0.0770729,0.080374785,0.07006595,0.08169089,0.06985054,0.077308096,0.06746512,0.08158482,0.078970395,0.07628951,0.077936,0.08018279 +0.0846475,0.07865937,0.0813897,0.06975984,0.08057894,0.07018437,0.076035455,0.068347126,0.07994533,0.07798379,0.07339249,0.07953821,0.079537906 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index 6cd732d3..b9913b9f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.081267715,0.07711225,0.080673225,0.07033195,0.08024122,0.06911172,0.07555922,0.06642563,0.0804719,0.08202005,0.07461091,0.079976365,0.08219792 +0.083180524,0.07846569,0.0812608,0.07024677,0.07927988,0.06894813,0.075323164,0.06711979,0.07884185,0.08134555,0.07181041,0.081516474,0.08266096 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index 0caabb64..0ef1760e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.06782719,0.078334294,0.07045661,0.0793704,0.073115356,0.08177368,0.08440978,0.09057371,0.076156095,0.07454853,0.078214675,0.071796,0.07342377 -0.07023328,0.0774746,0.07357778,0.07948175,0.07633355,0.08361607,0.08418787,0.08768755,0.07620843,0.06998042,0.0815577,0.06901032,0.0706507 +0.06989463,0.07989096,0.07249861,0.08051619,0.07235672,0.081912465,0.08144418,0.08826559,0.074629635,0.07509785,0.079737626,0.071991235,0.07176424 +0.07401593,0.07802295,0.075928785,0.082235724,0.0748795,0.0842309,0.08068106,0.08477475,0.07419375,0.07135396,0.082080215,0.06978505,0.067817405 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 75244a2c..30d5cd15 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.075564295,0.077890314,0.07621962,0.06734453,0.07971224,0.06832646,0.07854212,0.07214813,0.08339084,0.082671195,0.07736374,0.0789834,0.08184321 +0.07915403,0.08103098,0.07856794,0.06742558,0.07797891,0.068986446,0.07662418,0.0694121,0.0813124,0.08137604,0.07515498,0.081329875,0.08164642 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index e8c6c744..6911d301 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07543901,0.07629552,0.079985805,0.07938394,0.08105448,0.08392259,0.08113814,0.08250335,0.07510063,0.06616155,0.08535827,0.06484661,0.068810105 -0.0684685,0.08285618,0.07265628,0.07221835,0.074672826,0.07720729,0.087464236,0.08804019,0.07745041,0.072739474,0.07616589,0.07260381,0.07745654 +0.07836008,0.07883829,0.08306367,0.078179605,0.080974005,0.08502495,0.078466825,0.080645144,0.07336398,0.06484835,0.08606815,0.06423272,0.06793416 +0.0754353,0.091055885,0.07524671,0.07041598,0.07320034,0.07423061,0.087269105,0.0889919,0.069685824,0.073581785,0.071758285,0.069817245,0.07931107 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index 0a26093e..aec1ea17 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07194322,0.077352665,0.08031595,0.07728969,0.08099176,0.080330044,0.08255197,0.079121925,0.07681379,0.069612056,0.08324984,0.06879602,0.07163119 +0.07717769,0.07774059,0.083538964,0.08017507,0.07791889,0.08045961,0.07922038,0.07712727,0.07463028,0.07106932,0.08220443,0.07093723,0.06780032 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index fdcbac81..6558c6eb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.068312116,0.08032282,0.06863922,0.07357371,0.06984851,0.07086958,0.0803648,0.0826013,0.079164565,0.08935935,0.06972866,0.0837885,0.083426945 +0.06911243,0.081835695,0.06873813,0.0740041,0.06911324,0.06964999,0.080704,0.081733346,0.0777465,0.08935496,0.06924195,0.084877074,0.08388858 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index e296979b..abae3f67 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -1,3 +1,5 @@ +import copy + import pytest import torch @@ -69,6 +71,20 @@ def model(model_config): return TransformerModel(model_config) +@pytest.fixture +def causal_model(model_config): + config = copy.deepcopy(model_config) + config.training_spec.training_objective = "causal" + return TransformerModel(config) + + +@pytest.fixture +def bert_model(model_config): + config = copy.deepcopy(model_config) + config.training_spec.training_objective = "bert" + return TransformerModel(config) + + def test_transformer_model_initialization(model, model_config): """Tests that the model initializes with the correct layers.""" # Check if encoder dicts were created @@ -184,3 +200,95 @@ def test_calculate_loss(model, model_config): assert total_loss.item() > 0 # Valid loss value assert "cat_col" in component_losses assert "real_col" in component_losses + + +def test_padding_keys_are_masked(bert_model): + seq_len = bert_model.seq_length + + valid_mask = torch.ones( + 2, + seq_len, + dtype=torch.bool, + device=bert_model.src_mask.device, + ) + + valid_mask[0, :2] = False + valid_mask[1, :1] = False + + attn_mask = bert_model._build_attention_mask(valid_mask, dtype=torch.float32) + + assert attn_mask.shape == (2, 1, seq_len, seq_len) + + # Batch 0: keys 0 and 1 are padding. + assert torch.all(attn_mask[0, :, :, 0] < -1e20) + assert torch.all(attn_mask[0, :, :, 1] < -1e20) + + # Batch 0: keys 2 onward are not padding-masked. + assert torch.all(attn_mask[0, :, :, 2:] > -1e20) + + # Batch 1: key 0 is padding. + assert torch.all(attn_mask[1, :, :, 0] < -1e20) + assert torch.all(attn_mask[1, :, :, 1:] > -1e20) + + +def test_causal_and_padding_masks_are_combined(causal_model): + seq_len = causal_model.seq_length + + valid_mask = torch.ones( + 1, + seq_len, + dtype=torch.bool, + device=causal_model.src_mask.device, + ) + + valid_mask[0, 0] = False + + attn_mask = causal_model._build_attention_mask( + valid_mask, + dtype=torch.float32, + ) + + assert attn_mask.shape == (1, 1, seq_len, seq_len) + + # Padding key 0 is masked for every query. + assert torch.all(attn_mask[0, :, :, 0] < -1e20) + + # Causal future positions are masked. + assert attn_mask[0, 0, 1, 2] < -1e20 + assert attn_mask[0, 0, 1, seq_len - 1] < -1e20 + + # A past valid key should not be masked by causal masking. + assert attn_mask[0, 0, 1, 1] > -1e20 + assert attn_mask[0, 0, 2, 1] > -1e20 + assert attn_mask[0, 0, seq_len - 1, seq_len - 1] > -1e20 + + +@pytest.fixture +def batch(model): + seq_len = model.seq_length + + return { + "cat_col": torch.tensor( + [ + [0, 0] + [1] * (seq_len - 2), + [0] + [2] * (seq_len - 1), + ], + dtype=torch.long, + device=model.src_mask.device, + ), + "real_col": torch.tensor( + [ + [0.0, 0.0] + [0.5] * (seq_len - 2), + [0.0] + [1.5] * (seq_len - 1), + ], + dtype=torch.float32, + device=model.src_mask.device, + ), + } + + +def test_forward_no_nan_with_padding(model, batch): + out = model.forward_train(batch) + + for tensor in out.values(): + assert torch.isfinite(tensor).all() From f61f621b2a43e89676947c5f127e6a1507b1fca4 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 5 Jun 2026 18:51:12 +0200 Subject: [PATCH 09/81] Store pad length explicitly --- src/sequifier/helpers.py | 139 +++++++++++++++--- src/sequifier/infer.py | 12 +- .../io/sequifier_dataset_from_file.py | 8 + .../sequifier_dataset_from_folder_parquet.py | 30 +++- ...uifier_dataset_from_folder_parquet_lazy.py | 18 ++- .../io/sequifier_dataset_from_folder_pt.py | 37 ++++- .../sequifier_dataset_from_folder_pt_lazy.py | 28 +++- src/sequifier/preprocess.py | 41 ++++-- src/sequifier/train.py | 65 +++++--- .../hyperparameter-search-custom-eval.yaml | 4 +- tests/integration/test_preprocessing.py | 66 +++++++-- ...uifier_dataset_from_folder_parquet_lazy.py | 64 ++++++++ ...t_sequifier_dataset_from_folder_pt_lazy.py | 49 ++++++ tests/unit/test_helpers.py | 116 ++++++++++++++- tests/unit/test_preprocess.py | 94 +++++++++++- tests/unit/test_train.py | 43 ++++++ 16 files changed, 737 insertions(+), 77 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index fb6c2541..5fa7340b 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -3,6 +3,7 @@ import random import re import sys +import warnings from datetime import datetime from typing import Any, Dict, Optional, Union @@ -39,6 +40,12 @@ "uint8": torch.int16, } +EXPLICIT_PADDING_MASK_FALLBACK_WARNING = ( + "Explicit padding mask not found. Falling back to value-based padding " + "inference for real-valued data; leading 0.0 values may be treated as " + "padding. Re-run preprocessing to generate explicit masks." +) + # Check an environment variable to see if we are in a testing context IS_TESTING = os.environ.get("SEQUIFIER_TESTING", "0") == "1" @@ -313,9 +320,99 @@ def numpy_to_pytorch( ) unified_tensors[f"{col_name}_target"] = target_tensor + left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) + if left_pad_lengths is not None: + full_length = seq_length + 1 + unified_tensors["_attention_valid_mask"] = build_valid_mask( + left_pad_lengths, full_length, data_offset, seq_length + ) + unified_tensors["_target_valid_mask"] = build_valid_mask( + left_pad_lengths, full_length, target_offset, seq_length + ) + return unified_tensors +@beartype +def build_valid_mask( + left_pad_lengths: Tensor, + full_length: int, + offset: int, + seq_length: int, +) -> Tensor: + """Builds a boolean validity mask from explicit left-padding metadata.""" + + full_positions = torch.arange( + full_length, device=left_pad_lengths.device, dtype=left_pad_lengths.dtype + ) + full_valid = full_positions[None, :] >= left_pad_lengths[:, None] + + return full_valid[:, -(seq_length + offset) : (-offset if offset > 0 else None)] + + +@beartype +def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Optional[Tensor]: + """Extracts one leftPadLength value per long-format subsequence.""" + if "leftPadLength" not in data.columns: + return None + + assert {"sequenceId", "subsequenceId"}.issubset(data.columns) + + lengths = ( + data.group_by(["sequenceId", "subsequenceId"], maintain_order=True) + .agg(pl.col("leftPadLength").first().alias("leftPadLength")) + .sort(["sequenceId", "subsequenceId"]) + .get_column("leftPadLength") + ) + + return torch.tensor(lengths.to_numpy(), dtype=torch.int64) + + +@beartype +def attach_padding_masks( + data_batch: dict[str, Tensor], + targets_batch: dict[str, Tensor], + left_pad_lengths: Tensor, + seq_length: int, + data_offset: int, + target_offset: int, +) -> None: + """Attaches explicit attention and target masks to batch dictionaries.""" + full_length = seq_length + 1 + data_batch["_attention_valid_mask"] = build_valid_mask( + left_pad_lengths, full_length, data_offset, seq_length + ) + targets_batch["_target_valid_mask"] = build_valid_mask( + left_pad_lengths, full_length, target_offset, seq_length + ) + + +@beartype +def unpack_preprocessed_pt_tuple( + data: tuple[Any, ...], +) -> tuple[Any, Any, Any, Any, Optional[Any]]: + """Unpacks both v1 four-item and v2 five-item preprocessed PT tuples.""" + if len(data) == 4: + sequences_dict, sequence_ids, subsequence_ids, start_positions = data + return sequences_dict, sequence_ids, subsequence_ids, start_positions, None + if len(data) == 5: + ( + sequences_dict, + sequence_ids, + subsequence_ids, + start_positions, + left_pad_lengths, + ) = data + return ( + sequences_dict, + sequence_ids, + subsequence_ids, + start_positions, + left_pad_lengths, + ) + raise ValueError(f"Expected a 4- or 5-item preprocessed PT tuple, got {len(data)}") + + @beartype def normalize_path(path: str, project_root: str) -> str: """Normalizes a path to be relative to a project path, then joins them. @@ -519,6 +616,16 @@ def get_last_training_batch_timedelta( return (t2 - t1).total_seconds() +def infer_valid_mask_from_data(data_batch: Dict[str, torch.Tensor], config: Any): + if len(config.categorical_columns): + ref_col = config.categorical_columns[0] + return data_batch[ref_col] != 0 + else: + warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) + ref_col = list(data_batch.keys())[0] + return (data_batch[ref_col] != 0.0).long().cumsum(dim=1) > 0 + + def apply_bert_masking( data_batch: Dict[str, torch.Tensor], targets_batch: Dict[str, torch.Tensor], @@ -530,16 +637,14 @@ def apply_bert_masking( """ data_batch = {k: tensor.clone() for k, tensor in data_batch.items()} targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} - batch_size, seq_len = config.training_spec.batch_size, config.seq_length # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) - if len(config.categorical_columns): - ref_col = config.categorical_columns[0] - valid_mask = data_batch[ref_col] != 0 + if "_attention_valid_mask" in data_batch: + valid_mask = data_batch["_attention_valid_mask"].bool() else: - ref_col = list(data_batch.keys())[0] - valid_mask = (data_batch[ref_col] != 0.0).long().cumsum(dim=1) > 0 + valid_mask = infer_valid_mask_from_data(data_batch, config) + batch_size, seq_len = valid_mask.shape device = valid_mask.device # Calculate exact number of tokens to mask per sequence based on valid length @@ -560,7 +665,8 @@ def apply_bert_masking( # 3. Span Masking Loop for i in range(batch_size): budget = budgets[i].item() - valid_len = valid_mask[i].sum().item() + valid_positions = valid_mask[i].nonzero(as_tuple=True)[0] + valid_len = len(valid_positions) if budget < 1 or valid_len < 1: continue @@ -578,18 +684,17 @@ def apply_bert_masking( start_idx = sampled_starts[span_idx] end_idx = min(start_idx + span_len, valid_len) + span_positions = valid_positions[start_idx:end_idx] + if len(span_positions) == 0: + span_idx += 1 + continue - span_view = bert_mask[i, start_idx:end_idx] - newly_masked = (~span_view).sum().item() - - # Truncate the span if adding it exceeds our exact masking budget - if current_masked + newly_masked > budget: - allowance = budget - current_masked - unmasked_indices = (~span_view).nonzero(as_tuple=True)[0] - if len(unmasked_indices) > allowance: - end_idx = start_idx + unmasked_indices[allowance - 1].item() + 1 + unmasked_positions = span_positions[~bert_mask[i, span_positions]] + allowance = budget - current_masked + if len(unmasked_positions) > allowance: + unmasked_positions = unmasked_positions[:allowance] - bert_mask[i, start_idx:end_idx] = True + bert_mask[i, unmasked_positions] = True current_masked = bert_mask[i].sum().item() span_idx += 1 diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index ba94086a..5b625952 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -20,6 +20,7 @@ normalize_path, numpy_to_pytorch, subset_to_input_columns, + unpack_preprocessed_pt_tuple, write_data, ) from sequifier.train import ( @@ -373,7 +374,8 @@ def infer_embedding( sequence_ids_tensor, subsequence_ids_tensor, start_positions_tensor, - ) = data + _, + ) = unpack_preprocessed_pt_tuple(data) embeddings = get_embeddings_pt(config, inferer, sequences_dict) sequence_ids_for_preds = sequence_ids_tensor.numpy() @@ -580,7 +582,13 @@ def infer_generative( ) ) elif config.read_format == "pt": - sequences_dict, sequence_ids_tensor, _, start_positions_tensor = data + ( + sequences_dict, + sequence_ids_tensor, + _, + start_positions_tensor, + _, + ) = unpack_preprocessed_pt_tuple(data) total_steps = ( 1 if config.autoregression_total_steps is None diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index c2f0916c..d12d672e 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -61,6 +61,14 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.target_tensors = { key: all_tensors[f"{key}_target"] for key in self.config.target_columns } + if "_attention_valid_mask" in all_tensors: + self.sequence_tensors["_attention_valid_mask"] = all_tensors[ + "_attention_valid_mask" + ] + if "_target_valid_mask" in all_tensors: + self.target_tensors["_target_valid_mask"] = all_tensors[ + "_target_valid_mask" + ] del all_tensors if config.training_spec.device.startswith("cuda"): diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index d37e11ab..34d806a9 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -10,7 +10,12 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import PANDAS_TO_TORCH_TYPES, normalize_path +from sequifier.helpers import ( + PANDAS_TO_TORCH_TYPES, + attach_padding_masks, + get_left_pad_lengths_from_preprocessed_data, + normalize_path, +) class SequifierDatasetFromFolderParquet(IterableDataset): @@ -76,12 +81,17 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): all_targets: Dict[str, list[torch.Tensor]] = { col: [] for col in config.target_columns } + all_left_pad_lengths: list[torch.Tensor] = [] # Step 1: Eager I/O reduction pass over all chunk allocations for file_info in metadata["batch_files"]: file_path = os.path.join(self.data_dir, file_info["path"]) df = pl.read_parquet(file_path) + left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(df) + if left_pad_lengths is not None: + all_left_pad_lengths.append(left_pad_lengths) + for col in all_sequences.keys(): feature_df = df.filter(pl.col("inputCol") == col) if not feature_df.is_empty(): @@ -112,12 +122,20 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col, tensors in all_targets.items() if tensors } + self.left_pad_lengths = ( + torch.cat(all_left_pad_lengths) + if all_left_pad_lengths + and len(all_left_pad_lengths) == len(metadata["batch_files"]) + else None + ) # Step 3: Prevent serialization duplications across worker forks via shared memory flags for tensor in self.sequences.values(): tensor.share_memory_() for tensor in self.targets.values(): tensor.share_memory_() + if self.left_pad_lengths is not None: + self.left_pad_lengths.share_memory_() self.target_samples = self._get_target_samples() self.total_batches = self._calculate_total_batches(self.target_samples) @@ -210,4 +228,14 @@ def __iter__( for key, tensor in self.targets.items() } + if self.left_pad_lengths is not None: + attach_padding_masks( + data_batch, + targets_batch, + self.left_pad_lengths[batch_indices], + train_seq_len, + self.config.training_spec.data_offset, + self.config.training_spec.target_offset, + ) + yield data_batch, targets_batch, None, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index adda1a6e..d1b368de 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -11,7 +11,12 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import PANDAS_TO_TORCH_TYPES, normalize_path +from sequifier.helpers import ( + PANDAS_TO_TORCH_TYPES, + attach_padding_masks, + get_left_pad_lengths_from_preprocessed_data, + normalize_path, +) class SequifierDatasetFromFolderParquetLazy(IterableDataset): @@ -247,6 +252,7 @@ def __iter__( # This file overlaps with our worker's assigned boundary. Load it. file_path = os.path.join(self.data_dir, self.batch_files_info[f_id]["path"]) df = pl.read_parquet(file_path) + left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(df) # Generate indices for the whole file using torch (matching pt_lazy) indices = torch.arange(file_samples) @@ -309,6 +315,16 @@ def __iter__( f"Missing required column {col_name} in Parquet partition" ) + if left_pad_lengths is not None: + attach_padding_masks( + new_seq, + new_tgt, + left_pad_lengths[worker_indices], + train_seq_len, + self.config.training_spec.data_offset, + self.config.training_spec.target_offset, + ) + del df # Append the new slice to the cross-file buffer diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 9c29d8b5..eceda4b8 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -9,7 +9,11 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import normalize_path +from sequifier.helpers import ( + attach_padding_masks, + normalize_path, + unpack_preprocessed_pt_tuple, +) class SequifierDatasetFromFolderPt(IterableDataset): @@ -49,22 +53,39 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in set(config.input_columns + config.target_columns) } + all_left_pad_lengths: list[torch.Tensor] = [] # Load all data files into RAM for file_info in metadata["batch_files"]: file_path = os.path.join(self.data_dir, file_info["path"]) - (sequences_batch, _, _, _) = torch.load( - file_path, map_location="cpu", weights_only=False + ( + sequences_batch, + _, + _, + _, + left_pad_lengths_batch, + ) = unpack_preprocessed_pt_tuple( + torch.load(file_path, map_location="cpu", weights_only=False) ) for col in all_sequences.keys(): if col in sequences_batch: all_sequences[col].append(sequences_batch[col]) + if left_pad_lengths_batch is not None: + all_left_pad_lengths.append(left_pad_lengths_batch) self.sequences: Dict[str, torch.Tensor] = { col: torch.cat(tensors) for col, tensors in all_sequences.items() if tensors } + self.left_pad_lengths = ( + torch.cat(all_left_pad_lengths) + if all_left_pad_lengths + and len(all_left_pad_lengths) == len(metadata["batch_files"]) + else None + ) for tensor in self.sequences.values(): tensor.share_memory_() + if self.left_pad_lengths is not None: + self.left_pad_lengths.share_memory_() self.target_samples = self._get_target_samples() self.total_batches = self._calculate_total_batches(self.target_samples) @@ -172,4 +193,14 @@ def __iter__( if key in self.config.target_columns } + if self.left_pad_lengths is not None: + attach_padding_masks( + data_batch, + targets_batch, + self.left_pad_lengths[batch_indices], + train_seq_len, + data_offset, + target_offset, + ) + yield data_batch, targets_batch, None, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index e07924e0..eaac2694 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -10,7 +10,11 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import normalize_path +from sequifier.helpers import ( + attach_padding_masks, + normalize_path, + unpack_preprocessed_pt_tuple, +) class SequifierDatasetFromFolderPtLazy(IterableDataset): @@ -223,8 +227,14 @@ def __iter__( # This file overlaps with our worker's assigned boundary. Load it. file_path = os.path.join(self.data_dir, self.batch_files_info[f_id]["path"]) - (sequences_batch, _, _, _) = torch.load( - file_path, map_location="cpu", weights_only=False + ( + sequences_batch, + _, + _, + _, + left_pad_lengths_batch, + ) = unpack_preprocessed_pt_tuple( + torch.load(file_path, map_location="cpu", weights_only=False) ) # Generate indices for the whole file @@ -269,8 +279,18 @@ def __iter__( if k in self.config.target_columns } + if left_pad_lengths_batch is not None: + attach_padding_masks( + new_seq, + new_tgt, + left_pad_lengths_batch[worker_indices], + train_seq_len, + data_offset, + target_offset, + ) + # Free the large file immediately to keep RAM down - del sequences_batch + del sequences_batch, left_pad_lengths_batch # Append the new slice to the cross-file buffer if buffer_len == 0: diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 54ca8f14..ae658b89 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -15,7 +15,12 @@ from loguru import logger from sequifier.config.preprocess_config import load_preprocessor_config -from sequifier.helpers import PANDAS_TO_TORCH_TYPES, read_data, write_data +from sequifier.helpers import ( + PANDAS_TO_TORCH_TYPES, + read_data, + unpack_preprocessed_pt_tuple, + write_data, +) @beartype @@ -340,6 +345,7 @@ def _create_schema( "sequenceId": pl.Int64, "subsequenceId": pl.Int64, "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, "inputCol": pl.String, } @@ -835,7 +841,9 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No for file_path in files: try: if write_format == "pt": - sequences_dict, _, _, _ = torch.load(file_path, weights_only=False) + sequences_dict, _, _, _, _ = unpack_preprocessed_pt_tuple( + torch.load(file_path, weights_only=False) + ) if sequences_dict: n_samples = sequences_dict[ list(sequences_dict.keys())[0] @@ -1591,10 +1599,13 @@ def process_and_write_data_pt( aggs = [ pl.concat_list(sequence_cols) .filter(pl.col("inputCol") == col_name) - .flatten() + .list.explode(keep_nulls=False, empty_as_null=False) # flatten .alias(f"seq_{col_name}") for col_name in all_feature_cols - ] + [pl.col("startItemPosition").first().alias("startItemPosition")] + ] + [ + pl.col("startItemPosition").first().alias("startItemPosition"), + pl.col("leftPadLength").first().alias("leftPadLength"), + ] aggregated_data = ( data.group_by(["sequenceId", "subsequenceId"]) @@ -1614,6 +1625,9 @@ def process_and_write_data_pt( start_item_positions_tensor = torch.tensor( aggregated_data.get_column("startItemPosition").to_numpy(), dtype=torch.int64 ) + left_pad_lengths_tensor = torch.tensor( + aggregated_data.get_column("leftPadLength").to_numpy(), dtype=torch.int64 + ) sequences_dict = {} for col_name in all_feature_cols: @@ -1634,6 +1648,7 @@ def process_and_write_data_pt( sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, + left_pad_lengths_tensor, ) torch.save(data_to_save, path) @@ -1869,7 +1884,7 @@ def extract_sequences( for in_row in raw_sequences.iter_rows(named=True): in_seq_lists_only = {col: in_row[col] for col in columns} - subsequences = extract_subsequences( + subsequences, left_pad_lengths = extract_subsequences( in_seq_lists_only, seq_length, stride_for_split, @@ -1883,11 +1898,12 @@ def extract_sequences( in_row["sequenceId"], subsequence_id, subsequence_id * stride_for_split, + left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] - if len(row) != (seq_length + 5): + if len(row) != (seq_length + 6): raise RuntimeError( - f"Row length mismatch. Expected {seq_length + 5}, got {len(row)}. Row: {row}" + f"Row length mismatch. Expected {seq_length + 6}, got {len(row)}. Row: {row}" ) rows.append(row) @@ -1956,7 +1972,7 @@ def extract_subsequences( stride_for_split: int, columns: list[str], subsequence_start_mode: str, -) -> dict[str, list[list[Union[float, int]]]]: +) -> tuple[dict[str, list[list[Union[float, int]]]], list[int]]: """Extracts subsequences from a dictionary of sequence lists. This function takes a dictionary `in_seq` where keys are column @@ -1978,10 +1994,8 @@ def extract_subsequences( A dictionary mapping column names to a *list of lists*, where each inner list is a subsequence. """ - if not in_seq[columns[0]]: - return {col: [] for col in columns} - in_seq_len = len(in_seq[columns[0]]) + pad_len = 0 if in_seq_len < (seq_length + 1): pad_len = (seq_length + 1) - in_seq_len in_seq = {col: ([0] * pad_len) + in_seq[col] for col in columns} @@ -1996,10 +2010,13 @@ def extract_subsequences( f"Diff of {subsequence_starts = }, {subsequence_starts_diff = } larger than {stride_for_split = }" ) - return { + result = { col: [list(in_seq[col][i : i + seq_length + 1]) for i in subsequence_starts] for col in columns } + left_pad_lengths = [pad_len] * len(subsequence_starts) + + return result, left_pad_lengths @beartype diff --git a/src/sequifier/train.py b/src/sequifier/train.py index bd1086cf..a38a96f1 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -52,9 +52,13 @@ torch._dynamo.config.suppress_errors = True +DATA_BATCH_METADATA_KEYS = {"_attention_valid_mask"} +TARGET_BATCH_METADATA_KEYS = {"_target_valid_mask", "_bert_mask"} + from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 from sequifier.helpers import ( # noqa: E402 + EXPLICIT_PADDING_MASK_FALLBACK_WARNING, apply_bert_masking, conditional_beartype, configure_determinism, @@ -991,6 +995,7 @@ def _infer_attention_valid_mask(self, src: dict[str, Tensor]) -> Tensor: # Fallback for real-only data. # This matches the existing heuristic used in BERT masking. + warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) ref_col = next(col for col in self.input_columns if col in src) return (src[ref_col] != 0.0).long().cumsum(dim=1) > 0 @@ -1108,6 +1113,12 @@ def forward_inner(self, src: dict[str, Tensor]) -> Tensor: src2 = self.joint_embedding_layer(src2) valid_mask = self._infer_attention_valid_mask(src).to(device=src2.device) + if valid_mask.shape != src2.shape[:2]: + raise ValueError( + f"Invalid attention mask shape: got {tuple(valid_mask.shape)}, " + f"expected {tuple(src2.shape[:2])} = (batch_size, seq_length). " + "Check _attention_valid_mask / leftPadLength construction." + ) src2 = self._zero_padding_positions(src2, valid_mask) mask = self._build_attention_mask(valid_mask, dtype=src2.dtype) @@ -1505,12 +1516,12 @@ def _train_epoch( data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns + if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types + if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS } if self.hparams.training_spec.training_objective == "bert": data, targets = apply_bert_masking(data, targets, self.hparams) @@ -1681,27 +1692,37 @@ def _calculate_loss( - A dictionary of individual (unweighted) loss Tensors for each target column. """ - mask_col = next( - ( - col - for col in targets.keys() - if self.target_column_types[col] == "categorical" - ), - list(targets.keys())[0], - ) + target_names = [ + k for k in targets.keys() if k not in TARGET_BATCH_METADATA_KEYS + ] + if not target_names: + raise RuntimeError("Loss calculation failed; no target columns were found.") - if self.target_column_types[mask_col] == "real": - seq_mask_2d = (targets[mask_col] != 0.0).long().cumsum(dim=1) > 0 + if "_target_valid_mask" in targets: + seq_mask_2d = targets["_target_valid_mask"].bool() else: - seq_mask_2d = targets[mask_col] != 0 + mask_col = next( + ( + col + for col in target_names + if self.target_column_types[col] == "categorical" + ), + target_names[0], + ) + + if self.target_column_types[mask_col] == "real": + warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) + seq_mask_2d = (targets[mask_col] != 0.0).long().cumsum(dim=1) > 0 + else: + seq_mask_2d = targets[mask_col] != 0 if "_bert_mask" in targets: - seq_mask_2d = seq_mask_2d & targets["_bert_mask"] + seq_mask_2d = seq_mask_2d & targets["_bert_mask"].bool() mask = seq_mask_2d.T.contiguous().reshape(-1) losses = {} - for target_column in [k for k in targets.keys() if k != "_bert_mask"]: + for target_column in target_names: target_column_type = self.target_column_types[target_column] if target_column_type == "categorical": output[target_column] = ( @@ -1730,7 +1751,7 @@ def _calculate_loss( ) loss = None - for target_column in targets.keys(): + for target_column in target_names: losses[target_column] = losses[target_column] * ( self.loss_weights[target_column] if self.loss_weights is not None @@ -1833,12 +1854,12 @@ def _evaluate( data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns + if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types + if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS } if self.hparams.training_spec.training_objective == "bert": data, targets = apply_bert_masking(data, targets, self.hparams) @@ -1924,12 +1945,12 @@ def _evaluate( data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns + if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types + if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS } pseudo_output = {} @@ -1940,6 +1961,10 @@ def _evaluate( col, data[col].transpose(0, 1) ) targets_for_baseline[col] = targets[col] + if "_target_valid_mask" in targets: + targets_for_baseline["_target_valid_mask"] = targets[ + "_target_valid_mask" + ] if len(pseudo_output) > 0: loss, losses = self._calculate_loss( diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml index 88a16baf..be3403d4 100644 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ b/tests/configs/hyperparameter-search-custom-eval.yaml @@ -56,7 +56,7 @@ training_hyperparameter_sampling: epochs: [1, 1] save_interval_epochs: 10 batch_size: [5, 10] - learning_rate: [0.001, 0.01] + learning_rate: [0.001, 0.0001] criterion: itemId: CrossEntropyLoss supCat1: CrossEntropyLoss @@ -64,7 +64,7 @@ training_hyperparameter_sampling: supCat3: CrossEntropyLoss supCat4: CrossEntropyLoss accumulation_steps: [1] - dropout: [0.0] + dropout: [0.5] optimizer: - name: Adam scheduler: diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 79e13b1f..cdd42c52 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -75,11 +75,25 @@ def load_parquet_folder_outputs(path): other_cols = [ col for col in data.columns - if col not in ["sequenceId", "subsequenceId", "startItemPosition", "inputCol"] + if col + not in [ + "sequenceId", + "subsequenceId", + "startItemPosition", + "leftPadLength", + "inputCol", + ] ] return data[ - ["sequenceId", "subsequenceId", "startItemPosition", "inputCol"] + other_cols + [ + "sequenceId", + "subsequenceId", + "startItemPosition", + "leftPadLength", + "inputCol", + ] + + other_cols ].sort(["sequenceId", "subsequenceId", "startItemPosition", "inputCol"]) @@ -93,7 +107,13 @@ def load_pt_outputs(path): sequence_id, subsequence_id, start_item_position, + *maybe_left_pad_length, ) = torch.load(os.path.join(root, file)) + left_pad_length = ( + maybe_left_pad_length[0] + if maybe_left_pad_length + else torch.zeros_like(sequence_id) + ) sequences2 = {} for col, vals in sequences.items(): vals2 = vals.numpy() @@ -128,6 +148,12 @@ def load_pt_outputs(path): start_item_position, ] ) + sequences2["leftPadLength"] = np.concatenate( + [ + sequences2.get("leftPadLength", []), + left_pad_length, + ] + ) content = pl.DataFrame(sequences2) contents.append(content) @@ -137,10 +163,24 @@ def load_pt_outputs(path): other_cols = [ col for col in data.columns - if col not in ["sequenceId", "subsequenceId", "startItemPosition", "inputCol"] + if col + not in [ + "sequenceId", + "subsequenceId", + "startItemPosition", + "leftPadLength", + "inputCol", + ] ] return data[ - ["sequenceId", "subsequenceId", "startItemPosition", "inputCol"] + other_cols + [ + "sequenceId", + "subsequenceId", + "startItemPosition", + "leftPadLength", + "inputCol", + ] + + other_cols ].sort(["sequenceId", "subsequenceId", "startItemPosition", "inputCol"]) @@ -178,7 +218,7 @@ def test_preprocessed_data_real(data_splits): assert len(data_splits[name]) == 2 for i, data in enumerate(data_splits[name]): - number_expected_columns = 13 + number_expected_columns = 14 assert data.shape[1] == ( number_expected_columns ), f"{name = } - {i = }: {data.shape = } - {data.columns = }" @@ -195,7 +235,7 @@ def test_preprocessed_data_categorical(data_splits): assert len(data_splits[name]) == 3 for i, data in enumerate(data_splits[name]): - number_expected_columns = 13 + number_expected_columns = 14 assert data.shape[1] == ( number_expected_columns ), f"{name = } - {i = }: {data.shape = } - {data.columns = }" @@ -268,9 +308,9 @@ def test_preprocessed_data_exact(run_preprocessing): pt_output = load_pt_outputs(pt_out_path) assert np.all( - parquet_output.to_numpy()[:, [0, 1, 2, 4, 5, 6, 7, 8, 9]] - == pt_output.to_numpy()[:, [0, 1, 2, 4, 5, 6, 7, 8, 9]].astype(int) - ), f"{np.sum(parquet_output.to_numpy()[:,[0,1,2,4,5,6,7,8,9]] == pt_output.to_numpy()[:,[0,1,2,4,5,6,7,8,9]].astype(int)) = }" + parquet_output.to_numpy()[:, [0, 1, 2, 3, 5, 6, 7, 8, 9]] + == pt_output.to_numpy()[:, [0, 1, 2, 3, 5, 6, 7, 8, 9]].astype(int) + ), f"{np.sum(parquet_output.to_numpy()[:,[0,1,2,3,5,6,7,8,9]] == pt_output.to_numpy()[:,[0,1,2,3,5,6,7,8,9]].astype(int)) = }" assert np.all( parquet_output["sequenceId"].to_numpy() == np.repeat(np.arange(10), 9) @@ -381,7 +421,13 @@ def test_preprocessing_from_precomputed_stats( ].to_numpy() ) - metadata_cols = ["sequenceId", "subsequenceId", "startItemPosition", "inputCol"] + metadata_cols = [ + "sequenceId", + "subsequenceId", + "startItemPosition", + "leftPadLength", + "inputCol", + ] assert ( np.mean( diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index a47bbfd4..e32fe430 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -92,6 +92,70 @@ def test_iteration_yields_correct_batches(mock_config, dataset_path): assert tgt_batch["item"].shape == (5, 2) +def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): + data_dir = tmp_path / "parquet_masks" + data_dir.mkdir() + + schema = { + "sequenceId": pl.Int64, + "subsequenceId": pl.Int64, + "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, + "inputCol": pl.String, + "2": pl.Float64, + "1": pl.Float64, + "0": pl.Float64, + } + rows = [ + (0, 0, 0, 0, "item", 0.0, 1.0, 2.0), + (1, 0, 0, 1, "item", 0.0, 0.0, 2.0), + (2, 0, 0, 2, "item", 0.0, 0.0, 2.0), + (3, 0, 0, 3, "item", 0.0, 0.0, 2.0), + (4, 0, 0, 0, "item", 0.0, 1.0, 2.0), + ] + pl.DataFrame(rows, schema=schema, orient="row").write_parquet( + data_dir / "file.parquet" + ) + with open(data_dir / "metadata.json", "w") as f: + json.dump( + { + "total_samples": 5, + "batch_files": [{"path": "file.parquet", "samples": 5}], + }, + f, + ) + + dataset = SequifierDatasetFromFolderParquetLazy( + str(data_dir), mock_config, shuffle=False + ) + seq_batch, tgt_batch, _, _, _ = next(iter(dataset)) + + assert torch.equal( + seq_batch["_attention_valid_mask"], + torch.tensor( + [ + [True, True], + [False, True], + [False, False], + [False, False], + [True, True], + ] + ), + ) + assert torch.equal( + tgt_batch["_target_valid_mask"], + torch.tensor( + [ + [True, True], + [True, True], + [False, True], + [False, False], + [True, True], + ] + ), + ) + + @patch("torch.distributed.is_initialized", return_value=True) @patch("torch.distributed.get_rank", return_value=0) @patch("torch.distributed.get_world_size", return_value=2) diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 29cd1af6..733b3301 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -108,6 +108,55 @@ def test_iteration_yields_correct_batches(mock_config, dataset_path, mock_torch_ assert tgt_dict["tgt1"].shape == (5, 5) +def test_iteration_attaches_explicit_padding_masks(mock_config, dataset_path): + with patch("torch.load") as mock_load: + + def side_effect(path, map_location, weights_only): + dummy_seq = { + "col1": torch.ones((10, 6)), + "tgt1": torch.ones((10, 6)), + } + left_pad_lengths = torch.tensor([0, 1, 2, 3, 4, 5, 0, 0, 0, 0]) + return ( + dummy_seq, + torch.arange(10), + torch.zeros(10, dtype=torch.int64), + torch.zeros(10, dtype=torch.int64), + left_pad_lengths, + ) + + mock_load.side_effect = side_effect + dataset = SequifierDatasetFromFolderPtLazy( + dataset_path, mock_config, shuffle=False + ) + seq_dict, tgt_dict, _, _, _ = next(iter(dataset)) + + assert torch.equal( + seq_dict["_attention_valid_mask"], + torch.tensor( + [ + [True, True, True, True, True], + [False, True, True, True, True], + [False, False, True, True, True], + [False, False, False, True, True], + [False, False, False, False, True], + ] + ), + ) + assert torch.equal( + tgt_dict["_target_valid_mask"], + torch.tensor( + [ + [True, True, True, True, True], + [True, True, True, True, True], + [False, True, True, True, True], + [False, False, True, True, True], + [False, False, False, True, True], + ] + ), + ) + + @patch("torch.distributed.is_initialized", return_value=True) @patch("torch.distributed.get_world_size", return_value=2) @patch("torch.distributed.get_rank", return_value=0) diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index cae5c87f..bd06c425 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -1,7 +1,14 @@ +from types import SimpleNamespace + import polars as pl import torch -from sequifier.helpers import construct_index_maps, numpy_to_pytorch +from sequifier.helpers import ( + apply_bert_masking, + build_valid_mask, + construct_index_maps, + numpy_to_pytorch, +) # ========================================== # 1. Test Index Map Construction @@ -132,3 +139,110 @@ def test_numpy_to_pytorch_dtypes(): target_offset=0, ) assert tensors_float["float_col"].dtype == torch.float32 + + +def test_build_valid_mask_from_left_pad_lengths(): + left_pad_lengths = torch.tensor([0, 2, 5], dtype=torch.int64) + + input_mask = build_valid_mask( + left_pad_lengths, full_length=6, offset=1, seq_length=5 + ) + target_mask = build_valid_mask( + left_pad_lengths, full_length=6, offset=0, seq_length=5 + ) + + assert torch.equal( + input_mask, + torch.tensor( + [ + [True, True, True, True, True], + [False, False, True, True, True], + [False, False, False, False, False], + ] + ), + ) + assert torch.equal( + target_mask, + torch.tensor( + [ + [True, True, True, True, True], + [False, True, True, True, True], + [False, False, False, False, True], + ] + ), + ) + + +def test_numpy_to_pytorch_includes_explicit_padding_masks(): + data = pl.DataFrame( + { + "sequenceId": [1, 2], + "subsequenceId": [0, 0], + "startItemPosition": [0, 0], + "leftPadLength": [0, 2], + "inputCol": ["A", "A"], + "3": [0.0, 0.0], + "2": [0.0, 0.0], + "1": [1.0, 1.0], + "0": [2.0, 2.0], + } + ) + + tensors = numpy_to_pytorch( + data, + {"A": torch.float32}, + ["A"], + seq_length=3, + data_offset=1, + target_offset=0, + ) + + assert torch.equal( + tensors["_attention_valid_mask"], + torch.tensor([[True, True, True], [False, False, True]]), + ) + assert torch.equal( + tensors["_target_valid_mask"], + torch.tensor([[True, True, True], [False, True, True]]), + ) + + +class _OnesSpanMasking: + def sample(self, shape, device): + return torch.ones(shape, dtype=torch.long, device=device) + + +def test_apply_bert_masking_uses_explicit_valid_mask_for_zero_values(): + config = SimpleNamespace( + categorical_columns=[], + real_columns=["real_col"], + n_classes={}, + seq_length=4, + training_spec=SimpleNamespace( + batch_size=1, + bert_spec=SimpleNamespace( + masking_probability=1.0, + span_masking=_OnesSpanMasking(), + replacement_distribution=SimpleNamespace( + masked=1.0, + random=0.0, + identical=0.0, + ), + ), + ), + ) + data_batch = { + "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), + "_attention_valid_mask": torch.tensor([[False, True, True, True]]), + } + targets_batch = { + "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), + "_target_valid_mask": torch.tensor([[False, True, True, True]]), + } + + _, masked_targets = apply_bert_masking(data_batch, targets_batch, config) + + assert torch.equal( + masked_targets["_bert_mask"], + torch.tensor([[False, True, True, True]]), + ) diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 359919df..95b7e54c 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -1,13 +1,16 @@ import numpy as np import polars as pl import pytest +import torch from sequifier.preprocess import ( _get_column_statistics, create_id_map, + extract_sequences, extract_subsequences, get_batch_limits, get_combined_statistics, + process_and_write_data_pt, ) # ========================================== @@ -25,7 +28,7 @@ def test_extract_subsequences_basic(): # Expected behavior: Window size is seq_length + 1 (history + target) # Windows: [10,11,12,13], [11,12,13,14], [12,13,14,15] - result = extract_subsequences( + result, left_pad_lengths = extract_subsequences( input_data, seq_length, stride, columns, subsequence_start_mode="distribute" ) @@ -43,7 +46,7 @@ def test_extract_subsequences_padding(): # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding - result = extract_subsequences( + result, left_pad_lengths = extract_subsequences( input_data, seq_length, stride, columns, subsequence_start_mode="distribute" ) @@ -51,6 +54,85 @@ def test_extract_subsequences_padding(): assert result["col1"][0] == [0, 0, 0, 1, 2] +def test_extract_subsequences_returns_left_pad_lengths_when_requested(): + input_data = {"col1": [0.0, 1.5]} + result, left_pad_lengths = extract_subsequences( + input_data, + seq_length=4, + stride_for_split=1, + columns=["col1"], + subsequence_start_mode="distribute", + ) + + assert result["col1"][0] == [0, 0, 0, 0.0, 1.5] + assert left_pad_lengths == [3] + + +def test_extract_sequences_persists_left_pad_length_metadata(): + schema = { + "sequenceId": pl.Int64, + "subsequenceId": pl.Int64, + "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, + "inputCol": pl.String, + "4": pl.Float64, + "3": pl.Float64, + "2": pl.Float64, + "1": pl.Float64, + "0": pl.Float64, + } + data = pl.DataFrame( + { + "sequenceId": [10, 10], + "itemPosition": [0, 1], + "col1": [0.0, 1.5], + } + ) + + sequences = extract_sequences( + data, + schema, + seq_length=4, + stride_for_split=1, + columns=["col1"], + subsequence_start_mode="distribute", + ) + + assert sequences.get_column("leftPadLength").to_list() == [3] + + +def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): + data = pl.DataFrame( + { + "sequenceId": [1, 2], + "subsequenceId": [0, 0], + "startItemPosition": [0, 0], + "leftPadLength": [0, 2], + "inputCol": ["col1", "col1"], + "3": [1.0, 0.0], + "2": [2.0, 0.0], + "1": [3.0, 1.0], + "0": [4.0, 2.0], + } + ) + out_path = tmp_path / "batch.pt" + + process_and_write_data_pt( + data, + seq_length=3, + path=str(out_path), + column_types={"col1": "Float64"}, + ) + + sequences, _, _, _, left_pad_lengths = torch.load(out_path, weights_only=False) + + assert torch.equal(left_pad_lengths, torch.tensor([0, 2])) + assert torch.equal( + sequences["col1"], + torch.tensor([[1.0, 2.0, 3.0, 4.0], [0.0, 0.0, 1.0, 2.0]]), + ) + + @pytest.mark.parametrize("mode", ["distribute", "exact"]) def test_extract_subsequences_modes(mode): """Tests logic for 'distribute' vs 'exact' modes.""" @@ -64,7 +146,9 @@ def test_extract_subsequences_modes(mode): if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage - result = extract_subsequences(input_data, seq_length, stride, columns, mode) + result, left_pad_lengths = extract_subsequences( + input_data, seq_length, stride, columns, mode + ) assert len(result["col1"]) > 0 elif mode == "exact": @@ -78,7 +162,9 @@ def test_extract_subsequences_modes(mode): # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} - result = extract_subsequences(input_data_exact, seq_length, 4, columns, mode) + result, left_pad_lengths = extract_subsequences( + input_data_exact, seq_length, 4, columns, mode + ) assert len(result["col1"]) > 0 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index abae3f67..0b0bdd0b 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -202,6 +202,49 @@ def test_calculate_loss(model, model_config): assert "real_col" in component_losses +def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): + model = TransformerModel.__new__(TransformerModel) + model.target_column_types = {"real_col": "real"} + model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} + model.loss_weights = None + + outputs = { + "real_col": torch.tensor( + [ + [[1.0]], + [[2.0]], + [[1.0]], + ] + ) + } + targets = { + "real_col": torch.tensor([[0.0, 0.0, 2.0]]), + "_target_valid_mask": torch.tensor([[True, True, True]]), + } + + total_loss, component_losses = TransformerModel._calculate_loss( + model, outputs, targets + ) + + assert torch.isclose(total_loss, torch.tensor(2.0)) + assert torch.isclose(component_losses["real_col"], torch.tensor(2.0)) + + +def test_infer_attention_valid_mask_prefers_explicit_mask_for_real_zero_inputs(): + model = TransformerModel.__new__(TransformerModel) + model.categorical_columns = [] + model.input_columns = ["real_col"] + + src = { + "real_col": torch.tensor([[0.0, 0.0, 1.0]]), + "_attention_valid_mask": torch.tensor([[True, True, True]]), + } + + mask = TransformerModel._infer_attention_valid_mask(model, src) + + assert torch.equal(mask, torch.tensor([[True, True, True]])) + + def test_padding_keys_are_masked(bert_model): seq_len = bert_model.seq_length From 9624e8c58f4045ecc526f9d84bd8a95a10a34488 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 5 Jun 2026 19:37:57 +0200 Subject: [PATCH 10/81] Move to metadata dict --- src/sequifier/helpers.py | 67 +++---- src/sequifier/infer.py | 120 +++++++++++-- .../io/sequifier_dataset_from_file.py | 31 ++-- .../sequifier_dataset_from_folder_parquet.py | 17 +- ...uifier_dataset_from_folder_parquet_lazy.py | 36 +++- .../io/sequifier_dataset_from_folder_pt.py | 17 +- .../sequifier_dataset_from_folder_pt_lazy.py | 36 +++- src/sequifier/train.py | 164 +++++++++++------- ...uifier_dataset_from_folder_parquet_lazy.py | 6 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 6 +- tests/unit/test_helpers.py | 25 +-- tests/unit/test_train.py | 12 +- 12 files changed, 367 insertions(+), 170 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 5fa7340b..af839d0e 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -257,7 +257,7 @@ def numpy_to_pytorch( seq_length: int, data_offset: int, target_offset: int, -) -> dict[str, Tensor]: +) -> tuple[dict[str, Tensor], dict[str, Tensor]]: """Converts a long-format Polars DataFrame to a dict of sequence tensors. This function assumes the input DataFrame `data` is in a long format @@ -286,9 +286,11 @@ def numpy_to_pytorch( column names for time steps (e.g., "0" to "L"). Returns: - A dictionary mapping feature names to their corresponding PyTorch - tensors. Target tensors are stored with a `_target` suffix - (e.g., `{'price': , 'price_target': }`). + A tuple of: + - a dictionary mapping feature names to their corresponding PyTorch + tensors. Target tensors are stored with a `_target` suffix + (e.g., `{'price': , 'price_target': }`). + - a metadata dictionary containing any explicit masks. """ input_seq_cols = [ str(c) for c in range(seq_length - 1 + data_offset, (-1 + data_offset), -1) @@ -322,15 +324,13 @@ def numpy_to_pytorch( left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) if left_pad_lengths is not None: - full_length = seq_length + 1 - unified_tensors["_attention_valid_mask"] = build_valid_mask( - left_pad_lengths, full_length, data_offset, seq_length - ) - unified_tensors["_target_valid_mask"] = build_valid_mask( - left_pad_lengths, full_length, target_offset, seq_length + metadata = generate_padding_masks( + left_pad_lengths, seq_length, data_offset, target_offset ) + else: + metadata = {} - return unified_tensors + return unified_tensors, metadata @beartype @@ -369,22 +369,22 @@ def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Optional[ @beartype -def attach_padding_masks( - data_batch: dict[str, Tensor], - targets_batch: dict[str, Tensor], +def generate_padding_masks( left_pad_lengths: Tensor, seq_length: int, data_offset: int, target_offset: int, -) -> None: - """Attaches explicit attention and target masks to batch dictionaries.""" +) -> dict[str, Tensor]: + """Generates explicit attention and target masks as a metadata dictionary.""" full_length = seq_length + 1 - data_batch["_attention_valid_mask"] = build_valid_mask( - left_pad_lengths, full_length, data_offset, seq_length - ) - targets_batch["_target_valid_mask"] = build_valid_mask( - left_pad_lengths, full_length, target_offset, seq_length - ) + return { + "attention_valid_mask": build_valid_mask( + left_pad_lengths, full_length, data_offset, seq_length + ), + "target_valid_mask": build_valid_mask( + left_pad_lengths, full_length, target_offset, seq_length + ), + } @beartype @@ -629,18 +629,24 @@ def infer_valid_mask_from_data(data_batch: Dict[str, torch.Tensor], config: Any) def apply_bert_masking( data_batch: Dict[str, torch.Tensor], targets_batch: Dict[str, torch.Tensor], + metadata_batch: Optional[Dict[str, torch.Tensor]], config: Any, # TrainConfig -) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: +) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: """ Applies BERT-style span corruption to the input data using custom distributions. - Explicitly passes the boolean prediction mask via the targets dictionary. + Explicitly passes the boolean prediction mask via the metadata dictionary. """ data_batch = {k: tensor.clone() for k, tensor in data_batch.items()} targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} + metadata_batch = ( + {k: tensor.clone().detach() for k, tensor in metadata_batch.items()} + if metadata_batch + else {} + ) # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) - if "_attention_valid_mask" in data_batch: - valid_mask = data_batch["_attention_valid_mask"].bool() + if "attention_valid_mask" in metadata_batch: + valid_mask = metadata_batch["attention_valid_mask"].bool() else: valid_mask = infer_valid_mask_from_data(data_batch, config) @@ -744,9 +750,8 @@ def apply_bert_masking( tensor[mask_token_mask] = mask_val tensor[random_token_mask] = random_noise[random_token_mask] - # 6. Append the explicit prediction mask - targets_batch["_bert_mask"] = bert_mask - - data_batch["_attention_valid_mask"] = valid_mask.detach() + # 6. Append explicit prediction and attention masks to metadata. + metadata_batch["bert_mask"] = bert_mask + metadata_batch["attention_valid_mask"] = valid_mask.detach() - return data_batch, targets_batch + return data_batch, targets_batch, metadata_batch diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 5b625952..1777cc4a 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -17,6 +17,7 @@ PANDAS_TO_TORCH_TYPES, configure_determinism, construct_index_maps, + generate_padding_masks, normalize_path, numpy_to_pytorch, subset_to_input_columns, @@ -374,9 +375,20 @@ def infer_embedding( sequence_ids_tensor, subsequence_ids_tensor, start_positions_tensor, - _, + left_pad_lengths_tensor, ) = unpack_preprocessed_pt_tuple(data) - embeddings = get_embeddings_pt(config, inferer, sequences_dict) + metadata = {} + if left_pad_lengths_tensor is not None: + target_offset = 0 if config.training_objective == "causal" else 1 + metadata = generate_padding_masks( + left_pad_lengths_tensor, + config.seq_length, + data_offset=1, + target_offset=target_offset, + ) + embeddings = get_embeddings_pt( + config, inferer, sequences_dict, metadata=metadata + ) sequence_ids_for_preds = sequence_ids_tensor.numpy() subsequence_ids_for_preds = subsequence_ids_tensor.numpy() @@ -587,7 +599,7 @@ def infer_generative( sequence_ids_tensor, _, start_positions_tensor, - _, + left_pad_lengths_tensor, ) = unpack_preprocessed_pt_tuple(data) total_steps = ( 1 @@ -601,8 +613,18 @@ def infer_generative( if key in config.input_columns } + metadata = {} + if left_pad_lengths_tensor is not None: + target_offset = 0 if config.training_objective == "causal" else 1 + metadata = generate_padding_masks( + left_pad_lengths_tensor, + config.seq_length, + data_offset=1, + target_offset=target_offset, + ) + probs, preds = get_probs_preds_from_dict( - config, inferer, sequences_dict, total_steps + config, inferer, sequences_dict, total_steps, metadata=metadata ) prediction_length = inferer.prediction_length # Get prediction_length @@ -740,6 +762,7 @@ def get_embeddings_pt( config: Any, inferer: "Inferer", data: dict[str, torch.Tensor], + metadata: Optional[dict[str, torch.Tensor]] = None, ) -> np.ndarray: """Generates embeddings from a batch of PyTorch tensor data. @@ -764,7 +787,10 @@ def get_embeddings_pt( for key, val in data.items() if key in config.input_columns } - embeddings = inferer.infer_embedding(X) + metadata_np = ( + {key: val.numpy() for key, val in metadata.items()} if metadata else None + ) + embeddings = inferer.infer_embedding(X, metadata=metadata_np) return embeddings @@ -774,6 +800,7 @@ def get_probs_preds_from_dict( inferer: "Inferer", data: dict[str, torch.Tensor], total_steps: int = 1, + metadata: Optional[dict[str, torch.Tensor]] = None, ) -> tuple[Optional[dict[str, np.ndarray]], dict[str, np.ndarray]]: """Generates predictions from PyTorch tensor data, supporting autoregression. @@ -816,18 +843,26 @@ def get_probs_preds_from_dict( for key, tensor in data.items() if key in config.input_columns } + metadata_np = ( + {key: tensor.numpy() for key, tensor in metadata.items()} if metadata else None + ) all_probs_list = {col: [] for col in target_cols} all_preds_list = {col: [] for col in target_cols} # 3. Autoregressive loop + metadata_for_step = metadata_np for i in range(total_steps): if config.output_probabilities: - probs_for_step = inferer.infer_generative(X, return_probs=True) + probs_for_step = inferer.infer_generative( + X, return_probs=True, metadata=metadata_for_step + ) preds_for_step = inferer.infer_generative(None, probs_for_step) for col in target_cols: all_probs_list[col].append(probs_for_step[col]) else: - preds_for_step = inferer.infer_generative(X, return_probs=False) + preds_for_step = inferer.infer_generative( + X, return_probs=False, metadata=metadata_for_step + ) for col in target_cols: all_preds_list[col].append(preds_for_step[col]) @@ -844,6 +879,17 @@ def get_probs_preds_from_dict( X_next[col] = np.concatenate([shifted_input, new_value], axis=1) X = X_next + if ( + metadata_for_step is not None + and "attention_valid_mask" in metadata_for_step + ): + shifted_mask = metadata_for_step["attention_valid_mask"][:, 1:] + appended_valid = np.ones( + (shifted_mask.shape[0], 1), dtype=shifted_mask.dtype + ) + metadata_for_step["attention_valid_mask"] = np.concatenate( + [shifted_mask, appended_valid], axis=1 + ) final_preds = { col: np.array(preds_list).T.reshape(-1, 1).flatten() @@ -888,13 +934,18 @@ def get_embeddings( """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) target_offset = 0 if config.training_objective == "causal" else 1 - X = numpy_to_pytorch( + X, metadata = numpy_to_pytorch( data, column_types, all_columns, config.seq_length, 1, target_offset ) X = {col: X_col.numpy() for col, X_col in X.items()} + metadata_np = ( + {col: metadata_col.numpy() for col, metadata_col in metadata.items()} + if metadata + else None + ) del data - embeddings = inferer.infer_embedding(X) + embeddings = inferer.infer_embedding(X, metadata=metadata_np) return embeddings @@ -932,18 +983,23 @@ def get_probs_preds_from_df( target_offset = 0 if config.training_objective == "causal" else 1 - X = numpy_to_pytorch( + X, metadata = numpy_to_pytorch( data, column_types, all_columns, config.seq_length, 1, target_offset ) X = {col: X_col.numpy() for col, X_col in X.items()} + metadata_np = ( + {col: metadata_col.numpy() for col, metadata_col in metadata.items()} + if metadata + else None + ) del data if config.output_probabilities: - probs = inferer.infer_generative(X, return_probs=True) + probs = inferer.infer_generative(X, return_probs=True, metadata=metadata_np) preds = inferer.infer_generative(None, probs) else: probs = None - preds = inferer.infer_generative(X) + preds = inferer.infer_generative(X, metadata=metadata_np) return (probs, preds) @@ -1051,7 +1107,7 @@ def get_probs_preds_autoregression( + seq_length ) - head_data = numpy_to_pytorch( + head_data, metadata = numpy_to_pytorch( head_data_df, column_types, config.input_columns, @@ -1062,7 +1118,11 @@ def get_probs_preds_autoregression( # Run the autoregressive PyTorch inference probs, preds = get_probs_preds_from_dict( - config, inferer, head_data, total_steps=config.autoregression_total_steps + config, + inferer, + head_data, + total_steps=config.autoregression_total_steps, + metadata=metadata, ) # 4. Generate the final output arrays using the perfectly aligned bases @@ -1223,6 +1283,7 @@ def invert_normalization( def infer_embedding( self, x: dict[str, np.ndarray], + metadata: Optional[dict[str, np.ndarray]] = None, ) -> np.ndarray: """Performs inference with an embedding model. @@ -1239,7 +1300,7 @@ def infer_embedding( """ assert x is not None size = x[list(x.keys())[0]].shape[0] - embedding = self.adjust_and_infer_embedding(x, size) + embedding = self.adjust_and_infer_embedding(x, size, metadata=metadata) return embedding @@ -1249,6 +1310,7 @@ def infer_generative( x: Optional[dict[str, np.ndarray]], probs: Optional[dict[str, np.ndarray]] = None, return_probs: bool = False, + metadata: Optional[dict[str, np.ndarray]] = None, ) -> dict[str, np.ndarray]: """Performs generative inference, returning probabilities or predictions. @@ -1294,7 +1356,7 @@ def infer_generative( f"Not all keys in x are in probs - {x.keys() = } != {probs.keys() = }. Full inference is executed." ) - outs = self.adjust_and_infer_generative(x, size) + outs = self.adjust_and_infer_generative(x, size, metadata=metadata) for target_column, target_outs in outs.items(): if np.any(target_outs == np.inf): @@ -1332,7 +1394,12 @@ def infer_generative( return outs @beartype - def adjust_and_infer_embedding(self, x: dict[str, np.ndarray], size: int): + def adjust_and_infer_embedding( + self, + x: dict[str, np.ndarray], + size: int, + metadata: Optional[dict[str, np.ndarray]] = None, + ): """Handles batching and backend-specific calls for embedding inference. This function prepares the input data `x` into batches using @@ -1356,19 +1423,30 @@ def adjust_and_infer_embedding(self, x: dict[str, np.ndarray], size: int): embeddings = np.concatenate(inference_batch_embeddings, axis=0)[:size] elif self.inference_model_type == "pt": x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=False) + metadata_adjusted = ( + self.prepare_inference_batches(metadata, pad_to_batch_size=False) + if metadata + else None + ) embeddings = infer_with_embedding_model( self.inference_model, x_adjusted, self.device, size, self.target_columns, + metadata=metadata_adjusted, ) else: assert False, "not possible" return embeddings @beartype - def adjust_and_infer_generative(self, x: dict[str, np.ndarray], size: int): + def adjust_and_infer_generative( + self, + x: dict[str, np.ndarray], + size: int, + metadata: Optional[dict[str, np.ndarray]] = None, + ): """Handles batching and backend-specific calls for generative inference. This function prepares the input data `x` into batches using @@ -1401,12 +1479,18 @@ def adjust_and_infer_generative(self, x: dict[str, np.ndarray], size: int): elif self.inference_model_type == "pt": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=False) + metadata_adjusted = ( + self.prepare_inference_batches(metadata, pad_to_batch_size=False) + if metadata + else None + ) outs = infer_with_generative_model( self.inference_model, x_adjusted, self.device, size * self.prediction_length, self.target_columns, + metadata=metadata_adjusted, ) else: assert False diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index d12d672e..ffc7d2aa 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -43,7 +43,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): target_offset = 0 if config.training_spec.training_objective == "causal" else 1 # self.all_tensors now holds both inputs and targets - all_tensors = numpy_to_pytorch( + all_tensors, metadata_tensors = numpy_to_pytorch( data=data_df, column_types=column_types, all_columns=all_columns, @@ -61,14 +61,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.target_tensors = { key: all_tensors[f"{key}_target"] for key in self.config.target_columns } - if "_attention_valid_mask" in all_tensors: - self.sequence_tensors["_attention_valid_mask"] = all_tensors[ - "_attention_valid_mask" - ] - if "_target_valid_mask" in all_tensors: - self.target_tensors["_target_valid_mask"] = all_tensors[ - "_target_valid_mask" - ] + self.metadata_tensors = metadata_tensors del all_tensors if config.training_spec.device.startswith("cuda"): @@ -76,6 +69,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.sequence_tensors[key] = self.sequence_tensors[key].pin_memory() for key in self.target_tensors: self.target_tensors[key] = self.target_tensors[key].pin_memory() + for key in self.metadata_tensors: + self.metadata_tensors[key] = self.metadata_tensors[key].pin_memory() logger.info(f"[INFO] Dataset loaded with {self.n_samples} samples.") @@ -90,7 +85,13 @@ def __len__(self) -> int: def __iter__( self, ) -> Iterator[ - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None] + Tuple[ + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + None, + None, + ] ]: """Yields batches of data. @@ -98,13 +99,13 @@ def __iter__( rank and worker ID. Yields: - Iterator[Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None]]: + Iterator[Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]]: An iterator where each item is a tuple containing: - data_batch (dict): Dictionary of feature tensors for the batch. - targets_batch (dict): Dictionary of target tensors for the batch. + - metadata_batch (dict): Dictionary of metadata tensors for the batch. - None: Placeholder for sequence_id (not used in this dataset type). - None: Placeholder for subsequence_id (not used in this dataset type). - - None: Placeholder for start_position (not used in this dataset type). """ worker_info = torch.utils.data.get_worker_info() world_size = dist.get_world_size() if dist.is_initialized() else 1 @@ -144,5 +145,9 @@ def __iter__( key: tensor[batch_indices] for key, tensor in self.target_tensors.items() } + metadata_batch = { + key: tensor[batch_indices] + for key, tensor in self.metadata_tensors.items() + } - yield data_batch, targets_batch, None, None, None + yield data_batch, targets_batch, metadata_batch, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 34d806a9..99e58efc 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -12,7 +12,7 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, - attach_padding_masks, + generate_padding_masks, get_left_pad_lengths_from_preprocessed_data, normalize_path, ) @@ -183,7 +183,13 @@ def __len__(self) -> int: def __iter__( self, ) -> Iterator[ - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None] + Tuple[ + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + None, + None, + ] ]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -228,14 +234,13 @@ def __iter__( for key, tensor in self.targets.items() } + metadata_batch = {} if self.left_pad_lengths is not None: - attach_padding_masks( - data_batch, - targets_batch, + metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, self.config.training_spec.data_offset, self.config.training_spec.target_offset, ) - yield data_batch, targets_batch, None, None, None + yield data_batch, targets_batch, metadata_batch, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index d1b368de..f4120cc3 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -13,7 +13,7 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, - attach_padding_masks, + generate_padding_masks, get_left_pad_lengths_from_preprocessed_data, normalize_path, ) @@ -34,9 +34,9 @@ class SequifierDatasetFromFolderParquetLazy(IterableDataset): sample indices per epoch. Defaults to True. Yields: - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None]: + Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]: A batch tuple containing sequence dictionaries, target dictionaries, - and three `None` placeholders (for API compatibility). + metadata dictionaries, and two `None` placeholders (for API compatibility). Raises: FileNotFoundError: If `metadata.json` is missing. @@ -156,7 +156,13 @@ def __len__(self) -> int: def __iter__( self, ) -> Iterator[ - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None] + Tuple[ + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + None, + None, + ] ]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -234,6 +240,7 @@ def __iter__( # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} tgt_buffer: Dict[str, torch.Tensor] = {} + meta_buffer: Dict[str, torch.Tensor] = {} buffer_len = 0 for f_id in extended_files: @@ -315,10 +322,9 @@ def __iter__( f"Missing required column {col_name} in Parquet partition" ) + new_meta = {} if left_pad_lengths is not None: - attach_padding_masks( - new_seq, - new_tgt, + new_meta = generate_padding_masks( left_pad_lengths[worker_indices], train_seq_len, self.config.training_spec.data_offset, @@ -331,6 +337,7 @@ def __iter__( if buffer_len == 0: seq_buffer = new_seq tgt_buffer = new_tgt + meta_buffer = new_meta else: seq_buffer = { k: torch.cat([seq_buffer[k], new_seq[k]], dim=0) for k in seq_buffer @@ -338,6 +345,14 @@ def __iter__( tgt_buffer = { k: torch.cat([tgt_buffer[k], new_tgt[k]], dim=0) for k in tgt_buffer } + if set(meta_buffer) != set(new_meta): + raise RuntimeError( + "Inconsistent leftPadLength metadata across Parquet chunks." + ) + meta_buffer = { + k: torch.cat([meta_buffer[k], new_meta[k]], dim=0) + for k in meta_buffer + } buffer_len += num_new_samples @@ -349,13 +364,15 @@ def __iter__( # Slice out a perfect batch from the top of the buffer batch_seq = {k: v[: self.batch_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} + batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, None, None, None + yield batch_seq, batch_tgt, batch_meta, None, None yielded_samples += self.batch_size # Keep the remainder in the buffer for the next loop/file seq_buffer = {k: v[self.batch_size :] for k, v in seq_buffer.items()} tgt_buffer = {k: v[self.batch_size :] for k, v in tgt_buffer.items()} + meta_buffer = {k: v[self.batch_size :] for k, v in meta_buffer.items()} buffer_len -= self.batch_size # 6. Yield the final partial batch from the buffer if any remains @@ -365,5 +382,6 @@ def __iter__( batch_seq = {k: v[:final_yield_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[:final_yield_size] for k, v in tgt_buffer.items()} + batch_meta = {k: v[:final_yield_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, None, None, None + yield batch_seq, batch_tgt, batch_meta, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index eceda4b8..85a5d258 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -10,7 +10,7 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( - attach_padding_masks, + generate_padding_masks, normalize_path, unpack_preprocessed_pt_tuple, ) @@ -133,7 +133,13 @@ def __len__(self) -> int: def __iter__( self, ) -> Iterator[ - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None] + Tuple[ + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + None, + None, + ] ]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -193,14 +199,13 @@ def __iter__( if key in self.config.target_columns } + metadata_batch = {} if self.left_pad_lengths is not None: - attach_padding_masks( - data_batch, - targets_batch, + metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, data_offset, target_offset, ) - yield data_batch, targets_batch, None, None, None + yield data_batch, targets_batch, metadata_batch, None, None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index eaac2694..41d5f115 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -11,7 +11,7 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( - attach_padding_masks, + generate_padding_masks, normalize_path, unpack_preprocessed_pt_tuple, ) @@ -32,9 +32,9 @@ class SequifierDatasetFromFolderPtLazy(IterableDataset): sample indices per epoch. Defaults to True. Yields: - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None]: + Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]: A batch tuple containing sequence dictionaries, target dictionaries, - and three `None` placeholders (for API compatibility). + metadata dictionaries, and two `None` placeholders (for API compatibility). Raises: FileNotFoundError: If `metadata.json` is missing. @@ -149,7 +149,13 @@ def __len__(self) -> int: def __iter__( self, ) -> Iterator[ - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None, None] + Tuple[ + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + Dict[str, torch.Tensor], + None, + None, + ] ]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -210,6 +216,7 @@ def __iter__( # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} tgt_buffer: Dict[str, torch.Tensor] = {} + meta_buffer: Dict[str, torch.Tensor] = {} buffer_len = 0 for f_id in extended_files: @@ -279,10 +286,9 @@ def __iter__( if k in self.config.target_columns } + new_meta = {} if left_pad_lengths_batch is not None: - attach_padding_masks( - new_seq, - new_tgt, + new_meta = generate_padding_masks( left_pad_lengths_batch[worker_indices], train_seq_len, data_offset, @@ -296,6 +302,7 @@ def __iter__( if buffer_len == 0: seq_buffer = new_seq tgt_buffer = new_tgt + meta_buffer = new_meta else: seq_buffer = { k: torch.cat([seq_buffer[k], new_seq[k]], dim=0) for k in seq_buffer @@ -303,6 +310,14 @@ def __iter__( tgt_buffer = { k: torch.cat([tgt_buffer[k], new_tgt[k]], dim=0) for k in tgt_buffer } + if set(meta_buffer) != set(new_meta): + raise RuntimeError( + "Inconsistent leftPadLength metadata across PT chunks." + ) + meta_buffer = { + k: torch.cat([meta_buffer[k], new_meta[k]], dim=0) + for k in meta_buffer + } buffer_len += num_new_samples @@ -314,13 +329,15 @@ def __iter__( # Slice out a perfect batch from the top of the buffer batch_seq = {k: v[: self.batch_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} + batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, None, None, None + yield batch_seq, batch_tgt, batch_meta, None, None yielded_samples += self.batch_size # Keep the remainder in the buffer for the next loop/file seq_buffer = {k: v[self.batch_size :] for k, v in seq_buffer.items()} tgt_buffer = {k: v[self.batch_size :] for k, v in tgt_buffer.items()} + meta_buffer = {k: v[self.batch_size :] for k, v in meta_buffer.items()} buffer_len -= self.batch_size # 6. Yield the final partial batch from the buffer if any remains @@ -330,5 +347,6 @@ def __iter__( batch_seq = {k: v[:final_yield_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[:final_yield_size] for k, v in tgt_buffer.items()} + batch_meta = {k: v[:final_yield_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, None, None, None + yield batch_seq, batch_tgt, batch_meta, None, None diff --git a/src/sequifier/train.py b/src/sequifier/train.py index a38a96f1..badba5cf 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -52,9 +52,6 @@ torch._dynamo.config.suppress_errors = True -DATA_BATCH_METADATA_KEYS = {"_attention_valid_mask"} -TARGET_BATCH_METADATA_KEYS = {"_target_valid_mask", "_bert_mask"} - from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 from sequifier.helpers import ( # noqa: E402 @@ -522,7 +519,9 @@ def _copy_model(self): return model_copy @conditional_beartype - def forward(self, src: dict[str, Tensor]): + def forward( + self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + ): """Forward pass for the embedding model. Args: @@ -531,7 +530,7 @@ def forward(self, src: dict[str, Tensor]): Returns: The embedded output. """ - return self.transformer_model.forward_embed(src) + return self.transformer_model.forward_embed(src, metadata=metadata) class TransformerModel(nn.Module): @@ -978,15 +977,17 @@ def _recursive_concat(self, srcs: list[Tensor]): return self._recursive_concat(srcs_inner) @conditional_beartype - def _infer_attention_valid_mask(self, src: dict[str, Tensor]) -> Tensor: + def _infer_attention_valid_mask( + self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + ) -> Tensor: """ Returns a boolean mask of shape (batch_size, seq_length). True means valid/non-padding token. False means padding token. """ - if "_attention_valid_mask" in src: - return src["_attention_valid_mask"].bool() + if metadata is not None and "attention_valid_mask" in metadata: + return metadata["attention_valid_mask"].bool() # Prefer categorical columns because padding is unambiguously encoded as 0. for col in self.categorical_columns: @@ -1043,7 +1044,9 @@ def _zero_padding_positions(self, x: Tensor, valid_mask: Tensor) -> Tensor: return x * valid_mask[:, :, None].to(dtype=x.dtype) @conditional_beartype - def forward_inner(self, src: dict[str, Tensor]) -> Tensor: + def forward_inner( + self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + ) -> Tensor: """The inner forward pass of the model. This handles embedding lookup, positional encoding, and passing the @@ -1112,12 +1115,14 @@ def forward_inner(self, src: dict[str, Tensor]) -> Tensor: if self.joint_embedding_layer is not None: src2 = self.joint_embedding_layer(src2) - valid_mask = self._infer_attention_valid_mask(src).to(device=src2.device) + valid_mask = self._infer_attention_valid_mask(src, metadata).to( + device=src2.device + ) if valid_mask.shape != src2.shape[:2]: raise ValueError( f"Invalid attention mask shape: got {tuple(valid_mask.shape)}, " f"expected {tuple(src2.shape[:2])} = (batch_size, seq_length). " - "Check _attention_valid_mask / leftPadLength construction." + "Check attention_valid_mask / leftPadLength construction." ) src2 = self._zero_padding_positions(src2, valid_mask) @@ -1133,7 +1138,9 @@ def forward_inner(self, src: dict[str, Tensor]) -> Tensor: return src2.transpose(0, 1) @conditional_beartype - def forward_embed(self, src: dict[str, Tensor]) -> Tensor: + def forward_embed( + self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + ) -> Tensor: """Forward pass for the embedding model. This returns only the embedding from the *last* token in the sequence. @@ -1146,10 +1153,12 @@ def forward_embed(self, src: dict[str, Tensor]) -> Tensor: The embedding tensor for the last token (batch_size, dim_model). """ - return self.forward_inner(src)[-self.prediction_length :, :, :] + return self.forward_inner(src, metadata)[-self.prediction_length :, :, :] @conditional_beartype - def forward_train(self, src: dict[str, Tensor]) -> dict[str, Tensor]: + def forward_train( + self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + ) -> dict[str, Tensor]: """Forward pass for training. This runs the inner forward pass and then applies the appropriate @@ -1163,7 +1172,7 @@ def forward_train(self, src: dict[str, Tensor]) -> dict[str, Tensor]: A dictionary mapping target column names to their raw output (logit) tensors (seq_length, batch_size, n_classes/1). """ - output = self.forward_inner(src) + output = self.forward_inner(src, metadata) output = { target_column: self.decode(target_column, output) for target_column in self.target_columns @@ -1213,7 +1222,10 @@ def apply_softmax(self, target_column: str, output: Tensor) -> Tensor: @conditional_beartype def forward( - self, src: dict[str, Tensor], return_logits: Union[bool, Tensor] = False + self, + src: dict[str, Tensor], + metadata: Optional[dict[str, Tensor]] = None, + return_logits: Union[bool, Tensor] = False, ) -> dict[str, Tensor]: """The main forward pass of the model. @@ -1230,7 +1242,7 @@ def forward( output (LogSoftmax probabilities or real values) for the last token (batch_size, n_classes/1). """ - output = self.forward_train(src) + output = self.forward_train(src, metadata) if return_logits: return output return { @@ -1492,8 +1504,9 @@ def _train_epoch( Iterates through the training DataLoader, computes loss, performs backpropagation, and updates model parameters. The DataLoader is expected - to yield tuples of (sequences_dict, targets_dict, sequence_ids, subsequence_ids, start_positions). - The IDs and positions are currently unused in this training loop. + to yield tuples of + (sequences_dict, targets_dict, metadata_dict, sequence_ids, subsequence_ids). + The IDs are currently unused in this training loop. Args: train_loader: DataLoader for the training dataset. @@ -1511,20 +1524,26 @@ def _train_epoch( model_to_call.train() - for batch_count, (data, targets, _, _, _) in enumerate(train_loader): + for batch_count, (data, targets, metadata, _, _) in enumerate(train_loader): if batch_count >= start_batch: data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS + if k in self.input_columns } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS + if k in self.target_column_types + } + metadata = { + k: v.to(self.device, non_blocking=True) + for k, v in (metadata or {}).items() } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, targets, self.hparams) + data, targets, metadata = apply_bert_masking( + data, targets, metadata, self.hparams + ) # Only use standard torch.autocast if FSDP MixedPrecision is NOT handling it natively if ( @@ -1541,11 +1560,13 @@ def _train_epoch( with torch.autocast( device_type=self.device.split(":")[0], dtype=amp_dtype ): - output = model_to_call(data, True) - loss, losses = self._calculate_loss(output, targets) + output = model_to_call( + data, metadata=metadata, return_logits=True + ) + loss, losses = self._calculate_loss(output, targets, metadata) else: - output = model_to_call(data, True) - loss, losses = self._calculate_loss(output, targets) + output = model_to_call(data, metadata=metadata, return_logits=True) + loss, losses = self._calculate_loss(output, targets, metadata) self.scaler.scale(loss).backward() @@ -1672,7 +1693,10 @@ def _train_epoch( @beartype def _calculate_loss( - self, output: dict[str, Tensor], targets: dict[str, Tensor] + self, + output: dict[str, Tensor], + targets: dict[str, Tensor], + metadata: Optional[dict[str, Tensor]] = None, ) -> tuple[Tensor, dict[str, Tensor]]: """Calculates the loss for the given output and targets. @@ -1692,14 +1716,12 @@ def _calculate_loss( - A dictionary of individual (unweighted) loss Tensors for each target column. """ - target_names = [ - k for k in targets.keys() if k not in TARGET_BATCH_METADATA_KEYS - ] + target_names = [k for k in targets.keys() if k in self.target_column_types] if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") - if "_target_valid_mask" in targets: - seq_mask_2d = targets["_target_valid_mask"].bool() + if metadata is not None and "target_valid_mask" in metadata: + seq_mask_2d = metadata["target_valid_mask"].bool() else: mask_col = next( ( @@ -1716,8 +1738,8 @@ def _calculate_loss( else: seq_mask_2d = targets[mask_col] != 0 - if "_bert_mask" in targets: - seq_mask_2d = seq_mask_2d & targets["_bert_mask"].bool() + if metadata is not None and "bert_mask" in metadata: + seq_mask_2d = seq_mask_2d & metadata["bert_mask"].bool() mask = seq_mask_2d.T.contiguous().reshape(-1) @@ -1825,8 +1847,8 @@ def _evaluate( and aggregates results across all processes if in distributed mode. Also calculates a one-time baseline loss on the first call. The DataLoader is expected to yield tuples of - (sequences_dict, targets_dict, sequence_ids, subsequence_ids, start_positions). - The IDs and positions are currently unused during evaluation. + (sequences_dict, targets_dict, metadata_dict, sequence_ids, subsequence_ids). + The IDs are currently unused during evaluation. Args: valid_loader: DataLoader for the validation dataset. @@ -1849,20 +1871,26 @@ def _evaluate( model_to_call.eval() with torch.no_grad(): - for data, targets, _, _, _ in valid_loader: + for data, targets, metadata, _, _ in valid_loader: # Move data to the current process's assigned GPU data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS + if k in self.input_columns } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS + if k in self.target_column_types + } + metadata = { + k: v.to(self.device, non_blocking=True) + for k, v in (metadata or {}).items() } if self.hparams.training_spec.training_objective == "bert": - data, targets = apply_bert_masking(data, targets, self.hparams) + data, targets, metadata = apply_bert_masking( + data, targets, metadata, self.hparams + ) if ( self.hparams.training_spec.layer_autocast @@ -1878,18 +1906,20 @@ def _evaluate( with torch.autocast( device_type=self.device.split(":")[0], dtype=amp_dtype ): - output = model_to_call(data, True) - loss, losses = self._calculate_loss(output, targets) + output = model_to_call( + data, metadata=metadata, return_logits=True + ) + loss, losses = self._calculate_loss(output, targets, metadata) else: - output = model_to_call(data, True) - loss, losses = self._calculate_loss(output, targets) + output = model_to_call(data, metadata=metadata, return_logits=True) + loss, losses = self._calculate_loss(output, targets, metadata) total_loss_collect.append(loss.item()) for col, loss in losses.items(): total_losses_collect[col].append(loss.item()) # Free up GPU memory - del data, targets, loss, losses + del data, targets, metadata, loss, losses if self.device == "cuda": torch.cuda.empty_cache() @@ -1941,16 +1971,20 @@ def _evaluate( baseline_losses_local_collect = {col: [] for col in self.target_columns} # Iterate over the sharded validation loader - for data, targets, _, _, _ in valid_loader: + for data, targets, metadata, _, _ in valid_loader: data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() - if k in self.input_columns or k in DATA_BATCH_METADATA_KEYS + if k in self.input_columns } targets = { k: v.to(self.device, non_blocking=True) for k, v in targets.items() - if k in self.target_column_types or k in TARGET_BATCH_METADATA_KEYS + if k in self.target_column_types + } + metadata = { + k: v.to(self.device, non_blocking=True) + for k, v in (metadata or {}).items() } pseudo_output = {} @@ -1961,14 +1995,10 @@ def _evaluate( col, data[col].transpose(0, 1) ) targets_for_baseline[col] = targets[col] - if "_target_valid_mask" in targets: - targets_for_baseline["_target_valid_mask"] = targets[ - "_target_valid_mask" - ] if len(pseudo_output) > 0: loss, losses = self._calculate_loss( - pseudo_output, targets_for_baseline + pseudo_output, targets_for_baseline, metadata ) baseline_loss_local_collect.append(loss.item()) for col, loss_ in losses.items(): @@ -2478,6 +2508,7 @@ def infer_with_embedding_model( device: str, size: int, target_columns: list[str], + metadata: Optional[list[dict[str, np.ndarray]]] = None, ) -> np.ndarray: """Performs inference with an embedding model. @@ -2496,7 +2527,7 @@ def infer_with_embedding_model( categorical_cols = set(model.transformer_model.categorical_columns) with torch.no_grad(): - for x_sub in x: + for batch_idx, x_sub in enumerate(x): layer_types = ( model.transformer_model.hparams.training_spec.layer_type_dtypes or {} ) @@ -2508,8 +2539,16 @@ def infer_with_embedding_model( data_gpu[col] = torch.from_numpy(x_).to(device, dtype=torch.int64) else: data_gpu[col] = torch.from_numpy(x_).to(device, dtype=ref_dtype) + metadata_gpu = ( + { + col: torch.from_numpy(x_).to(device) + for col, x_ in metadata[batch_idx].items() + } + if metadata + else {} + ) - output_gpu = model.forward(data_gpu) + output_gpu = model.forward(data_gpu, metadata=metadata_gpu) output_cpu = output_gpu.cpu().detach().float().numpy() output_cpu = output_cpu.transpose(1, 0, 2).reshape( output_cpu.shape[0] * output_cpu.shape[1], output_cpu.shape[2] @@ -2529,6 +2568,7 @@ def infer_with_generative_model( device: str, size: int, target_columns: list[str], + metadata: Optional[list[dict[str, np.ndarray]]] = None, ) -> dict[str, np.ndarray]: """Performs inference with a generative model. @@ -2548,7 +2588,7 @@ def infer_with_generative_model( categorical_cols = set(model.categorical_columns) with torch.no_grad(): - for x_sub in x: + for batch_idx, x_sub in enumerate(x): layer_types = model.hparams.training_spec.layer_type_dtypes or {} dtype_str = layer_types.get("linear", "float32") ref_dtype = get_torch_dtype(dtype_str) @@ -2558,8 +2598,16 @@ def infer_with_generative_model( data_gpu[col] = torch.from_numpy(x_).to(device, dtype=torch.int64) else: data_gpu[col] = torch.from_numpy(x_).to(device, dtype=ref_dtype) + metadata_gpu = ( + { + col: torch.from_numpy(x_).to(device) + for col, x_ in metadata[batch_idx].items() + } + if metadata + else {} + ) - output_gpu = model.forward(data_gpu) + output_gpu = model.forward(data_gpu, metadata=metadata_gpu) output_cpu = {k: v.cpu().detach() for k, v in output_gpu.items()} outs0.append(output_cpu) if device == "cuda": diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index e32fe430..dff33ff3 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -128,10 +128,10 @@ def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): dataset = SequifierDatasetFromFolderParquetLazy( str(data_dir), mock_config, shuffle=False ) - seq_batch, tgt_batch, _, _, _ = next(iter(dataset)) + seq_batch, tgt_batch, metadata_batch, _, _ = next(iter(dataset)) assert torch.equal( - seq_batch["_attention_valid_mask"], + metadata_batch["attention_valid_mask"], torch.tensor( [ [True, True], @@ -143,7 +143,7 @@ def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): ), ) assert torch.equal( - tgt_batch["_target_valid_mask"], + metadata_batch["target_valid_mask"], torch.tensor( [ [True, True], diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 733b3301..f3194651 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -129,10 +129,10 @@ def side_effect(path, map_location, weights_only): dataset = SequifierDatasetFromFolderPtLazy( dataset_path, mock_config, shuffle=False ) - seq_dict, tgt_dict, _, _, _ = next(iter(dataset)) + seq_dict, tgt_dict, metadata_dict, _, _ = next(iter(dataset)) assert torch.equal( - seq_dict["_attention_valid_mask"], + metadata_dict["attention_valid_mask"], torch.tensor( [ [True, True, True, True, True], @@ -144,7 +144,7 @@ def side_effect(path, map_location, weights_only): ), ) assert torch.equal( - tgt_dict["_target_valid_mask"], + metadata_dict["target_valid_mask"], torch.tensor( [ [True, True, True, True, True], diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index bd06c425..f046e9e5 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -87,13 +87,14 @@ def test_numpy_to_pytorch_shapes_and_shifting(): all_columns = ["A"] seq_length = 3 - tensors = numpy_to_pytorch( + tensors, metadata = numpy_to_pytorch( data, column_types, all_columns, seq_length, data_offset=1, target_offset=0 ) # 1. Check Keys assert "A" in tensors assert "A_target" in tensors + assert metadata == {} # 2. Check Input Tensor (Cols 3, 2, 1) # Row 0: [10, 20, 30] @@ -118,7 +119,7 @@ def test_numpy_to_pytorch_dtypes(): # Case 1: Integer data_int = pl.DataFrame({"inputCol": ["int_col"], "1": [10], "0": [20]}) - tensors_int = numpy_to_pytorch( + tensors_int, _ = numpy_to_pytorch( data_int, {"int_col": torch.int64}, ["int_col"], @@ -130,7 +131,7 @@ def test_numpy_to_pytorch_dtypes(): # Case 2: Float data_float = pl.DataFrame({"inputCol": ["float_col"], "1": [10.5], "0": [20.5]}) - tensors_float = numpy_to_pytorch( + tensors_float, _ = numpy_to_pytorch( data_float, {"float_col": torch.float32}, ["float_col"], @@ -188,7 +189,7 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): } ) - tensors = numpy_to_pytorch( + _, metadata = numpy_to_pytorch( data, {"A": torch.float32}, ["A"], @@ -198,11 +199,11 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): ) assert torch.equal( - tensors["_attention_valid_mask"], + metadata["attention_valid_mask"], torch.tensor([[True, True, True], [False, False, True]]), ) assert torch.equal( - tensors["_target_valid_mask"], + metadata["target_valid_mask"], torch.tensor([[True, True, True], [False, True, True]]), ) @@ -233,16 +234,20 @@ def test_apply_bert_masking_uses_explicit_valid_mask_for_zero_values(): ) data_batch = { "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), - "_attention_valid_mask": torch.tensor([[False, True, True, True]]), } targets_batch = { "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), - "_target_valid_mask": torch.tensor([[False, True, True, True]]), + } + metadata = { + "attention_valid_mask": torch.tensor([[False, True, True, True]]), + "target_valid_mask": torch.tensor([[False, True, True, True]]), } - _, masked_targets = apply_bert_masking(data_batch, targets_batch, config) + _, _, masked_metadata = apply_bert_masking( + data_batch, targets_batch, metadata, config + ) assert torch.equal( - masked_targets["_bert_mask"], + masked_metadata["bert_mask"], torch.tensor([[False, True, True, True]]), ) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 0b0bdd0b..5a5bedc7 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -219,11 +219,13 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): } targets = { "real_col": torch.tensor([[0.0, 0.0, 2.0]]), - "_target_valid_mask": torch.tensor([[True, True, True]]), + } + metadata = { + "target_valid_mask": torch.tensor([[True, True, True]]), } total_loss, component_losses = TransformerModel._calculate_loss( - model, outputs, targets + model, outputs, targets, metadata ) assert torch.isclose(total_loss, torch.tensor(2.0)) @@ -237,10 +239,12 @@ def test_infer_attention_valid_mask_prefers_explicit_mask_for_real_zero_inputs() src = { "real_col": torch.tensor([[0.0, 0.0, 1.0]]), - "_attention_valid_mask": torch.tensor([[True, True, True]]), + } + metadata = { + "attention_valid_mask": torch.tensor([[True, True, True]]), } - mask = TransformerModel._infer_attention_valid_mask(model, src) + mask = TransformerModel._infer_attention_valid_mask(model, src, metadata) assert torch.equal(mask, torch.tensor([[True, True, True]])) From 513cdf8a49d35ba3867e755d391ebcdcc442f925 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 5 Jun 2026 20:59:38 +0200 Subject: [PATCH 11/81] Deduplicate padding inference --- src/sequifier/helpers.py | 18 ++++++++--- src/sequifier/preprocess.py | 18 ++++++++++- src/sequifier/train.py | 56 ++++++---------------------------- tests/integration-test-log.txt | 3 -- tests/unit/test_preprocess.py | 11 +++++-- tests/unit/test_train.py | 11 ++++--- 6 files changed, 56 insertions(+), 61 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index af839d0e..85f46d41 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -616,9 +616,17 @@ def get_last_training_batch_timedelta( return (t2 - t1).total_seconds() -def infer_valid_mask_from_data(data_batch: Dict[str, torch.Tensor], config: Any): - if len(config.categorical_columns): - ref_col = config.categorical_columns[0] +def infer_valid_mask_from_data( + data_batch: Dict[str, torch.Tensor], + categorical_columns: list[str], + default_key: str, + metadata: Optional[dict[str, Tensor]] = None, +): + if metadata is not None and default_key in metadata: + return metadata[default_key].bool() + + if len(categorical_columns): + ref_col = categorical_columns[0] return data_batch[ref_col] != 0 else: warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) @@ -648,7 +656,9 @@ def apply_bert_masking( if "attention_valid_mask" in metadata_batch: valid_mask = metadata_batch["attention_valid_mask"].bool() else: - valid_mask = infer_valid_mask_from_data(data_batch, config) + valid_mask = infer_valid_mask_from_data( + data_batch, config.categorical_columns, "attention_valid_mask" + ) batch_size, seq_len = valid_mask.shape device = valid_mask.device diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index ae658b89..5e4f3ed7 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -4,6 +4,7 @@ import os import re import shutil +import warnings from pathlib import Path from typing import Any, Optional, Union @@ -1466,7 +1467,22 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] ids = sorted( [int(x) if not isinstance(x, str) else x for x in np.unique(data[column])] ) # type: ignore - id_map = {id_: i + 3 for i, id_ in enumerate(ids)} + + if isinstance(ids[0], str): + if "[mask]" in ids: + raise ValueError(f"Found value '[mask]' in {column}, this is invalid") + + for special_val in ["[unknown]", "[other]"]: + if special_val in ids: + warnings.warn( + f"Found special value {special_val} in {column}, these will be combined with the sequifier-internal special value {special_val}" + ) + ids = [id_ for id_ in ids if id_ not in ["[unknown]", "[other]"]] + id_map = {id_: i + 3 for i, id_ in enumerate(ids)} + id_map["[unknown]"] = 0 + id_map["[other]"] = 1 + else: + id_map = {id_: i + 3 for i, id_ in enumerate(ids)} return dict(id_map) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index badba5cf..29e8121c 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -55,13 +55,13 @@ from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 from sequifier.helpers import ( # noqa: E402 - EXPLICIT_PADDING_MASK_FALLBACK_WARNING, apply_bert_masking, conditional_beartype, configure_determinism, configure_logger, construct_index_maps, get_torch_dtype, + infer_valid_mask_from_data, normalize_path, ) from sequifier.io.sequifier_dataset_from_file import ( # noqa: E402 @@ -976,30 +976,6 @@ def _recursive_concat(self, srcs: list[Tensor]): srcs_inner.append(src) return self._recursive_concat(srcs_inner) - @conditional_beartype - def _infer_attention_valid_mask( - self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None - ) -> Tensor: - """ - Returns a boolean mask of shape (batch_size, seq_length). - - True means valid/non-padding token. - False means padding token. - """ - if metadata is not None and "attention_valid_mask" in metadata: - return metadata["attention_valid_mask"].bool() - - # Prefer categorical columns because padding is unambiguously encoded as 0. - for col in self.categorical_columns: - if col in src: - return src[col] != 0 - - # Fallback for real-only data. - # This matches the existing heuristic used in BERT masking. - warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) - ref_col = next(col for col in self.input_columns if col in src) - return (src[ref_col] != 0.0).long().cumsum(dim=1) > 0 - @conditional_beartype def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tensor: batch_size, seq_length = valid_mask.shape @@ -1115,9 +1091,9 @@ def forward_inner( if self.joint_embedding_layer is not None: src2 = self.joint_embedding_layer(src2) - valid_mask = self._infer_attention_valid_mask(src, metadata).to( - device=src2.device - ) + valid_mask = infer_valid_mask_from_data( + src, self.hparams.categorical_columns, "attention_valid_mask", metadata + ).to(device=src2.device) if valid_mask.shape != src2.shape[:2]: raise ValueError( f"Invalid attention mask shape: got {tuple(valid_mask.shape)}, " @@ -1720,28 +1696,14 @@ def _calculate_loss( if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") - if metadata is not None and "target_valid_mask" in metadata: - seq_mask_2d = metadata["target_valid_mask"].bool() - else: - mask_col = next( - ( - col - for col in target_names - if self.target_column_types[col] == "categorical" - ), - target_names[0], - ) - - if self.target_column_types[mask_col] == "real": - warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) - seq_mask_2d = (targets[mask_col] != 0.0).long().cumsum(dim=1) > 0 - else: - seq_mask_2d = targets[mask_col] != 0 + valid_mask = infer_valid_mask_from_data( + targets, self.categorical_columns, "target_valid_mask", metadata + ) if metadata is not None and "bert_mask" in metadata: - seq_mask_2d = seq_mask_2d & metadata["bert_mask"].bool() + valid_mask = valid_mask & metadata["bert_mask"].bool() - mask = seq_mask_2d.T.contiguous().reshape(-1) + mask = valid_mask.T.contiguous().reshape(-1) losses = {} for target_column in target_names: diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index ef9fa309..8ba6ff1d 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -64,9 +64,6 @@ sequifier visualize-training model-categorical-distributed-lazy-parquet --projec sequifier visualize-training model-categorical-lazy --project-root tests/project_folder sequifier visualize-training model-categorical-multitarget-5 --project-root tests/project_folder sequifier visualize-training model-categorical-multitarget-5-eager --project-root tests/project_folder -sequifier visualize-training model-real-1 --project-root tests/project_folder -sequifier visualize-training model-real-1-from-epoch-checkpoint --project-root tests/project_folder sequifier visualize-training model-real-3 --project-root tests/project_folder sequifier visualize-training model-real-5 --project-root tests/project_folder sequifier visualize-training model-real-50 --project-root tests/project_folder -sequifier visualize-training test-hp-search-grid-run-0,test-hp-search-grid-run-1,test-hp-search-grid-run-2,test-hp-search-grid-run-3 --project-root tests/project_folder --log-scale --bucket-training-batches 5 diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 95b7e54c..82b56c35 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -267,8 +267,15 @@ def test_get_column_statistics_state_accumulation(): # Validations # 1. Categorical: Should contain all unique keys a,b,c,d - assert len(id_maps["cat_col"]) == 4 - assert set(id_maps["cat_col"].keys()) == {"a", "b", "c", "d"} + assert len(id_maps["cat_col"]) == 6 + assert set(id_maps["cat_col"].keys()) == { + "[unknown]", + "[other]", + "a", + "b", + "c", + "d", + } # 2. Numerical: Should match full dataset calculation expected_mean = data_full["num_col"].mean() diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 5a5bedc7..7a4518b2 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -4,6 +4,7 @@ import torch from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel +from sequifier.helpers import infer_valid_mask_from_data from sequifier.train import TransformerModel @@ -207,7 +208,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): model.target_column_types = {"real_col": "real"} model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} model.loss_weights = None - + model.categorical_columns = [] outputs = { "real_col": torch.tensor( [ @@ -221,7 +222,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): "real_col": torch.tensor([[0.0, 0.0, 2.0]]), } metadata = { - "target_valid_mask": torch.tensor([[True, True, True]]), + "attention_valid_mask": torch.tensor([[True, True, True]]), } total_loss, component_losses = TransformerModel._calculate_loss( @@ -232,7 +233,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): assert torch.isclose(component_losses["real_col"], torch.tensor(2.0)) -def test_infer_attention_valid_mask_prefers_explicit_mask_for_real_zero_inputs(): +def test_infer_valid_mask_from_data(): model = TransformerModel.__new__(TransformerModel) model.categorical_columns = [] model.input_columns = ["real_col"] @@ -244,7 +245,9 @@ def test_infer_attention_valid_mask_prefers_explicit_mask_for_real_zero_inputs() "attention_valid_mask": torch.tensor([[True, True, True]]), } - mask = TransformerModel._infer_attention_valid_mask(model, src, metadata) + mask = infer_valid_mask_from_data( + src, model.categorical_columns, "attention_valid_mask", metadata + ) assert torch.equal(mask, torch.tensor([[True, True, True]])) From 0b99cbea235d383be33f393eca05820492442c7d Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 5 Jun 2026 22:24:15 +0200 Subject: [PATCH 12/81] Fix test --- tests/integration-test-log.txt | 3 +++ tests/unit/test_train.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index 8ba6ff1d..ef9fa309 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -64,6 +64,9 @@ sequifier visualize-training model-categorical-distributed-lazy-parquet --projec sequifier visualize-training model-categorical-lazy --project-root tests/project_folder sequifier visualize-training model-categorical-multitarget-5 --project-root tests/project_folder sequifier visualize-training model-categorical-multitarget-5-eager --project-root tests/project_folder +sequifier visualize-training model-real-1 --project-root tests/project_folder +sequifier visualize-training model-real-1-from-epoch-checkpoint --project-root tests/project_folder sequifier visualize-training model-real-3 --project-root tests/project_folder sequifier visualize-training model-real-5 --project-root tests/project_folder sequifier visualize-training model-real-50 --project-root tests/project_folder +sequifier visualize-training test-hp-search-grid-run-0,test-hp-search-grid-run-1,test-hp-search-grid-run-2,test-hp-search-grid-run-3 --project-root tests/project_folder --log-scale --bucket-training-batches 5 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 7a4518b2..f581b40b 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -222,7 +222,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): "real_col": torch.tensor([[0.0, 0.0, 2.0]]), } metadata = { - "attention_valid_mask": torch.tensor([[True, True, True]]), + "target_valid_mask": torch.tensor([[True, True, True]]), } total_loss, component_losses = TransformerModel._calculate_loss( From d412e826af8546957c59e307f87ccc5cf85ee9f4 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 8 Jun 2026 11:39:23 +0200 Subject: [PATCH 13/81] Update outputs --- ...orical-1-best-embedding-3-3-embeddings.csv | 4 +- ...orical-1-best-embedding-3-4-embeddings.csv | 2 +- ...orical-1-best-embedding-3-5-embeddings.csv | 4 +- ...orical-1-best-embedding-3-6-embeddings.csv | 2 +- ...orical-1-best-embedding-3-7-embeddings.csv | 2 +- ...inf-size-best-embedding-3-0-embeddings.csv | 6 +- ...inf-size-best-embedding-3-1-embeddings.csv | 6 +- ...inf-size-best-embedding-3-2-embeddings.csv | 6 +- ...inf-size-best-embedding-3-3-embeddings.csv | 12 +- ...inf-size-best-embedding-3-4-embeddings.csv | 6 +- ...inf-size-best-embedding-3-5-embeddings.csv | 12 +- ...inf-size-best-embedding-3-6-embeddings.csv | 6 +- ...inf-size-best-embedding-3-7-embeddings.csv | 6 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 20 +- ...uifier-model-real-3-best-3-predictions.csv | 36 +- ...uifier-model-real-5-best-3-predictions.csv | 28 +- ...ifier-model-real-50-best-3-predictions.csv | 38 +- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-7-predictions.csv | 60 +-- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- 74 files changed, 1588 insertions(+), 1588 deletions(-) diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv index 961e9b5e..ecec6901 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,7,0.38537663,-0.76236117,0.54453766,1.1489445,-0.93219095,-1.0841125,-0.279618,0.190426,0.066999875,0.60205054,0.7307121,0.975402,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.9700833,0.62717986,1.3900626,-0.94647413,0.48373678,-0.030570993,-0.42904085,-1.1276957,-0.7923079,0.563961,-0.40978292,-0.2334528,-0.27136517,-0.8576837,0.69629365,-1.6003033,0.11132377,-0.5791753,1.9399358,-0.9257662,0.5349056,-0.49527618,-1.3456327,-0.17603794,1.3494829,-1.1282389,0.20037875,-0.9559931,-0.8822725,-0.07519408,-0.77170074,-0.9350284,-0.5532877,-0.94019765,-0.10448791,1.1707094,0.6575927,1.3083346,-0.61123514,1.6713382,0.16979483,-2.0898654,0.009840045,-0.44183388,-1.1921828,-1.265742,1.6432867,-1.1305618,-0.46437404,-0.8430221,0.7453205,-0.65720564,0.35852164,1.6237742,-2.0383017,1.1427602,-0.8917945,0.2076105,-1.3489536,0.6207456,-0.44713888,-1.8621222,-0.5244267,-0.45581636,-0.3975574,-0.4345815,1.8005577,-2.0100255,0.3588848,-1.2393867,0.95991385,-0.65878433,0.7419609,0.43640068,-0.37811753,-1.3537853,1.0124421,0.12569557,0.45669934,-0.062139753,-0.68999034,-0.7770923,-1.26833,-0.42139238,-0.41232172,1.722412,0.38184437,-0.50226235,0.19698814,-2.7483191,-0.18802643,1.3159317,0.4502178,-0.26388723,0.5703611,-0.85277057,-0.46127146,0.2382723,-0.42989612,0.4115149,-2.6187692,0.5646321,1.1139393,-0.032928452,0.10219407,-0.6601092,-1.3054988,0.093954325,0.43201578,-1.4673975,0.08933542,-0.7154099,-1.6057762,0.40757596,-1.6277497,0.05748511,-0.1892006,0.10566295,-0.8918468,-0.17913234,-1.4436157,0.07747513,0.6109399,-0.8347807,-1.3056538,-0.8713027,0.28275943,0.87232286,0.8705629,-0.14861424,0.91572547,0.6586051,0.67494464,-1.7701943,0.16297512,0.4728508,1.0638494,1.7032028,-0.6542731,-0.017882321,2.1696196,-0.04748722,-0.77344686,-2.259672,-1.1815661,-0.58230156,-1.6384532,-1.8893389,0.917642,0.3281549,0.40393066,0.178792,-0.32735556,-1.1835171,-1.0626796,-0.12413608,-0.13082595,0.59983134,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061558,-0.10099141,0.51506233,-1.2538948,1.3633755,-0.588958,-0.21253218,-1.3333261,0.5079261,-0.97876984,-1.5163478,-0.66665024,1.8272513,-1.481488,2.3199954,-0.635016,0.18672499,0.83364874,0.9136821 -4,0,7,1.832777,0.9652215,-0.2531473,0.2162134,1.9031242,0.70369786,-0.9306243,-0.88834244,0.55274016,0.5570371,1.0132977,-0.9646427,-0.5195061,-0.055798862,-0.37479177,0.4407284,0.16671644,0.5790386,0.41375777,0.80011296,-1.5359619,-0.22593135,1.7854866,-0.71542126,-1.0921632,-0.04137182,-0.21795602,-0.33691144,-1.2671196,-0.7473329,0.18677165,-1.8774186,2.0318227,0.273334,-0.9697613,-0.5860969,-0.36416003,0.2273136,0.47210863,-1.3540341,-0.25599045,0.6586222,1.5556432,-0.8154356,1.168724,-2.2140863,0.42116508,0.4787695,-0.64788985,0.4423342,0.20755024,-0.55014634,-0.595621,-0.6086162,-1.3033568,-0.92190075,1.9484235,-0.028180895,0.9555864,-0.610766,1.3185904,0.42626792,-1.1561954,-0.5161907,-0.83520865,0.22098021,-0.32627407,-1.1956958,1.73692,-1.1766446,0.07778312,-1.4228519,-2.1649313,0.6194682,-0.44674367,-0.010885017,-0.43634287,1.7373236,0.6609659,-0.20005386,-0.5650337,0.29500005,0.115850784,-0.054047436,1.7766252,-1.624335,0.4819138,1.0377665,-1.2305183,0.80048895,-1.9219421,1.6361128,0.13642035,-1.2401028,0.56233996,-0.15820792,1.5966988,-0.2590406,-0.5514963,0.43703985,0.40010962,-0.12492114,1.6866367,2.0976324,-0.49593025,0.8581704,0.21792285,-0.63466465,-1.7050067,-1.6924849,-0.08375951,-0.38175452,-0.3269363,-0.96400464,-0.90264994,-0.5941345,0.1949616,-0.8319494,-0.5528981,-0.80228716,1.6503075,1.2991755,-1.0835283,0.3950482,0.2928661,-0.13108586,-0.38219264,-0.5976724,-1.3788452,-0.2650713,0.34214625,1.046247,1.518125,-0.5940697,0.589522,2.7725646,-1.0286809,1.1897798,0.33696088,-1.0014184,-0.029821016,-0.5898694,-0.9996754,0.0104257725,1.4441028,-0.87508523,0.57642156,2.500753,-1.5390791,-1.6458074,-1.7197642,-0.74723464,1.16423,-0.3134553,-0.005579411,1.5905838,-0.9592407,-0.41740352,-0.6339657,0.8530593,1.299676,-0.11439452,0.39143115,0.46125954,-3.0907333,-0.27514967,0.20107317,-1.4204426,-1.7638286,-0.4874675,-1.2546072,-0.23415713,-0.10110022,-0.24766764,1.7387943,-0.75891596,0.75030476,0.5836463,0.10834095,0.7989047,-0.48462987,-0.62584233,0.5027705,1.1866,-0.2813258,-0.8015657,0.4489704,1.1347668,0.07279327,-0.6131345,0.88922334,0.71706647,0.65837896,0.33229914,1.1745048,-0.74355304,0.5451966,0.36238006,1.4138216,0.37747213 +3,0,7,0.3853767,-0.7623611,0.5445376,1.1489445,-0.93219095,-1.0841124,-0.27961808,0.19042599,0.06699983,0.6020505,0.7307122,0.9754021,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.97008324,0.62717986,1.3900626,-0.9464742,0.4837369,-0.030570975,-0.4290407,-1.1276956,-0.7923079,0.563961,-0.40978292,-0.23345281,-0.27136502,-0.8576837,0.69629353,-1.6003033,0.11132374,-0.5791753,1.9399358,-0.92576635,0.53490555,-0.49527624,-1.3456327,-0.176038,1.349483,-1.1282389,0.20037875,-0.955993,-0.8822724,-0.07519414,-0.77170074,-0.9350284,-0.5532876,-0.94019765,-0.10448791,1.1707093,0.6575927,1.3083346,-0.6112351,1.6713382,0.16979486,-2.0898654,0.00984007,-0.44183394,-1.1921827,-1.2657421,1.6432866,-1.130562,-0.46437404,-0.8430221,0.7453206,-0.65720564,0.35852155,1.6237744,-2.0383017,1.1427602,-0.8917945,0.20761068,-1.3489536,0.62074554,-0.44713894,-1.8621219,-0.5244267,-0.45581624,-0.39755735,-0.43458134,1.8005577,-2.0100255,0.3588848,-1.2393866,0.95991385,-0.65878445,0.741961,0.43640068,-0.37811747,-1.3537853,1.0124421,0.12569562,0.45669925,-0.062139705,-0.6899904,-0.7770923,-1.2683299,-0.42139253,-0.4123218,1.7224118,0.38184428,-0.5022623,0.1969878,-2.748319,-0.18802647,1.3159317,0.4502178,-0.26388726,0.5703611,-0.85277075,-0.46127146,0.23827219,-0.4298961,0.41151482,-2.6187694,0.5646321,1.1139392,-0.032928437,0.1021941,-0.6601091,-1.3054987,0.09395422,0.43201578,-1.4673975,0.08933542,-0.71540993,-1.6057761,0.4075759,-1.6277498,0.05748504,-0.18920064,0.1056629,-0.8918468,-0.17913246,-1.4436157,0.077475116,0.6109399,-0.83478075,-1.3056538,-0.87130284,0.28275952,0.87232274,0.8705629,-0.14861424,0.91572547,0.6586051,0.6749446,-1.7701945,0.1629751,0.4728509,1.0638493,1.7032028,-0.6542733,-0.017882407,2.1696196,-0.047487322,-0.77344674,-2.259672,-1.1815661,-0.5823015,-1.638453,-1.8893389,0.9176421,0.32815483,0.4039307,0.17879207,-0.32735565,-1.1835169,-1.0626798,-0.12413608,-0.13082603,0.5998312,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061567,-0.100991376,0.51506233,-1.2538948,1.3633755,-0.58895797,-0.21253212,-1.3333261,0.50792605,-0.97876984,-1.5163478,-0.6666502,1.8272516,-1.4814882,2.3199954,-0.6350161,0.1867251,0.83364874,0.9136821 +4,0,7,1.8327771,0.9652215,-0.25314748,0.21621384,1.9031243,0.7036974,-0.930624,-0.8883423,0.55273986,0.5570372,1.0132973,-0.96464247,-0.51950616,-0.05579906,-0.37479147,0.44072837,0.16671647,0.5790387,0.41375738,0.80011296,-1.5359617,-0.22593148,1.7854865,-0.71542114,-1.0921632,-0.041372035,-0.21795599,-0.3369114,-1.2671196,-0.7473329,0.18677177,-1.8774186,2.0318227,0.2733341,-0.9697609,-0.58609706,-0.36415994,0.22731349,0.4721085,-1.3540337,-0.25599056,0.65862226,1.5556433,-0.81543595,1.168724,-2.2140863,0.42116505,0.47876942,-0.6478898,0.44233415,0.20755047,-0.5501464,-0.5956206,-0.60861623,-1.3033564,-0.9219007,1.9484233,-0.02818083,0.9555862,-0.6107661,1.3185904,0.4262676,-1.1561952,-0.5161904,-0.8352084,0.22098036,-0.32627368,-1.1956955,1.7369198,-1.1766452,0.07778335,-1.4228516,-2.164931,0.61946803,-0.4467436,-0.01088463,-0.43634295,1.737324,0.6609657,-0.20005353,-0.56503403,0.29499987,0.11585043,-0.05404717,1.7766248,-1.624335,0.4819137,1.0377663,-1.2305183,0.8004889,-1.9219416,1.6361125,0.13642022,-1.2401025,0.56233984,-0.15820779,1.5966985,-0.25904042,-0.5514964,0.43703973,0.4001095,-0.12492117,1.6866364,2.0976322,-0.49593046,0.8581702,0.2179227,-0.6346643,-1.7050065,-1.6924847,-0.08375938,-0.38175428,-0.32693657,-0.9640046,-0.9026502,-0.5941344,0.19496141,-0.8319495,-0.55289805,-0.80228716,1.650307,1.2991756,-1.0835283,0.39504835,0.29286614,-0.13108593,-0.38219267,-0.59767234,-1.3788447,-0.26507112,0.34214637,1.0462471,1.5181249,-0.59406966,0.58952206,2.7725644,-1.0286809,1.18978,0.3369609,-1.0014182,-0.02982089,-0.5898692,-0.99967504,0.01042568,1.4441023,-0.87508506,0.57642156,2.5007522,-1.5390786,-1.6458069,-1.7197639,-0.74723464,1.1642295,-0.31345525,-0.0055794707,1.5905838,-0.9592406,-0.4174035,-0.6339656,0.8530592,1.2996758,-0.11439483,0.3914311,0.46125937,-3.0907335,-0.27514952,0.20107323,-1.4204425,-1.7638282,-0.48746726,-1.2546072,-0.2341572,-0.10110028,-0.24766739,1.7387944,-0.7589158,0.75030494,0.5836463,0.10834081,0.7989048,-0.4846295,-0.62584215,0.5027704,1.1866003,-0.28132582,-0.80156577,0.44897035,1.1347668,0.07279313,-0.61313444,0.8892234,0.71706593,0.65837866,0.33229896,1.174505,-0.7435528,0.5451965,0.36238024,1.4138215,0.37747207 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv index 1ede8ed4..5278ebbd 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,7,0.8678485,-1.1492084,-0.29577827,0.9786946,-1.9542456,-0.07664234,-0.03973026,-0.09718513,-0.46550712,0.088307075,0.014937765,1.1039448,-1.9457144,0.7994327,1.8773035,1.5537525,0.39788535,-0.4953131,-1.4370357,1.0003624,0.841088,-0.99132866,0.15745488,0.4423288,-1.511852,-1.9748083,-1.3705088,0.117527954,0.0471839,0.72272456,0.15624413,-1.3321223,0.8274153,-0.50209063,-0.85796344,-0.82082087,1.3705729,-0.32510358,0.92136246,-0.4567902,-2.0167284,0.778191,1.3592294,-1.6879605,0.3511618,-1.6433352,-0.8796016,0.4710184,-0.49356312,-1.540319,-0.5620308,-0.7479297,0.11485024,0.5929443,1.0806792,0.8520335,-0.28449163,2.3426988,-0.7176778,-2.077216,0.44693425,-0.51118195,-1.8134435,-0.3199498,0.5275097,-0.7924806,-0.90600455,-0.5945148,0.62720704,-0.76678073,1.4406856,0.83508265,-1.3691335,0.43675628,-0.93423057,-0.587019,-0.5398221,1.3742958,-0.36840782,-1.3804276,-1.3538328,-1.2029364,-0.6361642,-0.20616663,1.1179503,-0.86969507,0.46374834,-0.9316529,0.36905083,0.18406925,0.57265496,-0.09701405,-0.3084512,-1.0851078,1.2294931,-0.43448195,0.4714254,0.2976226,-0.6675889,-0.24110621,-0.86843914,-0.15433894,0.3217168,1.7343627,0.64216596,-0.39611214,1.2057974,-3.0774295,0.8041049,1.0713865,0.31967443,0.8850117,0.5413772,-1.8904046,-0.64331496,-0.7131405,-0.8982892,0.49162266,-1.7892696,1.266022,1.2143359,0.16972244,-0.42226094,-0.920911,-1.287436,-0.30553937,0.78019506,-1.3130422,-0.54638034,-0.06269855,-1.2766076,0.3067186,-1.1979859,-0.5041536,0.24134868,0.9985403,-0.20058866,-0.19003277,-0.91562223,0.7388305,0.60628974,-0.39632004,-1.401826,0.266171,1.2859257,1.7502289,1.1291436,-0.2593596,1.0141768,-0.0024154119,-0.012608729,-1.6622946,0.84452707,0.4089601,0.24172992,0.8491719,-1.2459073,0.44094768,2.3070037,-0.20285222,-0.9055848,-1.9905902,-0.62915814,-0.7049501,-1.5236275,-1.6411532,0.28731275,0.23528811,-0.8580845,0.87269217,-0.8224613,-1.3814896,-0.8996288,0.0075937505,1.4490063,0.6224928,-1.3583354,-0.39259246,0.55505186,-1.1764414,1.2858897,-0.51201284,-0.36201963,0.028119631,-1.0583313,0.626196,-0.93444836,-0.6852238,-0.55748594,0.1277266,-1.1170981,-1.7487799,-0.62091154,1.1936655,-0.5524272,1.6852114,-1.5539126,0.93077433,0.54523623,-0.3293535 +5,0,7,0.8678487,-1.1492083,-0.2957783,0.9786945,-1.9542453,-0.07664241,-0.039730284,-0.09718514,-0.465507,0.088307,0.014937709,1.1039451,-1.9457144,0.7994327,1.8773037,1.5537523,0.39788526,-0.4953133,-1.4370357,1.0003625,0.84108806,-0.99132866,0.15745479,0.4423289,-1.5118519,-1.9748083,-1.3705087,0.11752797,0.04718379,0.7227247,0.15624402,-1.3321223,0.8274153,-0.5020909,-0.8579634,-0.8208209,1.370573,-0.32510355,0.9213625,-0.45679018,-2.0167282,0.77819085,1.3592292,-1.6879606,0.35116172,-1.6433353,-0.8796014,0.47101834,-0.49356297,-1.540319,-0.56203103,-0.74793,0.114850305,0.5929445,1.0806793,0.8520335,-0.28449142,2.3426988,-0.71767795,-2.077216,0.4469343,-0.51118195,-1.8134437,-0.31995004,0.5275096,-0.7924808,-0.90600455,-0.5945146,0.62720716,-0.76678073,1.4406855,0.8350828,-1.3691337,0.43675637,-0.93423057,-0.58701897,-0.53982204,1.3742961,-0.3684079,-1.3804277,-1.3538327,-1.2029366,-0.6361641,-0.2061667,1.1179498,-0.8696951,0.46374846,-0.9316529,0.36905092,0.18406926,0.5726551,-0.097014,-0.3084513,-1.0851082,1.2294934,-0.43448213,0.4714254,0.29762262,-0.66758883,-0.2411063,-0.8684391,-0.15433899,0.3217168,1.7343627,0.6421659,-0.39611214,1.2057977,-3.0774305,0.8041049,1.0713868,0.3196744,0.885012,0.5413774,-1.8904048,-0.6433149,-0.7131405,-0.89828914,0.49162254,-1.7892698,1.266022,1.2143357,0.16972247,-0.4222612,-0.9209112,-1.2874361,-0.30553934,0.78019506,-1.3130422,-0.54638046,-0.06269859,-1.2766076,0.3067186,-1.1979859,-0.5041537,0.24134871,0.9985403,-0.20058915,-0.19003288,-0.9156221,0.73883057,0.60628974,-0.39632013,-1.401826,0.26617125,1.2859261,1.7502289,1.1291437,-0.2593595,1.014177,-0.002415313,-0.0126089025,-1.6622946,0.84452736,0.40896028,0.24172997,0.849172,-1.2459072,0.4409478,2.3070042,-0.20285252,-0.9055849,-1.9905902,-0.6291581,-0.70495003,-1.5236276,-1.6411536,0.28731304,0.23528825,-0.85808456,0.8726922,-0.8224612,-1.3814898,-0.8996288,0.0075938655,1.4490063,0.62249285,-1.3583359,-0.39259228,0.55505204,-1.1764418,1.2858897,-0.5120127,-0.3620197,0.028119635,-1.0583314,0.6261959,-0.93444824,-0.68522364,-0.5574861,0.12772661,-1.1170981,-1.7487799,-0.62091166,1.1936655,-0.55242705,1.6852115,-1.5539129,0.93077433,0.54523623,-0.32935345 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv index 541113f3..257f845b 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,7,0.47420257,1.2638454,-0.29428783,0.6063462,0.3250649,-0.011651794,-1.383389,-1.234404,-0.45170534,1.0377884,1.8840407,-0.33119473,-1.0696625,0.9726884,0.80814546,0.9354395,0.71671236,0.428451,-0.015223929,0.81312406,-1.2162952,-1.1050556,0.6366257,-1.6387161,-0.9819109,-0.4953308,0.12158297,-0.67469645,-1.717451,-0.21087128,1.0931989,-1.6311557,1.6655924,-1.1295466,-0.8290883,-0.27834374,0.3571047,0.7679167,1.286279,-1.5655476,-0.47575822,0.3837134,0.82579845,-0.65413463,-0.060213037,-1.6886673,0.31571612,-1.3439902,-1.3430762,0.0015742916,-0.8718748,-1.2474332,-0.8262217,0.5390429,0.43257564,0.7165555,-0.013134941,1.0078024,1.2916026,-1.6230772,0.18352468,1.4117193,-0.99339473,-0.17660125,-0.8539951,0.17099175,1.0725634,-0.23263906,1.7940855,0.49845868,-0.58279014,0.9100562,-2.1336784,-0.08051058,-0.15371843,0.53641343,0.036809027,0.27225932,0.43129542,-0.51692873,0.86170065,0.3777755,-0.3340567,-0.5066735,2.3349266,-3.2664793,0.23907657,0.13636138,-0.13565235,-0.29753345,-0.56251806,1.5495608,-0.25081062,-2.0128417,1.4139545,-0.16621536,0.784448,0.5935694,-0.85539657,-0.5690536,-0.5415991,-0.8971023,1.8330036,2.7651486,1.039496,-0.23426558,-0.57880366,-1.1803632,-1.0954609,-0.30837312,0.2056301,-0.45784757,0.79928094,-0.58580524,0.8425376,0.11244702,0.72019076,-1.2291323,-1.666961,-0.4446293,2.2034054,1.0664692,0.81338817,-0.4559747,-1.2628947,-0.2225234,-1.3892788,-0.7460107,0.097924024,-0.91731095,-1.1128799,0.40236434,-0.7147696,-0.7736082,0.39257404,2.3405876,-0.27565396,0.40534735,-0.81300443,-0.097918786,0.61959285,-1.4504018,-1.5624175,-1.1680082,1.2857004,-1.2578357,0.41585726,1.0423983,-0.53722256,-0.38153195,-0.51949257,-1.5859617,1.3256052,-0.097611226,0.5610492,2.6576302,1.24299,-0.7566358,0.91004014,0.7399129,-0.1096572,-2.0155513,-0.009600659,-0.6858703,-1.7821821,-1.058989,-0.13436024,0.42209816,-1.1379089,0.4846043,-0.6162597,-0.33495048,0.5386396,0.18685773,0.26678535,-0.20175369,-0.72045624,0.21726054,1.1120163,0.79319596,-0.36998135,-0.67134833,0.7267623,-0.18856248,0.4676755,-1.0685669,0.32332313,-0.06708168,-1.2248515,-0.7845494,0.5460868,-0.6168076,1.5106831,1.7673893,-0.6841837,0.44412613,0.7936944,-0.8888349,0.039817397,1.6578218 -7,0,7,-0.08779775,-0.7206459,0.39195007,0.30277744,-1.0405563,-0.8779835,-0.7976403,0.071234435,-0.29967046,0.27734953,-0.105664976,0.77108765,-1.7671883,0.824929,1.5373951,1.5010271,1.4846263,-0.7896349,-0.8870087,0.69192314,0.6787518,-0.4330691,0.6862604,-0.2904696,-0.9619547,-0.3613372,-0.92799646,0.18862405,-0.13149612,0.33348697,0.35246965,-0.86275643,0.7647196,-1.5118189,-0.24293661,-0.62797713,1.9434764,-0.1523092,1.2640053,-0.53051686,-1.5717334,-0.23882772,1.2569783,-1.5155659,0.316097,-1.4623227,-1.5276753,-0.6301773,-0.15530248,-1.2590177,-1.1136596,-0.8283695,-0.3316041,1.6386757,0.7145627,1.4172399,-0.92403394,1.1554213,-0.2054311,-2.2690709,0.032772172,-0.60741836,-0.840842,-0.43909273,1.1674483,-1.5343083,0.39456716,-0.6319559,0.694979,-0.17052399,0.6638801,1.6770401,-1.6856104,0.8501758,-1.0100726,-0.06956186,-0.49753255,0.45815906,-0.8491857,-1.5388988,-0.21994215,-0.6159065,-0.43685117,-0.5483946,1.8440413,-1.9056607,0.239437,-0.8901972,1.0178717,-0.41829032,0.47147453,0.2824819,-0.4255798,-1.3693498,1.3788786,-0.8324858,0.2925801,0.038576633,-0.9931528,-0.88978964,-1.3541443,-0.3884408,-0.5666751,2.0802114,0.20410398,-0.5688041,-0.25536698,-2.8470824,0.22910744,1.3398811,0.41405335,0.37236086,1.0213393,-0.612114,0.20765163,0.22666231,-0.052260194,0.20032823,-2.3570495,1.430299,1.4743409,-0.2883624,0.44256932,-0.7141606,-0.87645125,-0.20459764,0.5313735,-1.1576004,0.2882263,-0.31856775,-2.041501,0.55573547,-1.3157725,0.2728312,0.18704545,-0.34522098,-0.7096739,-0.432244,-1.6015022,1.0732054,0.9189849,-0.6834102,-1.5872613,-0.5969934,0.90725124,1.1939424,0.6279301,-0.4908578,0.9603637,0.6682552,0.66679686,-1.698892,0.26019415,0.5773275,0.53784454,1.2200284,0.32803503,-0.15348214,2.141097,-0.0141839655,-1.0378202,-2.6077065,-0.3066732,-0.06714368,-1.3892244,-1.7354015,0.5355618,0.9041617,-0.3285599,0.12410717,-0.4072241,-1.3432459,-0.7320013,-0.25400367,0.17272092,1.1034756,-2.2850537,0.62561816,1.75507,-1.3452936,-0.017986165,-0.54053295,0.05288172,0.2870577,-0.98898715,0.76313764,0.15638581,-0.6830085,-1.3387133,0.6244851,-0.7181842,-1.9862365,0.07094988,1.840984,-1.5815738,1.6396283,-0.85405743,0.19265085,0.44211808,0.6777788 +6,0,7,0.47420236,1.2638448,-0.2942875,0.6063466,0.32506454,-0.011651637,-1.3833891,-1.2344038,-0.45170528,1.0377885,1.8840404,-0.33119497,-1.0696628,0.9726884,0.80814546,0.9354395,0.7167119,0.42845112,-0.015223959,0.81312424,-1.2162951,-1.1050558,0.6366257,-1.6387163,-0.9819105,-0.4953311,0.12158322,-0.67469686,-1.7174512,-0.2108714,1.0931984,-1.6311551,1.6655928,-1.1295462,-0.82908773,-0.27834365,0.35710472,0.7679168,1.2862792,-1.5655477,-0.47575817,0.38371342,0.8257985,-0.6541342,-0.06021277,-1.688667,0.31571636,-1.3439896,-1.3430765,0.0015745121,-0.87187445,-1.2474327,-0.82622105,0.53904265,0.4325758,0.7165552,-0.013134802,1.0078027,1.2916025,-1.6230769,0.1835245,1.4117191,-0.9933948,-0.17660141,-0.85399544,0.1709921,1.0725634,-0.23263937,1.7940853,0.49845877,-0.58278996,0.9100562,-2.1336787,-0.0805108,-0.15371813,0.5364138,0.036808733,0.27225935,0.43129516,-0.5169288,0.8617008,0.37777528,-0.3340564,-0.50667363,2.3349266,-3.2664785,0.23907632,0.13636121,-0.1356525,-0.2975334,-0.56251806,1.5495608,-0.25081053,-2.012842,1.4139545,-0.16621536,0.7844478,0.5935697,-0.85539633,-0.5690532,-0.5415988,-0.8971024,1.8330035,2.7651486,1.039496,-0.23426563,-0.57880294,-1.180363,-1.095461,-0.30837286,0.20563056,-0.45784765,0.799281,-0.585805,0.84253716,0.11244704,0.7201907,-1.2291319,-1.666961,-0.44462907,2.2034056,1.0664692,0.81338817,-0.4559743,-1.2628946,-0.22252318,-1.3892785,-0.74601096,0.09792413,-0.9173109,-1.1128796,0.4023642,-0.7147697,-0.77360827,0.39257395,2.3405876,-0.2756536,0.4053474,-0.8130045,-0.097918354,0.619593,-1.450402,-1.562418,-1.1680082,1.2857003,-1.2578353,0.41585723,1.0423979,-0.53722227,-0.38153183,-0.51949257,-1.5859616,1.3256049,-0.097610995,0.5610497,2.6576302,1.24299,-0.7566359,0.91003966,0.73991305,-0.10965724,-2.0155516,-0.009600935,-0.68587035,-1.7821821,-1.0589889,-0.13436046,0.4220983,-1.1379086,0.48460454,-0.61625963,-0.3349504,0.53863937,0.18685772,0.26678517,-0.20175351,-0.7204558,0.21726036,1.1120167,0.79319596,-0.36998117,-0.6713484,0.72676253,-0.18856229,0.46767554,-1.068567,0.32332298,-0.06708165,-1.2248515,-0.7845498,0.5460865,-0.61680746,1.510683,1.7673895,-0.68418354,0.44412625,0.7936944,-0.8888349,0.03981725,1.6578218 +7,0,7,-0.087797716,-0.72064584,0.3919503,0.30277744,-1.0405561,-0.8779837,-0.7976403,0.071234636,-0.29967022,0.2773496,-0.10566512,0.77108765,-1.7671878,0.824929,1.5373951,1.5010269,1.4846264,-0.7896349,-0.88700837,0.6919234,0.6787521,-0.4330691,0.6862605,-0.2904699,-0.9619546,-0.36133736,-0.9279964,0.18862396,-0.13149612,0.33348706,0.35246968,-0.86275643,0.7647198,-1.5118189,-0.24293631,-0.62797725,1.9434764,-0.15230915,1.2640054,-0.53051674,-1.571733,-0.23882791,1.2569784,-1.5155659,0.31609696,-1.4623228,-1.5276749,-0.63017756,-0.15530244,-1.2590177,-1.1136601,-0.8283698,-0.33160418,1.6386752,0.7145629,1.4172399,-0.9240341,1.155421,-0.20543078,-2.2690709,0.032772336,-0.6074186,-0.8408421,-0.43909267,1.1674483,-1.5343087,0.394567,-0.6319556,0.69497925,-0.17052399,0.66387993,1.6770401,-1.6856111,0.8501759,-1.0100725,-0.06956196,-0.49753228,0.45815924,-0.8491857,-1.5388991,-0.21994229,-0.61590695,-0.43685135,-0.54839456,1.844041,-1.9056602,0.23943688,-0.8901972,1.0178715,-0.4182901,0.47147426,0.28248206,-0.42557982,-1.3693498,1.378879,-0.832486,0.2925802,0.03857666,-0.99315274,-0.88979,-1.3541446,-0.38844082,-0.56667507,2.0802116,0.20410404,-0.5688037,-0.25536713,-2.8470826,0.22910759,1.339881,0.41405326,0.3723613,1.0213392,-0.61211425,0.20765173,0.22666255,-0.052260146,0.20032822,-2.3570492,1.4302993,1.4743407,-0.2883624,0.44256923,-0.7141606,-0.87645143,-0.20459794,0.5313736,-1.1576004,0.2882262,-0.3185675,-2.041501,0.55573565,-1.3157725,0.2728311,0.18704554,-0.34522107,-0.7096739,-0.43224367,-1.601502,1.0732054,0.91898465,-0.68341035,-1.5872612,-0.59699357,0.90725124,1.1939424,0.6279298,-0.49085775,0.9603635,0.668255,0.66679686,-1.698892,0.26019427,0.57732755,0.5378443,1.2200284,0.32803506,-0.15348187,2.141097,-0.014183752,-1.0378197,-2.6077065,-0.3066731,-0.06714382,-1.3892245,-1.7354015,0.53556174,0.9041617,-0.32855996,0.12410693,-0.40722385,-1.3432457,-0.73200125,-0.25400352,0.17272082,1.1034756,-2.2850537,0.6256181,1.7550697,-1.3452938,-0.017986335,-0.54053277,0.05288191,0.28705782,-0.98898697,0.7631376,0.15638618,-0.6830087,-1.3387133,0.62448514,-0.7181843,-1.9862368,0.070950225,1.8409837,-1.5815738,1.639628,-0.8540574,0.19265085,0.4421182,0.67777854 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv index 84ef00be..e1edc7ec 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,7,1.6896031,0.29085124,-0.23292182,1.3335884,0.45459226,0.34372637,-0.4165882,-0.42207715,0.60733074,1.2122438,0.8359352,0.5889716,-1.7851549,1.4177666,0.7491194,0.5095495,0.26941702,0.21018945,-0.88023686,0.56112635,0.4965653,-0.8069379,1.1553066,-0.012635032,-0.1019034,-1.7098439,-0.778535,0.08457131,-1.0872964,-0.46575657,0.1705186,-1.0981392,1.2801948,-0.2028321,-0.3777968,-1.0450279,0.83502,-0.4449086,0.3772813,-1.3267674,-1.3647468,0.4980426,1.0723178,-1.55848,0.6211332,-1.7105299,0.93637806,0.962023,-0.5543043,-0.2215327,0.51130736,-0.5170269,0.11910182,-0.16186877,0.3342436,-0.8031384,1.6559254,0.4785719,0.5240285,-0.85450006,1.1488028,-0.123829335,-2.314366,-1.7480177,0.34907198,0.33689144,-0.96712893,-1.1980494,1.7140707,-1.4368652,0.665594,-0.2777855,-1.740489,1.0585523,-0.34576628,-0.026606081,-1.963539,2.3253458,0.718786,-0.63990796,-2.111302,-0.76395285,-0.37198,-0.00446455,1.4715577,-1.4121685,0.046070743,0.04943243,-0.6720886,0.77220064,-0.78486633,1.6651013,-0.5048683,-1.0169151,0.19552472,0.60602754,1.0623702,0.15507461,-0.32467106,0.2723276,-0.9548157,-0.0605602,1.6082473,1.8419511,-0.6165263,0.5530546,0.5313712,-1.6408414,-0.0837646,-0.62233794,0.053751737,0.17250709,-0.5837834,-1.9890919,-2.1878119,-0.6350772,-1.3977064,-0.09614897,-0.99611235,-0.87689996,0.8914697,1.3250514,-1.3865021,0.07022134,0.14449094,-0.4635786,0.22937033,-1.0663302,-1.124088,0.17105857,0.38474694,1.002527,0.06262806,-1.439073,-0.079469405,2.1103234,-1.7293836,1.1202102,-0.19353467,-1.0497702,-0.18288192,-0.8191539,-0.91999054,-0.0011520431,1.4552093,0.0285639,1.5781827,1.5662957,-0.37651268,-0.7598728,-0.96915853,-1.9078715,1.1331103,-0.11489686,0.537274,2.1304922,-2.0829363,0.2657547,0.73497164,-0.30037352,0.74554676,-1.2468303,-0.9414173,-0.96966434,-2.6400287,-1.1223296,0.87630385,-0.9678277,-0.9243955,1.2501684,-1.4089605,-0.80661803,-0.8789456,0.509323,0.86616665,-1.0657727,-0.44514504,0.16784553,-0.82460415,-0.6202602,0.22096892,-0.5744518,-0.051139973,0.95496964,-0.73176867,0.21573815,-0.73088634,1.3564851,-0.56419003,-0.3550247,-1.0255396,-0.57220864,-0.90364045,0.36711964,-0.09569923,0.6653445,-0.5859866,1.2525154,1.7926838,0.031228097 +8,0,7,1.6896031,0.2908513,-0.23292185,1.3335884,0.4545921,0.34372616,-0.4165884,-0.42207703,0.60733074,1.2122438,0.8359352,0.5889715,-1.7851549,1.4177665,0.7491191,0.5095494,0.26941696,0.21018945,-0.880237,0.5611264,0.49656537,-0.8069379,1.1553068,-0.0126349665,-0.10190317,-1.7098439,-0.7785349,0.08457157,-1.0872965,-0.46575686,0.17051879,-1.0981392,1.2801948,-0.20283222,-0.37779662,-1.045028,0.8350199,-0.4449086,0.37728134,-1.3267673,-1.3647467,0.49804264,1.072318,-1.5584799,0.62113297,-1.7105299,0.936378,0.96202284,-0.5543043,-0.22153261,0.5113075,-0.5170268,0.11910198,-0.16186874,0.33424348,-0.8031384,1.6559254,0.47857162,0.5240287,-0.85450006,1.1488028,-0.12382944,-2.3143659,-1.7480177,0.34907168,0.3368916,-0.96712863,-1.1980493,1.7140709,-1.4368651,0.66559404,-0.27778557,-1.7404891,1.0585526,-0.3457661,-0.026605887,-1.9635391,2.3253458,0.7187862,-0.6399079,-2.111302,-0.7639529,-0.3719801,-0.0044646794,1.4715577,-1.4121687,0.046070594,0.049432546,-0.67208856,0.77220047,-0.78486633,1.6651013,-0.5048683,-1.0169152,0.19552465,0.6060275,1.0623702,0.15507454,-0.3246709,0.2723275,-0.9548158,-0.060560215,1.6082474,1.8419513,-0.6165263,0.5530547,0.53137124,-1.6408414,-0.083764516,-0.6223381,0.053751897,0.17250697,-0.5837834,-1.9890918,-2.1878116,-0.63507724,-1.3977062,-0.09614903,-0.99611247,-0.8769,0.8914697,1.3250514,-1.3865021,0.070221275,0.14449106,-0.4635786,0.22937016,-1.06633,-1.124088,0.17105861,0.38474694,1.002527,0.062628046,-1.4390727,-0.07946947,2.1103234,-1.7293836,1.1202102,-0.1935348,-1.0497704,-0.1828823,-0.8191538,-0.9199905,-0.0011521083,1.4552091,0.028564112,1.5781827,1.5662959,-0.37651274,-0.75987285,-0.96915853,-1.9078714,1.1331102,-0.114896916,0.53727424,2.130492,-2.0829363,0.2657546,0.7349715,-0.30037367,0.7455469,-1.2468303,-0.94141734,-0.96966463,-2.640029,-1.1223298,0.8763038,-0.96782756,-0.92439544,1.2501682,-1.4089605,-0.8066179,-0.87894547,0.5093231,0.8661666,-1.0657727,-0.44514516,0.16784558,-0.82460415,-0.62026,0.22096872,-0.5744515,-0.05113996,0.9549697,-0.7317686,0.2157382,-0.73088646,1.3564851,-0.56419,-0.3550247,-1.0255395,-0.57220864,-0.9036402,0.36711925,-0.09569928,0.6653445,-0.5859867,1.2525154,1.7926836,0.031228034 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv index 69bb2f81..7c1f56ff 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,7,-0.16720565,-0.95600957,0.28606528,0.6061069,-0.38458014,-0.20699821,-1.1377771,0.20950352,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458503,2.1207294,2.1566584,-0.24435447,-0.64201504,1.7221577,0.931517,-0.7352646,0.34909317,0.7247565,-0.5341214,-0.38585183,-0.7807762,0.55336505,0.0011219969,1.0769404,0.17883597,-1.319804,1.3214653,-1.3146976,-0.71112573,-0.4876438,1.6924084,-0.5158393,1.3672885,-0.55709517,-0.8911706,-0.76211774,1.6342849,-1.2171471,0.21610762,-2.0004432,-0.90466094,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178052,1.158086,0.932027,1.5196209,-1.0533147,1.268581,0.0013256798,-1.9838752,-0.02037545,-0.6469344,-1.380692,-1.059281,0.5494309,-1.3961787,-0.15649295,-0.5929407,0.9686789,-0.40543148,1.0557822,0.8631479,-2.2666907,0.67865163,-0.9861262,-0.4633933,-0.5806146,1.3590292,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.6836848,-0.48810723,1.0633672,-2.1536193,0.27614263,-0.9428519,0.8829793,-0.13327233,-0.69135016,0.057943318,0.29546723,-1.8476412,1.6050954,-0.77256197,-0.34552777,-0.3999227,-0.91350764,-1.4197913,-1.4342732,0.054446727,0.38957366,1.6343316,-0.018683603,0.20149976,-0.51843685,-2.7988346,-0.23812824,0.3947416,0.7759951,0.26147768,0.7695459,-0.8783734,0.24983662,0.22944754,-0.50273734,0.17921257,-2.96453,0.84934795,0.8776484,0.17855342,-0.3165259,-0.49537578,-1.4034133,-0.5197445,0.65165275,-1.1936586,0.4376411,-0.3197974,-1.1554341,-0.09437472,-1.4360906,-0.666431,0.19690531,0.22096209,-0.77558017,-0.6480959,-1.0999116,1.1237246,0.32265925,-0.71968275,-2.2545595,-1.4951689,0.5562803,1.1043609,1.1391095,0.12772344,0.39196163,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991098,-0.007137307,1.7125996,-0.8783491,-0.079967216,-2.1059916,-0.31304887,-0.31512117,-1.8248315,-1.5771934,0.5107034,0.7182178,-0.25824896,-0.45623496,-0.26445267,-0.9527643,-0.7283463,0.17178623,0.2119341,0.9493435,-1.3720604,0.15322246,0.70129305,-0.55172205,-0.15245205,0.06241885,-0.6320953,0.5529451,-0.4287735,1.0122429,-0.0774352,-0.28508043,-1.175873,0.21220754,-1.3312136,-1.4357239,0.21157016,0.5917681,-1.1742185,1.9612663,-1.2883048,0.06013697,1.073086,0.5143654 +9,0,7,-0.16720563,-0.95600957,0.28606522,0.6061068,-0.3845801,-0.20699826,-1.1377771,0.20950346,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458502,2.1207294,2.1566582,-0.24435441,-0.64201504,1.7221576,0.93151706,-0.7352646,0.34909317,0.72475654,-0.53412133,-0.38585177,-0.7807762,0.55336505,0.0011219378,1.0769404,0.178836,-1.3198038,1.3214653,-1.3146976,-0.7111258,-0.48764378,1.6924084,-0.51583934,1.3672884,-0.5570951,-0.8911707,-0.7621178,1.6342849,-1.217147,0.21610765,-2.0004432,-0.9046609,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178051,1.1580858,0.932027,1.5196209,-1.0533147,1.2685812,0.0013257095,-1.983875,-0.02037545,-0.64693433,-1.3806919,-1.0592809,0.54943085,-1.3961786,-0.15649292,-0.5929407,0.9686789,-0.40543142,1.0557822,0.863148,-2.2666905,0.6786515,-0.98612607,-0.46339324,-0.5806146,1.359029,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.68368477,-0.4881073,1.0633672,-2.1536195,0.27614263,-0.94285184,0.8829792,-0.1332724,-0.69135016,0.057943374,0.29546717,-1.8476412,1.6050953,-0.77256185,-0.34552783,-0.39992267,-0.9135076,-1.4197912,-1.4342732,0.05444667,0.38957366,1.6343316,-0.018683603,0.20149979,-0.5184369,-2.7988343,-0.23812824,0.39474156,0.7759951,0.26147765,0.7695459,-0.8783734,0.24983662,0.22944757,-0.50273734,0.17921253,-2.96453,0.8493479,0.8776484,0.17855343,-0.3165259,-0.49537572,-1.4034132,-0.5197445,0.6516528,-1.1936586,0.4376411,-0.31979737,-1.1554341,-0.094374776,-1.4360906,-0.666431,0.19690529,0.22096215,-0.77558017,-0.6480959,-1.0999115,1.1237246,0.32265925,-0.7196827,-2.2545595,-1.4951689,0.5562803,1.1043608,1.1391095,0.12772338,0.39196157,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991095,-0.007137307,1.7125996,-0.8783491,-0.07996723,-2.1059916,-0.3130489,-0.31512117,-1.8248315,-1.5771933,0.51070344,0.7182178,-0.2582489,-0.45623493,-0.2644527,-0.9527642,-0.7283463,0.17178611,0.21193407,0.9493434,-1.3720604,0.15322249,0.701293,-0.551722,-0.15245207,0.06241879,-0.6320952,0.5529451,-0.4287735,1.0122428,-0.07743517,-0.28508037,-1.175873,0.21220748,-1.3312136,-1.4357239,0.21157013,0.5917681,-1.1742185,1.9612663,-1.2883047,0.06013697,1.073086,0.5143654 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv index 9a165d17..d4e16b52 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,5,0.24902344,-0.003112793,-1.1171875,-0.2890625,1.21875,0.76953125,-0.56640625,1.03125,0.9609375,-0.14257812,0.66796875,2.828125,0.4453125,0.28320312,-0.91015625,-0.048583984,-0.67578125,0.5625,3.265625,1.6875,1.0078125,-0.90234375,0.63671875,0.2578125,0.028686523,0.7890625,-0.5703125,-0.44140625,-0.91796875,-0.875,0.095703125,0.05810547,0.16601562,1.1328125,-1.125,0.0028686523,0.2890625,0.22851562,0.19140625,0.015991211,-0.37695312,-0.42578125,-0.25195312,-1.078125,0.11767578,0.7578125,0.14355469,-1.484375,0.13183594,0.13085938,0.49804688,-1.546875,0.0703125,0.119140625,-1.3515625,0.052490234,-0.33789062,-0.44726562,1.2421875,-1.2578125,-0.06982422,-0.359375,2.21875,-0.40820312,-0.6953125,-1.15625,0.02746582,-1.4140625,-0.25976562,0.8125,0.044921875,1.40625,-0.53125,-0.78125,1.0859375,2.875,-0.91015625,-0.13671875,-2.328125,0.02319336,0.49609375,-0.06640625,0.546875,0.3125,0.044189453,-0.29492188,-1.15625,-1.34375,0.38671875,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.014099121,-0.024658203,-0.32617188,0.546875,-0.76953125,-0.25195312,-0.16210938,0.24316406,1.0078125,-1.2421875,-1.4765625,0.27148438,-0.63671875,0.6953125,-0.45507812,-0.14746094,1.2109375,0.49804688,0.13867188,-0.24902344,1.4296875,-1.53125,-1.0,-0.4140625,0.81640625,0.18847656,-0.21484375,0.39648438,0.4765625,-0.12402344,-1.4765625,2.421875,-0.49804688,-1.265625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40820312,-1.6796875,0.546875,-1.3671875,-0.609375,-0.083496094,-0.7890625,1.4140625,-1.640625,-0.87890625,2.03125,-0.66796875,-0.37695312,-0.14160156,1.0,-0.76953125,0.390625,1.09375,-0.9375,0.54296875,-0.87890625,-1.0390625,-0.0859375,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.375,0.73046875,2.28125,0.064941406,0.07910156,-1.28125,-2.359375,1.7734375,0.033691406,0.37890625,-0.78515625,-0.3359375,0.7421875,-0.95703125,-0.1953125,-0.90234375,-1.109375,-0.69140625,0.6484375,-0.76953125,-0.053222656,0.41210938,1.109375,-1.4453125,0.9453125,-0.9609375,-1.2890625,1.796875,-0.93359375,-1.4296875,-0.5390625,0.43359375,-0.578125,-0.20507812,1.375,-0.421875,0.31054688,0.33398438,1.21875 -0,0,6,0.29882812,0.5,0.65625,-0.48046875,0.25976562,-0.025512695,0.6796875,-0.6171875,0.58984375,-0.6640625,0.68359375,0.095703125,1.6015625,-0.73046875,0.007873535,-0.3125,-0.19628906,-0.005218506,2.625,0.16503906,-0.15234375,-1.3984375,0.6640625,0.057373047,-0.703125,-1.0,0.29296875,-0.3125,-0.37890625,1.609375,0.64453125,-1.0546875,1.5078125,-1.4140625,0.19238281,0.20996094,0.06982422,-1.046875,-0.84375,0.8203125,-2.140625,0.29101562,-0.82421875,-0.6484375,-0.28125,-0.51953125,0.31445312,-0.984375,1.3515625,0.671875,-0.78515625,0.34179688,-0.9296875,1.5390625,0.20117188,-0.30273438,0.140625,-0.421875,-1.1484375,-0.83203125,1.3359375,0.50390625,-0.051757812,1.25,-0.19140625,0.4453125,-0.05908203,-1.796875,-1.265625,1.5390625,-0.6640625,0.578125,0.640625,0.064453125,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.012451172,-0.80078125,-0.66796875,0.5625,-0.18066406,-0.27734375,-0.609375,-1.2421875,-1.953125,1.484375,-0.5,1.1953125,0.953125,-0.9609375,0.328125,-1.109375,-0.74609375,-1.8984375,-0.75,-1.296875,0.04248047,-1.375,1.125,1.796875,-0.017578125,0.44335938,2.609375,-1.03125,0.58984375,0.28515625,-0.625,0.69921875,1.1484375,0.640625,-0.078125,0.46484375,0.30859375,-0.21484375,0.24707031,-0.06347656,1.296875,0.5390625,-0.6171875,1.1875,-0.90625,-1.1171875,1.1171875,-1.8203125,-1.40625,-0.18847656,-0.10107422,1.1171875,-0.609375,-0.54296875,-1.3515625,0.38671875,0.40234375,0.40234375,-0.40820312,0.21582031,-1.8828125,2.484375,0.57421875,-0.671875,2.34375,-0.24902344,-1.5234375,2.21875,-1.0703125,-1.34375,0.82421875,-0.9609375,0.20019531,1.0390625,-1.4140625,-0.32617188,-0.030151367,1.2578125,-0.8203125,1.0859375,0.32421875,-0.390625,-0.53515625,2.390625,1.7734375,-0.94921875,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30664062,-0.50390625,-1.734375,-0.9140625,-0.88671875,0.265625,0.98046875,-1.4453125,0.5078125,0.2578125,-1.9296875,-1.015625,1.171875,0.26953125,-1.5390625,-0.41992188,0.43359375,-0.20898438,-0.65625,-0.05883789,-1.7109375,1.7890625,1.1875,-0.53125,-1.0859375,0.8984375,1.796875,-0.34570312,1.359375,1.0703125 -0,0,7,0.66796875,1.21875,-1.203125,-1.3125,-0.51171875,-1.8984375,0.31445312,1.1875,-0.53125,-0.6796875,-0.05419922,-1.1796875,-1.828125,-0.33203125,-0.9375,1.0703125,-0.27929688,0.91796875,0.1640625,0.022216797,0.90234375,-0.23339844,-0.03466797,1.328125,-1.7265625,-0.96484375,-2.390625,0.6640625,1.984375,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.73828125,-0.020141602,0.9453125,1.3671875,-0.044921875,0.6171875,-2.15625,-0.27734375,0.072265625,1.75,0.7109375,2.03125,0.43359375,0.5859375,0.18847656,1.25,0.28515625,-0.23242188,-1.3515625,-0.80078125,-0.1328125,-0.43164062,-0.9765625,0.012329102,-0.064941406,-0.609375,-0.1640625,0.53515625,0.34765625,-0.3828125,1.3359375,0.23632812,0.1640625,0.06542969,-1.0625,0.59375,0.047851562,-0.16796875,0.390625,-0.828125,0.6796875,0.09082031,2.09375,-0.044677734,-0.42578125,0.03955078,1.2734375,0.609375,1.578125,0.9140625,-0.08691406,0.9765625,-1.328125,0.515625,-1.7421875,0.35351562,0.9609375,2.203125,1.7890625,-0.40820312,-0.068359375,-1.421875,-0.33203125,0.012512207,0.96484375,1.03125,0.87890625,-0.18457031,1.0234375,-0.17285156,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0068969727,-0.37890625,-0.22851562,2.546875,-0.88671875,-0.47851562,-0.890625,-0.35546875,-1.03125,0.99609375,0.6875,2.0625,-1.8828125,-0.86328125,-2.96875,-0.21582031,0.19042969,-0.98046875,1.2421875,0.17089844,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.078125,-1.875,0.58984375,0.53515625,-0.546875,0.111816406,-2.1875,0.32226562,0.89453125,1.703125,1.21875,-0.62109375,-0.49414062,-1.625,1.078125,-0.37695312,0.12890625,-0.041015625,-1.359375,-0.7890625,1.4296875,0.19238281,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.96875,-0.33007812,0.079589844,-1.296875,-0.1484375,-0.26953125,0.29296875,0.46679688,-0.58203125,-0.32421875,0.47265625,-1.109375,0.9921875,0.953125,0.25,0.984375,-1.546875,0.041015625,-0.103515625,1.0,0.53125,0.62109375,-0.87890625,-0.49804688,-0.32421875,-0.24511719,0.0625,-0.54296875,-1.046875,-1.2421875,0.31640625,-0.036132812,-0.86328125,1.2890625,0.119140625,1.921875,-0.23046875,0.09375,0.42382812 +0,0,5,0.25,-0.0029144287,-1.1171875,-0.29296875,1.234375,0.76953125,-0.5703125,1.0390625,0.96875,-0.13964844,0.67578125,2.8125,0.44726562,0.28320312,-0.90234375,-0.04638672,-0.67578125,0.5625,3.265625,1.6875,1.015625,-0.90625,0.640625,0.2578125,0.030883789,0.79296875,-0.56640625,-0.4375,-0.921875,-0.87890625,0.09814453,0.05859375,0.16503906,1.140625,-1.125,0.0069274902,0.2890625,0.23144531,0.19335938,0.017700195,-0.37890625,-0.42578125,-0.25585938,-1.0703125,0.119628906,0.7578125,0.14355469,-1.484375,0.13476562,0.1328125,0.5,-1.5390625,0.068847656,0.119628906,-1.3515625,0.05126953,-0.33789062,-0.44726562,1.2265625,-1.2734375,-0.068359375,-0.36132812,2.1875,-0.40820312,-0.6953125,-1.1640625,0.025756836,-1.3984375,-0.2578125,0.8203125,0.047607422,1.4140625,-0.53125,-0.78515625,1.09375,2.859375,-0.90234375,-0.13671875,-2.34375,0.025390625,0.49414062,-0.068359375,0.54296875,0.31054688,0.04711914,-0.296875,-1.15625,-1.3359375,0.390625,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.013427734,-0.026367188,-0.32617188,0.5390625,-0.765625,-0.25195312,-0.16503906,0.24121094,1.0078125,-1.234375,-1.4609375,0.27148438,-0.640625,0.6953125,-0.45507812,-0.14746094,1.203125,0.5,0.14160156,-0.24804688,1.4375,-1.5390625,-1.0,-0.41992188,0.8203125,0.18652344,-0.21972656,0.39257812,0.47460938,-0.125,-1.484375,2.40625,-0.49804688,-1.2890625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40625,-1.6953125,0.546875,-1.3671875,-0.62109375,-0.08544922,-0.78515625,1.4140625,-1.640625,-0.875,2.03125,-0.671875,-0.375,-0.14160156,0.99609375,-0.76953125,0.38671875,1.1015625,-0.94140625,0.55078125,-0.875,-1.03125,-0.088378906,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.3984375,0.73046875,2.28125,0.068847656,0.079589844,-1.28125,-2.375,1.7734375,0.033935547,0.3828125,-0.79296875,-0.33398438,0.7421875,-0.94921875,-0.19433594,-0.90234375,-1.125,-0.6953125,0.64453125,-0.765625,-0.052490234,0.4140625,1.109375,-1.4453125,0.9375,-0.9609375,-1.2890625,1.796875,-0.9375,-1.4140625,-0.5390625,0.43554688,-0.58203125,-0.20507812,1.3828125,-0.4140625,0.30859375,0.33789062,1.2265625 +0,0,6,0.29882812,0.50390625,0.65625,-0.48828125,0.25976562,-0.027954102,0.671875,-0.6015625,0.59375,-0.66796875,0.68359375,0.09765625,1.609375,-0.73046875,0.0064086914,-0.31640625,-0.19628906,0.00049972534,2.625,0.16210938,-0.15332031,-1.3984375,0.66796875,0.05883789,-0.703125,-1.0078125,0.296875,-0.3125,-0.3828125,1.609375,0.64453125,-1.0703125,1.5078125,-1.40625,0.19335938,0.20996094,0.06640625,-1.046875,-0.84765625,0.8203125,-2.15625,0.29101562,-0.828125,-0.6484375,-0.27539062,-0.51953125,0.3125,-0.97265625,1.3359375,0.67578125,-0.78515625,0.34570312,-0.93359375,1.5390625,0.20117188,-0.30078125,0.13769531,-0.42382812,-1.140625,-0.83203125,1.3515625,0.5078125,-0.05419922,1.2578125,-0.18945312,0.4453125,-0.06201172,-1.8046875,-1.265625,1.546875,-0.66796875,0.5859375,0.64453125,0.061279297,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.015563965,-0.80859375,-0.6640625,0.5625,-0.1796875,-0.27734375,-0.609375,-1.234375,-1.9375,1.484375,-0.5078125,1.1953125,0.94921875,-0.96484375,0.328125,-1.1015625,-0.73828125,-1.921875,-0.75390625,-1.296875,0.042236328,-1.375,1.125,1.796875,-0.018066406,0.44335938,2.609375,-1.0390625,0.59375,0.28710938,-0.62109375,0.703125,1.1484375,0.64453125,-0.075683594,0.46484375,0.31054688,-0.21679688,0.24121094,-0.06591797,1.3046875,0.54296875,-0.61328125,1.1953125,-0.91015625,-1.1171875,1.1171875,-1.8125,-1.3984375,-0.19140625,-0.10058594,1.109375,-0.609375,-0.54296875,-1.359375,0.3828125,0.40234375,0.39453125,-0.40429688,0.21484375,-1.875,2.5,0.5703125,-0.67578125,2.328125,-0.25,-1.5234375,2.21875,-1.0859375,-1.34375,0.82421875,-0.9609375,0.203125,1.03125,-1.4140625,-0.32421875,-0.034423828,1.2578125,-0.82421875,1.09375,0.31835938,-0.39257812,-0.53515625,2.390625,1.78125,-0.953125,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30859375,-0.5,-1.7265625,-0.9140625,-0.890625,0.265625,0.98046875,-1.4375,0.50390625,0.26171875,-1.921875,-1.015625,1.171875,0.2734375,-1.5390625,-0.41796875,0.43164062,-0.20996094,-0.65234375,-0.05810547,-1.703125,1.78125,1.1796875,-0.53125,-1.0859375,0.90234375,1.796875,-0.3515625,1.3671875,1.0703125 +0,0,7,0.66796875,1.21875,-1.203125,-1.3125,-0.515625,-1.90625,0.31640625,1.1875,-0.52734375,-0.67578125,-0.053466797,-1.203125,-1.828125,-0.33203125,-0.9296875,1.0625,-0.27734375,0.91796875,0.1640625,0.020629883,0.90234375,-0.234375,-0.03466797,1.3359375,-1.71875,-0.96484375,-2.375,0.6640625,1.9921875,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.734375,-0.017211914,0.9375,1.3671875,-0.049804688,0.62109375,-2.15625,-0.27539062,0.072753906,1.7578125,0.71484375,2.015625,0.43164062,0.59765625,0.1875,1.25,0.28320312,-0.22949219,-1.3515625,-0.796875,-0.13183594,-0.43359375,-0.98046875,0.012390137,-0.06347656,-0.61328125,-0.1640625,0.53515625,0.34960938,-0.38085938,1.328125,0.23535156,0.16503906,0.06347656,-1.0703125,0.59765625,0.049316406,-0.171875,0.390625,-0.8359375,0.6796875,0.08544922,2.09375,-0.043945312,-0.42773438,0.03857422,1.2734375,0.609375,1.5703125,0.9140625,-0.08544922,0.98828125,-1.328125,0.515625,-1.7421875,0.3515625,0.95703125,2.21875,1.796875,-0.41015625,-0.068847656,-1.40625,-0.328125,0.013549805,0.96875,1.0390625,0.875,-0.18457031,1.03125,-0.17382812,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0077819824,-0.37890625,-0.22558594,2.546875,-0.8828125,-0.4765625,-0.88671875,-0.35351562,-1.0390625,0.98828125,0.68359375,2.046875,-1.875,-0.86328125,-2.953125,-0.21582031,0.18847656,-0.98046875,1.25,0.17382812,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.0703125,-1.8828125,0.58984375,0.53515625,-0.55078125,0.111816406,-2.1875,0.32421875,0.89453125,1.7109375,1.2109375,-0.6171875,-0.49804688,-1.625,1.0703125,-0.37695312,0.13085938,-0.041992188,-1.3515625,-0.7890625,1.4375,0.19433594,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.9609375,-0.32617188,0.078125,-1.3046875,-0.15039062,-0.26953125,0.29296875,0.46679688,-0.5859375,-0.32421875,0.46875,-1.1015625,0.984375,0.953125,0.25,0.99609375,-1.546875,0.041992188,-0.1015625,1.0,0.53515625,0.62109375,-0.8828125,-0.50390625,-0.32617188,-0.24804688,0.064453125,-0.5390625,-1.0546875,-1.234375,0.31640625,-0.037841797,-0.87890625,1.296875,0.1171875,1.8984375,-0.2265625,0.09667969,0.42578125 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv index f802b0fc..a0974d2a 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,5,1.0546875,0.89453125,-0.546875,0.82421875,-0.65234375,-0.37695312,0.7734375,1.6484375,0.55859375,-1.6171875,-0.53515625,0.546875,0.7578125,-0.09765625,-1.4453125,0.83203125,-0.057617188,0.5859375,0.33789062,-0.37304688,0.83984375,-0.93359375,-0.035888672,-0.9140625,0.16015625,-0.9453125,-1.5078125,-0.14550781,-1.1484375,-0.8828125,1.3203125,-1.328125,1.71875,0.7578125,0.22753906,-1.578125,-0.12597656,-1.7265625,-0.7265625,-1.1328125,-1.2421875,-1.3046875,-1.28125,0.015991211,-1.875,0.92578125,0.48046875,1.015625,1.125,1.546875,-1.3125,-0.12792969,-0.73046875,1.7578125,-0.671875,0.5078125,1.15625,0.66796875,-0.15429688,-0.22753906,0.05419922,0.51171875,0.08251953,-0.12109375,0.7265625,-0.578125,-0.8984375,-0.40625,-0.703125,0.25195312,1.59375,-1.8125,0.57421875,-1.046875,2.296875,2.59375,1.53125,0.82421875,-0.34375,-1.125,-0.38671875,-1.25,-0.42578125,-1.2734375,0.9375,-1.1875,1.28125,0.59765625,-0.30664062,1.4921875,2.234375,-1.34375,0.16992188,0.734375,-0.4609375,0.5703125,0.18554688,-0.6796875,-0.21484375,0.58203125,-1.5703125,1.15625,1.03125,-0.029785156,2.0,-0.55859375,0.40234375,0.57421875,0.8828125,1.5859375,-0.31835938,0.014892578,0.296875,-0.609375,1.0,-0.29101562,-1.6875,0.17382812,-0.15136719,-0.28515625,-0.66796875,-0.41015625,0.22363281,-0.024902344,-0.578125,0.58984375,0.57421875,-0.58984375,-0.5,-0.515625,-0.37890625,0.2109375,-0.25585938,-1.28125,-1.75,-0.46679688,-0.609375,0.37890625,-0.4921875,-2.34375,2.171875,-0.66796875,-0.51953125,-1.9375,-0.30664062,-0.19238281,-0.7265625,-1.09375,0.609375,3.640625,-0.44726562,1.0546875,-1.796875,0.828125,0.19726562,-0.984375,0.14550781,1.203125,0.29492188,-0.8515625,0.2578125,0.36914062,-0.029174805,0.12451172,-0.8359375,0.53125,0.1484375,0.83203125,1.96875,-2.34375,-0.33398438,0.29882812,-0.4140625,-0.25195312,0.27734375,1.15625,1.0078125,1.203125,-0.42773438,0.3828125,-0.828125,1.4375,0.87109375,0.13476562,0.32226562,-1.203125,1.4375,0.91796875,-1.3203125,-0.19238281,-0.40429688,-0.828125,0.8125,0.29296875,-1.6796875,1.109375,0.052001953,-0.037109375,-0.35351562,-0.3828125 -1,0,6,-0.5546875,1.2734375,-1.359375,-1.5078125,0.31054688,-1.9609375,0.34179688,1.6328125,1.59375,-0.58203125,0.21679688,1.03125,-0.953125,0.515625,-1.2109375,0.53515625,0.26953125,0.22167969,-0.37304688,-0.07128906,0.33984375,-0.390625,1.328125,-0.036621094,-0.73828125,-0.9296875,-2.421875,1.1015625,1.578125,-0.47851562,1.375,0.20800781,-1.125,0.1484375,1.5703125,-1.09375,0.6640625,0.87109375,-0.77734375,1.0546875,-1.5546875,0.43164062,-0.21777344,-0.265625,-0.3203125,2.609375,-0.060058594,1.8125,1.15625,1.6015625,-1.0234375,1.078125,-0.63671875,-0.09033203,-0.828125,-0.088378906,-0.51953125,0.484375,-1.109375,1.3984375,0.39453125,0.9453125,-0.15917969,0.609375,0.546875,-1.1953125,-0.12451172,0.71875,-1.6484375,1.2578125,0.53125,0.78125,2.0625,-0.5390625,0.5625,2.078125,0.5078125,0.703125,-0.8359375,-0.40429688,0.48242188,-0.36328125,0.765625,-0.13183594,-0.12011719,0.9296875,-1.421875,-0.26757812,-1.15625,-0.68359375,0.58203125,1.5390625,0.99609375,-0.25976562,0.78515625,-1.875,-0.5390625,-0.25976562,0.41015625,-0.5625,0.14648438,0.4921875,0.6953125,0.15722656,-0.765625,0.06347656,-1.046875,-0.40039062,0.044677734,0.5703125,-1.6484375,-0.067871094,1.6640625,-2.3125,0.64453125,-0.14941406,-1.578125,-0.31054688,0.921875,0.083496094,1.1796875,-2.359375,0.028686523,-1.3671875,0.37890625,0.97265625,-0.25976562,-1.359375,1.03125,-0.24902344,-1.3203125,-0.91015625,-0.5390625,0.5859375,-1.90625,1.5390625,1.1953125,-0.19335938,0.9140625,-2.03125,1.3046875,0.12695312,0.6484375,0.83203125,-1.234375,-1.3359375,-0.81640625,-1.3046875,-1.4609375,-0.6953125,0.60546875,-0.61328125,-0.48242188,0.87109375,-0.73828125,1.8203125,0.5625,0.39453125,0.4609375,0.29492188,-0.26757812,1.1171875,0.7265625,0.36523438,0.02722168,-0.7265625,-0.38671875,0.76171875,-0.49414062,-2.0,-1.03125,-0.060791016,-1.5859375,-0.6953125,0.8515625,-0.12402344,1.0703125,0.84375,-0.31445312,0.020874023,0.08251953,-1.1171875,0.30664062,0.16894531,0.3359375,0.06591797,-0.83203125,-0.84765625,-1.7734375,-0.99609375,0.29101562,0.8203125,-0.7265625,0.6796875,-0.81640625,2.625,2.03125,0.100097656,-0.8984375,-0.48632812 -1,0,7,1.2578125,0.5703125,-0.98828125,0.10546875,-1.359375,-0.1171875,0.61328125,1.0078125,-1.1640625,-1.4609375,-0.21484375,-0.38085938,-0.4296875,0.453125,-1.75,-0.8203125,-1.0625,0.2890625,-0.953125,-0.53125,0.59375,-0.22070312,-0.578125,-0.46289062,-0.10107422,-2.1875,-2.390625,-0.43554688,-0.014282227,0.19238281,-0.3828125,-1.4453125,0.28710938,0.87890625,-0.32617188,-0.546875,-0.09814453,-2.375,0.44921875,-0.083496094,0.41210938,-0.21386719,-0.86328125,1.2421875,0.94140625,0.34960938,-1.0234375,0.6015625,-0.019897461,1.171875,0.16308594,-0.20117188,-1.65625,0.70703125,-0.90625,-0.671875,-0.640625,1.265625,-1.0546875,-1.0234375,-0.28125,0.765625,1.2734375,0.7734375,1.921875,-0.3515625,-0.28125,-0.5078125,-1.9375,0.49804688,1.2109375,-0.36523438,1.65625,-0.69140625,0.890625,0.82421875,2.515625,1.2265625,0.60546875,0.10253906,-0.4140625,-0.38476562,0.375,-1.3359375,-0.28125,1.0,0.32421875,-0.60546875,0.23828125,0.984375,0.5390625,1.34375,0.22363281,0.578125,-0.9609375,-1.2890625,-0.7421875,-0.13378906,1.1484375,1.0859375,0.390625,1.25,-0.30078125,-1.2421875,1.2734375,-1.078125,-0.7109375,0.69140625,0.41210938,-0.33398438,-0.9609375,1.0078125,1.578125,0.26953125,0.118652344,0.47070312,-0.30859375,0.515625,0.12451172,1.921875,0.30664062,-2.09375,-1.1484375,-0.6015625,-0.055664062,-1.25,0.17285156,-1.046875,0.0017166138,-0.16894531,0.421875,-0.5703125,-0.19140625,-0.022949219,-1.046875,2.453125,-0.91015625,-1.703125,1.4140625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.875,0.31054688,0.375,0.20019531,2.1875,3.578125,0.41992188,0.265625,-1.6171875,1.0234375,-0.008728027,0.29492188,0.66015625,1.140625,-1.359375,0.62890625,0.9765625,1.734375,0.8046875,-0.62109375,-0.5078125,-0.546875,-0.34765625,1.6796875,0.51953125,-1.7578125,-0.61328125,-0.93359375,0.23242188,-0.55078125,0.703125,1.390625,-0.3125,1.1171875,1.328125,-0.14257812,0.067871094,0.123535156,1.359375,-0.640625,0.48828125,-0.2890625,0.64453125,1.4140625,-0.0038909912,-1.5234375,0.21582031,-1.6015625,0.54296875,-1.7265625,-0.80859375,1.2109375,0.30664062,-1.0859375,-1.2421875,-0.35742188 +1,0,5,1.0546875,0.89453125,-0.55078125,0.83203125,-0.65234375,-0.37890625,0.77734375,1.6484375,0.5625,-1.6171875,-0.53515625,0.54296875,0.76953125,-0.1015625,-1.4453125,0.828125,-0.05859375,0.58203125,0.34179688,-0.37304688,0.83984375,-0.9375,-0.032226562,-0.9140625,0.15820312,-0.953125,-1.5078125,-0.14160156,-1.1484375,-0.87890625,1.3203125,-1.3359375,1.71875,0.76171875,0.22167969,-1.578125,-0.122558594,-1.7265625,-0.7265625,-1.125,-1.2421875,-1.296875,-1.28125,0.017822266,-1.8828125,0.9296875,0.48046875,1.0078125,1.125,1.546875,-1.3046875,-0.13378906,-0.73046875,1.7421875,-0.671875,0.5078125,1.15625,0.66796875,-0.15234375,-0.23046875,0.05883789,0.51171875,0.08251953,-0.12207031,0.72265625,-0.5859375,-0.90625,-0.40429688,-0.7109375,0.25195312,1.5859375,-1.8125,0.57421875,-1.0390625,2.296875,2.609375,1.5390625,0.82421875,-0.34179688,-1.1328125,-0.38085938,-1.25,-0.42578125,-1.2734375,0.9296875,-1.1875,1.28125,0.59765625,-0.3046875,1.4921875,2.25,-1.3359375,0.16992188,0.734375,-0.45703125,0.57421875,0.19042969,-0.67578125,-0.21484375,0.5859375,-1.5703125,1.15625,1.03125,-0.02734375,1.9921875,-0.55859375,0.40429688,0.57421875,0.87890625,1.59375,-0.31835938,0.0119018555,0.296875,-0.61328125,1.0,-0.2890625,-1.6953125,0.16992188,-0.15234375,-0.28125,-0.66796875,-0.40039062,0.22363281,-0.026977539,-0.57421875,0.5859375,0.5703125,-0.59375,-0.48828125,-0.515625,-0.38476562,0.2109375,-0.25195312,-1.28125,-1.7578125,-0.46484375,-0.609375,0.37695312,-0.49609375,-2.328125,2.15625,-0.66796875,-0.5234375,-1.9453125,-0.30859375,-0.19140625,-0.7265625,-1.09375,0.61328125,3.640625,-0.44921875,1.0625,-1.7890625,0.828125,0.19335938,-0.9921875,0.14355469,1.2109375,0.29492188,-0.8515625,0.2578125,0.36523438,-0.029418945,0.12792969,-0.83984375,0.53125,0.15625,0.8359375,1.9765625,-2.328125,-0.33203125,0.29882812,-0.41601562,-0.25195312,0.27539062,1.1328125,1.0078125,1.203125,-0.42773438,0.38476562,-0.83203125,1.4375,0.875,0.13183594,0.32617188,-1.203125,1.4296875,0.91015625,-1.328125,-0.1953125,-0.41015625,-0.8203125,0.8203125,0.29101562,-1.6875,1.109375,0.049072266,-0.037353516,-0.34960938,-0.3828125 +1,0,6,-0.5546875,1.265625,-1.3671875,-1.5078125,0.30664062,-1.9453125,0.34375,1.6328125,1.609375,-0.58984375,0.21875,1.03125,-0.9453125,0.515625,-1.21875,0.53515625,0.2734375,0.21972656,-0.37109375,-0.07373047,0.33984375,-0.39453125,1.3359375,-0.0390625,-0.7421875,-0.921875,-2.421875,1.1015625,1.578125,-0.4765625,1.3671875,0.21191406,-1.1171875,0.14941406,1.5703125,-1.0859375,0.6640625,0.86328125,-0.7734375,1.046875,-1.546875,0.43164062,-0.22070312,-0.26953125,-0.32421875,2.625,-0.06201172,1.8125,1.140625,1.609375,-1.03125,1.0859375,-0.640625,-0.09033203,-0.82421875,-0.08984375,-0.51953125,0.48828125,-1.109375,1.40625,0.3984375,0.94140625,-0.16015625,0.609375,0.54296875,-1.203125,-0.12695312,0.71875,-1.65625,1.265625,0.52734375,0.7890625,2.046875,-0.53515625,0.55859375,2.09375,0.51171875,0.703125,-0.8359375,-0.40039062,0.48242188,-0.36523438,0.76171875,-0.13378906,-0.119628906,0.94140625,-1.421875,-0.27148438,-1.1640625,-0.6796875,0.5859375,1.53125,0.98046875,-0.25976562,0.7890625,-1.875,-0.53515625,-0.26171875,0.40625,-0.55859375,0.14160156,0.49414062,0.6953125,0.15527344,-0.76953125,0.068847656,-1.046875,-0.40039062,0.041259766,0.56640625,-1.6484375,-0.068359375,1.6640625,-2.3125,0.6484375,-0.14941406,-1.5625,-0.3125,0.91796875,0.08203125,1.171875,-2.34375,0.026367188,-1.359375,0.37890625,0.96484375,-0.26171875,-1.359375,1.0390625,-0.24902344,-1.328125,-0.91796875,-0.5390625,0.578125,-1.8984375,1.5390625,1.1875,-0.1953125,0.91015625,-2.03125,1.296875,0.123535156,0.6484375,0.8359375,-1.2421875,-1.3359375,-0.81640625,-1.3203125,-1.453125,-0.703125,0.60546875,-0.61328125,-0.48242188,0.875,-0.73828125,1.828125,0.5625,0.39453125,0.45898438,0.29101562,-0.27148438,1.1171875,0.73046875,0.36914062,0.026733398,-0.72265625,-0.38671875,0.7578125,-0.49414062,-1.9921875,-1.03125,-0.05883789,-1.578125,-0.6953125,0.8515625,-0.13183594,1.0703125,0.84375,-0.31445312,0.021362305,0.08154297,-1.1171875,0.30664062,0.16894531,0.33203125,0.06640625,-0.82421875,-0.8515625,-1.7734375,-1.0,0.2890625,0.81640625,-0.7265625,0.68359375,-0.81640625,2.640625,2.03125,0.09814453,-0.8984375,-0.48242188 +1,0,7,1.2578125,0.5703125,-0.9921875,0.103515625,-1.359375,-0.11767578,0.609375,1.0078125,-1.1640625,-1.4453125,-0.21582031,-0.37890625,-0.42382812,0.453125,-1.7421875,-0.8203125,-1.0625,0.28320312,-0.953125,-0.53125,0.59375,-0.21972656,-0.57421875,-0.46679688,-0.107421875,-2.171875,-2.390625,-0.4375,-0.008850098,0.19433594,-0.38085938,-1.4453125,0.2890625,0.87890625,-0.328125,-0.546875,-0.09423828,-2.390625,0.45507812,-0.08203125,0.40820312,-0.20996094,-0.859375,1.2421875,0.9375,0.3515625,-1.0234375,0.60546875,-0.025146484,1.1640625,0.16015625,-0.19824219,-1.65625,0.70703125,-0.90625,-0.67578125,-0.63671875,1.25,-1.0625,-1.03125,-0.28125,0.765625,1.265625,0.7734375,1.921875,-0.34960938,-0.28125,-0.5078125,-1.9296875,0.5,1.21875,-0.36132812,1.6640625,-0.6953125,0.8828125,0.828125,2.53125,1.234375,0.609375,0.099609375,-0.41210938,-0.3828125,0.37109375,-1.3359375,-0.27734375,0.99609375,0.31835938,-0.60546875,0.24121094,0.984375,0.5390625,1.34375,0.21972656,0.58203125,-0.95703125,-1.2890625,-0.734375,-0.13476562,1.1484375,1.0859375,0.38085938,1.2578125,-0.296875,-1.2265625,1.2578125,-1.078125,-0.71484375,0.69140625,0.41015625,-0.33398438,-0.96875,1.015625,1.578125,0.26367188,0.119628906,0.46679688,-0.3046875,0.515625,0.122558594,1.921875,0.30664062,-2.109375,-1.1484375,-0.59765625,-0.056152344,-1.25,0.171875,-1.046875,0.001335144,-0.16796875,0.421875,-0.5703125,-0.18945312,-0.022338867,-1.046875,2.4375,-0.9140625,-1.6875,1.40625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.8671875,0.30664062,0.375,0.20214844,2.203125,3.59375,0.41992188,0.26367188,-1.609375,1.015625,-0.0071411133,0.29492188,0.65625,1.1484375,-1.359375,0.62890625,0.97265625,1.75,0.8046875,-0.62109375,-0.51171875,-0.55078125,-0.3515625,1.6796875,0.5234375,-1.7578125,-0.62109375,-0.94140625,0.23242188,-0.55078125,0.703125,1.3984375,-0.3125,1.1171875,1.3125,-0.14257812,0.064941406,0.122558594,1.3671875,-0.64453125,0.49023438,-0.2890625,0.640625,1.4140625,-0.0033111572,-1.515625,0.21582031,-1.6015625,0.5390625,-1.7421875,-0.81640625,1.2109375,0.30273438,-1.09375,-1.234375,-0.36328125 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv index df728e04..6031742c 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,5,1.2109375,-0.096191406,-1.3359375,-0.6015625,0.9609375,-1.484375,-0.8203125,3.140625,-0.5234375,-1.6640625,0.0234375,1.5859375,-0.53515625,-0.75,-0.5703125,1.75,-0.27148438,-1.40625,0.059570312,0.48632812,-1.375,-0.6796875,-0.44921875,1.2421875,-0.095703125,0.33007812,-2.484375,-0.15527344,-0.890625,-0.06933594,-0.020141602,0.7890625,0.6953125,0.7734375,-0.07373047,-1.0546875,1.25,-0.171875,0.515625,0.6953125,-0.06201172,-0.008300781,0.11279297,-0.78125,-0.115234375,0.65625,-0.46484375,0.96484375,-0.43945312,2.21875,-0.609375,-2.234375,-1.3359375,-0.048339844,-0.15039062,-0.33398438,0.921875,0.29882812,0.40234375,-1.046875,-0.3671875,1.4765625,-0.12988281,0.53515625,-0.26953125,-0.030273438,-0.00074005127,1.4765625,0.16796875,-0.11328125,-0.4140625,-0.2890625,0.9140625,-0.67578125,1.6328125,2.140625,0.62890625,0.26953125,-0.24414062,-0.75390625,1.671875,0.7578125,0.53515625,-0.6328125,-0.44140625,-1.1484375,1.328125,1.84375,0.50390625,1.65625,1.734375,-0.7734375,-1.046875,1.375,-0.28320312,0.033691406,-1.7265625,-0.73828125,-1.0859375,-0.21875,-1.0703125,-0.24804688,1.4296875,0.94140625,-0.46875,0.25390625,-1.640625,-0.62109375,-0.28515625,0.016479492,-1.140625,-1.9453125,1.421875,-2.265625,0.84765625,0.27539062,-2.0625,1.2734375,-0.30273438,-1.21875,1.2578125,-0.47265625,-0.92578125,-0.36523438,0.4140625,2.71875,-0.43945312,-0.41210938,0.4453125,-1.8671875,-1.484375,-1.640625,0.3671875,-1.1015625,-0.8984375,-0.012451172,1.3203125,0.34960938,0.43359375,-1.3515625,1.453125,-1.8203125,-0.6328125,-0.15917969,0.16210938,0.47070312,-0.32226562,0.83984375,-0.73828125,0.828125,-0.6171875,-0.019165039,0.80859375,-0.453125,0.046142578,-0.76171875,0.31835938,0.014770508,1.6640625,1.015625,-1.1484375,1.859375,1.2890625,0.8203125,-0.57421875,0.77734375,0.17285156,1.3203125,1.2578125,0.7734375,-1.2890625,-0.16796875,0.06640625,1.09375,-1.28125,0.43359375,0.35351562,-0.6953125,-0.056884766,-1.171875,0.46679688,0.38476562,0.3046875,-1.0859375,0.22265625,-0.24023438,-1.40625,0.0134887695,-0.84375,-1.34375,0.21386719,1.4375,-0.11621094,-0.42773438,0.123046875,1.1953125,0.49804688,0.6015625,-1.0703125,0.45703125 -2,0,6,0.31445312,-0.33398438,-0.72265625,-0.44140625,0.40625,-0.546875,-0.005645752,1.578125,-0.13769531,-0.8359375,-0.5390625,-0.37695312,1.2265625,0.5,-1.6484375,0.4453125,-0.51953125,-1.984375,0.42773438,-0.6953125,0.5625,-0.328125,-0.27734375,-0.06689453,-1.328125,-1.8125,-1.625,-0.088378906,-2.0625,0.48828125,-0.68359375,-1.1171875,0.55859375,0.076660156,0.546875,1.671875,0.625,-1.453125,-1.8671875,1.1875,-1.4765625,0.34960938,-0.54296875,-0.04272461,0.23144531,1.0625,0.5546875,-0.55078125,0.2421875,1.734375,-2.109375,-1.3203125,-1.4140625,0.7265625,-1.96875,0.6171875,0.12792969,-0.671875,-0.19238281,-2.171875,1.1875,-0.16015625,0.42773438,-0.07324219,0.17675781,0.05517578,-1.0859375,0.18652344,-0.67578125,2.0,0.90625,-1.609375,-0.45898438,-0.5,0.045410156,1.921875,1.109375,1.1015625,-0.61328125,-0.8828125,1.5546875,0.32226562,0.27539062,-0.5078125,-0.671875,-0.028320312,0.28125,0.9609375,-0.6640625,0.6796875,2.109375,-0.17285156,0.1484375,0.41992188,-1.3984375,-0.19824219,-0.3046875,-0.53125,1.421875,-0.33007812,-2.25,0.140625,2.21875,1.15625,-0.46875,-0.22851562,1.4765625,-0.9296875,0.40429688,0.7109375,0.27539062,0.35742188,0.859375,-1.4375,0.30859375,-0.47070312,0.18945312,-0.26953125,-0.66015625,-0.65625,1.3359375,-0.55078125,0.4140625,-1.1875,-0.24414062,1.2734375,-0.44921875,-2.3125,-0.006286621,-0.04321289,0.6796875,-0.061035156,0.19140625,-1.3046875,-1.328125,-0.20019531,-0.35351562,-0.46875,-0.01928711,-1.8046875,3.09375,-0.765625,0.390625,-0.052246094,-0.067871094,1.8359375,-1.21875,-0.016967773,-1.9296875,1.921875,0.23535156,1.140625,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.43359375,1.625,1.4453125,0.66796875,-0.72265625,1.34375,1.3671875,0.49609375,-1.3359375,0.53515625,-1.1171875,-0.33789062,2.375,-0.25390625,0.22949219,-0.1484375,-0.66796875,-0.31445312,0.12011719,0.453125,-0.94140625,-0.91796875,0.9296875,-0.5859375,-0.17871094,-0.107421875,1.2734375,0.49023438,0.66015625,-0.30078125,1.3203125,0.8203125,-0.5390625,-1.046875,-0.23730469,0.53515625,2.15625,0.02746582,0.828125,-0.15429688,1.4140625,-0.2109375,1.2265625,0.26953125 -2,0,7,0.7734375,0.110839844,-0.36914062,-0.22363281,0.2109375,-0.76171875,-0.26953125,1.4140625,0.5546875,-1.09375,0.5859375,1.421875,0.44335938,0.55078125,-1.59375,0.796875,0.18847656,-1.203125,-0.11621094,0.1171875,0.9921875,-0.53515625,-0.3984375,0.57421875,-0.29492188,-0.7265625,-0.51171875,0.061035156,-1.0078125,-0.061035156,-0.68359375,-0.51171875,1.796875,-0.453125,1.28125,1.59375,0.828125,-0.15820312,-2.21875,1.7265625,-1.8359375,0.37695312,-0.59765625,-0.049316406,0.62890625,0.81640625,-0.3359375,-0.1328125,-0.4453125,1.90625,-1.3671875,-0.10986328,-0.6875,-0.08984375,-0.796875,0.71484375,0.6171875,0.60546875,-0.079589844,-1.25,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53125,-0.52734375,1.265625,-0.10205078,-1.171875,-0.099609375,0.609375,-0.15625,1.9375,1.390625,0.38867188,-0.99609375,-1.46875,1.390625,-0.20019531,0.59765625,-1.2890625,-1.375,-0.33789062,0.19042969,1.40625,-0.8125,0.359375,1.9609375,-0.03515625,-0.8203125,0.62109375,-1.5390625,0.94140625,-0.17578125,0.88671875,0.73828125,0.9921875,-2.46875,0.011230469,2.0,1.03125,-1.390625,0.35351562,0.90625,-1.6640625,-1.0703125,0.18066406,0.578125,-0.36328125,1.546875,-1.5078125,-0.36132812,-1.21875,0.953125,-0.04736328,-0.3046875,-1.296875,2.125,0.44140625,-0.6015625,-1.2578125,0.60546875,0.41992188,-0.73046875,-2.171875,0.26367188,-0.36523438,0.1796875,-1.171875,-0.54296875,-0.79296875,-1.8515625,1.6640625,0.30664062,-0.625,-0.5390625,-1.3515625,1.8125,-1.6953125,-0.6875,-0.3828125,-0.17773438,1.3125,-0.5859375,0.5234375,-2.6875,-0.1171875,0.2578125,1.1328125,0.69921875,-1.03125,-0.23046875,-0.77734375,0.8984375,0.4765625,1.1171875,0.55078125,-0.41015625,0.36523438,-0.26171875,0.91796875,-1.5625,1.2734375,-1.1015625,-0.578125,1.3984375,0.091308594,-1.6796875,-0.7890625,-0.640625,-0.34960938,0.16503906,0.36523438,0.80078125,-0.46875,0.30859375,-0.8359375,-0.49804688,-0.031982422,0.640625,-0.49023438,1.234375,-1.5625,0.46875,0.61328125,0.24804688,-0.86328125,1.09375,1.546875,0.859375,-0.74609375,-0.7109375,-0.66796875,2.21875,1.6484375,1.2109375,-0.24121094 +2,0,5,1.203125,-0.09814453,-1.3359375,-0.6015625,0.96484375,-1.4765625,-0.8203125,3.140625,-0.5234375,-1.671875,0.023925781,1.5859375,-0.53125,-0.74609375,-0.57421875,1.7421875,-0.26953125,-1.3984375,0.059326172,0.48828125,-1.3671875,-0.6796875,-0.44921875,1.234375,-0.09033203,0.32617188,-2.5,-0.15136719,-0.8828125,-0.06982422,-0.022216797,0.78515625,0.69140625,0.7734375,-0.07470703,-1.0546875,1.2578125,-0.17285156,0.515625,0.6875,-0.0625,-0.008483887,0.11669922,-0.7890625,-0.11816406,0.65625,-0.46875,0.96875,-0.43945312,2.21875,-0.60546875,-2.21875,-1.3359375,-0.04736328,-0.15039062,-0.33203125,0.91796875,0.296875,0.40039062,-1.046875,-0.36523438,1.484375,-0.1328125,0.53515625,-0.265625,-0.03125,-0.002380371,1.4921875,0.16699219,-0.11767578,-0.4140625,-0.29296875,0.8984375,-0.671875,1.625,2.140625,0.625,0.2734375,-0.2421875,-0.75,1.671875,0.75,0.53515625,-0.62890625,-0.44140625,-1.1640625,1.328125,1.828125,0.49414062,1.65625,1.7421875,-0.7734375,-1.046875,1.3671875,-0.28710938,0.03100586,-1.7265625,-0.734375,-1.0859375,-0.21777344,-1.0625,-0.24414062,1.4375,0.94140625,-0.47265625,0.25195312,-1.640625,-0.62109375,-0.29101562,0.0234375,-1.140625,-1.9296875,1.4140625,-2.265625,0.84765625,0.27929688,-2.046875,1.2734375,-0.30078125,-1.21875,1.25,-0.4765625,-0.92578125,-0.36523438,0.4140625,2.75,-0.43164062,-0.40625,0.44335938,-1.8671875,-1.4765625,-1.640625,0.36914062,-1.1015625,-0.890625,-0.012817383,1.328125,0.34570312,0.43554688,-1.3515625,1.46875,-1.8203125,-0.62890625,-0.15527344,0.16113281,0.46875,-0.32421875,0.83203125,-0.73828125,0.83203125,-0.6171875,-0.018188477,0.8125,-0.4453125,0.045898438,-0.7578125,0.3203125,0.015563965,1.65625,1.015625,-1.1484375,1.875,1.2890625,0.8203125,-0.57421875,0.77734375,0.16894531,1.3125,1.2578125,0.76953125,-1.296875,-0.17089844,0.060546875,1.0859375,-1.28125,0.43359375,0.3515625,-0.69140625,-0.059326172,-1.171875,0.45898438,0.38476562,0.30273438,-1.09375,0.22363281,-0.24414062,-1.3984375,0.0134887695,-0.83984375,-1.3515625,0.20996094,1.421875,-0.11621094,-0.43164062,0.12207031,1.1953125,0.49609375,0.6015625,-1.0703125,0.4609375 +2,0,6,0.31445312,-0.33398438,-0.72265625,-0.4453125,0.40429688,-0.546875,-0.006439209,1.5859375,-0.13769531,-0.828125,-0.53515625,-0.375,1.2265625,0.49804688,-1.6484375,0.44726562,-0.5234375,-1.984375,0.42578125,-0.6875,0.5625,-0.32421875,-0.27734375,-0.06640625,-1.328125,-1.8203125,-1.640625,-0.08984375,-2.078125,0.49023438,-0.6875,-1.1171875,0.5625,0.07519531,0.546875,1.6796875,0.62109375,-1.453125,-1.8671875,1.1953125,-1.4765625,0.3515625,-0.54296875,-0.043701172,0.23144531,1.0625,0.5625,-0.546875,0.24023438,1.71875,-2.109375,-1.328125,-1.40625,0.73046875,-1.9921875,0.62109375,0.125,-0.66796875,-0.19140625,-2.140625,1.1796875,-0.16113281,0.42578125,-0.072265625,0.17675781,0.055908203,-1.0859375,0.18847656,-0.671875,2.0,0.90625,-1.6015625,-0.4609375,-0.49609375,0.044189453,1.921875,1.1171875,1.109375,-0.61328125,-0.8828125,1.5546875,0.31835938,0.27734375,-0.5078125,-0.67578125,-0.030639648,0.28710938,0.9609375,-0.66796875,0.67578125,2.125,-0.17285156,0.14941406,0.41796875,-1.390625,-0.19921875,-0.30273438,-0.53125,1.4140625,-0.328125,-2.25,0.14160156,2.25,1.15625,-0.46679688,-0.22851562,1.484375,-0.9296875,0.40039062,0.71484375,0.2734375,0.36328125,0.8515625,-1.4296875,0.30664062,-0.46875,0.18554688,-0.27148438,-0.65234375,-0.65625,1.328125,-0.55078125,0.4140625,-1.1875,-0.24609375,1.2734375,-0.44921875,-2.296875,-0.005645752,-0.041015625,0.671875,-0.061767578,0.19238281,-1.3046875,-1.34375,-0.19921875,-0.35351562,-0.47070312,-0.019042969,-1.8046875,3.0625,-0.76953125,0.39257812,-0.053955078,-0.06933594,1.828125,-1.234375,-0.01977539,-1.9375,1.921875,0.23632812,1.125,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.4375,1.6171875,1.4296875,0.671875,-0.71484375,1.3515625,1.375,0.49804688,-1.3359375,0.53515625,-1.1171875,-0.33984375,2.375,-0.25195312,0.2265625,-0.14550781,-0.66796875,-0.31835938,0.118652344,0.453125,-0.9375,-0.91796875,0.93359375,-0.58984375,-0.18164062,-0.10888672,1.265625,0.48828125,0.6640625,-0.30273438,1.3203125,0.82421875,-0.5390625,-1.0390625,-0.23242188,0.53125,2.15625,0.024658203,0.83203125,-0.15625,1.40625,-0.20996094,1.21875,0.27148438 +2,0,7,0.76953125,0.111328125,-0.36523438,-0.22363281,0.20703125,-0.7578125,-0.2734375,1.4140625,0.5546875,-1.09375,0.5859375,1.4140625,0.4375,0.54296875,-1.6015625,0.8046875,0.19335938,-1.2109375,-0.11230469,0.119628906,0.98828125,-0.5390625,-0.39257812,0.578125,-0.29296875,-0.73046875,-0.51171875,0.06201172,-1.0078125,-0.059814453,-0.68359375,-0.51171875,1.78125,-0.45117188,1.296875,1.59375,0.83203125,-0.16015625,-2.21875,1.7265625,-1.8359375,0.375,-0.59765625,-0.05078125,0.6328125,0.81640625,-0.33984375,-0.1328125,-0.4453125,1.90625,-1.375,-0.11328125,-0.6875,-0.08935547,-0.796875,0.71484375,0.62109375,0.60546875,-0.07861328,-1.2421875,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53515625,-0.53125,1.265625,-0.10449219,-1.1640625,-0.09814453,0.6171875,-0.15527344,1.9296875,1.390625,0.38671875,-1.0,-1.46875,1.3828125,-0.20019531,0.59765625,-1.2890625,-1.3671875,-0.3359375,0.19433594,1.40625,-0.81640625,0.36132812,1.9609375,-0.03540039,-0.8203125,0.62109375,-1.546875,0.93359375,-0.17773438,0.890625,0.734375,0.9921875,-2.46875,0.013305664,2.0,1.03125,-1.3984375,0.35546875,0.91015625,-1.6640625,-1.0703125,0.18652344,0.578125,-0.36132812,1.546875,-1.5078125,-0.359375,-1.21875,0.95703125,-0.045410156,-0.3046875,-1.296875,2.125,0.44140625,-0.59765625,-1.2734375,0.60546875,0.41992188,-0.73046875,-2.1875,0.26367188,-0.36523438,0.18261719,-1.1640625,-0.54296875,-0.79296875,-1.84375,1.65625,0.30859375,-0.62109375,-0.53125,-1.34375,1.8203125,-1.6953125,-0.68359375,-0.3828125,-0.17871094,1.3125,-0.58203125,0.51953125,-2.6875,-0.1171875,0.25976562,1.125,0.69921875,-1.0390625,-0.22753906,-0.78515625,0.90234375,0.47851562,1.1171875,0.54296875,-0.41015625,0.3671875,-0.26171875,0.91796875,-1.5703125,1.28125,-1.109375,-0.58203125,1.3984375,0.08935547,-1.6796875,-0.79296875,-0.64453125,-0.34960938,0.16503906,0.36328125,0.80078125,-0.4609375,0.31054688,-0.828125,-0.49804688,-0.03466797,0.640625,-0.48828125,1.234375,-1.5546875,0.47070312,0.61328125,0.24902344,-0.85546875,1.09375,1.546875,0.86328125,-0.7421875,-0.7109375,-0.67578125,2.21875,1.6484375,1.1953125,-0.23925781 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv index f0aaa556..1f353e1c 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,5,1.09375,-0.07519531,-1.4921875,0.24121094,0.8515625,-1.703125,-0.57421875,2.953125,-0.059326172,-0.76171875,0.22753906,2.6875,0.265625,-0.36328125,-0.703125,1.734375,0.27929688,-1.328125,0.359375,0.921875,-0.24414062,-0.734375,-0.65234375,0.55078125,0.94140625,1.328125,-2.703125,0.38085938,-0.60546875,-1.0234375,0.34570312,-0.042236328,1.6953125,1.3515625,0.55078125,-0.62890625,0.99609375,-0.015625,-0.40429688,0.10839844,0.044433594,0.30859375,-0.18164062,-1.65625,-0.13867188,0.875,-1.5703125,0.44921875,0.072265625,0.7890625,-0.8515625,-1.421875,-1.1796875,-1.046875,-0.18945312,-0.20800781,0.74609375,0.29882812,-0.24804688,-1.0703125,0.21289062,0.71484375,1.3125,0.80859375,-1.265625,-0.32421875,0.3125,0.28320312,-0.578125,-0.40234375,0.4140625,-0.42578125,0.50390625,-0.46679688,2.265625,3.09375,1.0390625,0.024169922,-0.80859375,-0.84375,1.4453125,0.6875,0.82421875,-1.6171875,0.03930664,-0.3984375,0.47460938,1.3125,0.578125,2.203125,1.8671875,-0.765625,-1.0078125,1.359375,-0.6171875,-0.091308594,-1.390625,0.0067749023,-0.1484375,0.6796875,-0.51171875,0.16601562,0.056640625,1.265625,-1.0390625,-0.18261719,-1.109375,0.03173828,-1.3828125,-0.35742188,-1.1328125,-1.53125,1.765625,-1.8828125,0.61328125,-0.036865234,-1.4609375,0.6953125,-0.0051879883,-0.39257812,1.2734375,0.11425781,-0.8828125,-0.10644531,-0.045166016,2.421875,-0.7578125,-0.62890625,1.40625,-1.5390625,-1.1640625,-2.8125,0.10205078,-0.89453125,-1.203125,0.33984375,1.1640625,-0.27929688,0.18359375,-1.1875,0.92578125,-1.2734375,-1.3984375,-0.55078125,-0.20117188,0.53515625,-0.8203125,0.765625,-0.34960938,0.02746582,0.41796875,-0.54296875,0.21386719,-1.2109375,0.28125,-0.12988281,0.96875,0.044189453,1.328125,0.58984375,-0.18164062,2.46875,0.42578125,0.94921875,-0.064453125,0.3984375,0.18652344,0.48046875,1.2734375,1.2578125,-1.03125,-0.640625,-0.88671875,0.9140625,-1.2890625,0.29492188,0.14257812,-0.30078125,0.23535156,-0.3046875,-0.546875,-0.32421875,0.49023438,-1.203125,0.546875,-0.5234375,-1.1015625,-0.90625,-0.51953125,-0.9921875,0.5703125,0.96875,-0.4296875,-0.80859375,-0.16503906,1.9296875,-0.18652344,0.93359375,-1.4609375,-0.16992188 -3,0,6,-0.31054688,0.45898438,-1.703125,-1.1796875,-0.609375,0.16015625,-0.45703125,2.109375,0.5625,-0.81640625,1.7421875,1.1171875,1.453125,-0.3671875,0.080078125,0.9609375,-0.07080078,-0.93359375,0.76171875,-0.53125,0.625,-0.010375977,0.8671875,0.96484375,-0.055419922,0.13574219,0.22558594,-0.30664062,-1.2890625,-1.7265625,-0.3125,1.6796875,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.24023438,0.52734375,0.75,-0.203125,-0.45117188,0.16503906,-1.5078125,0.27539062,0.84375,0.23828125,0.5546875,0.39648438,-0.30273438,-2.21875,0.796875,-0.9140625,0.35546875,-0.8671875,-1.015625,-0.24023438,-0.6171875,0.28320312,-0.047607422,-0.11816406,0.87109375,0.6875,1.5390625,1.4140625,0.08886719,-1.28125,0.54296875,-0.765625,0.54296875,-0.40429688,0.123535156,0.48632812,0.095703125,-0.625,2.421875,-0.609375,0.017333984,-0.14453125,-0.03112793,-0.88671875,0.092285156,1.0,-0.8359375,0.88671875,0.7578125,-0.61328125,-0.41210938,1.0859375,-0.34570312,1.3984375,-0.24902344,-0.875,0.8359375,-0.115722656,-1.125,0.671875,-0.8359375,-1.390625,-1.21875,-1.4140625,0.68359375,3.140625,-0.81640625,-1.2421875,-1.171875,-0.67578125,0.30664062,-0.15039062,0.9140625,-0.55078125,-0.47070312,0.87890625,-1.25,1.765625,-0.30273438,-0.5546875,-0.359375,0.011352539,-0.64453125,-0.0015106201,-0.828125,0.45898438,-0.43945312,-1.03125,1.28125,-0.88671875,-1.65625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.98046875,-1.734375,1.4921875,0.69140625,0.33398438,-0.43164062,-1.9765625,2.5,-1.375,-1.0078125,-0.064941406,-0.1796875,-0.26367188,0.328125,-1.59375,-1.1953125,0.24023438,-0.07080078,1.59375,1.421875,-2.109375,0.10449219,-0.18457031,0.4140625,-1.03125,1.6875,-0.578125,0.421875,-0.27539062,0.89453125,-0.71484375,-0.017578125,2.25,-0.9453125,-0.11328125,1.5859375,-0.2578125,-1.625,-1.1015625,-2.078125,-1.5546875,-0.734375,0.484375,-0.032470703,0.0038757324,-1.328125,-1.265625,-0.13183594,-0.48632812,0.7421875,-0.029785156,0.73828125,-1.0546875,-0.45703125,0.15429688,-1.1015625,1.078125,1.734375,-0.21484375,0.6875,-0.46484375,-0.94921875,0.75390625,1.90625,1.6015625,0.65625,1.4296875 -3,0,7,0.578125,0.421875,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.9140625,1.6796875,1.3984375,0.7578125,0.19824219,0.4296875,0.94921875,-0.83203125,-0.28125,1.0625,-0.7265625,0.80078125,-0.29101562,2.296875,1.9921875,-0.28320312,0.5546875,-0.17480469,-1.1640625,-0.578125,-0.32421875,0.35742188,0.64453125,1.0703125,2.125,0.00074768066,-0.4765625,-0.20507812,0.5,0.60546875,-1.2734375,-1.0703125,-1.84375,1.0,-0.48242188,0.66796875,0.20019531,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34960938,0.14648438,-1.65625,0.95703125,1.6328125,-0.11035156,-0.53515625,-0.021728516,-0.53125,0.028198242,0.24609375,0.26367188,-1.40625,-1.1796875,1.1328125,1.5234375,-1.0703125,-0.23925781,1.0234375,0.09277344,-1.4375,0.88671875,-0.890625,0.49609375,0.9375,0.66015625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.77734375,0.546875,1.7578125,0.03173828,1.0390625,0.059570312,-0.39257812,1.2578125,0.06689453,0.82421875,1.2265625,-0.90625,-1.3125,0.52734375,-0.42578125,-0.7578125,1.5625,-0.31640625,-0.51171875,-0.51171875,-0.9140625,-1.0078125,2.421875,-0.26367188,-1.953125,-1.6875,0.71484375,-1.515625,0.859375,0.640625,-0.26171875,-1.609375,0.92578125,-1.234375,0.2734375,-0.53515625,0.028686523,0.42578125,0.3515625,-1.359375,1.3671875,0.47265625,-0.31445312,-2.140625,0.45117188,2.03125,-0.73828125,-0.119628906,1.796875,-1.5859375,0.44921875,1.25,1.203125,-2.609375,-2.28125,-0.28320312,-1.0078125,0.5625,-0.028320312,-1.4765625,0.89453125,-0.099121094,-0.2890625,0.29296875,-0.40234375,0.54296875,-0.9921875,-0.30078125,-0.80078125,0.64453125,-0.43945312,0.29882812,-0.6953125,-0.15332031,-0.29101562,-2.109375,-0.7734375,-0.55859375,0.53515625,1.46875,-0.80859375,-1.375,0.076171875,-0.8515625,0.8984375,-0.04248047,-2.0,-1.5234375,2.046875,-0.60546875,-0.31054688,0.54296875,-1.5234375,-0.47265625,-0.22363281,-0.092285156,1.546875,0.21875,-0.3515625,0.11328125,0.47460938,1.765625,0.4765625,-0.25585938,0.63671875,-0.7109375,-0.37695312,0.31445312,0.52734375,1.5390625,0.828125,0.60546875,-0.21679688,-0.5078125,0.4140625,-1.546875,0.765625,0.1328125,1.8046875,0.20996094 -4,0,5,2.046875,0.008178711,-1.2265625,1.3046875,1.1015625,-1.0078125,-0.7109375,1.5546875,-0.13476562,-0.9296875,1.03125,1.0625,1.0546875,0.23925781,-1.75,0.84765625,-0.36914062,-0.08300781,0.37304688,0.011230469,0.87890625,0.49609375,0.6328125,0.36523438,0.40820312,0.088378906,-1.7734375,0.33203125,-1.6640625,0.45898438,0.1640625,0.79296875,1.34375,1.7578125,0.71484375,0.41015625,0.24414062,-1.2421875,0.73046875,0.9140625,-0.80078125,0.20507812,-1.0546875,-0.73046875,0.40429688,-0.106933594,1.296875,-0.20605469,-0.8203125,-0.78125,-0.44726562,-1.1953125,-2.203125,-1.546875,-1.6796875,-0.82421875,0.28125,0.29492188,0.3828125,-0.6953125,0.10058594,0.23242188,0.04711914,0.7578125,-0.21777344,-1.2578125,-0.051513672,0.20996094,0.13378906,0.921875,1.1953125,-2.828125,0.040527344,-0.037597656,0.61328125,2.03125,0.3984375,-0.65234375,0.15039062,-1.9375,-0.48046875,0.29882812,0.11279297,-1.6328125,1.125,0.64453125,0.25195312,-0.36914062,1.2734375,-0.06982422,1.953125,0.9296875,0.002456665,0.4765625,0.49804688,-1.546875,-0.18945312,-0.6328125,-0.67578125,-0.06738281,-0.90625,1.3203125,0.9453125,-0.29296875,-0.62890625,-1.859375,-1.25,-0.18066406,-0.118652344,1.390625,-0.37695312,0.51171875,0.38867188,-0.3203125,1.0,1.296875,-0.77734375,-0.8671875,0.078125,-0.265625,-0.12597656,-0.72265625,-1.0859375,0.83984375,-1.3671875,1.515625,-0.90625,-1.09375,0.14941406,0.29492188,0.6171875,-0.79296875,-0.40234375,-0.6171875,-0.84375,0.703125,0.13574219,-1.171875,0.484375,-2.28125,1.9765625,-1.984375,-1.09375,0.44726562,0.76171875,0.3125,-1.328125,0.6640625,1.421875,2.46875,-0.030517578,0.84765625,0.4609375,0.29101562,1.5234375,1.0859375,-0.953125,0.26953125,0.78515625,-0.97265625,-0.18847656,1.5,1.015625,1.15625,-0.67578125,0.88671875,-0.26367188,-0.15527344,1.1171875,-1.1328125,-1.2109375,-1.3828125,0.096191406,-1.828125,-1.6328125,-0.82421875,0.3515625,-1.8515625,0.5390625,-0.09326172,-0.48828125,-0.8828125,0.52734375,-2.0,1.5,0.39648438,0.58984375,-0.50390625,-0.053466797,-2.09375,1.125,-0.056396484,1.15625,-0.46875,-0.16992188,2.65625,0.609375,0.014770508,0.29296875,1.0234375 -4,0,6,0.38671875,1.015625,-0.84375,-1.046875,1.4921875,0.36132812,-1.2421875,1.28125,0.82421875,-0.13574219,0.16894531,0.70703125,-0.6484375,0.14550781,-0.390625,-0.62890625,-1.2109375,0.21386719,1.8671875,1.171875,0.6640625,-0.39453125,0.94921875,0.6796875,-0.84375,-0.78515625,-2.0625,-1.0625,-2.046875,-0.029174805,-0.38867188,0.07470703,0.22265625,1.046875,-0.5703125,0.096191406,0.38085938,-0.23925781,0.54296875,0.875,-1.671875,0.46875,-0.040527344,0.08105469,0.26953125,0.38085938,0.78125,-0.875,0.70703125,0.65234375,0.98046875,-1.2734375,0.103027344,0.28515625,-2.0,-0.6484375,-0.34179688,-1.0078125,0.6171875,-1.390625,0.28710938,0.76171875,2.0625,-0.71875,0.47851562,-1.0625,-0.04663086,-1.265625,-0.171875,1.484375,0.50390625,1.390625,0.04638672,-1.0390625,-0.040771484,0.83984375,-0.37890625,0.3046875,-0.71484375,0.063964844,0.51953125,-0.9140625,0.46484375,-0.32617188,-0.375,-0.26367188,-0.50390625,-1.34375,1.5,0.3828125,1.3125,1.7421875,-0.98046875,1.4375,-0.53515625,-0.73828125,-0.4140625,-0.024902344,-0.97265625,-0.095214844,-0.62890625,1.2265625,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.110839844,0.31445312,0.020263672,0.3515625,0.40039062,0.106933594,0.390625,0.99609375,-0.53125,-0.5703125,-0.31835938,0.6796875,0.07714844,0.25195312,-0.2265625,-1.0,0.22167969,-1.1640625,2.09375,-0.18554688,-2.1875,1.359375,2.828125,0.61328125,-1.625,-2.03125,0.48242188,-1.6875,-0.6953125,-1.1640625,-1.4765625,0.40820312,-1.6875,2.140625,-2.296875,-0.984375,1.8671875,0.796875,-0.7578125,0.78125,0.2265625,-0.37304688,1.75,0.37304688,-0.22460938,1.171875,-0.38085938,0.05444336,0.83984375,1.6796875,0.35351562,0.7578125,-2.046875,0.8828125,1.203125,0.97265625,2.21875,-1.0390625,1.0390625,-1.6171875,-1.4140625,2.03125,-0.81640625,0.390625,-1.5078125,0.11621094,-0.18847656,-0.71875,-1.0390625,-0.49023438,-1.375,0.23046875,0.0035247803,-0.8203125,-0.609375,0.83203125,0.60546875,-0.35546875,1.21875,-0.064941406,-0.56640625,1.0703125,-0.9765625,-1.109375,0.036865234,0.45898438,-0.5859375,-1.03125,1.9453125,0.7890625,0.671875,-0.421875,0.66015625 -4,0,7,1.2578125,-0.80078125,-0.62890625,0.19628906,-0.296875,-0.51953125,-0.765625,0.88671875,-0.6796875,-0.62890625,0.32421875,1.1953125,1.0546875,0.52734375,-0.6640625,1.5078125,-0.31054688,-0.44921875,2.265625,-0.46289062,1.6953125,0.14453125,-0.20214844,0.046142578,2.1875,-0.54296875,-0.984375,-1.3125,-0.546875,0.49023438,-0.30273438,0.5390625,1.0390625,-0.013305664,-1.984375,-0.13085938,0.53515625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.09716797,0.91796875,0.1953125,-0.68359375,-1.2578125,-0.10107422,-0.44335938,-1.0078125,-1.5859375,-0.59375,-0.5,1.953125,0.48632812,0.014770508,0.23535156,-0.71875,1.3203125,-0.578125,0.52734375,1.53125,0.5859375,0.1875,-0.48828125,-0.45898438,2.265625,-0.023071289,0.18359375,0.029052734,-0.37890625,0.28320312,1.0859375,2.375,-0.25195312,0.08203125,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111816406,0.99609375,-0.15625,0.3203125,1.5859375,0.5625,1.6015625,1.5859375,-0.40429688,0.2890625,0.97265625,-1.7265625,1.5546875,-0.90625,-0.030151367,0.38085938,-0.22167969,-0.83984375,0.19140625,-0.21777344,0.28710938,-0.91796875,-0.29882812,-0.4921875,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.6484375,-0.6796875,-0.609375,-0.10107422,-0.79296875,0.97265625,-0.24609375,0.21289062,0.78515625,1.1640625,-0.25195312,-1.7109375,-1.2109375,0.8984375,-1.421875,-0.9453125,0.024658203,0.23242188,0.96875,-0.29882812,-0.29296875,-1.296875,-0.61328125,-0.20605469,1.8671875,-0.62890625,-1.6875,-2.625,2.171875,0.64453125,-1.078125,-0.12792969,-0.84375,-0.20703125,0.6796875,-0.875,0.29882812,1.9140625,-0.36523438,-0.11035156,1.3203125,-2.09375,-0.30664062,-1.5859375,1.625,1.2734375,1.3984375,-0.83984375,-0.48046875,-0.8046875,0.36914062,-0.28515625,-1.1328125,0.18652344,0.09814453,-1.0859375,1.828125,-0.390625,0.30859375,-0.28125,-1.2890625,0.45703125,-0.51171875,1.6015625,0.21191406,-0.12695312,0.9765625,0.091308594,-1.328125,0.22558594,-0.020385742,0.5,0.019897461,-0.5546875,1.0,-0.44140625,1.5546875,-0.90234375,-0.16210938,-0.5390625,1.2421875,-0.67578125,-0.81640625,0.48046875,0.7109375,2.796875,2.171875,0.546875 +3,0,5,1.0859375,-0.07324219,-1.484375,0.24511719,0.85546875,-1.703125,-0.57421875,2.953125,-0.0625,-0.76171875,0.23046875,2.65625,0.26757812,-0.36328125,-0.69921875,1.734375,0.2734375,-1.328125,0.359375,0.92578125,-0.24414062,-0.73828125,-0.65625,0.5390625,0.9375,1.3359375,-2.703125,0.38671875,-0.59375,-1.0234375,0.34375,-0.045166016,1.6953125,1.34375,0.54296875,-0.62890625,0.99609375,-0.021362305,-0.40820312,0.10644531,0.04736328,0.30859375,-0.17773438,-1.6484375,-0.13574219,0.8828125,-1.5625,0.44726562,0.07519531,0.79296875,-0.84765625,-1.421875,-1.171875,-1.046875,-0.19042969,-0.20800781,0.74609375,0.30078125,-0.24511719,-1.0625,0.21191406,0.71484375,1.3203125,0.8125,-1.265625,-0.32226562,0.30859375,0.27929688,-0.57421875,-0.40234375,0.41601562,-0.42382812,0.49609375,-0.47070312,2.28125,3.09375,1.046875,0.02355957,-0.81640625,-0.84765625,1.453125,0.6875,0.82421875,-1.6015625,0.04321289,-0.3984375,0.47070312,1.328125,0.578125,2.203125,1.875,-0.765625,-1.015625,1.359375,-0.61328125,-0.08691406,-1.3984375,0.0048828125,-0.14941406,0.6796875,-0.51171875,0.16015625,0.052734375,1.265625,-1.046875,-0.18261719,-1.125,0.028930664,-1.3828125,-0.35351562,-1.125,-1.53125,1.765625,-1.8984375,0.61328125,-0.03857422,-1.4609375,0.69140625,-0.0063476562,-0.39453125,1.2734375,0.11425781,-0.890625,-0.11328125,-0.04321289,2.421875,-0.75,-0.62109375,1.3828125,-1.5390625,-1.171875,-2.828125,0.103027344,-0.890625,-1.2109375,0.33984375,1.15625,-0.27539062,0.18066406,-1.171875,0.92578125,-1.2734375,-1.3984375,-0.54296875,-0.19824219,0.54296875,-0.82421875,0.765625,-0.34960938,0.026489258,0.41992188,-0.5390625,0.21484375,-1.2109375,0.28125,-0.12695312,0.96875,0.041503906,1.3359375,0.58984375,-0.18261719,2.46875,0.421875,0.94921875,-0.05883789,0.40039062,0.18945312,0.4765625,1.2734375,1.265625,-1.0234375,-0.640625,-0.88671875,0.91015625,-1.2890625,0.29492188,0.14355469,-0.30078125,0.23828125,-0.30078125,-0.5390625,-0.328125,0.49023438,-1.2109375,0.546875,-0.5234375,-1.1015625,-0.91015625,-0.515625,-0.97265625,0.57421875,0.96484375,-0.42773438,-0.8046875,-0.16699219,1.921875,-0.18457031,0.93359375,-1.453125,-0.171875 +3,0,6,-0.31054688,0.4609375,-1.6953125,-1.1796875,-0.61328125,0.16113281,-0.45703125,2.109375,0.5625,-0.8203125,1.734375,1.125,1.453125,-0.36328125,0.07763672,0.9609375,-0.07128906,-0.9375,0.76171875,-0.53515625,0.62109375,-0.012634277,0.8671875,0.96875,-0.055664062,0.13867188,0.2265625,-0.30859375,-1.2890625,-1.7265625,-0.31054688,1.6953125,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.2421875,0.53515625,0.75,-0.20214844,-0.45703125,0.16113281,-1.5,0.27539062,0.84375,0.23828125,0.55078125,0.3984375,-0.30273438,-2.21875,0.80078125,-0.9140625,0.35546875,-0.85546875,-1.015625,-0.24023438,-0.61328125,0.28125,-0.050048828,-0.12060547,0.86328125,0.69140625,1.5546875,1.40625,0.08886719,-1.28125,0.5390625,-0.765625,0.5390625,-0.40625,0.12109375,0.484375,0.09765625,-0.62109375,2.421875,-0.609375,0.017333984,-0.14648438,-0.03149414,-0.88671875,0.09033203,0.99609375,-0.8359375,0.88671875,0.76171875,-0.6171875,-0.4140625,1.0859375,-0.34570312,1.390625,-0.24902344,-0.875,0.8359375,-0.1171875,-1.125,0.6796875,-0.83203125,-1.3984375,-1.2109375,-1.4140625,0.6796875,3.15625,-0.81640625,-1.234375,-1.1640625,-0.6796875,0.30664062,-0.15429688,0.91796875,-0.546875,-0.47070312,0.8828125,-1.25,1.7734375,-0.30273438,-0.5546875,-0.36523438,0.011047363,-0.64453125,-0.0018310547,-0.828125,0.45507812,-0.44140625,-1.03125,1.28125,-0.88671875,-1.6640625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.984375,-1.734375,1.5,0.69140625,0.3359375,-0.43359375,-1.96875,2.484375,-1.375,-1.0078125,-0.061523438,-0.18261719,-0.26171875,0.32421875,-1.59375,-1.1953125,0.24121094,-0.068359375,1.59375,1.421875,-2.140625,0.106933594,-0.18359375,0.41210938,-1.0234375,1.6796875,-0.58203125,0.42382812,-0.27734375,0.90234375,-0.71484375,-0.013977051,2.234375,-0.953125,-0.110839844,1.5859375,-0.2578125,-1.6171875,-1.1015625,-2.0625,-1.5546875,-0.734375,0.47460938,-0.030151367,0.001625061,-1.328125,-1.2734375,-0.12890625,-0.48632812,0.7421875,-0.03100586,0.734375,-1.0546875,-0.45507812,0.15820312,-1.09375,1.0703125,1.734375,-0.21289062,0.6953125,-0.46679688,-0.95703125,0.75,1.90625,1.609375,0.66015625,1.421875 +3,0,7,0.578125,0.41992188,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.91015625,1.6640625,1.390625,0.76171875,0.19921875,0.42773438,0.95703125,-0.8359375,-0.28320312,1.0625,-0.7265625,0.80078125,-0.29101562,2.28125,2.0,-0.28125,0.5546875,-0.17382812,-1.1640625,-0.57421875,-0.32617188,0.35546875,0.6484375,1.078125,2.125,-0.0016326904,-0.47460938,-0.20605469,0.5,0.60546875,-1.2734375,-1.0546875,-1.84375,1.0078125,-0.4765625,0.66796875,0.19921875,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34765625,0.14355469,-1.6640625,0.95703125,1.625,-0.106933594,-0.53515625,-0.020629883,-0.53125,0.026367188,0.2421875,0.25976562,-1.40625,-1.1796875,1.1484375,1.53125,-1.078125,-0.23925781,1.0234375,0.092285156,-1.4296875,0.88671875,-0.88671875,0.49609375,0.9453125,0.65625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.76953125,0.546875,1.7734375,0.037597656,1.0390625,0.057128906,-0.39453125,1.265625,0.06640625,0.828125,1.2265625,-0.90625,-1.3046875,0.52734375,-0.42578125,-0.75390625,1.5546875,-0.31640625,-0.5078125,-0.5078125,-0.921875,-1.0234375,2.40625,-0.26367188,-1.9453125,-1.6953125,0.7109375,-1.5234375,0.86328125,0.64453125,-0.26171875,-1.6171875,0.921875,-1.234375,0.27539062,-0.53125,0.028320312,0.421875,0.3515625,-1.3515625,1.34375,0.4765625,-0.31445312,-2.140625,0.45507812,2.015625,-0.734375,-0.119628906,1.796875,-1.59375,0.453125,1.234375,1.2109375,-2.625,-2.296875,-0.28710938,-1.015625,0.5625,-0.030273438,-1.4765625,0.89453125,-0.09814453,-0.28710938,0.296875,-0.40234375,0.54296875,-0.9921875,-0.30273438,-0.8046875,0.640625,-0.43945312,0.29492188,-0.69140625,-0.15136719,-0.29101562,-2.109375,-0.78125,-0.55859375,0.53515625,1.4609375,-0.80859375,-1.3828125,0.078125,-0.8515625,0.90625,-0.040039062,-2.0,-1.515625,2.046875,-0.59765625,-0.30664062,0.5390625,-1.5234375,-0.47265625,-0.22363281,-0.09326172,1.5390625,0.22265625,-0.34960938,0.11425781,0.4765625,1.7578125,0.47851562,-0.25390625,0.63671875,-0.7109375,-0.37695312,0.31640625,0.52734375,1.546875,0.8359375,0.60546875,-0.21386719,-0.50390625,0.40820312,-1.53125,0.76953125,0.12988281,1.8046875,0.21191406 +4,0,5,2.046875,0.015991211,-1.2265625,1.3203125,1.1015625,-1.015625,-0.7109375,1.546875,-0.13476562,-0.93359375,1.03125,1.0546875,1.0390625,0.23828125,-1.75,0.83984375,-0.37109375,-0.0859375,0.375,0.013183594,0.875,0.49804688,0.625,0.36523438,0.40429688,0.08935547,-1.7578125,0.33007812,-1.6640625,0.45507812,0.16796875,0.79296875,1.34375,1.765625,0.7109375,0.41015625,0.24316406,-1.2421875,0.734375,0.91015625,-0.80078125,0.203125,-1.0546875,-0.734375,0.40429688,-0.106933594,1.2890625,-0.21386719,-0.81640625,-0.78125,-0.4453125,-1.1953125,-2.203125,-1.5390625,-1.6796875,-0.8203125,0.27929688,0.29296875,0.3828125,-0.6953125,0.09716797,0.23046875,0.049072266,0.76171875,-0.21875,-1.2578125,-0.049560547,0.20996094,0.13867188,0.92578125,1.1875,-2.8125,0.037597656,-0.033935547,0.62109375,2.046875,0.40039062,-0.6484375,0.1484375,-1.9375,-0.48046875,0.29492188,0.114746094,-1.640625,1.1328125,0.6484375,0.25195312,-0.3671875,1.2734375,-0.0703125,1.9609375,0.92578125,0.002456665,0.47460938,0.49804688,-1.546875,-0.19433594,-0.63671875,-0.67578125,-0.064941406,-0.90625,1.3125,0.94140625,-0.29296875,-0.6328125,-1.875,-1.2578125,-0.1796875,-0.12109375,1.3984375,-0.37695312,0.5078125,0.38476562,-0.3203125,1.0,1.296875,-0.78125,-0.859375,0.071777344,-0.265625,-0.12597656,-0.7265625,-1.0859375,0.8359375,-1.3828125,1.5234375,-0.8984375,-1.0859375,0.1484375,0.29101562,0.6171875,-0.7890625,-0.3984375,-0.62109375,-0.84375,0.6953125,0.13183594,-1.1640625,0.48632812,-2.28125,1.96875,-1.984375,-1.1015625,0.44726562,0.76953125,0.31054688,-1.3359375,0.671875,1.4296875,2.46875,-0.029663086,0.85546875,0.45703125,0.2890625,1.53125,1.0859375,-0.953125,0.27148438,0.78125,-0.98046875,-0.18945312,1.4921875,1.0,1.15625,-0.6640625,0.88671875,-0.26757812,-0.15527344,1.125,-1.1328125,-1.203125,-1.375,0.09814453,-1.828125,-1.6484375,-0.82421875,0.35546875,-1.8515625,0.5390625,-0.09033203,-0.49023438,-0.88671875,0.5234375,-1.9921875,1.5,0.39648438,0.58984375,-0.5,-0.052001953,-2.0625,1.1171875,-0.055664062,1.15625,-0.47265625,-0.171875,2.65625,0.6171875,0.014770508,0.3046875,1.015625 +4,0,6,0.38867188,1.015625,-0.84375,-1.046875,1.4921875,0.36523438,-1.2578125,1.28125,0.83203125,-0.13476562,0.16894531,0.7109375,-0.65234375,0.14550781,-0.390625,-0.63671875,-1.1953125,0.2109375,1.8671875,1.171875,0.6640625,-0.39257812,0.9375,0.6796875,-0.84375,-0.7734375,-2.078125,-1.0625,-2.015625,-0.031982422,-0.38671875,0.07421875,0.22460938,1.0546875,-0.57421875,0.09472656,0.38085938,-0.24316406,0.546875,0.86328125,-1.6796875,0.47265625,-0.044433594,0.08251953,0.26953125,0.37890625,0.7890625,-0.875,0.703125,0.65234375,0.984375,-1.2734375,0.107910156,0.28320312,-1.9921875,-0.6484375,-0.34570312,-1.0078125,0.62109375,-1.390625,0.2890625,0.76171875,2.03125,-0.73046875,0.47851562,-1.0546875,-0.05053711,-1.2734375,-0.16992188,1.484375,0.49804688,1.4140625,0.044189453,-1.046875,-0.04296875,0.83203125,-0.37695312,0.3046875,-0.71484375,0.064941406,0.51171875,-0.9140625,0.46484375,-0.32617188,-0.37890625,-0.26367188,-0.50390625,-1.3359375,1.5078125,0.38671875,1.3125,1.75,-1.0,1.453125,-0.53515625,-0.7421875,-0.4140625,-0.028686523,-0.98046875,-0.09326172,-0.62890625,1.234375,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.11279297,0.31054688,0.021728516,0.35351562,0.3984375,0.106933594,0.38867188,1.0,-0.53125,-0.5703125,-0.3203125,0.67578125,0.07324219,0.25195312,-0.22070312,-1.0,0.22167969,-1.15625,2.078125,-0.1875,-2.203125,1.359375,2.84375,0.62109375,-1.625,-2.03125,0.47851562,-1.6875,-0.69921875,-1.1640625,-1.4765625,0.41015625,-1.6875,2.140625,-2.296875,-0.98828125,1.875,0.796875,-0.75390625,0.7734375,0.22265625,-0.37695312,1.75,0.375,-0.22753906,1.1640625,-0.37695312,0.051513672,0.83203125,1.6875,0.35351562,0.7578125,-2.046875,0.875,1.203125,0.9765625,2.203125,-1.03125,1.03125,-1.6171875,-1.421875,2.03125,-0.81640625,0.39453125,-1.515625,0.11816406,-0.1875,-0.72265625,-1.0390625,-0.49023438,-1.3828125,0.22851562,0.0050354004,-0.8203125,-0.61328125,0.8359375,0.6015625,-0.35351562,1.2265625,-0.06347656,-0.56640625,1.0625,-0.9765625,-1.109375,0.034423828,0.45898438,-0.5859375,-1.03125,1.953125,0.79296875,0.66796875,-0.421875,0.6640625 +4,0,7,1.265625,-0.80859375,-0.62890625,0.19921875,-0.29101562,-0.51171875,-0.76953125,0.8828125,-0.671875,-0.6328125,0.32617188,1.1875,1.0546875,0.5234375,-0.66015625,1.515625,-0.31445312,-0.44921875,2.265625,-0.46289062,1.6953125,0.15039062,-0.20507812,0.05078125,2.1875,-0.5390625,-0.98046875,-1.3125,-0.5546875,0.49023438,-0.29882812,0.54296875,1.03125,-0.008605957,-1.984375,-0.13183594,0.5390625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.099609375,0.921875,0.19726562,-0.6796875,-1.2578125,-0.103515625,-0.44140625,-1.0078125,-1.59375,-0.59375,-0.50390625,1.9765625,0.48632812,0.014526367,0.23632812,-0.7109375,1.328125,-0.578125,0.5234375,1.5234375,0.58203125,0.18652344,-0.48632812,-0.4609375,2.265625,-0.023071289,0.17675781,0.029907227,-0.37890625,0.28515625,1.0859375,2.375,-0.25,0.083984375,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111328125,1.0,-0.15722656,0.31445312,1.578125,0.55859375,1.6015625,1.578125,-0.40429688,0.28710938,0.97265625,-1.7265625,1.5703125,-0.90625,-0.034179688,0.375,-0.22167969,-0.83984375,0.19335938,-0.22460938,0.28710938,-0.92578125,-0.29882812,-0.48828125,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.65234375,-0.6796875,-0.61328125,-0.100097656,-0.79296875,0.96875,-0.24511719,0.21386719,0.77734375,1.15625,-0.25195312,-1.7265625,-1.2109375,0.8984375,-1.421875,-0.94921875,0.022949219,0.23046875,0.97265625,-0.30273438,-0.2890625,-1.28125,-0.60546875,-0.20898438,1.8515625,-0.62890625,-1.6796875,-2.625,2.171875,0.64453125,-1.078125,-0.12597656,-0.83984375,-0.20507812,0.671875,-0.87109375,0.296875,1.9296875,-0.36523438,-0.111816406,1.3125,-2.09375,-0.30859375,-1.6015625,1.609375,1.265625,1.40625,-0.84765625,-0.48242188,-0.8046875,0.37890625,-0.28710938,-1.140625,0.18652344,0.096191406,-1.0859375,1.8359375,-0.390625,0.30859375,-0.28125,-1.2890625,0.4609375,-0.51171875,1.5859375,0.21289062,-0.12695312,0.96484375,0.09326172,-1.328125,0.22460938,-0.020507812,0.5,0.018676758,-0.546875,1.0,-0.44335938,1.5625,-0.89453125,-0.15917969,-0.53515625,1.25,-0.67578125,-0.81640625,0.48632812,0.7109375,2.765625,2.171875,0.546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv index 88760c11..f76bfe98 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,5,0.58984375,0.99609375,-0.34179688,-1.34375,-0.484375,-0.9140625,-0.88671875,0.4609375,0.94921875,-1.2421875,-0.19433594,-0.5859375,-1.09375,1.5390625,-1.671875,0.66796875,-0.3359375,0.453125,-0.8125,0.87890625,1.6640625,0.703125,0.06201172,0.34765625,0.40625,-0.58984375,-1.8828125,-0.15136719,-0.99609375,1.21875,-0.9296875,-0.2265625,0.83984375,0.2109375,-0.23046875,0.90625,0.40039062,-0.05908203,-0.58984375,0.62109375,-1.7890625,0.38085938,-0.12158203,0.41015625,-0.0019302368,1.3359375,0.70703125,0.13671875,-0.40234375,1.2578125,-0.41796875,-0.6796875,-1.5234375,-0.018432617,-0.041503906,1.8125,0.013305664,-0.23535156,0.40429688,-1.546875,0.29101562,0.39648438,1.2890625,0.24316406,0.96875,1.1796875,-1.5703125,1.46875,0.012756348,-0.22949219,-0.796875,-1.203125,-0.76953125,-0.07128906,-0.58984375,0.015563965,0.49414062,0.5546875,0.30859375,0.6484375,1.078125,-1.046875,1.015625,0.42382812,-0.53125,0.49609375,0.3515625,0.640625,-0.58984375,-0.50390625,3.59375,0.41992188,0.79296875,1.265625,-0.51953125,1.0390625,-0.98828125,0.31835938,-0.58203125,0.34570312,-0.828125,0.17089844,1.3828125,-1.140625,0.045410156,0.17773438,-0.390625,-1.8671875,-0.4453125,0.83203125,-0.15332031,-0.40625,0.4296875,-0.80859375,-0.625,-0.609375,-0.34960938,0.69921875,0.42773438,-0.12597656,0.734375,-1.0703125,-0.62890625,-1.8515625,-0.828125,1.65625,-0.35742188,-1.625,-1.1015625,-0.96875,1.3203125,0.2578125,-2.375,-0.5859375,-1.5703125,2.015625,0.14355469,-0.45507812,-1.34375,-2.5625,1.1015625,-2.21875,0.58203125,-0.09277344,0.6484375,0.35546875,-0.20605469,-0.76953125,-0.088378906,1.5625,-1.5859375,0.59765625,0.60546875,-0.09814453,1.296875,-0.064453125,0.4140625,0.9375,0.78515625,0.41601562,-0.87890625,-0.6640625,-0.37109375,0.09033203,-2.6875,2.390625,0.22949219,-0.0134887695,1.4140625,-0.9140625,-1.8984375,-0.86328125,-1.1171875,-0.9296875,-0.44921875,1.5078125,1.1796875,-0.99609375,-0.18261719,-0.91015625,0.44921875,1.3046875,0.50390625,-0.040771484,1.0078125,-1.109375,-0.13085938,1.609375,0.578125,-1.3125,-0.23730469,1.359375,1.2265625,0.38085938,-0.5546875,0.43554688,3.265625,-0.09863281,-0.18554688,0.45117188 -5,0,6,-0.44140625,-0.69921875,-0.38476562,-1.4375,0.17578125,-1.203125,-0.9609375,1.640625,0.057373047,0.8203125,-0.8671875,-0.53125,1.4140625,0.875,-2.15625,0.93359375,-0.51953125,-0.859375,0.10546875,0.5078125,2.46875,-0.18359375,-0.8515625,0.24316406,0.48046875,-0.38671875,-2.078125,-1.125,-0.42578125,1.75,-0.26757812,0.50390625,-0.98046875,0.5546875,-1.25,0.49804688,-0.37890625,-0.49804688,-0.27929688,-0.6015625,-0.9453125,0.328125,-0.6953125,-0.28710938,0.53515625,2.484375,-0.107910156,-0.3125,1.390625,1.0703125,-1.0078125,-2.421875,-2.34375,0.43945312,-0.609375,1.6640625,-0.28125,-0.80859375,-0.26757812,-1.5546875,-0.87890625,-0.80859375,1.578125,0.9609375,1.4375,2.015625,-1.6640625,1.625,-0.95703125,0.6171875,1.3046875,-1.2890625,-0.6953125,-0.265625,-0.234375,0.25,0.265625,-0.33984375,0.73046875,0.73046875,1.578125,-0.42382812,0.28320312,1.734375,-0.84375,0.64453125,-0.8203125,0.05126953,0.13476562,-0.11230469,1.4765625,-0.3671875,1.78125,-0.09765625,-0.15429688,0.027709961,-1.84375,0.78125,-0.54296875,0.375,-0.2890625,-0.26757812,0.36328125,0.17675781,0.3671875,1.3125,-1.671875,-2.59375,-1.0703125,-0.609375,-0.20019531,0.78125,-1.0546875,-0.53125,-0.09716797,-2.359375,-0.09716797,0.81640625,0.33007812,1.5859375,0.11279297,-0.3828125,-0.15917969,-1.6484375,-1.2578125,0.6328125,-1.359375,-0.77734375,-0.7890625,0.48046875,2.0625,-0.7578125,-1.7109375,-0.546875,-0.28710938,0.8359375,-0.13867188,0.07861328,-0.09716797,-2.046875,-0.32226562,1.609375,0.58984375,0.95703125,0.52734375,0.15917969,-0.51953125,0.20410156,-0.59765625,1.0234375,0.03515625,-0.90625,0.54296875,-0.52734375,0.43945312,-0.17382812,1.4140625,1.0078125,0.55078125,0.35742188,-0.19433594,0.875,0.4140625,0.50390625,-1.796875,1.734375,0.73828125,0.20800781,0.46289062,0.03930664,-0.49804688,0.63671875,-0.0390625,0.18066406,-1.1171875,1.984375,0.18164062,-1.671875,-0.57421875,-0.099609375,-0.6640625,0.875,0.91796875,0.3828125,0.28125,-0.28710938,0.28125,0.39453125,0.3203125,-0.796875,-1.453125,0.7578125,1.5078125,0.14746094,-0.55078125,0.2734375,2.375,-0.3984375,1.0078125,1.125 -5,0,7,0.91015625,0.5625,0.828125,0.203125,-1.140625,-0.08105469,-1.1953125,-0.031982422,2.609375,-1.46875,1.828125,-0.040771484,0.35351562,1.3671875,-0.62890625,-0.42578125,-0.4609375,0.18457031,2.265625,1.1484375,0.2421875,-0.5078125,-0.15722656,0.58203125,-0.48632812,-0.53515625,0.65234375,-0.5234375,0.90625,0.5078125,-0.40429688,-0.0074157715,0.78125,-0.66796875,0.37695312,0.91015625,0.94921875,-0.18847656,-0.20898438,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.23242188,0.515625,-0.29296875,0.87890625,0.6796875,-0.15429688,-0.265625,-0.74609375,0.95703125,0.9296875,0.40820312,-0.65625,-0.49804688,-0.578125,0.77734375,1.1875,-0.37890625,1.2578125,0.09765625,0.640625,0.51171875,-0.20703125,-1.25,-1.453125,0.41210938,-0.11230469,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.4765625,-1.09375,1.2578125,-1.8984375,-0.71484375,0.9296875,-1.1640625,-0.703125,0.51171875,-0.36523438,-1.5,0.47851562,0.28515625,1.5390625,1.1953125,-0.47070312,0.875,-0.45117188,0.16308594,-1.78125,0.73046875,-0.63671875,-0.3671875,-1.6875,0.609375,0.9140625,-1.2890625,-0.34960938,2.171875,-0.640625,-0.7890625,-0.375,0.7890625,-0.4765625,0.26171875,1.203125,-0.578125,0.26367188,0.34960938,-0.625,0.453125,-0.41015625,0.5546875,0.6875,-0.0013961792,0.4453125,-1.6875,-1.90625,0.5625,-0.16992188,-0.203125,-0.34570312,1.140625,1.078125,0.61328125,-1.5078125,-0.265625,-1.1015625,1.578125,0.16503906,-0.73046875,-0.41796875,-1.7578125,1.6796875,-0.26953125,-0.625,1.5078125,-0.28320312,-0.07519531,1.4609375,-0.734375,-1.1796875,0.22070312,-1.078125,-0.16503906,2.140625,-0.57421875,-0.60546875,0.19042969,1.40625,-0.39648438,0.65625,0.38867188,-0.75,-0.30664062,1.390625,1.2421875,-1.1796875,-0.14648438,-0.6640625,-0.6171875,0.64453125,-1.703125,-2.109375,-0.25585938,-3.0,-0.40039062,-0.578125,2.484375,0.80078125,-1.046875,-0.48046875,0.36328125,-0.33398438,-0.09277344,-0.06982422,-0.6640625,-1.1640625,0.20800781,1.125,0.58984375,-0.390625,-0.8203125,-1.5234375,0.296875,0.546875,-0.86328125,-2.796875,1.2578125,3.171875,0.19921875,0.34570312,0.859375 +5,0,5,0.58984375,0.99609375,-0.34570312,-1.3515625,-0.484375,-0.91015625,-0.88671875,0.4609375,0.94921875,-1.25,-0.1953125,-0.58203125,-1.09375,1.546875,-1.6640625,0.671875,-0.33007812,0.453125,-0.81640625,0.87109375,1.671875,0.70703125,0.06347656,0.34570312,0.41015625,-0.58984375,-1.8828125,-0.15136719,-1.0,1.2109375,-0.92578125,-0.22558594,0.83984375,0.20800781,-0.22753906,0.91015625,0.40039062,-0.060546875,-0.58984375,0.6171875,-1.8046875,0.38085938,-0.12109375,0.40625,-0.0045166016,1.34375,0.703125,0.13867188,-0.40039062,1.25,-0.41796875,-0.66796875,-1.515625,-0.021972656,-0.045654297,1.8203125,0.018310547,-0.23730469,0.40429688,-1.546875,0.29101562,0.39453125,1.2890625,0.2421875,0.9765625,1.1875,-1.5859375,1.4765625,0.013549805,-0.22753906,-0.80078125,-1.2109375,-0.765625,-0.07080078,-0.58203125,0.013427734,0.4921875,0.55859375,0.3125,0.64453125,1.078125,-1.046875,1.0,0.42382812,-0.53125,0.49804688,0.34375,0.62890625,-0.5859375,-0.50390625,3.578125,0.421875,0.79296875,1.2734375,-0.52734375,1.03125,-0.97265625,0.31640625,-0.578125,0.34179688,-0.82421875,0.17285156,1.375,-1.140625,0.04663086,0.17480469,-0.38671875,-1.859375,-0.4453125,0.828125,-0.15234375,-0.40429688,0.43554688,-0.8125,-0.6171875,-0.609375,-0.34570312,0.6953125,0.42773438,-0.125,0.73046875,-1.0703125,-0.62890625,-1.8359375,-0.82421875,1.6484375,-0.35742188,-1.6328125,-1.1015625,-0.96484375,1.3125,0.25585938,-2.375,-0.58984375,-1.5625,2.0,0.13769531,-0.45507812,-1.3515625,-2.5625,1.1015625,-2.25,0.5859375,-0.092285156,0.64453125,0.35351562,-0.20507812,-0.76171875,-0.087402344,1.5546875,-1.578125,0.59375,0.60546875,-0.10253906,1.2890625,-0.061279297,0.41601562,0.9375,0.796875,0.41992188,-0.87890625,-0.6640625,-0.37109375,0.09082031,-2.6875,2.40625,0.22851562,-0.012207031,1.421875,-0.91796875,-1.9140625,-0.8671875,-1.1171875,-0.92578125,-0.44921875,1.5078125,1.1875,-1.0078125,-0.18554688,-0.91015625,0.44921875,1.3203125,0.50390625,-0.041992188,1.0078125,-1.109375,-0.13476562,1.609375,0.58203125,-1.3125,-0.23535156,1.3671875,1.2265625,0.3828125,-0.55078125,0.44140625,3.265625,-0.100097656,-0.18652344,0.44726562 +5,0,6,-0.43945312,-0.69921875,-0.38476562,-1.4296875,0.18261719,-1.203125,-0.9453125,1.6484375,0.064453125,0.8125,-0.8671875,-0.53125,1.4140625,0.87890625,-2.140625,0.92578125,-0.515625,-0.86328125,0.10058594,0.5078125,2.453125,-0.18164062,-0.84765625,0.23925781,0.484375,-0.37890625,-2.0625,-1.1328125,-0.421875,1.7421875,-0.26367188,0.50390625,-0.98046875,0.546875,-1.2578125,0.49609375,-0.37304688,-0.49609375,-0.27734375,-0.6015625,-0.94921875,0.33203125,-0.6953125,-0.28515625,0.5390625,2.5,-0.10595703,-0.31640625,1.390625,1.0625,-1.0,-2.421875,-2.328125,0.4375,-0.609375,1.671875,-0.28125,-0.80859375,-0.26367188,-1.5546875,-0.87890625,-0.80859375,1.5859375,0.9609375,1.4296875,2.015625,-1.671875,1.6328125,-0.96875,0.62109375,1.296875,-1.296875,-0.69921875,-0.26367188,-0.23632812,0.24609375,0.26367188,-0.33789062,0.7265625,0.73046875,1.5703125,-0.43359375,0.27929688,1.75,-0.84375,0.64453125,-0.8203125,0.049316406,0.13769531,-0.11621094,1.4765625,-0.36132812,1.7734375,-0.103515625,-0.14453125,0.025878906,-1.84375,0.78125,-0.5390625,0.375,-0.28710938,-0.26953125,0.35742188,0.17578125,0.3671875,1.3125,-1.671875,-2.625,-1.0703125,-0.62109375,-0.19824219,0.7734375,-1.0546875,-0.53125,-0.100097656,-2.375,-0.09667969,0.81640625,0.33007812,1.5859375,0.11230469,-0.3828125,-0.15625,-1.65625,-1.265625,0.63671875,-1.359375,-0.77734375,-0.78515625,0.4765625,2.0625,-0.75390625,-1.71875,-0.5546875,-0.28515625,0.83984375,-0.13671875,0.079589844,-0.100097656,-2.046875,-0.328125,1.609375,0.58984375,0.95703125,0.52734375,0.15820312,-0.5234375,0.20507812,-0.59375,1.0390625,0.034423828,-0.90234375,0.54296875,-0.53515625,0.4375,-0.1796875,1.40625,1.0078125,0.55078125,0.359375,-0.19433594,0.875,0.41601562,0.49804688,-1.7890625,1.7265625,0.734375,0.20996094,0.45898438,0.037597656,-0.49609375,0.63671875,-0.039794922,0.18457031,-1.1171875,1.9921875,0.18261719,-1.6640625,-0.5703125,-0.09667969,-0.66015625,0.875,0.91796875,0.3828125,0.28515625,-0.28515625,0.27734375,0.3984375,0.32226562,-0.7890625,-1.4609375,0.7578125,1.5,0.15039062,-0.55078125,0.27734375,2.375,-0.39453125,1.015625,1.109375 +5,0,7,0.90234375,0.56640625,0.828125,0.19921875,-1.140625,-0.07861328,-1.1953125,-0.034179688,2.609375,-1.453125,1.8359375,-0.03930664,0.34960938,1.3671875,-0.625,-0.42578125,-0.46484375,0.18164062,2.265625,1.1484375,0.24023438,-0.51171875,-0.15625,0.578125,-0.48242188,-0.53515625,0.6484375,-0.52734375,0.90625,0.5078125,-0.40625,-0.008117676,0.78125,-0.6796875,0.38085938,0.91796875,0.953125,-0.19042969,-0.21191406,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.234375,0.50390625,-0.29101562,0.87890625,0.6796875,-0.16015625,-0.265625,-0.74609375,0.95703125,0.9375,0.41015625,-0.65234375,-0.49804688,-0.578125,0.7734375,1.1953125,-0.37890625,1.2578125,0.099609375,0.640625,0.51953125,-0.20703125,-1.2578125,-1.46875,0.41210938,-0.111328125,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.48046875,-1.09375,1.2578125,-1.8828125,-0.70703125,0.9375,-1.1640625,-0.6953125,0.5078125,-0.36132812,-1.515625,0.48242188,0.28710938,1.5390625,1.2109375,-0.46875,0.87109375,-0.453125,0.16308594,-1.7890625,0.73828125,-0.640625,-0.36914062,-1.6875,0.609375,0.9140625,-1.296875,-0.34960938,2.171875,-0.6328125,-0.7890625,-0.375,0.78515625,-0.47265625,0.25976562,1.2265625,-0.58203125,0.26757812,0.34960938,-0.625,0.453125,-0.41210938,0.55859375,0.6875,-0.0054626465,0.4453125,-1.6796875,-1.9140625,0.55859375,-0.16894531,-0.19921875,-0.34765625,1.140625,1.0703125,0.61328125,-1.5078125,-0.265625,-1.09375,1.578125,0.16503906,-0.734375,-0.41601562,-1.75,1.6875,-0.26953125,-0.62890625,1.5078125,-0.28710938,-0.075683594,1.4609375,-0.73046875,-1.1875,0.22167969,-1.0859375,-0.16503906,2.15625,-0.578125,-0.609375,0.19628906,1.40625,-0.39648438,0.65625,0.390625,-0.75,-0.3046875,1.390625,1.2421875,-1.171875,-0.14550781,-0.6640625,-0.6171875,0.6484375,-1.6953125,-2.109375,-0.25585938,-2.984375,-0.40234375,-0.578125,2.484375,0.80078125,-1.0546875,-0.4765625,0.36132812,-0.33007812,-0.092285156,-0.068359375,-0.65625,-1.15625,0.20800781,1.1171875,0.58984375,-0.38671875,-0.8203125,-1.5234375,0.296875,0.546875,-0.8671875,-2.8125,1.2578125,3.171875,0.20019531,0.34375,0.85546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv index 184fba8e..a0c6dbf9 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,5,0.13769531,0.10595703,0.27148438,-0.8828125,1.3984375,0.6171875,0.48632812,1.03125,-0.49414062,-1.0390625,0.12792969,-0.26171875,0.58203125,0.35351562,-1.2578125,0.484375,-0.546875,-1.9140625,1.1328125,-0.5234375,-0.08544922,-0.6640625,1.2734375,0.52734375,-1.234375,-1.5078125,-0.9609375,-0.8671875,-1.7890625,0.43945312,-0.63671875,-0.26171875,0.013671875,-0.4609375,-0.52734375,0.953125,0.91796875,-0.73828125,-1.4609375,1.5703125,-1.7890625,0.03149414,-0.07714844,0.09423828,0.38085938,0.5234375,0.63671875,-0.69921875,0.37304688,1.859375,-1.1953125,-1.6015625,-0.97265625,1.1015625,-2.421875,0.092285156,-0.21484375,-0.8046875,1.328125,-1.71875,1.75,0.18554688,0.2890625,0.29882812,-0.515625,-0.067871094,-1.078125,0.16308594,0.546875,1.8515625,0.06298828,-0.31640625,0.57421875,-0.13769531,-0.671875,1.8671875,0.765625,1.1796875,-1.765625,-0.5234375,1.2890625,0.89453125,-0.12207031,0.12060547,-0.640625,-0.20117188,-0.46484375,1.4609375,-0.359375,0.99609375,1.3828125,0.21289062,-0.921875,0.36914062,-1.421875,0.22265625,-0.58984375,-0.640625,0.62109375,-0.890625,-2.359375,-0.17871094,2.5,0.78125,-0.79296875,0.0063171387,0.06640625,-1.0703125,0.48632812,0.984375,0.703125,0.03564453,0.5703125,-0.79296875,0.4921875,-0.3203125,-0.47460938,-0.3515625,-0.484375,-1.1953125,0.7109375,-0.7890625,0.60546875,-1.5625,-0.2265625,1.2578125,-1.3203125,-2.421875,0.014038086,0.17285156,-0.18652344,0.03955078,-0.021972656,-1.3671875,-1.0390625,-0.13769531,-0.66015625,0.25195312,0.20800781,-1.7265625,3.375,-0.40625,1.3203125,1.1015625,-1.2265625,1.078125,-0.6015625,-0.66796875,-2.515625,1.1015625,-0.30859375,-0.03540039,1.0625,-0.48828125,-1.1015625,-1.1953125,0.3828125,1.3515625,1.015625,1.421875,-0.26367188,-0.010314941,1.828125,1.25,-1.78125,1.65625,-1.671875,-0.24707031,2.109375,-0.20117188,0.3671875,-0.40039062,0.1015625,0.6171875,0.69140625,0.040283203,-0.8671875,-0.84375,0.859375,-0.609375,-0.30664062,-0.89453125,0.140625,0.85546875,0.14648438,0.5390625,0.59375,0.038085938,0.8671875,-1.828125,0.099609375,1.375,1.2578125,0.28515625,0.43945312,-0.18261719,1.6796875,0.15820312,1.4140625,0.5234375 -6,0,6,0.82421875,0.82421875,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39453125,-0.10058594,-1.4375,1.1015625,-0.19433594,0.53515625,-0.54296875,-0.99609375,-0.375,-0.8203125,-0.40039062,1.109375,1.2421875,0.20117188,-1.890625,0.36132812,0.35742188,-0.90234375,-1.625,-1.3828125,-0.35351562,0.22753906,0.05859375,-0.23828125,-0.32421875,1.7109375,0.20800781,-0.328125,-0.17089844,0.31640625,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71484375,-0.26953125,1.2734375,-0.27734375,0.25585938,-0.734375,-1.0234375,0.43945312,1.71875,1.140625,-1.765625,-0.4921875,-0.26757812,-1.0859375,-2.140625,0.38671875,1.3046875,-0.111328125,-1.015625,1.6171875,1.59375,1.734375,-0.34960938,-1.03125,-0.7109375,0.050048828,-2.078125,-0.3046875,0.85546875,0.3828125,0.16992188,1.3359375,-1.4921875,0.4609375,0.51953125,0.18554688,-0.20605469,-1.7109375,0.39453125,-0.2734375,0.71484375,-0.018432617,0.31835938,-0.7578125,0.7421875,-2.828125,0.453125,1.5859375,1.2109375,1.421875,1.1953125,1.125,0.22460938,-0.6328125,-0.93359375,-0.8671875,1.2421875,-0.23046875,0.12402344,-0.54296875,-0.39453125,0.89453125,-0.114746094,-1.0390625,0.77734375,-0.98828125,-0.18164062,-0.34960938,-0.33203125,0.18164062,1.96875,0.13378906,-0.63671875,-0.57421875,0.671875,-0.4140625,0.33203125,-0.46484375,0.84375,0.05078125,-1.1015625,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.6015625,-0.24121094,0.76171875,-0.04345703,-2.515625,-0.9375,0.7421875,-1.328125,2.546875,-0.31835938,0.01373291,1.8125,-1.3203125,1.421875,-0.75390625,0.12109375,1.171875,0.6640625,-0.20117188,-0.22460938,-0.27929688,-0.5625,0.20019531,0.43359375,-0.32226562,-1.3515625,1.015625,-1.1328125,1.234375,0.6953125,-0.36523438,-0.390625,1.046875,0.78515625,1.15625,1.0078125,3.046875,-2.671875,1.609375,-2.234375,1.1875,0.16796875,-0.296875,-1.7734375,-1.8359375,0.734375,-0.65234375,0.65625,0.27539062,-0.66796875,-1.96875,1.40625,-0.35742188,0.09814453,0.15039062,0.84375,-0.11621094,-1.0234375,1.578125,-0.4921875,-0.26953125,0.51171875,-0.36523438,0.66015625,1.546875,-0.31445312,-1.0390625,-0.82421875,-0.46679688,-0.46875,-0.19824219,0.19824219,0.51953125 -6,0,7,-0.91015625,0.03955078,-0.34375,1.078125,1.359375,-0.03100586,-0.43945312,1.0546875,0.59765625,-0.66015625,0.27539062,1.84375,-0.29296875,-0.6640625,-0.97265625,0.22949219,0.0019836426,-1.046875,1.9765625,-0.4765625,-0.123535156,-2.0625,-0.8203125,0.54296875,-0.12060547,-0.62890625,0.7109375,0.73828125,0.69140625,0.41015625,0.43554688,0.2734375,1.3203125,-0.52734375,2.140625,0.88671875,1.171875,-0.828125,-1.015625,0.6640625,-0.40625,-0.80859375,-1.859375,-1.875,-0.82421875,0.89453125,-0.3984375,-0.94140625,0.8515625,1.7578125,1.125,-0.5703125,-1.15625,0.31640625,-0.123046875,-2.03125,0.35742188,1.515625,0.43359375,0.15625,0.78125,0.83203125,-0.3515625,1.2890625,-1.3125,0.5546875,-1.3359375,-1.90625,0.47460938,-0.0546875,0.81640625,1.4453125,1.78125,-1.7734375,0.8125,0.921875,-0.08251953,-0.6953125,-0.28515625,0.9296875,-1.0390625,0.57421875,-0.29101562,-0.9140625,0.04296875,-1.3671875,-0.43554688,-0.19140625,1.5625,0.859375,1.4453125,-0.13769531,-0.20214844,1.0859375,-0.31835938,-0.27539062,-0.8203125,-0.9609375,-1.03125,-0.21777344,0.08300781,0.40625,1.390625,1.1796875,-1.0703125,1.3671875,0.61328125,0.19921875,-0.049316406,0.515625,0.75390625,0.83984375,2.5,-1.59375,0.76953125,-0.35351562,-1.5234375,0.671875,-0.83984375,-0.7890625,1.3125,0.46289062,-0.67578125,-0.64453125,-1.296875,2.03125,-0.06591797,0.76953125,0.8125,-1.2734375,1.4765625,-2.3125,0.15332031,0.19628906,-0.106933594,0.90234375,0.7265625,-0.12792969,0.41015625,-0.99609375,1.5625,0.265625,-1.453125,1.3828125,-0.36523438,-1.0234375,0.49414062,-0.31640625,-0.18652344,-1.2578125,0.78515625,0.22851562,2.671875,-0.93359375,-0.8203125,0.038330078,0.13867188,-1.578125,1.1875,0.12060547,0.63671875,0.6015625,1.125,0.48046875,0.0546875,0.7265625,0.023925781,0.984375,-0.33203125,-0.0034179688,-1.1875,-1.3984375,-2.359375,-1.28125,-0.4140625,0.9921875,-0.5,-1.5234375,-1.6328125,-0.953125,0.703125,0.16015625,0.25585938,-1.234375,-0.83203125,-1.21875,-0.25,0.19238281,-1.2578125,1.078125,-1.2265625,-0.03100586,-0.87109375,-1.1953125,-1.6171875,0.58203125,-0.18945312,0.21679688,0.20117188,1.609375 -7,0,5,0.8671875,1.2109375,-0.828125,-0.984375,-1.2890625,0.32421875,-0.5,1.515625,-0.7890625,-0.70703125,1.625,0.0040893555,-0.059326172,-0.28125,-1.15625,1.6328125,-0.28710938,-1.5234375,0.15136719,-0.66015625,1.3515625,0.84765625,0.48046875,1.125,0.8984375,-0.859375,-0.93359375,-1.9375,-1.6171875,-0.63671875,-1.2578125,2.453125,1.015625,2.515625,-0.171875,0.14648438,-0.40234375,-0.59765625,0.8671875,0.5625,-0.625,0.28125,0.63671875,0.20117188,1.3046875,0.36328125,0.578125,0.2734375,0.65625,-1.1796875,-0.84375,-0.51171875,-1.8984375,-1.609375,-1.03125,0.59765625,0.08300781,-0.33984375,0.3125,-0.75390625,-0.19140625,-0.515625,1.8515625,1.0,1.1796875,0.70703125,-0.88671875,-0.13867188,0.22558594,0.24902344,-0.036865234,-0.36132812,-0.671875,-0.1875,-0.4765625,-0.15820312,-0.23339844,-0.13183594,-0.01550293,0.45898438,-0.48242188,-0.546875,1.1328125,0.42382812,1.1171875,1.2890625,-0.97265625,0.52734375,1.375,-1.0234375,1.3359375,0.41015625,0.546875,1.21875,0.21972656,-1.3203125,0.76953125,0.99609375,-1.703125,-0.296875,-0.6484375,0.32421875,2.21875,-1.7734375,-1.21875,-1.4765625,-2.015625,-1.7109375,-0.47851562,0.9296875,0.20996094,-1.0078125,0.088378906,0.5703125,0.53125,0.20117188,0.0040283203,-0.98046875,-0.26757812,0.22851562,-0.36914062,-0.3125,-1.4375,-0.99609375,-1.4609375,1.0625,-1.75,-0.55078125,1.0390625,0.984375,0.9140625,-0.484375,-1.140625,-0.6484375,-1.765625,0.8203125,1.109375,-0.1875,-1.6640625,-2.4375,1.484375,-0.55078125,-0.640625,0.59375,0.4765625,0.18652344,-0.25,-0.5234375,0.72265625,1.5390625,-0.75390625,0.2734375,1.2734375,-1.21875,0.6796875,0.30859375,0.59375,-0.859375,0.7734375,-1.1484375,0.80078125,-0.40625,0.64453125,-0.64453125,-1.1328125,3.453125,-0.76171875,-1.1796875,0.328125,-1.015625,-1.0,-0.47070312,-1.2890625,-1.1171875,-0.38085938,1.1796875,0.7890625,-0.72265625,1.046875,-0.49804688,0.390625,0.34960938,0.73046875,-1.2890625,1.1484375,-0.053955078,0.08984375,0.28125,0.24609375,0.38085938,2.03125,-0.14257812,-0.033447266,-0.7265625,-0.0119018555,0.8359375,2.0625,1.796875,0.8515625,0.66796875 -7,0,6,0.5859375,1.3984375,-0.61328125,-0.51953125,-1.9140625,-0.7578125,1.0234375,0.9765625,0.18945312,0.011169434,0.115234375,0.43945312,-0.020263672,-0.828125,-0.51171875,1.8046875,-1.2578125,-0.82421875,0.34960938,0.27734375,0.45703125,-0.60546875,1.046875,0.3671875,1.28125,-0.51171875,-1.984375,-0.71875,0.5,-0.62890625,-0.73828125,-0.008300781,2.21875,-0.43554688,-0.625,-0.076660156,0.25976562,-1.28125,-0.51953125,-0.6796875,-0.4296875,0.18847656,0.29882812,-0.09814453,-0.73046875,0.15429688,0.37890625,0.66015625,-0.28125,-0.20117188,0.89453125,0.546875,-3.75,-0.15429688,1.15625,1.71875,-0.14941406,0.34179688,0.47265625,-0.095703125,-1.046875,-1.1171875,1.0390625,0.33007812,1.6015625,-0.375,-0.234375,-0.34765625,0.040771484,0.35351562,-0.32421875,1.125,-0.04248047,-0.98828125,2.453125,0.83203125,0.88671875,-0.12988281,-1.4375,0.34375,0.59375,-0.28125,1.53125,0.125,0.37304688,0.0019226074,-1.203125,1.1328125,1.6015625,-0.24707031,0.875,-0.3515625,0.99609375,0.5234375,-1.2734375,0.57421875,-0.83984375,1.828125,-1.3984375,0.35742188,0.33984375,0.97265625,-0.5625,0.71875,-0.62109375,-0.2109375,-1.6875,-1.75,-0.29101562,0.33398438,-1.46875,-2.296875,0.3046875,-0.20117188,-1.4140625,1.15625,-0.671875,1.03125,-1.140625,-0.546875,-0.12988281,0.41210938,-1.203125,-1.3359375,0.49023438,0.76171875,-1.625,-0.09667969,-0.18652344,-1.125,1.140625,-0.23144531,-0.11035156,-2.171875,-0.76171875,-0.66796875,1.6484375,0.048339844,-1.4296875,-2.796875,1.4453125,0.15136719,-1.390625,-1.21875,-0.328125,-0.44921875,0.40039062,0.77734375,2.25,1.96875,-0.5390625,-1.0703125,0.17382812,-0.31835938,-0.23925781,-1.2734375,1.234375,0.084472656,0.9921875,0.099121094,-0.27539062,-0.071777344,0.22949219,-0.40625,-1.15625,0.625,-0.515625,-1.375,0.57421875,0.46679688,0.84765625,0.61328125,-0.80078125,0.80859375,-1.59375,1.1328125,2.75,-0.35351562,1.6796875,1.8984375,-0.25195312,0.6484375,0.62109375,-1.0234375,0.045898438,-1.046875,0.4921875,-0.08691406,0.83984375,-0.041259766,0.18652344,0.96875,-0.012329102,0.3125,-1.09375,-0.20605469,0.014526367,2.0,1.0703125,0.028442383 -7,0,7,0.96484375,0.67578125,-1.0078125,-0.94921875,0.052734375,-0.69921875,-0.15136719,1.9921875,0.83203125,0.625,-1.328125,1.8359375,-0.36328125,1.1484375,0.020385742,0.7734375,0.62109375,-0.359375,0.87109375,1.421875,0.23535156,-0.052490234,-0.75390625,-0.328125,-0.6171875,1.3828125,-0.6484375,0.028320312,0.8984375,-2.203125,0.5625,1.7890625,1.1796875,0.16015625,-0.59765625,-0.41601562,0.22558594,1.4609375,0.09033203,-0.10644531,-0.984375,-0.07714844,-0.53515625,0.49414062,0.265625,0.049804688,-0.23828125,-0.33398438,0.06640625,0.17578125,0.099609375,-1.3828125,-0.359375,-0.7421875,0.068847656,0.50390625,-1.6484375,0.15234375,0.28125,-0.63671875,-1.1484375,-0.68359375,1.6171875,-0.34179688,0.45117188,0.55859375,0.25585938,-0.18066406,-0.29882812,1.0390625,0.21972656,2.109375,-0.87109375,-0.7421875,0.8671875,1.5859375,0.16894531,-0.81640625,-2.859375,0.7109375,1.609375,0.578125,1.84375,2.0625,-0.66796875,0.8046875,-0.6796875,-0.65234375,-0.5625,1.375,1.1484375,1.0,-0.16894531,1.2890625,0.021972656,0.111328125,-1.6328125,1.03125,-0.13085938,0.453125,0.66796875,-0.50390625,-0.48828125,-0.34570312,-0.6015625,0.94140625,-0.34570312,-0.91015625,-1.71875,-0.87109375,-0.17871094,-0.47070312,1.5859375,-0.83203125,-0.15234375,-1.0859375,0.21191406,0.19140625,0.8984375,0.80859375,1.2265625,0.06738281,-1.0703125,-0.77734375,-0.47070312,0.734375,-0.17871094,-0.234375,1.2265625,-0.5390625,0.8984375,-1.859375,0.29101562,-1.1640625,-1.359375,0.7734375,-1.578125,0.16699219,0.22167969,-2.0625,0.072265625,-0.13183594,-1.359375,1.2421875,-0.24023438,0.06738281,-0.53515625,1.71875,0.22167969,-1.875,1.5703125,-2.09375,0.34765625,0.20410156,0.1484375,0.46875,1.4140625,0.67578125,-0.54296875,0.23144531,-1.5703125,2.25,-0.83203125,0.796875,1.1640625,-0.78515625,-0.484375,-2.859375,0.23730469,1.2421875,-0.55859375,0.7421875,-1.1171875,1.3203125,0.09326172,1.703125,0.22558594,-1.4921875,-0.765625,0.8203125,-0.609375,0.51953125,-0.41992188,0.47460938,-1.7109375,0.29882812,-1.6953125,-2.046875,1.484375,-0.98046875,-1.5703125,-0.92578125,-1.5390625,0.48046875,0.072265625,0.06640625,0.24023438,-0.37890625,-0.85546875,1.265625 +6,0,5,0.13964844,0.10888672,0.27539062,-0.88671875,1.390625,0.61328125,0.48828125,1.0234375,-0.4921875,-1.046875,0.12597656,-0.26757812,0.57421875,0.35351562,-1.25,0.48632812,-0.546875,-1.9140625,1.1328125,-0.53125,-0.087402344,-0.6640625,1.28125,0.5234375,-1.234375,-1.5078125,-0.953125,-0.8671875,-1.7890625,0.44335938,-0.64453125,-0.26171875,0.010559082,-0.4609375,-0.5234375,0.953125,0.91796875,-0.73828125,-1.4609375,1.578125,-1.8046875,0.030517578,-0.07519531,0.09814453,0.38671875,0.5234375,0.63671875,-0.69921875,0.38085938,1.8515625,-1.1953125,-1.6015625,-0.98046875,1.1015625,-2.421875,0.091796875,-0.21289062,-0.80859375,1.328125,-1.6953125,1.734375,0.18359375,0.29296875,0.30273438,-0.5078125,-0.06640625,-1.0703125,0.16210938,0.546875,1.84375,0.05517578,-0.31835938,0.57421875,-0.13574219,-0.66796875,1.8515625,0.76953125,1.1796875,-1.7734375,-0.5234375,1.28125,0.89453125,-0.11816406,0.12207031,-0.63671875,-0.20117188,-0.46484375,1.4453125,-0.36132812,0.98828125,1.3828125,0.21386719,-0.921875,0.36523438,-1.4296875,0.22363281,-0.59375,-0.640625,0.625,-0.890625,-2.375,-0.18066406,2.515625,0.78125,-0.79296875,0.0051574707,0.063964844,-1.0703125,0.49609375,0.98828125,0.703125,0.036376953,0.56640625,-0.796875,0.49414062,-0.31640625,-0.47851562,-0.34765625,-0.484375,-1.1796875,0.71484375,-0.78515625,0.60546875,-1.5703125,-0.22460938,1.265625,-1.3203125,-2.40625,0.013122559,0.17382812,-0.18652344,0.044921875,-0.025512695,-1.3671875,-1.03125,-0.13671875,-0.65234375,0.25390625,0.20507812,-1.7265625,3.375,-0.40429688,1.3125,1.109375,-1.234375,1.0703125,-0.6015625,-0.671875,-2.515625,1.1015625,-0.30859375,-0.03564453,1.0625,-0.484375,-1.078125,-1.2109375,0.38085938,1.359375,1.015625,1.4375,-0.26367188,-0.011962891,1.8203125,1.2421875,-1.78125,1.6640625,-1.671875,-0.24511719,2.125,-0.20117188,0.36914062,-0.40234375,0.099609375,0.62109375,0.68359375,0.041992188,-0.86328125,-0.84765625,0.859375,-0.61328125,-0.3046875,-0.890625,0.13964844,0.86328125,0.1484375,0.54296875,0.59375,0.037841797,0.87109375,-1.8046875,0.09863281,1.375,1.2578125,0.28710938,0.43554688,-0.17871094,1.6875,0.15625,1.40625,0.51953125 +6,0,6,0.828125,0.83203125,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39257812,-0.10253906,-1.4375,1.109375,-0.19335938,0.53125,-0.54296875,-0.99609375,-0.37109375,-0.81640625,-0.39648438,1.1171875,1.25,0.20410156,-1.8984375,0.36132812,0.35742188,-0.90234375,-1.609375,-1.3828125,-0.34960938,0.22753906,0.057861328,-0.23632812,-0.328125,1.71875,0.20703125,-0.33007812,-0.16992188,0.31445312,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71875,-0.26757812,1.2578125,-0.27929688,0.25390625,-0.734375,-1.0234375,0.43554688,1.7109375,1.140625,-1.7734375,-0.49414062,-0.26757812,-1.0859375,-2.140625,0.3828125,1.3046875,-0.11279297,-1.015625,1.609375,1.59375,1.734375,-0.34570312,-1.0390625,-0.71875,0.05029297,-2.078125,-0.30078125,0.85546875,0.38476562,0.17382812,1.3515625,-1.4921875,0.45898438,0.51953125,0.18359375,-0.20214844,-1.71875,0.39648438,-0.2734375,0.71875,-0.016235352,0.32226562,-0.76171875,0.734375,-2.828125,0.45507812,1.578125,1.2109375,1.4296875,1.203125,1.125,0.22558594,-0.6328125,-0.9375,-0.87109375,1.25,-0.22753906,0.123535156,-0.54296875,-0.40039062,0.890625,-0.11279297,-1.0390625,0.78125,-0.98828125,-0.18164062,-0.34765625,-0.328125,0.18261719,1.96875,0.13378906,-0.63671875,-0.57421875,0.6796875,-0.4140625,0.33398438,-0.46484375,0.83984375,0.052490234,-1.09375,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.59765625,-0.24511719,0.765625,-0.04272461,-2.5,-0.93359375,0.73828125,-1.3125,2.546875,-0.31445312,0.013977051,1.8203125,-1.3203125,1.4296875,-0.75,0.12158203,1.171875,0.6640625,-0.20117188,-0.22558594,-0.28320312,-0.56640625,0.203125,0.4296875,-0.32226562,-1.34375,1.0234375,-1.140625,1.2265625,0.69921875,-0.36523438,-0.39257812,1.0546875,0.78515625,1.1484375,1.0078125,3.03125,-2.671875,1.6171875,-2.25,1.1796875,0.16796875,-0.29492188,-1.7734375,-1.84375,0.7265625,-0.6484375,0.65625,0.27734375,-0.66796875,-1.96875,1.40625,-0.35351562,0.09667969,0.15332031,0.83984375,-0.11230469,-1.015625,1.578125,-0.49609375,-0.26757812,0.5078125,-0.36914062,0.65625,1.546875,-0.31835938,-1.046875,-0.8125,-0.46289062,-0.46875,-0.19726562,0.19726562,0.51953125 +6,0,7,-0.9140625,0.041748047,-0.34179688,1.09375,1.3671875,-0.032226562,-0.43945312,1.0625,0.59765625,-0.66015625,0.27539062,1.84375,-0.2890625,-0.65625,-0.97265625,0.22949219,-0.00076293945,-1.046875,1.96875,-0.48046875,-0.123046875,-2.0625,-0.8125,0.53515625,-0.11816406,-0.62890625,0.71484375,0.73828125,0.68359375,0.40820312,0.44140625,0.2734375,1.328125,-0.515625,2.125,0.88671875,1.171875,-0.82421875,-1.015625,0.6640625,-0.40429688,-0.80859375,-1.8671875,-1.875,-0.828125,0.890625,-0.3984375,-0.94140625,0.86328125,1.75,1.140625,-0.5703125,-1.1484375,0.31054688,-0.12109375,-2.03125,0.35546875,1.515625,0.43359375,0.15722656,0.78125,0.83203125,-0.3515625,1.2890625,-1.3203125,0.5546875,-1.3359375,-1.9140625,0.47851562,-0.049316406,0.8046875,1.4453125,1.765625,-1.7734375,0.8203125,0.921875,-0.08251953,-0.69140625,-0.2890625,0.92578125,-1.03125,0.5703125,-0.28710938,-0.91015625,0.04296875,-1.359375,-0.4375,-0.19238281,1.5625,0.859375,1.4453125,-0.13574219,-0.20117188,1.0859375,-0.3203125,-0.27734375,-0.8203125,-0.9609375,-1.0234375,-0.21289062,0.083984375,0.40625,1.390625,1.1875,-1.0703125,1.3671875,0.61328125,0.19824219,-0.049560547,0.5234375,0.74609375,0.84375,2.484375,-1.578125,0.77734375,-0.35546875,-1.53125,0.66796875,-0.83984375,-0.7890625,1.328125,0.4609375,-0.671875,-0.64453125,-1.296875,2.015625,-0.06689453,0.7578125,0.8203125,-1.28125,1.484375,-2.328125,0.15722656,0.19335938,-0.110839844,0.8984375,0.72265625,-0.12988281,0.41210938,-1.0,1.5703125,0.26367188,-1.4453125,1.3828125,-0.36523438,-1.015625,0.49804688,-0.31640625,-0.1875,-1.25,0.7890625,0.22851562,2.671875,-0.921875,-0.8125,0.0390625,0.140625,-1.59375,1.1953125,0.12207031,0.63671875,0.59765625,1.1328125,0.47851562,0.0546875,0.73046875,0.020141602,0.98046875,-0.33398438,-0.005218506,-1.1953125,-1.40625,-2.359375,-1.2890625,-0.41796875,0.99609375,-0.49804688,-1.53125,-1.640625,-0.953125,0.7109375,0.16601562,0.25585938,-1.234375,-0.83984375,-1.21875,-0.25,0.19042969,-1.2578125,1.078125,-1.2109375,-0.030517578,-0.8671875,-1.1875,-1.609375,0.578125,-0.1875,0.21386719,0.203125,1.609375 +7,0,5,0.8671875,1.2109375,-0.828125,-0.984375,-1.28125,0.32617188,-0.5,1.5234375,-0.7890625,-0.71484375,1.625,0.010192871,-0.060791016,-0.28125,-1.15625,1.640625,-0.28515625,-1.5234375,0.15039062,-0.66796875,1.34375,0.84375,0.47851562,1.125,0.88671875,-0.85546875,-0.9296875,-1.9453125,-1.6171875,-0.62890625,-1.2578125,2.453125,1.015625,2.515625,-0.16992188,0.14550781,-0.40234375,-0.59765625,0.86328125,0.5546875,-0.62890625,0.28125,0.640625,0.20019531,1.3046875,0.36328125,0.58203125,0.27539062,0.6484375,-1.1796875,-0.83984375,-0.5078125,-1.890625,-1.609375,-1.03125,0.59375,0.08642578,-0.33789062,0.31445312,-0.75,-0.19042969,-0.515625,1.8515625,1.0,1.1796875,0.7109375,-0.890625,-0.13964844,0.22460938,0.24707031,-0.03857422,-0.36132812,-0.6796875,-0.18847656,-0.47265625,-0.15332031,-0.23339844,-0.13085938,-0.014709473,0.45898438,-0.48046875,-0.5390625,1.1328125,0.4296875,1.109375,1.2890625,-0.97265625,0.53125,1.359375,-1.015625,1.3359375,0.40625,0.546875,1.2109375,0.21875,-1.3125,0.765625,1.0,-1.71875,-0.29882812,-0.64453125,0.328125,2.234375,-1.7734375,-1.2265625,-1.484375,-2.0,-1.7265625,-0.48242188,0.93359375,0.21289062,-1.0078125,0.09082031,0.57421875,0.52734375,0.203125,0.008850098,-0.984375,-0.265625,0.22753906,-0.36914062,-0.31054688,-1.4375,-1.0,-1.46875,1.0625,-1.7578125,-0.55078125,1.0390625,0.98828125,0.90625,-0.484375,-1.140625,-0.64453125,-1.7578125,0.83203125,1.109375,-0.18359375,-1.6640625,-2.421875,1.4765625,-0.55078125,-0.640625,0.59765625,0.4765625,0.18261719,-0.24902344,-0.52734375,0.71875,1.5390625,-0.75390625,0.27539062,1.2734375,-1.2109375,0.67578125,0.3125,0.59375,-0.86328125,0.77734375,-1.1328125,0.796875,-0.40234375,0.64453125,-0.6484375,-1.140625,3.46875,-0.7578125,-1.1953125,0.33007812,-1.0234375,-1.0,-0.47460938,-1.28125,-1.1171875,-0.38085938,1.171875,0.78515625,-0.72265625,1.0390625,-0.49804688,0.39453125,0.3515625,0.73046875,-1.2890625,1.1484375,-0.053710938,0.08935547,0.28515625,0.25,0.3828125,2.03125,-0.14257812,-0.033203125,-0.7265625,-0.011657715,0.84375,2.0625,1.796875,0.84765625,0.66796875 +7,0,6,0.58984375,1.3984375,-0.609375,-0.51171875,-1.9140625,-0.7421875,1.0234375,0.9765625,0.18652344,0.0099487305,0.11669922,0.44335938,-0.01940918,-0.82421875,-0.51953125,1.796875,-1.2578125,-0.82421875,0.34960938,0.27929688,0.45703125,-0.6015625,1.046875,0.3671875,1.2734375,-0.50390625,-1.984375,-0.71875,0.5,-0.6328125,-0.73828125,-0.008544922,2.21875,-0.43359375,-0.62109375,-0.07519531,0.25976562,-1.28125,-0.515625,-0.6875,-0.42773438,0.18847656,0.29882812,-0.09863281,-0.73046875,0.15234375,0.37890625,0.6640625,-0.27734375,-0.20019531,0.89453125,0.546875,-3.765625,-0.15625,1.15625,1.71875,-0.15332031,0.34375,0.47070312,-0.100097656,-1.0546875,-1.1171875,1.0390625,0.328125,1.6015625,-0.375,-0.23828125,-0.34765625,0.04638672,0.35546875,-0.32617188,1.125,-0.045654297,-0.9921875,2.4375,0.83203125,0.88671875,-0.12792969,-1.4453125,0.34179688,0.59765625,-0.27929688,1.5234375,0.123046875,0.37304688,0.003616333,-1.203125,1.125,1.59375,-0.24609375,0.87890625,-0.34570312,1.0,0.52734375,-1.2734375,0.57421875,-0.84375,1.8203125,-1.3984375,0.35742188,0.33789062,0.9765625,-0.5546875,0.71484375,-0.625,-0.21484375,-1.6875,-1.75,-0.29296875,0.33398438,-1.4609375,-2.3125,0.31445312,-0.20410156,-1.4140625,1.15625,-0.66796875,1.0390625,-1.140625,-0.54296875,-0.13085938,0.41210938,-1.203125,-1.328125,0.484375,0.765625,-1.6328125,-0.09716797,-0.18652344,-1.1328125,1.1484375,-0.23730469,-0.110839844,-2.1875,-0.765625,-0.6640625,1.65625,0.048095703,-1.421875,-2.78125,1.453125,0.15136719,-1.3984375,-1.203125,-0.328125,-0.44921875,0.40625,0.77734375,2.21875,1.9765625,-0.5390625,-1.0703125,0.17578125,-0.3203125,-0.23925781,-1.2734375,1.234375,0.08105469,0.99609375,0.09765625,-0.27148438,-0.072753906,0.22949219,-0.40234375,-1.15625,0.62890625,-0.515625,-1.375,0.58203125,0.46875,0.84375,0.61328125,-0.796875,0.80859375,-1.6015625,1.1328125,2.75,-0.35546875,1.6796875,1.90625,-0.25390625,0.65234375,0.625,-1.0234375,0.047607422,-1.03125,0.49023438,-0.087890625,0.84375,-0.04272461,0.18847656,0.96875,-0.0099487305,0.3125,-1.09375,-0.20214844,0.014343262,1.9921875,1.0703125,0.028198242 +7,0,7,0.9609375,0.671875,-1.0234375,-0.95703125,0.057128906,-0.6953125,-0.15332031,1.9921875,0.82421875,0.625,-1.3359375,1.84375,-0.36328125,1.15625,0.025634766,0.765625,0.62890625,-0.35546875,0.87890625,1.4140625,0.22949219,-0.049072266,-0.74609375,-0.33203125,-0.6171875,1.3828125,-0.64453125,0.028442383,0.8984375,-2.203125,0.5703125,1.796875,1.1796875,0.16113281,-0.59375,-0.4140625,0.22558594,1.4609375,0.080078125,-0.107421875,-0.9765625,-0.07910156,-0.53125,0.49023438,0.26171875,0.05053711,-0.24121094,-0.33203125,0.071777344,0.18066406,0.09472656,-1.390625,-0.35742188,-0.73828125,0.07324219,0.49804688,-1.6484375,0.15332031,0.28515625,-0.64453125,-1.1484375,-0.6875,1.6171875,-0.33789062,0.45117188,0.55859375,0.25195312,-0.18261719,-0.29492188,1.046875,0.22167969,2.078125,-0.859375,-0.7421875,0.86328125,1.5859375,0.16601562,-0.81640625,-2.84375,0.70703125,1.6015625,0.578125,1.859375,2.0625,-0.66796875,0.80078125,-0.6796875,-0.65625,-0.55859375,1.375,1.140625,1.0,-0.16992188,1.2890625,0.020141602,0.111816406,-1.640625,1.03125,-0.12890625,0.45507812,0.66796875,-0.50390625,-0.484375,-0.34375,-0.59765625,0.9375,-0.3359375,-0.9140625,-1.71875,-0.875,-0.17871094,-0.47265625,1.59375,-0.83203125,-0.15039062,-1.078125,0.21484375,0.19238281,0.8984375,0.8046875,1.234375,0.06225586,-1.0703125,-0.78515625,-0.46679688,0.73828125,-0.17675781,-0.23925781,1.2265625,-0.53125,0.8984375,-1.859375,0.29492188,-1.1640625,-1.359375,0.765625,-1.578125,0.16601562,0.22460938,-2.046875,0.071777344,-0.13378906,-1.375,1.234375,-0.23828125,0.06689453,-0.53515625,1.7109375,0.21679688,-1.875,1.5859375,-2.109375,0.34375,0.20410156,0.15039062,0.46679688,1.421875,0.68359375,-0.54296875,0.23535156,-1.578125,2.234375,-0.8359375,0.796875,1.1484375,-0.78515625,-0.484375,-2.875,0.23535156,1.25,-0.55859375,0.73828125,-1.1171875,1.3203125,0.091308594,1.703125,0.23144531,-1.4921875,-0.765625,0.82421875,-0.61328125,0.51953125,-0.41601562,0.47070312,-1.7109375,0.29882812,-1.6796875,-2.046875,1.484375,-0.9765625,-1.5703125,-0.92578125,-1.5234375,0.48242188,0.06982422,0.064941406,0.24121094,-0.37890625,-0.859375,1.265625 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv index 3da2498e..0aac125f 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,5,1.0703125,0.25,-0.16601562,-0.29296875,0.10986328,-0.42382812,-1.28125,0.7890625,0.23828125,0.46875,0.1328125,0.921875,1.2421875,-0.13574219,-0.56640625,-0.12792969,-1.078125,-2.234375,0.93359375,0.21386719,1.78125,-1.03125,-1.2890625,-0.20898438,1.4140625,-0.30078125,-0.71484375,-0.010803223,0.25585938,-0.14355469,-0.84375,-0.61328125,1.953125,-0.94140625,-0.9296875,-0.41601562,0.09277344,-1.140625,-2.59375,-0.46484375,0.4453125,-0.87890625,-0.70703125,-0.29882812,-1.2265625,0.5234375,-0.31835938,0.50390625,1.7578125,1.4375,-0.27148438,0.359375,-1.6640625,1.2578125,-0.103515625,0.38085938,-0.5,1.8828125,0.7109375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.859375,0.41601562,0.94140625,1.421875,1.21875,-0.41601562,-0.94921875,2.90625,1.78125,-0.35546875,-0.111816406,-0.49804688,0.27148438,-0.34179688,0.26953125,-0.0005874634,2.359375,-0.48046875,-0.58984375,-0.4140625,2.5,1.0546875,0.92578125,0.8125,0.54296875,0.81640625,0.06689453,-0.84375,-0.13574219,0.5546875,1.0390625,0.51171875,-0.94140625,0.19335938,1.0390625,-0.46875,0.36914062,-0.16503906,0.76953125,-1.171875,-1.140625,0.37695312,0.33203125,-1.015625,-0.15625,-0.55859375,-1.9453125,-1.78125,0.103515625,-0.625,1.2109375,-1.265625,0.4453125,0.61328125,0.41210938,-2.21875,-1.359375,-0.8046875,0.18652344,-0.5625,0.43359375,0.6640625,-0.6328125,1.7734375,-0.25,0.14355469,-1.5,-0.65625,0.5703125,0.5546875,0.19335938,-0.74609375,-2.5,1.078125,2.578125,-0.71484375,-1.21875,-1.265625,1.21875,0.32421875,-0.15722656,0.32226562,0.60546875,0.55859375,0.98046875,0.6328125,-0.6171875,-0.78125,-1.453125,0.28710938,-0.05053711,1.171875,-0.65625,0.36132812,0.57421875,0.075683594,-1.0625,0.5859375,-0.28515625,0.578125,-0.74609375,-1.28125,1.265625,0.14160156,0.65234375,-0.90234375,-0.53515625,-1.7109375,1.84375,-0.17773438,-0.5859375,0.079589844,-0.484375,1.25,0.40429688,0.8203125,-0.6796875,-1.0703125,-1.5625,0.18847656,0.36328125,0.69140625,0.625,-0.29882812,0.3671875,0.80078125,-0.93359375,-0.640625,-1.8515625,-0.6953125,1.2578125,1.0234375,0.7265625 -8,0,6,0.87109375,0.9921875,-0.1796875,0.12597656,0.08154297,-0.609375,0.7578125,1.0703125,1.0703125,-0.796875,1.328125,1.546875,0.051757812,-1.03125,-0.14355469,0.296875,-0.6796875,-1.0078125,0.83984375,0.33398438,0.026855469,-0.36523438,-0.24609375,1.625,-0.18261719,0.14550781,-2.78125,0.21289062,0.3125,0.7890625,-0.5078125,-0.8984375,1.3671875,-0.7734375,0.578125,0.59375,0.53125,-0.94140625,-0.22167969,1.078125,-1.203125,1.1171875,-0.33984375,-2.40625,-0.8671875,-0.78515625,0.26171875,-0.22851562,1.296875,1.6015625,0.55859375,-0.47460938,-0.92578125,0.67578125,0.47460938,0.265625,0.19921875,-0.515625,-1.0625,-0.033935547,1.46875,0.2109375,0.6328125,0.859375,0.50390625,-0.43359375,-0.14160156,0.5625,-1.359375,0.67578125,-0.099121094,0.54296875,0.84765625,-0.42578125,1.8359375,0.8046875,1.390625,1.0546875,-0.35351562,0.37304688,-0.083984375,-1.1328125,0.83984375,-1.4453125,-0.45507812,0.36523438,-0.03149414,-0.036132812,1.7578125,0.19042969,1.3515625,-0.5390625,-1.03125,1.25,-1.1015625,-0.59375,-2.734375,0.49414062,-0.59765625,-0.3671875,-1.4609375,1.1640625,0.37890625,0.19628906,-0.59765625,1.8359375,-0.75390625,0.16796875,-1.15625,0.30859375,-0.56640625,-0.42773438,0.91796875,-0.25976562,0.36328125,1.765625,-0.5078125,0.5546875,-0.16015625,-0.44335938,0.578125,-0.625,-0.49023438,-0.9375,-1.328125,2.109375,-1.265625,-1.046875,0.71484375,-1.28125,1.3203125,-1.21875,-0.6875,-0.76953125,-1.6015625,0.6484375,1.09375,-0.52734375,0.05908203,-2.46875,1.703125,-0.94921875,-1.765625,1.375,0.7109375,-0.04321289,0.8671875,-0.89453125,-1.1640625,0.9140625,-1.2890625,-0.703125,0.68359375,-1.015625,1.1171875,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.06933594,1.65625,2.453125,1.453125,-1.5234375,0.099121094,-0.54296875,0.08496094,0.859375,-0.15527344,-1.015625,-0.29492188,-1.640625,-0.14941406,-1.5390625,1.0390625,0.90625,-1.1640625,0.29492188,0.049804688,-1.2734375,-1.40625,0.53515625,-1.0,-0.45507812,0.24609375,0.021606445,0.56640625,-1.6171875,-1.6328125,-0.23535156,2.46875,-0.36914062,-0.97265625,-1.5625,1.03125,1.4921875,1.09375,-0.41992188,-0.59375 -8,0,7,1.2578125,1.5546875,0.1015625,-0.2578125,-1.5859375,-0.019165039,-1.328125,1.4375,1.4140625,-2.65625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.4921875,0.46875,0.2890625,0.40625,1.859375,-0.015991211,-0.8046875,-0.036132812,-0.390625,-0.25,-0.86328125,-1.0625,-0.71484375,-0.22070312,0.099121094,-0.20605469,-0.25195312,0.016601562,1.0546875,0.71484375,0.09716797,0.29101562,1.40625,0.14648438,-0.88671875,1.6953125,-2.3125,-0.22265625,0.114746094,2.140625,0.25976562,0.91796875,-0.87109375,0.7109375,-0.061767578,0.88671875,-0.64453125,-0.08984375,-0.3515625,-0.24902344,-0.41601562,-0.45507812,0.19433594,0.80859375,-1.1328125,0.16601562,0.546875,0.65625,1.65625,-0.40820312,1.3671875,0.43164062,-0.36328125,-1.265625,-0.98046875,0.079589844,-0.27148438,-0.23730469,0.6171875,0.037841797,-0.91015625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66015625,0.953125,-1.2265625,-0.18066406,0.33398438,0.24511719,-1.3046875,0.103515625,0.51171875,1.9453125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.68359375,0.004760742,0.19335938,-0.703125,-2.390625,0.87890625,1.7265625,-1.7421875,0.03515625,1.546875,-1.1171875,-0.46289062,0.0546875,0.20410156,-0.08935547,-0.3125,1.3359375,-0.73046875,0.06542969,0.080566406,-0.3828125,0.24902344,-0.25390625,0.859375,1.6484375,-0.56640625,-0.15429688,-1.796875,-0.515625,0.20117188,0.39257812,-1.5625,-0.11816406,1.390625,-0.890625,1.109375,-1.3984375,0.6484375,-2.078125,1.515625,0.90625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.76171875,0.033691406,-0.19140625,0.20507812,0.48046875,-0.59375,-0.7578125,1.234375,-1.3984375,0.296875,0.58203125,-0.119628906,-0.31835938,0.09667969,1.1953125,0.34570312,0.52734375,0.037353516,-0.67578125,0.16699219,0.4375,0.13085938,-1.2578125,0.83984375,-0.6015625,0.6796875,0.66796875,-2.015625,-2.109375,-1.3359375,-2.171875,-0.49023438,0.34765625,2.296875,0.36914062,-0.52734375,0.037597656,-0.4453125,0.64453125,-0.27929688,-0.2578125,0.20898438,-0.38476562,0.14160156,0.91796875,1.4375,-0.47265625,0.045410156,0.080566406,0.25976562,0.78125,-1.4140625,-3.125,1.2578125,3.359375,0.64453125,-0.44726562,0.49609375 +8,0,5,1.078125,0.25195312,-0.16601562,-0.296875,0.109375,-0.42578125,-1.28125,0.7890625,0.23632812,0.46484375,0.13574219,0.921875,1.2421875,-0.13476562,-0.55859375,-0.13183594,-1.078125,-2.25,0.9375,0.21386719,1.7890625,-1.0234375,-1.2890625,-0.2109375,1.40625,-0.30078125,-0.71484375,-0.013305664,0.2578125,-0.14648438,-0.84765625,-0.61328125,1.9453125,-0.94921875,-0.93359375,-0.41601562,0.09472656,-1.140625,-2.578125,-0.453125,0.44726562,-0.87890625,-0.71484375,-0.29882812,-1.21875,0.5234375,-0.3203125,0.5,1.765625,1.4296875,-0.27148438,0.36328125,-1.6640625,1.2578125,-0.10595703,0.38671875,-0.5,1.8828125,0.71484375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.875,0.41601562,0.9375,1.421875,1.2265625,-0.41992188,-0.94921875,2.90625,1.78125,-0.3515625,-0.11669922,-0.5,0.26953125,-0.34765625,0.26757812,0.0007362366,2.34375,-0.48046875,-0.58984375,-0.41601562,2.5,1.0546875,0.91015625,0.8125,0.5390625,0.8203125,0.06933594,-0.84765625,-0.13769531,0.5546875,1.0390625,0.5078125,-0.9453125,0.19824219,1.0390625,-0.46484375,0.37109375,-0.16796875,0.76953125,-1.171875,-1.15625,0.375,0.33398438,-1.015625,-0.15820312,-0.55859375,-1.9453125,-1.78125,0.10253906,-0.625,1.2265625,-1.2578125,0.44140625,0.61328125,0.41210938,-2.203125,-1.359375,-0.8046875,0.18847656,-0.5625,0.43945312,0.6640625,-0.62890625,1.7578125,-0.25390625,0.14550781,-1.5078125,-0.65234375,0.5703125,0.55859375,0.19726562,-0.75,-2.5,1.0703125,2.59375,-0.7109375,-1.21875,-1.265625,1.234375,0.31640625,-0.15332031,0.31640625,0.6015625,0.56640625,0.98046875,0.6328125,-0.6171875,-0.77734375,-1.4609375,0.29296875,-0.049316406,1.171875,-0.64453125,0.35546875,0.57421875,0.080078125,-1.0703125,0.5859375,-0.28515625,0.57421875,-0.74609375,-1.2890625,1.2890625,0.14550781,0.65234375,-0.8984375,-0.52734375,-1.6953125,1.84375,-0.17871094,-0.58203125,0.07861328,-0.48632812,1.25,0.40625,0.828125,-0.68359375,-1.0703125,-1.5546875,0.18652344,0.36328125,0.6953125,0.625,-0.30078125,0.36328125,0.796875,-0.93359375,-0.6328125,-1.8828125,-0.6953125,1.25,1.03125,0.72265625 +8,0,6,0.87109375,0.984375,-0.17871094,0.12597656,0.08203125,-0.60546875,0.765625,1.0703125,1.078125,-0.80859375,1.3203125,1.5546875,0.053710938,-1.03125,-0.14355469,0.30078125,-0.67578125,-1.0078125,0.8359375,0.3359375,0.026489258,-0.36328125,-0.24609375,1.640625,-0.18164062,0.14550781,-2.78125,0.21191406,0.3203125,0.7890625,-0.5078125,-0.90625,1.3671875,-0.78125,0.57421875,0.59375,0.53515625,-0.93359375,-0.21972656,1.0859375,-1.2109375,1.109375,-0.34179688,-2.421875,-0.8671875,-0.7890625,0.25976562,-0.22949219,1.3046875,1.6015625,0.5546875,-0.47070312,-0.92578125,0.6796875,0.46875,0.26757812,0.19921875,-0.5078125,-1.0703125,-0.036376953,1.4765625,0.20703125,0.6328125,0.859375,0.50390625,-0.43554688,-0.14160156,0.55859375,-1.3671875,0.66796875,-0.09863281,0.5390625,0.84765625,-0.42578125,1.8359375,0.8046875,1.3984375,1.046875,-0.35546875,0.36914062,-0.0859375,-1.125,0.83984375,-1.4375,-0.45507812,0.3671875,-0.03173828,-0.036132812,1.75,0.1875,1.34375,-0.5390625,-1.03125,1.2421875,-1.09375,-0.59765625,-2.75,0.49023438,-0.6015625,-0.3671875,-1.453125,1.171875,0.38085938,0.19140625,-0.58984375,1.84375,-0.75,0.16601562,-1.1640625,0.30859375,-0.56640625,-0.42578125,0.91796875,-0.26367188,0.36328125,1.765625,-0.5078125,0.5546875,-0.15917969,-0.44335938,0.57421875,-0.62890625,-0.4921875,-0.94140625,-1.328125,2.109375,-1.2578125,-1.0546875,0.71875,-1.265625,1.3203125,-1.2109375,-0.6875,-0.76171875,-1.59375,0.65234375,1.09375,-0.52734375,0.057373047,-2.46875,1.703125,-0.9453125,-1.7578125,1.3671875,0.71484375,-0.04272461,0.875,-0.89453125,-1.171875,0.9140625,-1.296875,-0.70703125,0.68359375,-1.0234375,1.109375,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.07128906,1.65625,2.453125,1.4609375,-1.53125,0.100097656,-0.5390625,0.084472656,0.859375,-0.16113281,-1.015625,-0.296875,-1.6328125,-0.14746094,-1.5390625,1.0390625,0.9140625,-1.1640625,0.29492188,0.046875,-1.2734375,-1.4140625,0.54296875,-1.0,-0.45703125,0.24902344,0.022705078,0.56640625,-1.6171875,-1.625,-0.234375,2.46875,-0.3671875,-0.9609375,-1.546875,1.03125,1.4921875,1.09375,-0.421875,-0.59375 +8,0,7,1.25,1.5546875,0.10205078,-0.26171875,-1.609375,-0.016479492,-1.328125,1.4375,1.40625,-2.640625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.49609375,0.46679688,0.29101562,0.41210938,1.859375,-0.016845703,-0.8046875,-0.034179688,-0.39453125,-0.25195312,-0.8671875,-1.0546875,-0.71484375,-0.22363281,0.09765625,-0.20605469,-0.25195312,0.01928711,1.0546875,0.71875,0.099609375,0.28710938,1.421875,0.14550781,-0.8828125,1.6875,-2.3125,-0.22265625,0.114746094,2.140625,0.26367188,0.921875,-0.87109375,0.71484375,-0.0625,0.87890625,-0.6484375,-0.09033203,-0.34960938,-0.25390625,-0.4140625,-0.45703125,0.19628906,0.8125,-1.1328125,0.16796875,0.546875,0.65234375,1.65625,-0.41601562,1.359375,0.43359375,-0.36328125,-1.2578125,-0.98046875,0.076660156,-0.2734375,-0.234375,0.6171875,0.04272461,-0.9140625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66796875,0.95703125,-1.2421875,-0.17773438,0.3359375,0.24609375,-1.3046875,0.10058594,0.51171875,1.953125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.6796875,0.0028839111,0.19433594,-0.703125,-2.390625,0.87890625,1.71875,-1.7421875,0.03149414,1.5390625,-1.109375,-0.46484375,0.053466797,0.20800781,-0.08691406,-0.3125,1.328125,-0.7265625,0.06738281,0.080078125,-0.37890625,0.24707031,-0.25390625,0.859375,1.640625,-0.56640625,-0.15332031,-1.796875,-0.51171875,0.20214844,0.39257812,-1.5546875,-0.11767578,1.3828125,-0.890625,1.1171875,-1.3984375,0.6484375,-2.09375,1.515625,0.9140625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.765625,0.03930664,-0.18945312,0.203125,0.48046875,-0.5859375,-0.76171875,1.2421875,-1.40625,0.29492188,0.578125,-0.114746094,-0.31835938,0.09765625,1.1953125,0.34179688,0.53125,0.03564453,-0.66796875,0.16796875,0.44140625,0.13085938,-1.2578125,0.84375,-0.6015625,0.67578125,0.671875,-2.015625,-2.109375,-1.328125,-2.171875,-0.49414062,0.34765625,2.28125,0.36914062,-0.5234375,0.036865234,-0.44726562,0.64453125,-0.27734375,-0.25390625,0.21191406,-0.38085938,0.14160156,0.91796875,1.453125,-0.47460938,0.048583984,0.084472656,0.2578125,0.77734375,-1.421875,-3.140625,1.265625,3.359375,0.6484375,-0.44726562,0.4921875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv index 5c971edd..f8e891b1 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,5,0.78515625,1.0,-0.059570312,0.65234375,0.36132812,-0.49804688,0.3359375,1.0859375,-0.15917969,-1.0625,0.72265625,-0.25,-1.125,-0.859375,-1.0546875,0.1484375,-1.0859375,1.375,-0.43554688,0.30078125,-0.025146484,0.79296875,-0.33203125,-0.13964844,-0.609375,-1.4765625,-2.765625,0.3125,-0.63671875,0.51171875,-1.046875,-1.1171875,-0.38476562,0.21972656,-0.63671875,-0.8984375,0.515625,-1.2578125,0.63671875,-0.103515625,-0.7578125,0.43945312,0.40039062,1.59375,0.29882812,0.69921875,0.05517578,0.29492188,-2.140625,0.8125,1.28125,-1.2890625,-2.296875,-0.14355469,-0.92578125,-0.44726562,0.078125,1.0078125,-0.2734375,-0.8125,-0.07763672,1.265625,-0.07373047,-0.17089844,1.3046875,-0.5859375,0.33789062,-0.0017471313,0.22070312,0.94140625,0.18164062,-2.015625,0.8984375,-1.1171875,-0.1328125,1.265625,1.765625,-0.13085938,0.22851562,-0.3671875,0.90234375,0.47265625,-0.17480469,-1.1015625,-0.4609375,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.62109375,1.6796875,0.8828125,0.59765625,-0.27734375,-0.20898438,-1.09375,0.80078125,0.12207031,0.60546875,1.6796875,0.67578125,-0.90625,-0.21289062,0.50390625,-0.35546875,-0.94921875,-0.52734375,0.42578125,-0.1640625,-1.59375,2.015625,0.07763672,0.5,-0.36328125,0.16796875,-0.47851562,1.578125,-0.30078125,1.4453125,1.4609375,-1.296875,-0.77734375,-1.03125,0.02319336,0.20605469,0.33789062,-1.0546875,-2.203125,0.18457031,0.22265625,-0.76953125,-0.85546875,0.21289062,0.2421875,1.0,-0.44335938,-1.109375,1.2421875,-1.90625,1.3515625,-0.5390625,-0.43945312,-0.1171875,1.1796875,0.33789062,-0.97265625,-0.119140625,2.203125,3.46875,-0.27929688,-0.75,-2.375,2.21875,-0.48828125,0.2421875,0.203125,1.265625,-1.4921875,0.44335938,-0.95703125,1.0625,0.66015625,1.7421875,-1.9296875,0.23339844,-1.265625,0.828125,1.2109375,-1.1484375,-0.06542969,-1.0703125,1.8359375,-0.80078125,-0.47851562,0.0008468628,0.040039062,-0.734375,1.21875,0.17675781,-0.5546875,0.31445312,1.546875,0.30664062,-0.068847656,0.44140625,1.296875,0.50390625,0.94921875,-2.96875,-0.12402344,-0.10107422,0.007446289,-1.2421875,-1.40625,1.6640625,1.234375,-0.5390625,-0.890625,-0.51171875 -9,0,6,-0.16699219,1.359375,-0.18457031,-0.94140625,0.55859375,0.32421875,0.57421875,-0.81640625,1.5859375,-1.4609375,2.109375,-1.296875,-0.46484375,-0.18066406,-0.43164062,-0.47851562,-1.0546875,0.03173828,0.9296875,0.640625,0.30664062,-0.98046875,1.2578125,0.07373047,-1.609375,-2.046875,-0.65234375,-0.01574707,-0.09667969,1.328125,0.62890625,-0.27734375,0.703125,0.83984375,0.111816406,-0.17480469,0.59375,0.64453125,-0.3046875,-0.0014801025,-0.45117188,0.5703125,1.046875,0.90625,-0.7265625,0.99609375,0.07324219,-1.6484375,-0.70703125,2.25,0.578125,-1.109375,-0.609375,0.84765625,0.34765625,-0.51171875,-0.010070801,1.09375,0.546875,-0.171875,0.96875,1.6875,0.20800781,0.5,1.0,0.24511719,-0.85546875,-0.8984375,0.24414062,0.9765625,-1.1015625,0.5,0.38867188,-0.53515625,-0.53515625,-0.34179688,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.091796875,-0.038085938,2.1875,0.28320312,0.020141602,-2.21875,-0.55078125,0.66796875,-0.13378906,2.203125,0.044921875,1.3203125,-0.72265625,-0.11621094,-0.049072266,-1.2109375,0.21386719,-0.81640625,-1.5390625,-0.41210938,-0.625,1.5078125,-0.45117188,-0.54296875,1.1015625,-2.03125,0.33007812,-0.21191406,-0.34179688,-0.49414062,2.109375,-0.43164062,-2.59375,-0.5859375,0.65625,-0.98046875,0.84765625,-0.24902344,0.13085938,0.5625,-1.1796875,0.025756836,-2.21875,-1.2734375,2.28125,-1.4609375,-0.70703125,-0.41601562,-0.38085938,1.0859375,0.07714844,-1.0546875,-0.0390625,-1.078125,2.34375,-0.5390625,0.62890625,0.72265625,-0.89453125,1.4296875,0.22265625,0.16894531,2.203125,0.0625,-1.0703125,-0.052246094,-0.75390625,-1.265625,0.6484375,-0.5,-0.65234375,-0.68359375,0.053466797,-0.87109375,-0.05078125,0.20214844,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.140625,-2.4375,1.921875,-0.78515625,2.03125,-0.028686523,-0.14941406,-1.2421875,-0.026245117,-0.484375,-1.1171875,0.6015625,0.33203125,-0.111816406,-2.6875,-0.49414062,-0.94140625,1.2890625,0.57421875,0.5078125,0.8046875,-1.0078125,1.7734375,-1.2734375,-0.25585938,-0.72265625,0.125,0.48828125,0.6640625,0.36328125,0.41796875,-0.12695312,-1.71875,0.2109375,-0.036132812,1.0078125,0.7265625 -9,0,7,-0.31445312,0.34179688,0.5546875,-2.0625,-0.029174805,0.671875,1.8046875,-0.69921875,1.0390625,-0.98046875,1.125,-1.3671875,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.043701172,-0.62890625,2.109375,-0.734375,-0.78125,-1.40625,1.25,-0.15429688,-2.46875,-1.6171875,0.18457031,-0.79296875,-0.515625,1.65625,0.53125,-0.546875,-0.122558594,0.099121094,1.109375,0.7734375,-0.20898438,-0.14160156,-1.8046875,0.9609375,-1.53125,0.51953125,0.95703125,0.96875,0.59765625,1.3671875,-0.98828125,-1.1484375,-0.2265625,1.609375,-1.78125,0.25390625,-1.0,1.890625,-0.25195312,0.62109375,0.20898438,0.28125,-0.047851562,-0.34375,0.60546875,-0.043945312,-0.70703125,0.52734375,0.6328125,1.421875,-0.7890625,-1.1015625,-0.98828125,2.109375,-1.109375,-0.57421875,0.080078125,0.859375,-0.4140625,0.76953125,1.5703125,0.1953125,-0.21386719,0.2265625,1.125,0.4609375,-0.16308594,1.2578125,0.16894531,-0.82421875,-0.65625,-1.28125,-0.5703125,-0.32421875,0.875,0.037109375,-0.83984375,-1.0078125,-1.5390625,0.484375,-0.5703125,-0.60546875,-0.25195312,-0.62109375,-1.375,0.06225586,2.3125,1.1796875,0.17480469,1.7734375,-0.9296875,-0.10449219,0.53515625,-0.79296875,0.40039062,1.015625,0.90234375,-2.59375,0.54296875,-0.34179688,0.28515625,0.18945312,-0.76953125,0.53515625,1.75,-0.38671875,1.234375,-2.0625,0.83203125,0.15625,-2.140625,-1.6171875,-0.19238281,0.24707031,0.71875,0.68359375,0.32617188,-1.515625,0.578125,0.40234375,-0.25585938,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25585938,1.7109375,-0.87109375,-0.35546875,0.18945312,-0.15332031,-2.421875,0.66015625,-0.5390625,-0.13867188,-0.41210938,-1.2578125,-1.234375,-0.93359375,0.3359375,-0.07519531,-0.05444336,2.09375,-2.0625,-0.67578125,1.171875,-0.0077209473,-1.6875,-0.109375,-0.17285156,1.3515625,0.024414062,0.46679688,0.3515625,0.49804688,-1.375,-0.29296875,0.03564453,-0.14941406,0.765625,-1.2890625,-0.25390625,0.11279297,-0.27539062,-1.140625,1.0390625,0.79296875,-0.63671875,-0.17382812,0.3671875,0.021606445,-1.1484375,-0.17089844,-0.54296875,1.203125,1.2578125,0.13671875,-0.030883789,-0.45703125,1.34375,-0.6875,2.0625,0.5859375 +9,0,5,0.78515625,1.0,-0.059326172,0.65234375,0.359375,-0.50390625,0.3359375,1.0859375,-0.15917969,-1.0546875,0.72265625,-0.24804688,-1.1328125,-0.8515625,-1.046875,0.14648438,-1.0859375,1.3671875,-0.43164062,0.30273438,-0.024780273,0.80078125,-0.33203125,-0.13867188,-0.61328125,-1.4765625,-2.765625,0.3125,-0.6328125,0.5078125,-1.0390625,-1.109375,-0.38671875,0.21972656,-0.63671875,-0.8984375,0.51171875,-1.265625,0.63671875,-0.10107422,-0.7578125,0.43554688,0.40039062,1.5859375,0.29882812,0.6953125,0.059570312,0.296875,-2.15625,0.80859375,1.28125,-1.2890625,-2.3125,-0.14160156,-0.92578125,-0.4453125,0.07861328,1.0078125,-0.27734375,-0.8125,-0.07714844,1.265625,-0.076660156,-0.171875,1.3046875,-0.58984375,0.33789062,-0.0034332275,0.22070312,0.94140625,0.18554688,-2.0,0.8984375,-1.1015625,-0.13476562,1.2734375,1.7578125,-0.1328125,0.22949219,-0.36328125,0.8984375,0.47265625,-0.17578125,-1.0859375,-0.46289062,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.625,1.6875,0.88671875,0.59765625,-0.28125,-0.20898438,-1.1015625,0.80078125,0.12158203,0.6015625,1.6640625,0.671875,-0.90625,-0.21191406,0.5,-0.34960938,-0.9453125,-0.53125,0.42382812,-0.16308594,-1.59375,2.015625,0.078125,0.50390625,-0.359375,0.16796875,-0.4765625,1.5625,-0.3046875,1.4453125,1.46875,-1.296875,-0.78515625,-1.03125,0.025268555,0.20703125,0.3359375,-1.0546875,-2.203125,0.18457031,0.22167969,-0.78515625,-0.8515625,0.21289062,0.24511719,1.0,-0.44140625,-1.1015625,1.2421875,-1.890625,1.3515625,-0.54296875,-0.4375,-0.12060547,1.1796875,0.33398438,-0.96875,-0.115722656,2.21875,3.484375,-0.27734375,-0.74609375,-2.359375,2.203125,-0.48828125,0.23925781,0.20214844,1.265625,-1.5,0.4453125,-0.95703125,1.0546875,0.671875,1.75,-1.9375,0.234375,-1.2578125,0.828125,1.21875,-1.140625,-0.06640625,-1.0703125,1.8359375,-0.80078125,-0.48046875,0.0024719238,0.038330078,-0.7265625,1.2265625,0.17480469,-0.5625,0.31054688,1.53125,0.30273438,-0.06640625,0.43554688,1.3046875,0.50390625,0.953125,-2.96875,-0.12597656,-0.103027344,0.011413574,-1.2421875,-1.4140625,1.6640625,1.234375,-0.5390625,-0.890625,-0.50390625 +9,0,6,-0.16210938,1.3515625,-0.18554688,-0.9375,0.55859375,0.32421875,0.58203125,-0.81640625,1.578125,-1.453125,2.109375,-1.2890625,-0.4609375,-0.17871094,-0.43554688,-0.48242188,-1.0625,0.029785156,0.9296875,0.63671875,0.30664062,-0.98046875,1.2578125,0.07373047,-1.6171875,-2.0625,-0.64453125,-0.014831543,-0.08935547,1.328125,0.62109375,-0.2734375,0.703125,0.83984375,0.114746094,-0.17382812,0.59375,0.65234375,-0.30859375,0.00042533875,-0.45117188,0.56640625,1.0546875,0.90625,-0.72265625,0.99609375,0.07324219,-1.6484375,-0.703125,2.234375,0.578125,-1.109375,-0.609375,0.84765625,0.34960938,-0.515625,-0.0063476562,1.09375,0.55078125,-0.171875,0.96875,1.671875,0.20996094,0.49804688,0.99609375,0.24511719,-0.8515625,-0.90234375,0.24316406,0.9765625,-1.1015625,0.49609375,0.38476562,-0.53515625,-0.53515625,-0.34375,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.09033203,-0.040039062,2.171875,0.28320312,0.023925781,-2.203125,-0.55078125,0.671875,-0.13183594,2.203125,0.045898438,1.328125,-0.72265625,-0.11621094,-0.049804688,-1.2109375,0.20996094,-0.80859375,-1.5390625,-0.41210938,-0.6171875,1.4921875,-0.45507812,-0.54296875,1.109375,-2.046875,0.33007812,-0.21484375,-0.34179688,-0.4921875,2.109375,-0.43164062,-2.609375,-0.58203125,0.65625,-0.984375,0.84765625,-0.25,0.13378906,0.5625,-1.171875,0.026733398,-2.21875,-1.265625,2.296875,-1.46875,-0.70703125,-0.4140625,-0.38085938,1.0859375,0.07324219,-1.0546875,-0.03540039,-1.078125,2.375,-0.54296875,0.625,0.72265625,-0.8984375,1.421875,0.22167969,0.17089844,2.203125,0.06591797,-1.0703125,-0.053222656,-0.75,-1.265625,0.6484375,-0.49804688,-0.65234375,-0.68359375,0.052490234,-0.86328125,-0.05078125,0.19726562,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.125,-2.421875,1.90625,-0.78515625,2.03125,-0.029541016,-0.14746094,-1.2421875,-0.02709961,-0.48242188,-1.125,0.6015625,0.3359375,-0.11328125,-2.6875,-0.5,-0.94140625,1.28125,0.578125,0.5078125,0.796875,-0.98828125,1.7734375,-1.28125,-0.25390625,-0.71484375,0.12695312,0.48632812,0.6640625,0.36523438,0.41796875,-0.12597656,-1.734375,0.2109375,-0.034423828,1.0,0.7265625 +9,0,7,-0.31445312,0.34179688,0.55859375,-2.0625,-0.025634766,0.67578125,1.8046875,-0.69921875,1.046875,-0.98046875,1.1171875,-1.359375,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.045166016,-0.62890625,2.09375,-0.7421875,-0.78515625,-1.4140625,1.25,-0.15234375,-2.484375,-1.6171875,0.18164062,-0.7890625,-0.51171875,1.65625,0.52734375,-0.546875,-0.118652344,0.099121094,1.1015625,0.78125,-0.20898438,-0.13964844,-1.8203125,0.953125,-1.546875,0.51953125,0.94921875,0.97265625,0.6015625,1.375,-0.984375,-1.140625,-0.2265625,1.609375,-1.78125,0.25390625,-1.0078125,1.8671875,-0.25,0.625,0.20898438,0.27734375,-0.045166016,-0.34375,0.60546875,-0.045654297,-0.703125,0.52734375,0.6328125,1.4140625,-0.78515625,-1.1015625,-0.984375,2.109375,-1.1015625,-0.5703125,0.083496094,0.87109375,-0.40625,0.76953125,1.5703125,0.19335938,-0.21386719,0.22753906,1.125,0.4609375,-0.16113281,1.25,0.17089844,-0.82421875,-0.66015625,-1.2734375,-0.5703125,-0.328125,0.87109375,0.03540039,-0.83984375,-1.0,-1.546875,0.48242188,-0.5703125,-0.60546875,-0.25585938,-0.625,-1.3828125,0.0625,2.3125,1.1875,0.17480469,1.7890625,-0.92578125,-0.10107422,0.53125,-0.78515625,0.40039062,1.015625,0.90625,-2.578125,0.546875,-0.34179688,0.28710938,0.19042969,-0.76953125,0.5390625,1.75,-0.38671875,1.2421875,-2.0625,0.83203125,0.15625,-2.140625,-1.6015625,-0.19628906,0.24804688,0.7109375,0.6875,0.32421875,-1.5078125,0.578125,0.40429688,-0.25195312,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25390625,1.71875,-0.875,-0.36132812,0.19042969,-0.15136719,-2.421875,0.66015625,-0.5390625,-0.140625,-0.4140625,-1.2578125,-1.234375,-0.92578125,0.33789062,-0.07519531,-0.055908203,2.09375,-2.078125,-0.67578125,1.1640625,-0.014465332,-1.6875,-0.109375,-0.17285156,1.3515625,0.024536133,0.46679688,0.34960938,0.50390625,-1.375,-0.30078125,0.035888672,-0.14941406,0.765625,-1.2890625,-0.25390625,0.111328125,-0.26953125,-1.140625,1.0546875,0.79296875,-0.640625,-0.17480469,0.3671875,0.0234375,-1.1484375,-0.17480469,-0.54296875,1.203125,1.265625,0.1328125,-0.029907227,-0.45703125,1.3359375,-0.6953125,2.046875,0.58203125 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 9216a636..78d03599 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.11176976 -0,22,0.34597677 -0,23,0.26810494 -0,24,0.27209836 -0,25,0.26411152 -0,26,0.20620683 -0,27,0.10986541 -0,28,0.16327749 -0,29,0.084906496 -0,30,0.23715588 -0,31,-0.2280783 -0,32,0.08041389 -0,33,-0.15819333 -0,34,0.06743526 -0,35,0.0055371495 -0,36,-0.011310118 -0,37,-0.0062559377 -0,38,-0.18614732 -0,39,0.11385884 -0,40,0.20321175 -1,19,0.100880206 -1,20,0.36195046 -1,21,0.14430872 -1,22,0.29406223 -1,23,0.17126435 -1,24,0.056453336 -1,25,0.11335966 -1,26,-0.08231824 -1,27,0.08191143 -1,28,-0.31693202 -1,29,0.09788513 -1,30,0.084407315 -1,31,-0.12325086 -1,32,0.047468126 -1,33,-0.04812452 -1,34,-0.14221963 -1,35,-0.08581249 -1,36,0.013212016 -1,37,-0.18015718 -1,38,-0.096794404 -2,17,0.18623969 -2,18,0.056702927 -2,19,-0.09579605 -2,20,0.06793443 -2,21,0.10287692 -2,22,0.20520847 -2,23,0.023881953 -2,24,-0.027907796 -2,25,0.0060675265 -2,26,-0.19513254 -2,27,-0.10478126 -2,28,0.07941554 -2,29,0.07442375 -2,30,0.21419367 -2,31,-0.16917527 -2,32,-0.07033796 -2,33,-0.11326729 -2,34,-0.122751676 -2,35,-0.120754965 -2,36,-0.13822621 -3,17,0.2740951 -3,18,0.2092019 -3,19,0.3060425 -3,20,0.06444018 -3,21,0.19821997 -3,22,0.13033172 -3,23,0.066936076 -3,24,-0.109273866 -3,25,-0.049871642 -3,26,0.07592129 -3,27,-0.0027070923 -3,28,-0.042134378 -3,29,-0.09779277 -3,30,-0.011247721 -3,31,-0.043631915 -3,32,-0.061851922 -3,33,-0.027783003 -3,34,-0.23007502 -3,35,0.0060675265 -3,36,-0.015740326 -4,14,0.090896636 -4,15,0.16227913 -4,16,0.15728734 -4,17,0.10487363 -4,18,-0.042134378 -4,19,0.08340896 -4,20,0.13732022 -4,21,0.09788513 -4,22,-0.10178619 -4,23,-0.15519828 -4,24,-0.18315226 -4,25,-0.008658233 -4,26,0.00049856835 -4,27,-0.011122926 -4,28,0.07592129 -4,29,0.001980504 -4,30,0.027500995 -4,31,-0.05411466 -4,32,0.028374556 -4,33,0.01265044 -5,14,0.27010167 -5,15,0.22916903 -5,16,0.19622326 -5,17,0.1493005 -5,18,0.042975523 -5,19,0.15129721 -5,20,0.04372429 -5,21,-0.10428208 -5,22,-0.020295328 -5,23,-0.05661055 -5,24,-0.018049026 -5,25,-0.122751676 -5,26,-0.071336314 -5,27,-0.025911083 -5,28,0.096387595 -5,29,-0.039888076 -5,30,-0.042134378 -5,31,-0.018049026 -5,32,-0.12325086 -5,33,-0.029405331 -6,18,0.100880206 -6,19,0.21319532 -6,20,0.32001948 -6,21,0.3539636 -6,22,0.38591102 -6,23,0.03823333 -6,24,-0.08281741 -6,25,-0.18315226 -6,26,-0.03489629 -6,27,-0.036144238 -6,28,0.05919882 -6,29,0.03848292 -6,30,-0.089306735 -6,31,-0.06784207 -6,32,-0.1267451 -6,33,0.054456625 -6,34,-0.06634453 -6,35,-0.004025235 -6,36,-0.10478126 -6,37,0.09189499 -7,15,0.20121504 -7,16,0.26610824 -7,17,0.118351445 -7,18,0.14630543 -7,19,-0.09330016 -7,20,0.12833501 -7,21,-0.01792423 -7,22,-0.05960562 -7,23,-0.021293685 -7,24,0.12284405 -7,25,0.15529063 -7,26,0.03012168 -7,27,-0.09379934 -7,28,0.04946484 -7,29,-0.06784207 -7,30,-0.087310016 -7,31,-0.04537904 -7,32,0.059947584 -7,33,0.33798993 -7,34,-0.15619662 -8,20,0.2391526 -8,21,0.010279343 -8,22,0.12134651 -8,23,0.29805565 -8,24,-0.25203884 -8,25,-0.03177643 -8,26,-0.053116303 -8,27,0.030371271 -8,28,-0.055861782 -8,29,-0.040137667 -8,30,-0.07183549 -8,31,0.14630543 -8,32,-0.10028865 -8,33,-0.12824264 -8,34,0.021760445 -8,35,0.005661944 -8,36,0.12833501 -8,37,-0.21509966 -8,38,-0.13423277 -8,39,-0.07433138 -9,16,0.27209836 -9,17,-0.05860726 -9,18,0.17326106 -9,19,0.41985515 -9,20,0.11735309 -9,21,0.35196692 -9,22,0.13532351 -9,23,-0.008096658 -9,24,-0.049871642 -9,25,-0.04812452 -9,26,-0.042633556 -9,27,-0.1591917 -9,28,-0.2280783 -9,29,-0.12624593 -9,30,0.08989828 -9,31,-0.023415193 -9,32,-0.15519828 -9,33,-0.14022292 -9,34,0.10337609 -9,35,-0.071336314 +0,21,-0.03839054 +0,22,0.3938979 +0,23,0.48175326 +0,24,0.19821997 +0,25,0.3539636 +0,26,0.25612468 +0,27,0.24314602 +0,28,0.44780913 +0,29,0.01864058 +0,30,0.039980453 +0,31,0.22218053 +0,32,-0.2989616 +0,33,-0.10028865 +0,34,-0.07033796 +0,35,-0.002902084 +0,36,-0.01792423 +0,37,-0.036144238 +0,38,0.11984898 +0,39,0.051461555 +0,40,0.11685391 +1,19,0.24713944 +1,20,0.2920655 +1,21,0.13532351 +1,22,0.22817066 +1,23,0.090397455 +1,24,-0.13223606 +1,25,0.19821997 +1,26,-0.03339876 +1,27,0.072926216 +1,28,-0.11127058 +1,29,-0.33290574 +1,30,0.034239903 +1,31,-0.07483056 +1,32,-0.14122127 +1,33,0.06344183 +1,34,-0.11426565 +1,35,-0.09978948 +1,36,0.05919882 +1,37,-0.035395473 +1,38,0.0037588265 +2,17,0.2920655 +2,18,0.15029885 +2,19,0.07043032 +2,20,-0.050121233 +2,21,0.12184569 +2,22,-0.060354386 +2,23,0.20021668 +2,24,0.054955803 +2,25,-0.04438068 +2,26,-0.07233467 +2,27,-0.05062041 +2,28,-0.1981276 +2,29,0.012400852 +2,30,-0.03127725 +2,31,-0.121254146 +2,32,-0.04138561 +2,33,-0.122751676 +2,34,-0.11426565 +2,35,-0.052117944 +2,36,0.066936076 +3,17,0.03473908 +3,18,0.18623969 +3,19,0.32600963 +3,20,0.030496065 +3,21,0.06843361 +3,22,0.3938979 +3,23,0.25013453 +3,24,0.19222984 +3,25,-0.10577962 +3,26,-0.114764825 +3,27,0.04971443 +3,28,0.102377735 +3,29,-0.055861782 +3,30,-0.0040096357 +3,31,0.12533994 +3,32,-0.21709637 +3,33,-0.007753473 +3,34,0.021136472 +3,35,-0.055362605 +3,36,0.17326106 +4,14,0.16926762 +4,15,-0.10028865 +4,16,-0.042883147 +4,17,0.17725448 +4,18,0.21119861 +4,19,-0.054863427 +4,20,-0.018797792 +4,21,-0.0050235917 +4,22,-0.13523114 +4,23,-0.2670142 +4,24,0.048466485 +4,25,-0.037392184 +4,26,0.061694708 +4,27,0.13432515 +4,28,-0.06634453 +4,29,-0.065346174 +4,30,-0.21609803 +4,31,-0.03639383 +4,32,-0.04188479 +4,33,0.19222984 +5,14,0.106371164 +5,15,0.44581243 +5,16,0.24414438 +5,17,0.14730379 +5,18,0.40188473 +5,19,0.17625612 +5,20,0.17026599 +5,21,0.1403153 +5,22,-0.07383221 +5,23,0.03149442 +5,24,-0.22308652 +5,25,-0.0021962146 +5,26,0.042226754 +5,27,-0.021917658 +5,28,0.016394278 +5,29,-0.02690944 +5,30,-0.07832481 +5,31,-0.06684371 +5,32,-0.20910953 +5,33,-0.095296875 +6,18,0.024505924 +6,19,0.13831857 +6,20,0.15329392 +6,21,0.16427584 +6,22,0.07192786 +6,23,0.044972237 +6,24,0.0412284 +6,25,-0.10078783 +6,26,-0.13822621 +6,27,-0.24604872 +6,28,-0.061103154 +6,29,-0.07782563 +6,30,-0.17915882 +6,31,-0.13323443 +6,32,0.044972237 +6,33,-0.03489629 +6,34,0.018016607 +6,35,-0.012994845 +6,36,0.05520539 +6,37,-0.006505527 +7,15,0.15229557 +7,16,0.4877434 +7,17,0.18424298 +7,18,0.029622503 +7,19,0.24015094 +7,20,0.32001948 +7,21,0.0098425625 +7,22,-0.109273866 +7,23,-0.11626236 +7,24,-0.03364835 +7,25,-0.20611446 +7,26,0.056952514 +7,27,-0.20711282 +7,28,0.009031397 +7,29,-0.006973507 +7,30,-0.12025579 +7,31,-0.049622055 +7,32,-0.16917527 +7,33,-0.0004529903 +7,34,0.02163565 +8,20,0.076919645 +8,21,-0.09978948 +8,22,-0.011310118 +8,23,0.10187856 +8,24,0.1722627 +8,25,0.09538924 +8,26,0.061694708 +8,27,0.16727091 +8,28,-0.23107336 +8,29,0.07592129 +8,30,-0.0009950667 +8,31,-0.018298615 +8,32,-0.013369229 +8,33,0.0527095 +8,34,0.04721854 +8,35,-0.019047381 +8,36,0.000061787316 +8,37,0.18524134 +8,38,-0.07882399 +8,39,0.007346671 +9,16,0.23016739 +9,17,0.25412795 +9,18,0.23815423 +9,19,0.16028242 +9,20,0.10736952 +9,21,0.20720518 +9,22,0.06394101 +9,23,-0.095296875 +9,24,0.05894923 +9,25,-0.04837411 +9,26,-0.057359315 +9,27,0.03224319 +9,28,-0.13523114 +9,29,-0.046127804 +9,30,0.3180228 +9,31,-0.15519828 +9,32,-0.14221963 +9,33,0.08640403 +9,34,0.08390814 +9,35,-0.017425053 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 44ec0f7b..744668f3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -2,24 +2,24 @@ sequenceId,itemPosition,itemValue 0,8,0.2900688 0,9,-0.17616376 0,10,0.3799209 -0,11,0.26610824 -0,12,-0.2989616 +0,11,0.26411152 +0,12,-0.3009583 1,8,0.28208193 -1,9,-0.003034678 +1,9,-0.0039628376 1,10,0.33798993 2,8,-0.14820977 -2,9,0.11785226 +2,9,0.11735309 3,8,0.36993733 -3,9,0.29605892 +3,9,0.29805565 4,8,-0.13523114 -5,8,0.1403153 +5,8,0.14131364 6,8,0.3359932 6,9,0.26810494 6,10,0.31402937 -7,8,-0.15320155 +7,8,-0.15419991 8,8,0.16826928 8,9,-0.25703064 -8,10,0.41785845 -8,11,0.40987158 -9,8,0.31602606 +8,10,0.41586173 +8,11,0.40787488 +9,8,0.31402937 9,9,0.25812137 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index dcfed5d1..2d1901f7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.19187672 +0,8,-0.19088916 0,9,-0.078307025 -0,10,0.01989374 -0,11,0.13599409 +0,10,0.020881303 +0,11,0.13500652 0,12,0.30980512 -1,8,0.08809729 -1,9,-0.026706878 -1,10,-0.23631705 -2,8,0.046866544 -2,9,-0.18792649 -3,8,0.08710972 -3,9,0.17352147 -4,8,0.3789345 +1,8,0.0876035 +1,9,-0.026953768 +1,10,-0.2353295 +2,8,0.046619654 +2,9,-0.18891405 +3,8,0.08957863 +3,9,0.17450903 +4,8,0.37695938 5,8,-0.18002598 6,8,0.2999295 -6,9,0.33548176 -6,10,0.007902182 -7,8,0.66335255 -8,8,0.19821054 +6,9,0.33745688 +6,10,0.007867463 +7,8,0.66730285 +8,8,0.20117323 8,9,0.19031003 -8,10,-0.03189158 -8,11,-0.01386856 -9,8,0.001099186 +8,10,-0.03213847 +8,11,-0.012880999 +9,8,0.0023336397 9,9,-0.2531056 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index b3488afb..27254750 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.075993046 +0,8,-0.07564883 0,9,-0.34528795 -0,10,-0.06383061 +0,10,-0.06342901 0,11,-0.22871205 -0,12,-0.23330164 +0,12,-0.23238373 1,8,-0.2268762 1,9,-0.10984136 -1,10,-0.017590366 +1,10,-0.016901925 2,8,-0.3618105 2,9,-0.29939193 -3,8,-0.13783793 +3,8,-0.1360021 3,9,0.23850942 -4,8,0.10357512 +4,8,0.104493044 5,8,-0.3471238 6,8,0.09990344 -6,9,-0.1116772 -6,10,0.15314281 -7,8,0.12560523 -8,8,-0.1773085 -8,9,-0.111218244 -8,10,-0.29939193 +6,9,-0.11305408 +6,10,0.15406075 +7,8,0.12652314 +8,8,-0.17822644 +8,9,-0.11075929 +8,10,-0.29755607 8,11,-0.29204854 -9,8,-0.14334546 -9,9,-0.018737767 +9,8,-0.14472234 +9,9,-0.019196726 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index 8f72a904..e1bc7a5b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.081780255 -0,9,-0.22130415 -0,10,-0.060438603 -0,11,-0.065946124 -0,12,-0.09807333 -1,8,-0.055734262 -1,9,-0.02922931 -1,10,-0.12492251 +0,8,-0.08269817 +0,9,-0.22038624 +0,10,-0.060151752 +0,11,-0.066634566 +0,12,-0.0973849 +1,8,-0.055131875 +1,9,-0.02945879 +1,10,-0.12446355 2,8,-0.25710306 2,9,-0.24058047 -3,8,0.01597827 -3,9,0.36891866 +3,8,0.01506035 +3,9,0.37075448 4,8,0.3579036 -5,8,-0.12675835 +5,8,-0.12813523 6,8,0.3395452 6,9,0.2771266 -6,10,0.3175151 -7,8,0.35606775 -8,8,-0.03835114 -8,9,-0.016148943 -8,10,-0.05389842 -8,11,-0.12675835 -9,8,-0.001691699 -9,9,0.18900627 +6,10,0.31567925 +7,8,0.35423192 +8,8,-0.039154325 +8,9,-0.015919466 +8,10,-0.053353403 +8,11,-0.12629938 +9,8,-0.0007737763 +9,9,0.19084209 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index 2a8d05f6..aaee17e3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,113,6,2,0,1 -0,9,113,6,2,0,1 -0,10,113,6,2,0,1 -0,11,113,6,2,0,1 -0,12,113,6,2,0,1 -0,13,113,6,2,0,2 -0,14,113,6,2,0,2 -0,15,113,6,2,0,2 -0,16,113,6,2,0,2 -0,17,113,6,2,0,2 -0,18,113,6,2,0,2 -0,19,113,6,2,0,2 -0,20,113,6,2,0,2 -0,21,113,6,2,0,2 -0,22,113,6,2,0,2 -0,23,113,6,2,0,2 -0,24,113,6,2,0,2 -0,25,113,6,2,0,2 -0,26,113,6,2,0,2 -0,27,113,6,2,0,2 -0,28,113,6,2,0,2 -0,29,113,6,2,0,2 -0,30,113,6,2,0,2 -0,31,113,6,2,0,2 -0,32,113,6,2,0,2 -0,33,113,6,2,0,2 -0,34,113,6,2,0,2 -0,35,113,6,2,0,2 -0,36,113,6,2,0,2 -0,37,113,6,2,0,2 +0,8,127,1,1,2,1 +0,9,113,4,9,8,1 +0,10,113,1,1,8,1 +0,11,113,1,9,8,1 +0,12,113,1,9,8,1 +0,13,113,1,9,8,1 +0,14,113,1,8,8,1 +0,15,113,1,0,8,1 +0,16,113,1,9,7,1 +0,17,121,1,8,7,1 +0,18,105,1,8,7,1 +0,19,105,1,8,7,1 +0,20,105,1,8,7,1 +0,21,113,1,7,7,1 +0,22,113,6,7,7,1 +0,23,113,6,7,2,1 +0,24,113,1,7,8,1 +0,25,113,1,7,8,1 +0,26,113,1,7,8,1 +0,27,113,1,0,8,1 +0,28,113,1,0,8,1 +0,29,113,1,0,8,1 +0,30,113,1,0,8,1 +0,31,113,1,0,8,1 +0,32,113,1,0,7,1 +0,33,108,1,8,7,1 +0,34,108,1,0,7,1 +0,35,108,6,0,7,1 +0,36,108,1,0,7,1 +0,37,108,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index cd416b33..7ae8e23a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,113,6,0,9,0 -1,9,100,6,0,8,0 -1,10,121,6,0,8,0 -1,11,120,4,0,8,0 -1,12,120,4,0,8,0 -1,13,120,0,0,5,0 -1,14,109,4,8,8,0 -1,15,109,4,9,5,0 -1,16,109,4,9,5,0 -1,17,109,4,9,5,0 -1,18,109,4,0,5,0 -1,19,109,4,9,5,0 -1,20,109,4,0,9,0 -1,21,109,4,0,5,0 -1,22,127,4,0,9,0 -1,23,120,4,0,9,0 -1,24,120,4,0,9,0 -1,25,109,4,0,5,0 -1,26,109,4,9,5,0 -1,27,127,4,0,9,0 -1,28,109,4,9,5,0 -1,29,109,4,9,5,0 -1,30,109,4,3,5,0 -1,31,109,4,3,5,0 -1,32,109,4,3,5,0 -1,33,109,4,3,5,0 -1,34,127,6,3,5,0 -1,35,109,6,3,5,0 -1,36,112,6,3,5,0 -1,37,103,6,3,0,0 +1,8,121,6,0,8,0 +1,9,121,1,0,8,0 +1,10,121,1,0,8,0 +1,11,121,1,0,8,0 +1,12,121,1,0,8,0 +1,13,126,1,0,8,0 +1,14,127,1,0,8,0 +1,15,127,0,0,8,0 +1,16,127,0,9,8,0 +1,17,127,0,7,7,0 +1,18,105,8,9,7,1 +1,19,127,0,7,2,1 +1,20,113,4,7,8,1 +1,21,113,1,9,8,1 +1,22,113,1,7,8,1 +1,23,113,1,9,8,1 +1,24,113,1,0,8,1 +1,25,113,1,0,8,1 +1,26,113,1,0,8,1 +1,27,113,1,0,8,1 +1,28,113,1,0,7,1 +1,29,108,1,8,7,1 +1,30,108,1,8,7,1 +1,31,105,6,8,7,1 +1,32,113,1,8,7,1 +1,33,113,6,7,7,1 +1,34,113,6,7,7,1 +1,35,113,6,7,2,1 +1,36,113,1,7,8,1 +1,37,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index cedb1297..38fb6ff6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,113,4,2,0,1 -2,9,113,6,2,0,0 -2,10,113,6,2,0,0 -2,11,113,6,2,0,1 -2,12,113,6,2,0,1 -2,13,113,6,2,0,1 -2,14,113,6,2,0,2 -2,15,113,6,2,0,2 -2,16,113,6,2,0,2 -2,17,113,6,2,0,2 -2,18,113,6,2,0,2 -2,19,113,6,2,0,2 -2,20,113,6,2,0,2 -2,21,113,6,2,0,2 -2,22,113,6,2,0,2 -2,23,113,6,2,0,2 -2,24,113,6,2,0,2 -2,25,113,6,2,0,2 -2,26,113,6,2,0,2 -2,27,113,6,2,0,2 -2,28,113,6,2,0,2 -2,29,113,6,2,0,2 -2,30,113,6,2,0,2 -2,31,113,6,2,0,2 -2,32,113,6,2,0,2 -2,33,113,6,2,0,2 -2,34,113,6,2,0,2 -2,35,113,6,2,0,2 -2,36,113,6,2,0,2 -2,37,113,6,2,0,2 +2,8,121,1,8,0,0 +2,9,105,0,8,7,0 +2,10,121,1,8,2,0 +2,11,113,4,7,8,0 +2,12,121,1,9,8,0 +2,13,127,1,0,8,0 +2,14,127,4,0,8,1 +2,15,127,1,0,8,0 +2,16,127,4,7,8,1 +2,17,127,1,0,8,1 +2,18,103,1,0,8,1 +2,19,113,1,0,8,1 +2,20,103,1,9,7,1 +2,21,105,1,7,7,1 +2,22,113,1,9,7,1 +2,23,105,1,9,7,1 +2,24,113,1,7,7,1 +2,25,113,6,9,7,1 +2,26,113,1,7,7,1 +2,27,113,6,5,7,1 +2,28,113,1,8,8,1 +2,29,113,1,0,8,1 +2,30,113,1,0,8,1 +2,31,113,1,0,8,1 +2,32,113,1,0,8,1 +2,33,113,1,0,8,1 +2,34,113,1,0,7,1 +2,35,108,1,8,7,1 +2,36,105,1,8,7,1 +2,37,105,1,9,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index 477f3560..932a6a31 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,4,2,8,1 -3,9,121,4,2,8,1 -3,10,121,4,9,8,0 -3,11,109,4,9,5,0 -3,12,109,6,9,5,0 -3,13,121,6,0,5,0 -3,14,109,4,9,5,0 -3,15,109,4,0,5,0 -3,16,120,8,0,9,0 -3,17,120,4,0,5,0 -3,18,127,4,0,9,0 -3,19,120,4,0,9,0 -3,20,109,4,0,8,0 -3,21,109,4,9,5,0 -3,22,109,4,0,5,0 -3,23,109,4,9,5,0 -3,24,109,4,9,5,0 -3,25,109,4,3,5,0 -3,26,109,4,9,5,0 -3,27,127,4,0,9,0 -3,28,127,4,0,5,0 -3,29,127,4,0,9,0 -3,30,109,4,0,5,0 -3,31,109,4,0,9,0 -3,32,109,4,0,5,0 -3,33,109,4,9,5,0 -3,34,109,4,9,5,0 -3,35,109,4,9,5,0 -3,36,109,4,3,5,0 -3,37,109,4,3,5,0 -4,8,113,7,2,8,1 -4,9,113,6,2,8,0 -4,10,121,6,2,8,0 -4,11,121,4,2,8,0 -4,12,109,4,9,5,0 -4,13,109,6,9,5,0 -4,14,121,6,0,9,0 -4,15,120,4,0,5,0 -4,16,120,9,0,9,0 -4,17,120,0,0,5,0 -4,18,109,4,0,5,0 -4,19,109,4,0,5,0 -4,20,127,4,9,9,0 -4,21,127,4,9,5,0 -4,22,109,4,9,5,0 -4,23,109,4,9,5,0 -4,24,109,4,9,5,0 -4,25,109,6,3,9,0 -4,26,109,4,0,5,0 -4,27,127,6,0,9,0 -4,28,127,9,0,5,0 -4,29,127,4,0,9,0 -4,30,120,4,0,5,0 -4,31,109,4,3,9,0 -4,32,109,4,9,5,0 -4,33,109,4,9,5,0 -4,34,109,4,9,5,0 -4,35,109,4,9,5,0 -4,36,109,4,3,5,0 -4,37,109,4,3,5,0 +3,8,127,4,0,2,0 +3,9,127,4,0,8,1 +3,10,127,4,0,8,1 +3,11,127,1,0,2,1 +3,12,113,4,9,8,1 +3,13,121,1,1,2,1 +3,14,113,0,9,8,1 +3,15,113,1,1,8,1 +3,16,113,1,9,7,1 +3,17,105,1,9,7,1 +3,18,105,1,8,7,1 +3,19,105,1,9,7,1 +3,20,113,1,8,7,1 +3,21,105,8,9,7,1 +3,22,113,1,8,8,1 +3,23,113,1,9,8,1 +3,24,113,1,7,8,1 +3,25,113,1,9,7,1 +3,26,113,1,8,7,1 +3,27,113,1,8,7,1 +3,28,113,1,8,7,1 +3,29,113,1,8,7,1 +3,30,113,1,5,7,1 +3,31,113,1,5,8,1 +3,32,113,1,0,8,1 +3,33,113,1,0,8,1 +3,34,113,1,0,8,1 +3,35,113,1,0,8,1 +3,36,113,1,0,7,1 +3,37,108,1,8,7,1 +4,8,127,4,0,8,0 +4,9,127,4,0,8,1 +4,10,127,1,0,2,1 +4,11,127,4,7,8,1 +4,12,127,1,1,8,1 +4,13,127,1,0,8,1 +4,14,113,1,0,8,1 +4,15,113,1,9,8,1 +4,16,113,1,9,7,1 +4,17,105,1,9,7,1 +4,18,105,1,9,7,1 +4,19,105,1,9,7,1 +4,20,105,1,9,7,1 +4,21,113,1,9,7,1 +4,22,113,1,9,7,1 +4,23,113,1,9,7,1 +4,24,113,1,9,8,1 +4,25,113,1,9,8,1 +4,26,113,1,9,8,1 +4,27,113,1,9,8,1 +4,28,113,1,9,7,1 +4,29,113,1,8,7,1 +4,30,105,1,8,7,1 +4,31,113,1,8,7,1 +4,32,113,1,8,7,1 +4,33,113,1,8,7,1 +4,34,113,1,9,7,1 +4,35,113,1,7,8,1 +4,36,113,1,7,8,1 +4,37,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index e21fb885..0c148033 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,6,2,1,1 -5,9,113,6,2,0,2 -5,10,113,6,2,0,2 -5,11,113,6,2,0,2 -5,12,113,6,2,0,2 -5,13,113,6,2,0,2 -5,14,113,6,2,0,2 -5,15,113,6,2,0,2 -5,16,113,6,2,0,2 -5,17,113,6,2,0,2 -5,18,113,6,2,0,2 -5,19,113,6,2,0,2 -5,20,113,6,2,0,2 -5,21,113,6,2,0,2 -5,22,113,6,2,0,2 -5,23,113,6,2,0,2 -5,24,113,6,2,0,2 -5,25,113,6,2,0,2 -5,26,113,6,2,0,2 -5,27,113,6,2,0,2 -5,28,113,6,2,0,2 -5,29,113,6,2,0,2 -5,30,113,6,2,0,2 -5,31,113,6,2,0,2 -5,32,113,6,2,0,2 -5,33,113,6,2,0,2 -5,34,113,6,2,0,2 -5,35,113,6,2,0,2 -5,36,113,6,2,0,2 -5,37,113,6,2,0,2 +5,8,121,1,5,4,1 +5,9,127,1,0,8,1 +5,10,127,1,0,2,1 +5,11,127,1,7,2,1 +5,12,127,1,1,0,1 +5,13,105,1,9,2,1 +5,14,113,1,7,0,1 +5,15,113,1,9,7,1 +5,16,105,8,9,7,1 +5,17,105,1,8,2,1 +5,18,113,0,7,8,1 +5,19,113,1,9,8,1 +5,20,113,1,9,8,1 +5,21,113,1,9,8,1 +5,22,113,1,0,8,1 +5,23,113,1,0,8,1 +5,24,113,1,0,8,1 +5,25,113,1,0,7,1 +5,26,108,1,8,7,1 +5,27,105,1,8,7,1 +5,28,105,1,8,7,1 +5,29,105,1,9,7,1 +5,30,113,1,7,7,1 +5,31,113,6,7,7,1 +5,32,113,6,7,2,1 +5,33,113,1,7,8,1 +5,34,113,1,7,8,1 +5,35,113,1,9,8,1 +5,36,113,1,0,8,1 +5,37,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index 908877f2..1b1ae93e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,113,6,2,8,0 -6,9,113,6,2,8,0 -6,10,113,6,2,8,0 -6,11,121,6,2,8,0 -6,12,121,6,0,8,0 -6,13,109,6,0,8,0 -6,14,109,4,0,8,0 -6,15,109,4,0,5,0 -6,16,109,4,0,5,0 -6,17,109,4,9,5,0 -6,18,109,4,0,5,0 -6,19,109,4,9,5,0 -6,20,109,4,9,5,0 -6,21,109,4,3,9,0 -6,22,109,4,0,5,0 -6,23,109,4,3,9,0 -6,24,109,4,0,5,0 -6,25,127,4,0,9,0 -6,26,109,4,0,5,0 -6,27,127,4,0,9,0 -6,28,109,4,0,5,0 -6,29,109,4,9,5,0 -6,30,109,4,9,5,0 -6,31,109,4,9,5,0 -6,32,109,4,3,5,0 -6,33,109,4,3,5,0 -6,34,109,4,3,5,0 -6,35,109,4,3,5,0 -6,36,109,6,3,5,0 -6,37,127,6,3,9,0 -7,8,109,4,9,6,0 -7,9,121,4,9,6,0 -7,10,121,4,2,8,1 -7,11,109,4,9,8,0 -7,12,109,4,9,5,0 -7,13,109,4,9,5,0 -7,14,109,6,3,5,0 -7,15,121,6,0,5,0 -7,16,109,6,0,8,0 -7,17,109,4,0,5,0 -7,18,127,4,0,9,0 -7,19,120,4,0,5,0 -7,20,127,4,3,9,0 -7,21,109,4,9,5,0 -7,22,109,4,3,0,0 -7,23,109,4,9,5,0 -7,24,109,4,9,5,0 -7,25,109,4,3,5,0 -7,26,109,4,3,5,0 -7,27,109,6,3,5,0 -7,28,109,6,3,5,0 -7,29,112,6,3,9,0 -7,30,121,6,3,5,0 -7,31,112,6,3,9,0 -7,32,121,6,3,5,0 -7,33,103,6,3,0,0 -7,34,103,6,3,0,0 -7,35,103,6,2,0,0 -7,36,103,6,2,0,0 -7,37,103,6,2,0,0 +6,8,121,4,0,8,0 +6,9,113,1,0,8,0 +6,10,113,1,0,8,1 +6,11,113,1,0,8,1 +6,12,113,1,0,8,1 +6,13,113,1,0,8,1 +6,14,113,1,0,8,1 +6,15,113,1,9,7,1 +6,16,105,8,9,7,1 +6,17,105,1,8,7,1 +6,18,105,1,9,7,1 +6,19,105,1,9,7,1 +6,20,113,1,7,7,1 +6,21,113,6,9,7,1 +6,22,113,1,3,2,1 +6,23,113,6,7,8,1 +6,24,113,1,9,8,1 +6,25,113,1,0,8,1 +6,26,113,1,0,8,1 +6,27,113,1,0,8,1 +6,28,113,1,0,8,1 +6,29,113,1,0,8,1 +6,30,113,1,0,7,1 +6,31,108,1,8,7,1 +6,32,105,1,8,7,1 +6,33,105,1,9,7,1 +6,34,105,1,7,7,1 +6,35,113,6,7,7,1 +6,36,113,6,7,7,1 +6,37,113,6,7,2,1 +7,8,105,4,9,8,0 +7,9,121,0,8,8,0 +7,10,113,0,8,8,0 +7,11,121,4,8,8,0 +7,12,127,0,0,8,0 +7,13,121,4,8,8,0 +7,14,127,4,0,8,0 +7,15,127,1,0,8,0 +7,16,127,4,0,8,1 +7,17,127,1,0,8,0 +7,18,127,1,0,8,1 +7,19,127,1,7,8,1 +7,20,113,1,7,8,1 +7,21,113,1,9,7,1 +7,22,103,1,7,7,1 +7,23,113,8,7,7,1 +7,24,113,1,9,7,1 +7,25,113,1,7,7,1 +7,26,113,6,5,7,1 +7,27,113,1,5,8,1 +7,28,113,1,0,8,1 +7,29,113,1,0,8,1 +7,30,113,1,0,8,1 +7,31,113,1,0,8,1 +7,32,113,1,0,7,1 +7,33,108,1,8,7,1 +7,34,108,1,8,7,1 +7,35,108,1,8,7,1 +7,36,122,6,7,7,1 +7,37,113,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index d1cabc88..9dc6a76d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,6,2,8,0 -8,9,113,6,2,8,0 -8,10,113,6,2,8,0 -8,11,113,6,2,0,0 -8,12,113,6,2,0,0 -8,13,113,6,8,0,0 -8,14,113,6,8,0,0 -8,15,113,9,7,0,0 -8,16,113,6,2,0,1 -8,17,113,6,2,0,1 -8,18,113,6,2,0,1 -8,19,113,6,2,0,1 -8,20,113,6,2,0,2 -8,21,113,6,2,0,2 -8,22,113,6,2,0,2 -8,23,113,6,2,0,2 -8,24,113,6,2,0,2 -8,25,113,6,2,0,2 -8,26,113,6,2,0,2 -8,27,113,6,2,0,2 -8,28,113,6,2,0,2 -8,29,113,6,2,0,2 -8,30,113,6,2,0,2 -8,31,113,6,2,0,2 -8,32,113,6,2,0,2 -8,33,113,6,2,0,2 -8,34,113,6,2,0,2 -8,35,113,6,2,0,2 -8,36,113,6,2,0,2 -8,37,113,6,2,0,2 +8,8,113,1,0,8,0 +8,9,113,1,0,8,1 +8,10,113,1,0,2,1 +8,11,113,1,8,2,1 +8,12,113,1,0,8,1 +8,13,113,1,0,8,1 +8,14,113,1,0,2,1 +8,15,113,1,0,2,1 +8,16,113,1,8,7,1 +8,17,105,8,9,7,1 +8,18,105,1,8,2,1 +8,19,113,1,9,7,1 +8,20,105,1,9,7,1 +8,21,113,1,7,7,1 +8,22,113,1,9,7,1 +8,23,113,1,7,8,1 +8,24,113,1,9,8,1 +8,25,113,1,0,8,1 +8,26,113,1,9,8,1 +8,27,113,1,0,7,1 +8,28,113,1,8,7,1 +8,29,105,1,8,7,1 +8,30,113,1,8,7,1 +8,31,105,1,9,7,1 +8,32,113,1,8,7,1 +8,33,113,6,9,7,1 +8,34,113,1,8,2,1 +8,35,113,1,7,8,1 +8,36,113,1,7,8,1 +8,37,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index f9969b00..06013440 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,100,6,0,9,0 -9,9,100,9,8,9,0 -9,10,109,4,9,5,1 -9,11,113,6,0,9,0 -9,12,100,9,0,9,0 -9,13,109,4,9,5,1 -9,14,112,6,3,9,0 -9,15,121,6,0,5,0 -9,16,109,4,0,8,0 -9,17,109,4,0,5,0 -9,18,127,4,0,9,0 -9,19,109,4,9,5,0 -9,20,127,4,0,5,0 -9,21,127,4,0,9,0 -9,22,109,4,9,5,0 -9,23,109,4,9,5,0 -9,24,109,4,3,5,0 -9,25,109,4,3,5,0 -9,26,109,4,3,5,0 -9,27,109,6,3,5,0 -9,28,121,6,3,0,0 -9,29,109,4,3,7,0 -9,30,112,6,3,5,0 -9,31,103,6,3,0,0 -9,32,103,6,2,0,0 -9,33,103,6,2,0,0 -9,34,113,6,2,0,0 -9,35,113,6,2,0,0 -9,36,113,6,2,0,0 -9,37,113,6,2,0,1 +9,8,121,1,8,8,1 +9,9,113,1,0,8,1 +9,10,113,1,8,8,1 +9,11,113,1,0,7,1 +9,12,105,1,8,7,1 +9,13,105,1,8,7,1 +9,14,105,1,7,7,1 +9,15,113,1,7,7,1 +9,16,113,1,7,7,1 +9,17,113,6,7,7,1 +9,18,113,6,5,2,1 +9,19,113,1,0,8,1 +9,20,113,1,0,8,1 +9,21,113,1,0,8,1 +9,22,113,1,0,8,1 +9,23,113,1,0,8,1 +9,24,113,1,0,8,1 +9,25,113,1,0,8,1 +9,26,113,1,0,7,1 +9,27,105,1,8,7,1 +9,28,105,1,8,7,1 +9,29,105,1,9,7,1 +9,30,105,1,7,7,1 +9,31,113,6,7,7,1 +9,32,113,6,7,2,1 +9,33,113,1,7,8,1 +9,34,113,1,7,8,1 +9,35,113,1,9,8,1 +9,36,113,1,0,8,1 +9,37,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index 9f00e61d..fd1bb4cf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,6,3,8,1 -0,9,121,6,3,8,1 -0,10,121,6,3,8,1 -0,11,121,6,3,8,1 -0,12,121,6,3,8,1 -0,13,104,6,3,8,0 -0,14,104,3,3,0,0 -0,15,104,3,3,0,0 -0,16,104,3,3,0,0 -0,17,104,3,3,0,0 -0,18,104,3,3,0,0 -0,19,104,3,3,0,0 -0,20,104,3,3,0,1 -0,21,103,6,3,0,1 -0,22,113,6,3,8,1 -0,23,113,6,3,8,1 -0,24,113,6,3,8,1 -0,25,104,6,3,8,1 -0,26,104,6,3,8,1 -0,27,104,6,3,8,1 -0,28,104,6,3,8,1 -0,29,104,6,3,8,1 -0,30,104,9,3,0,0 -0,31,104,3,3,0,1 -0,32,104,9,3,0,1 -0,33,104,9,3,0,1 -0,34,104,3,3,8,1 -0,35,104,6,3,8,0 -0,36,121,6,3,8,0 -0,37,121,6,3,8,0 +0,8,104,7,[mask],[unknown],1 +0,9,104,7,[mask],[unknown],0 +0,10,104,7,1,[unknown],0 +0,11,101,7,1,[unknown],0 +0,12,106,7,1,[unknown],[other] +0,13,112,9,1,[unknown],0 +0,14,129,9,1,5,[unknown] +0,15,112,2,1,1,[other] +0,16,112,7,1,[unknown],2 +0,17,129,2,1,[unknown],2 +0,18,129,7,1,5,2 +0,19,112,7,1,1,2 +0,20,129,7,1,[unknown],2 +0,21,129,7,1,1,[other] +0,22,112,7,1,5,[mask] +0,23,118,7,[mask],[unknown],[mask] +0,24,129,9,1,5,[other] +0,25,112,9,1,5,[mask] +0,26,[other],7,[mask],[unknown],[mask] +0,27,129,9,1,5,[other] +0,28,112,9,1,5,[other] +0,29,129,7,1,[unknown],[mask] +0,30,104,0,1,[unknown],[other] +0,31,112,7,1,[unknown],[other] +0,32,104,7,1,[unknown],2 +0,33,129,7,1,[unknown],[other] +0,34,112,9,1,5,[other] +0,35,112,7,1,[unknown],2 +0,36,108,7,1,[unknown],2 +0,37,129,7,1,5,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index 81ebca01..d23a5aeb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,6,2,8,1 -1,9,121,6,3,8,1 -1,10,121,6,3,8,0 -1,11,121,6,3,8,0 -1,12,121,6,3,8,0 -1,13,121,3,3,8,0 -1,14,104,3,3,8,0 -1,15,104,3,3,0,0 -1,16,104,3,3,0,0 -1,17,104,3,3,0,0 -1,18,104,3,3,0,0 -1,19,104,3,3,0,0 -1,20,104,3,3,0,0 -1,21,104,3,3,0,0 -1,22,121,6,3,0,1 -1,23,113,6,3,8,1 -1,24,121,6,3,8,1 -1,25,104,6,3,8,1 -1,26,104,6,3,8,0 -1,27,104,6,3,0,0 -1,28,104,9,3,0,1 -1,29,104,3,3,0,1 -1,30,104,9,3,0,1 -1,31,104,3,3,0,1 -1,32,104,3,3,0,1 -1,33,103,6,3,8,1 -1,34,113,6,3,8,1 -1,35,121,6,3,8,1 -1,36,121,6,3,8,1 -1,37,104,6,3,8,1 +1,8,104,7,[mask],1,1 +1,9,104,7,[mask],[unknown],[mask] +1,10,[other],9,1,8,[mask] +1,11,[other],9,1,5,[other] +1,12,104,9,1,1,[other] +1,13,112,9,1,[unknown],[other] +1,14,112,7,1,[unknown],[other] +1,15,112,2,1,5,[other] +1,16,112,2,1,[unknown],[mask] +1,17,129,2,1,[unknown],[mask] +1,18,129,7,1,5,2 +1,19,129,2,1,1,2 +1,20,129,7,1,1,2 +1,21,129,7,1,1,2 +1,22,129,7,1,1,2 +1,23,129,7,1,1,2 +1,24,129,2,1,5,[mask] +1,25,129,2,1,5,[mask] +1,26,129,2,1,5,[mask] +1,27,129,2,1,5,[mask] +1,28,129,2,1,5,[mask] +1,29,112,2,1,5,[mask] +1,30,107,2,1,5,[mask] +1,31,107,2,1,5,1 +1,32,107,2,[mask],[unknown],1 +1,33,107,2,[mask],[unknown],1 +1,34,107,2,[mask],[unknown],1 +1,35,107,7,[mask],[unknown],1 +1,36,107,7,[mask],[unknown],1 +1,37,107,[mask],[mask],[unknown],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index c3ecaba4..cc5b8a64 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,102,6,3,8,1 -2,9,121,6,3,8,1 -2,10,104,6,3,8,1 -2,11,104,6,3,8,1 -2,12,104,6,3,8,1 -2,13,104,6,3,8,1 -2,14,104,6,3,8,0 -2,15,104,9,3,0,0 -2,16,104,3,3,0,0 -2,17,104,3,3,0,0 -2,18,104,3,3,0,1 -2,19,104,3,3,0,1 -2,20,104,3,3,0,1 -2,21,103,6,3,0,1 -2,22,113,6,3,8,1 -2,23,113,6,3,8,1 -2,24,113,6,3,8,1 -2,25,104,6,3,8,1 -2,26,104,6,3,8,1 -2,27,104,6,3,8,1 -2,28,104,6,3,8,1 -2,29,104,6,3,8,1 -2,30,104,9,3,0,0 -2,31,104,3,3,0,1 -2,32,104,9,3,0,1 -2,33,104,9,3,0,1 -2,34,104,3,3,8,1 -2,35,104,6,3,8,0 -2,36,121,6,3,8,0 -2,37,121,6,3,8,0 +2,8,112,2,[mask],5,[mask] +2,9,104,7,[mask],[unknown],[mask] +2,10,104,7,1,8,[mask] +2,11,112,7,1,[unknown],[other] +2,12,112,7,1,[unknown],[mask] +2,13,107,7,[mask],[unknown],[mask] +2,14,107,7,[mask],[unknown],[mask] +2,15,[other],7,[mask],[unknown],2 +2,16,129,9,[other],1,[other] +2,17,112,9,[other],1,[mask] +2,18,104,1,[other],5,[mask] +2,19,104,2,[other],[unknown],[other] +2,20,110,9,[mask],[unknown],[other] +2,21,110,2,[mask],[unknown],[mask] +2,22,[other],2,[mask],[unknown],[other] +2,23,110,2,[mask],5,[mask] +2,24,[other],2,[other],7,[mask] +2,25,104,2,[other],8,[mask] +2,26,107,2,[other],1,[mask] +2,27,107,2,[other],1,[mask] +2,28,107,2,[other],8,[mask] +2,29,107,2,1,5,[mask] +2,30,107,2,1,5,[unknown] +2,31,129,2,1,5,[mask] +2,32,129,9,1,5,[other] +2,33,107,2,1,5,[mask] +2,34,107,2,1,5,[mask] +2,35,107,2,1,[unknown],1 +2,36,107,2,[mask],[unknown],1 +2,37,107,7,[mask],[unknown],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index cfc7190a..2a4d06f3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,6,3,8,1 -3,9,121,6,3,8,0 -3,10,121,3,3,8,0 -3,11,121,3,3,8,0 -3,12,121,3,3,8,0 -3,13,121,3,3,8,0 -3,14,104,3,3,0,0 -3,15,104,3,3,0,0 -3,16,104,3,3,0,0 -3,17,104,3,3,0,0 -3,18,104,3,3,0,0 -3,19,104,3,3,0,0 -3,20,104,3,3,0,0 -3,21,121,3,3,0,1 -3,22,113,6,3,8,1 -3,23,121,6,3,8,1 -3,24,104,6,3,8,1 -3,25,104,6,3,8,0 -3,26,104,6,3,0,0 -3,27,104,3,3,0,1 -3,28,104,9,3,0,1 -3,29,104,3,3,0,1 -3,30,104,9,3,0,1 -3,31,104,3,3,0,1 -3,32,103,6,3,8,1 -3,33,113,6,3,8,1 -3,34,113,6,3,8,1 -3,35,121,6,3,8,1 -3,36,121,6,3,8,1 -3,37,104,6,3,8,1 -4,8,102,6,2,8,1 -4,9,121,6,3,8,1 -4,10,121,6,3,8,1 -4,11,121,6,3,8,1 -4,12,121,6,3,8,1 -4,13,121,6,3,8,0 -4,14,104,6,3,8,0 -4,15,104,3,3,0,0 -4,16,104,3,3,0,0 -4,17,104,3,3,0,0 -4,18,104,3,3,0,0 -4,19,104,3,3,0,0 -4,20,104,3,3,0,0 -4,21,104,3,3,0,0 -4,22,121,6,3,0,1 -4,23,113,6,3,8,1 -4,24,121,6,3,8,1 -4,25,104,6,3,8,1 -4,26,104,6,3,8,0 -4,27,104,6,3,0,0 -4,28,104,9,3,0,1 -4,29,104,3,3,0,1 -4,30,104,9,3,0,1 -4,31,104,3,3,0,1 -4,32,104,3,3,0,1 -4,33,103,6,3,8,1 -4,34,113,6,3,8,1 -4,35,121,6,3,8,1 -4,36,121,6,3,8,1 -4,37,104,6,3,8,1 +3,8,104,[mask],[mask],[unknown],[mask] +3,9,104,0,[mask],8,[other] +3,10,104,[mask],[mask],6,[mask] +3,11,104,0,[mask],8,[mask] +3,12,104,0,[mask],8,[mask] +3,13,104,1,[mask],8,[mask] +3,14,[other],2,[mask],[unknown],[mask] +3,15,129,1,[other],6,[mask] +3,16,107,2,[other],1,[mask] +3,17,107,2,[other],6,[mask] +3,18,129,9,[other],6,[mask] +3,19,129,9,[other],5,[mask] +3,20,129,9,[other],5,[mask] +3,21,129,9,[other],5,[mask] +3,22,129,9,[other],5,[other] +3,23,110,9,[other],5,[mask] +3,24,107,2,[other],8,[other] +3,25,107,2,1,5,[other] +3,26,110,9,1,[unknown],[other] +3,27,[other],9,1,[unknown],[other] +3,28,[other],2,1,[unknown],[other] +3,29,[other],2,1,[unknown],[other] +3,30,107,2,1,[unknown],[unknown] +3,31,129,2,1,[unknown],[mask] +3,32,129,2,1,[unknown],2 +3,33,129,2,1,5,2 +3,34,129,2,1,5,2 +3,35,129,2,1,5,2 +3,36,129,2,1,5,2 +3,37,129,2,1,5,2 +4,8,104,9,1,[unknown],[mask] +4,9,[other],7,1,[unknown],[other] +4,10,104,9,1,[unknown],[other] +4,11,[other],9,1,[unknown],[other] +4,12,[other],9,1,[unknown],[other] +4,13,[other],9,1,[unknown],[other] +4,14,129,2,1,5,[unknown] +4,15,129,2,1,1,2 +4,16,129,2,1,1,2 +4,17,129,7,1,5,2 +4,18,129,2,1,1,2 +4,19,129,7,1,5,2 +4,20,129,7,1,1,2 +4,21,129,7,1,1,[mask] +4,22,129,7,1,5,[mask] +4,23,129,2,1,5,[mask] +4,24,112,2,1,5,[mask] +4,25,107,2,[mask],[unknown],[mask] +4,26,129,2,[mask],5,[mask] +4,27,129,9,1,5,[mask] +4,28,129,9,1,5,[mask] +4,29,129,9,1,5,[mask] +4,30,129,9,1,5,[mask] +4,31,129,9,1,5,[mask] +4,32,129,9,1,5,[mask] +4,33,129,9,1,5,[other] +4,34,112,9,1,5,[mask] +4,35,107,7,[mask],[unknown],[mask] +4,36,107,7,[mask],[unknown],[mask] +4,37,104,7,[mask],[unknown],[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index 69802abf..529df285 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,6,3,8,1 -5,9,121,6,3,8,0 -5,10,104,6,3,8,0 -5,11,104,3,3,0,0 -5,12,104,3,3,0,0 -5,13,104,3,3,0,0 -5,14,121,6,3,8,1 -5,15,104,3,3,8,0 -5,16,104,3,3,0,0 -5,17,104,3,3,0,0 -5,18,104,3,3,0,0 -5,19,121,3,3,0,1 -5,20,104,4,3,8,1 -5,21,104,3,3,0,0 -5,22,104,3,3,0,0 -5,23,104,3,3,0,1 -5,24,103,6,3,8,1 -5,25,113,6,3,8,1 -5,26,104,6,3,8,1 -5,27,104,9,3,8,1 -5,28,121,6,3,8,1 -5,29,104,6,3,8,1 -5,30,104,6,3,8,0 -5,31,104,6,3,0,0 -5,32,104,9,3,0,0 -5,33,104,3,3,0,1 -5,34,104,3,3,0,0 -5,35,104,3,3,0,1 -5,36,104,3,3,0,1 -5,37,103,6,3,0,1 +5,8,102,7,[mask],9,1 +5,9,107,[mask],[mask],[unknown],1 +5,10,107,[mask],[mask],[unknown],1 +5,11,107,[mask],[mask],[unknown],1 +5,12,104,[mask],[mask],[unknown],1 +5,13,104,[mask],[mask],[unknown],1 +5,14,104,[mask],[mask],[unknown],1 +5,15,104,[mask],[mask],3,1 +5,16,104,[mask],[mask],3,[other] +5,17,112,[unknown],[mask],3,[other] +5,18,111,[mask],[mask],3,2 +5,19,104,9,[mask],3,2 +5,20,104,5,[mask],3,2 +5,21,104,5,[mask],3,2 +5,22,104,5,[mask],3,2 +5,23,104,[unknown],[mask],3,2 +5,24,104,9,[mask],3,[unknown] +5,25,104,9,[mask],3,[mask] +5,26,112,[unknown],[mask],3,[mask] +5,27,112,[unknown],[mask],3,[mask] +5,28,112,[mask],[mask],3,[mask] +5,29,104,[mask],[mask],7,[mask] +5,30,107,9,[mask],3,[mask] +5,31,107,2,[mask],3,[mask] +5,32,107,2,[mask],6,[mask] +5,33,104,2,[mask],6,[mask] +5,34,104,9,[mask],6,[mask] +5,35,[other],9,[mask],6,[mask] +5,36,[other],2,[other],6,[mask] +5,37,107,9,[other],6,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 4ff6731c..819defac 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,102,6,2,8,1 -6,9,113,6,3,8,1 -6,10,121,6,3,8,1 -6,11,121,6,3,8,1 -6,12,121,6,3,8,1 -6,13,121,6,3,8,0 -6,14,121,6,3,8,0 -6,15,104,3,3,8,0 -6,16,104,3,3,0,0 -6,17,104,3,3,0,0 -6,18,104,3,3,0,0 -6,19,104,3,3,0,0 -6,20,104,3,3,0,0 -6,21,104,3,3,0,0 -6,22,104,3,3,0,0 -6,23,121,6,3,0,1 -6,24,113,6,3,8,1 -6,25,121,6,3,8,1 -6,26,104,6,3,8,1 -6,27,104,6,3,8,0 -6,28,104,6,3,0,0 -6,29,104,9,3,0,1 -6,30,104,3,3,0,1 -6,31,104,9,3,0,1 -6,32,104,3,3,0,1 -6,33,104,3,3,0,1 -6,34,103,6,3,8,1 -6,35,113,6,3,8,1 -6,36,121,6,3,8,1 -6,37,121,6,3,8,1 -7,8,102,6,2,8,1 -7,9,121,6,3,8,1 -7,10,121,6,3,8,1 -7,11,104,6,3,8,0 -7,12,121,6,3,8,0 -7,13,104,6,3,8,0 -7,14,104,6,3,0,0 -7,15,104,3,3,0,0 -7,16,104,3,3,0,0 -7,17,104,3,3,0,0 -7,18,104,3,3,0,0 -7,19,104,3,3,0,0 -7,20,104,3,3,0,1 -7,21,103,6,3,8,1 -7,22,113,6,3,8,1 -7,23,113,6,3,8,1 -7,24,104,6,3,8,1 -7,25,104,6,3,8,1 -7,26,104,6,3,8,1 -7,27,104,6,3,8,1 -7,28,104,6,3,8,0 -7,29,104,9,3,0,0 -7,30,104,3,3,0,1 -7,31,104,9,3,0,1 -7,32,104,3,3,0,1 -7,33,104,9,3,0,1 -7,34,103,3,3,8,1 -7,35,104,6,3,8,1 -7,36,121,6,3,8,1 -7,37,121,6,3,8,1 +6,8,129,9,1,5,[other] +6,9,129,9,1,5,[mask] +6,10,129,9,1,5,[other] +6,11,129,9,1,5,[other] +6,12,129,9,1,5,[other] +6,13,129,2,1,5,[mask] +6,14,129,2,1,8,[other] +6,15,112,7,1,[unknown],[unknown] +6,16,107,7,1,[unknown],2 +6,17,108,7,[mask],[unknown],2 +6,18,104,7,1,5,2 +6,19,108,7,1,[unknown],2 +6,20,104,7,1,5,2 +6,21,112,9,[mask],1,[mask] +6,22,129,9,[other],5,[mask] +6,23,104,9,[other],5,[mask] +6,24,112,9,8,1,[mask] +6,25,129,9,[other],5,[mask] +6,26,104,9,[other],1,[mask] +6,27,104,9,[other],1,[other] +6,28,112,7,[other],1,[mask] +6,29,[other],1,[other],8,[other] +6,30,[other],2,[mask],[unknown],[other] +6,31,[other],2,1,[unknown],[other] +6,32,110,2,1,5,[other] +6,33,[other],2,1,[unknown],[other] +6,34,[other],2,1,5,[mask] +6,35,129,2,1,8,[unknown] +6,36,129,2,1,5,[unknown] +6,37,129,2,1,5,2 +7,8,129,2,1,5,[mask] +7,9,129,2,1,5,[mask] +7,10,129,2,1,5,[mask] +7,11,129,2,1,5,[mask] +7,12,129,2,1,5,1 +7,13,107,2,1,5,[mask] +7,14,107,2,1,[unknown],1 +7,15,107,2,[mask],[unknown],1 +7,16,107,2,[mask],[unknown],1 +7,17,107,7,[mask],[unknown],1 +7,18,107,7,[mask],[unknown],1 +7,19,107,7,[mask],[unknown],1 +7,20,107,7,[mask],[unknown],1 +7,21,107,[mask],[mask],[unknown],1 +7,22,104,[mask],[mask],[unknown],2 +7,23,104,9,[mask],1,[other] +7,24,104,9,[mask],3,[mask] +7,25,104,[unknown],[mask],3,[other] +7,26,104,[mask],[mask],3,[mask] +7,27,104,9,[mask],[unknown],[other] +7,28,112,9,[mask],[unknown],[mask] +7,29,104,2,[mask],[unknown],[mask] +7,30,107,2,[other],[unknown],[mask] +7,31,107,2,3,1,[mask] +7,32,107,2,[other],[unknown],[mask] +7,33,107,2,[other],[unknown],[mask] +7,34,107,2,[other],[unknown],[mask] +7,35,107,2,[other],8,[mask] +7,36,[other],2,[other],8,[mask] +7,37,[other],9,[other],5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index 7d0ff1de..a98e349c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,6,3,8,1 -8,9,121,6,3,8,1 -8,10,121,6,3,8,1 -8,11,104,6,3,8,1 -8,12,104,6,3,8,0 -8,13,121,6,3,8,0 -8,14,104,6,3,8,0 -8,15,104,3,3,0,0 -8,16,104,3,3,0,0 -8,17,104,3,3,0,0 -8,18,104,3,3,0,0 -8,19,104,3,3,0,0 -8,20,104,3,3,0,0 -8,21,104,3,3,0,0 -8,22,121,6,3,0,1 -8,23,113,6,3,8,1 -8,24,121,6,3,8,1 -8,25,104,6,3,8,1 -8,26,104,6,3,8,0 -8,27,104,6,3,0,0 -8,28,104,9,3,0,1 -8,29,104,3,3,0,1 -8,30,104,9,3,0,1 -8,31,104,3,3,0,1 -8,32,104,3,3,0,1 -8,33,103,6,3,8,1 -8,34,113,6,3,8,1 -8,35,121,6,3,8,1 -8,36,121,6,3,8,1 -8,37,104,6,3,8,1 +8,8,104,2,1,5,[mask] +8,9,129,9,1,5,[mask] +8,10,129,9,1,5,[mask] +8,11,129,9,1,5,[mask] +8,12,129,9,1,5,[mask] +8,13,129,9,1,5,[mask] +8,14,112,9,1,5,[other] +8,15,107,7,[mask],[unknown],[mask] +8,16,107,7,[mask],[unknown],[mask] +8,17,104,7,[mask],[unknown],[mask] +8,18,104,0,1,[unknown],2 +8,19,104,7,[mask],[unknown],[mask] +8,20,104,9,1,8,[mask] +8,21,112,9,1,[unknown],[mask] +8,22,104,9,1,1,[mask] +8,23,129,9,[other],1,[other] +8,24,112,2,[other],1,[mask] +8,25,129,2,[other],5,[mask] +8,26,129,2,[other],1,[mask] +8,27,129,2,[other],1,[other] +8,28,129,2,1,1,[mask] +8,29,129,9,1,5,[other] +8,30,129,2,1,5,[other] +8,31,129,2,1,5,[other] +8,32,129,2,1,5,[other] +8,33,129,2,1,5,[unknown] +8,34,129,2,1,5,2 +8,35,129,2,1,5,2 +8,36,129,2,1,5,2 +8,37,107,2,1,[unknown],2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index 057d4027..9cd75ca4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,3,8,1 -9,9,121,6,3,8,1 -9,10,104,6,3,8,1 -9,11,104,6,3,8,1 -9,12,104,6,3,8,0 -9,13,104,6,3,8,0 -9,14,104,3,3,0,0 -9,15,104,3,3,0,0 -9,16,104,3,3,0,0 -9,17,104,3,3,0,0 -9,18,104,3,3,0,1 -9,19,103,4,3,0,1 -9,20,103,6,3,8,1 -9,21,113,6,3,8,1 -9,22,113,6,3,8,1 -9,23,113,6,3,8,1 -9,24,104,6,3,8,1 -9,25,104,6,3,8,1 -9,26,104,6,3,8,1 -9,27,104,6,3,8,1 -9,28,104,9,3,8,0 -9,29,104,3,3,0,0 -9,30,104,3,3,0,0 -9,31,104,3,3,0,1 -9,32,104,9,3,0,1 -9,33,104,3,3,0,1 -9,34,104,3,3,0,1 -9,35,103,6,3,8,1 -9,36,121,6,3,8,1 -9,37,113,6,3,8,1 +9,8,104,7,[mask],[unknown],[other] +9,9,104,7,[mask],[unknown],[other] +9,10,104,7,[mask],[unknown],[other] +9,11,104,0,[mask],[unknown],0 +9,12,104,7,[mask],[unknown],2 +9,13,104,9,[other],[unknown],2 +9,14,104,9,[other],[unknown],[mask] +9,15,[other],9,[other],[unknown],[mask] +9,16,107,2,[other],1,[mask] +9,17,107,2,[other],1,[mask] +9,18,107,2,[other],1,[mask] +9,19,107,2,[other],[unknown],[mask] +9,20,110,9,[other],[unknown],[other] +9,21,110,2,[other],[unknown],[other] +9,22,110,2,3,[unknown],[other] +9,23,110,1,1,[unknown],[other] +9,24,110,2,[mask],[unknown],[other] +9,25,110,2,[mask],7,[mask] +9,26,[other],2,[mask],[unknown],[mask] +9,27,[other],2,[mask],5,[mask] +9,28,129,2,[other],8,[mask] +9,29,129,2,1,5,[mask] +9,30,129,9,1,5,[mask] +9,31,129,9,1,5,[mask] +9,32,129,9,1,5,[unknown] +9,33,129,9,1,5,[mask] +9,34,129,9,1,5,2 +9,35,129,2,1,5,2 +9,36,112,2,1,5,2 +9,37,107,7,[mask],[unknown],[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index 9e3ea8c3..fd1bb4cf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,6,2,0,1 -0,9,102,6,2,0,1 -0,10,102,6,2,0,1 -0,11,102,6,2,8,1 -0,12,102,6,2,8,1 -0,13,102,6,2,8,1 -0,14,102,6,2,6,1 -0,15,102,6,2,8,1 -0,16,102,6,2,0,1 -0,17,102,6,2,0,1 -0,18,102,6,2,0,1 -0,19,102,6,2,0,1 -0,20,102,6,2,0,1 -0,21,102,6,2,0,1 -0,22,102,6,2,0,1 -0,23,102,6,2,0,1 -0,24,102,6,2,0,1 -0,25,102,6,2,0,1 -0,26,102,6,2,0,1 -0,27,102,6,2,0,1 -0,28,102,6,2,0,1 -0,29,102,6,2,0,1 -0,30,102,6,2,0,1 -0,31,102,6,2,0,1 -0,32,102,6,2,0,1 -0,33,102,6,2,0,1 -0,34,102,6,2,0,1 -0,35,102,6,2,0,1 -0,36,102,6,2,0,1 -0,37,102,6,2,0,1 +0,8,104,7,[mask],[unknown],1 +0,9,104,7,[mask],[unknown],0 +0,10,104,7,1,[unknown],0 +0,11,101,7,1,[unknown],0 +0,12,106,7,1,[unknown],[other] +0,13,112,9,1,[unknown],0 +0,14,129,9,1,5,[unknown] +0,15,112,2,1,1,[other] +0,16,112,7,1,[unknown],2 +0,17,129,2,1,[unknown],2 +0,18,129,7,1,5,2 +0,19,112,7,1,1,2 +0,20,129,7,1,[unknown],2 +0,21,129,7,1,1,[other] +0,22,112,7,1,5,[mask] +0,23,118,7,[mask],[unknown],[mask] +0,24,129,9,1,5,[other] +0,25,112,9,1,5,[mask] +0,26,[other],7,[mask],[unknown],[mask] +0,27,129,9,1,5,[other] +0,28,112,9,1,5,[other] +0,29,129,7,1,[unknown],[mask] +0,30,104,0,1,[unknown],[other] +0,31,112,7,1,[unknown],[other] +0,32,104,7,1,[unknown],2 +0,33,129,7,1,[unknown],[other] +0,34,112,9,1,5,[other] +0,35,112,7,1,[unknown],2 +0,36,108,7,1,[unknown],2 +0,37,129,7,1,5,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index 2a623d17..d23a5aeb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,102,6,2,8,1 -1,9,102,6,2,8,1 -1,10,102,6,2,8,1 -1,11,102,6,2,8,1 -1,12,102,6,2,8,1 -1,13,102,6,2,8,1 -1,14,102,6,2,8,1 -1,15,102,6,2,8,1 -1,16,102,6,2,6,1 -1,17,102,6,2,0,1 -1,18,102,6,2,0,1 -1,19,102,6,2,0,1 -1,20,102,6,2,0,1 -1,21,102,6,2,0,1 -1,22,102,6,2,0,1 -1,23,102,6,2,0,1 -1,24,102,6,2,0,1 -1,25,102,6,2,0,1 -1,26,102,6,2,0,1 -1,27,102,6,2,0,1 -1,28,102,6,2,0,1 -1,29,102,6,2,0,1 -1,30,102,6,2,0,1 -1,31,102,6,2,0,1 -1,32,102,6,2,0,1 -1,33,102,6,2,0,1 -1,34,102,6,2,0,1 -1,35,102,6,2,0,1 -1,36,102,6,2,0,1 -1,37,102,6,2,0,1 +1,8,104,7,[mask],1,1 +1,9,104,7,[mask],[unknown],[mask] +1,10,[other],9,1,8,[mask] +1,11,[other],9,1,5,[other] +1,12,104,9,1,1,[other] +1,13,112,9,1,[unknown],[other] +1,14,112,7,1,[unknown],[other] +1,15,112,2,1,5,[other] +1,16,112,2,1,[unknown],[mask] +1,17,129,2,1,[unknown],[mask] +1,18,129,7,1,5,2 +1,19,129,2,1,1,2 +1,20,129,7,1,1,2 +1,21,129,7,1,1,2 +1,22,129,7,1,1,2 +1,23,129,7,1,1,2 +1,24,129,2,1,5,[mask] +1,25,129,2,1,5,[mask] +1,26,129,2,1,5,[mask] +1,27,129,2,1,5,[mask] +1,28,129,2,1,5,[mask] +1,29,112,2,1,5,[mask] +1,30,107,2,1,5,[mask] +1,31,107,2,1,5,1 +1,32,107,2,[mask],[unknown],1 +1,33,107,2,[mask],[unknown],1 +1,34,107,2,[mask],[unknown],1 +1,35,107,7,[mask],[unknown],1 +1,36,107,7,[mask],[unknown],1 +1,37,107,[mask],[mask],[unknown],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index a8977415..cc5b8a64 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,102,6,2,8,1 -2,9,102,6,2,8,1 -2,10,102,6,2,8,1 -2,11,102,6,2,8,1 -2,12,102,6,2,8,1 -2,13,102,6,2,8,1 -2,14,102,6,2,0,1 -2,15,102,6,2,0,1 -2,16,102,6,2,0,1 -2,17,102,6,2,0,1 -2,18,102,6,2,0,1 -2,19,102,6,2,0,1 -2,20,102,6,2,0,1 -2,21,102,6,2,0,1 -2,22,102,6,2,0,1 -2,23,102,6,2,0,1 -2,24,102,6,2,0,1 -2,25,102,6,2,0,1 -2,26,102,6,2,0,1 -2,27,102,6,2,0,1 -2,28,102,6,2,0,1 -2,29,102,6,2,0,1 -2,30,102,6,2,0,1 -2,31,102,6,2,0,1 -2,32,102,6,2,0,1 -2,33,102,6,2,0,1 -2,34,102,6,2,0,1 -2,35,102,6,2,0,1 -2,36,102,6,2,0,1 -2,37,102,6,2,0,1 +2,8,112,2,[mask],5,[mask] +2,9,104,7,[mask],[unknown],[mask] +2,10,104,7,1,8,[mask] +2,11,112,7,1,[unknown],[other] +2,12,112,7,1,[unknown],[mask] +2,13,107,7,[mask],[unknown],[mask] +2,14,107,7,[mask],[unknown],[mask] +2,15,[other],7,[mask],[unknown],2 +2,16,129,9,[other],1,[other] +2,17,112,9,[other],1,[mask] +2,18,104,1,[other],5,[mask] +2,19,104,2,[other],[unknown],[other] +2,20,110,9,[mask],[unknown],[other] +2,21,110,2,[mask],[unknown],[mask] +2,22,[other],2,[mask],[unknown],[other] +2,23,110,2,[mask],5,[mask] +2,24,[other],2,[other],7,[mask] +2,25,104,2,[other],8,[mask] +2,26,107,2,[other],1,[mask] +2,27,107,2,[other],1,[mask] +2,28,107,2,[other],8,[mask] +2,29,107,2,1,5,[mask] +2,30,107,2,1,5,[unknown] +2,31,129,2,1,5,[mask] +2,32,129,9,1,5,[other] +2,33,107,2,1,5,[mask] +2,34,107,2,1,5,[mask] +2,35,107,2,1,[unknown],1 +2,36,107,2,[mask],[unknown],1 +2,37,107,7,[mask],[unknown],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 780b6ded..2a4d06f3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,102,6,2,8,1 -3,9,102,6,2,8,1 -3,10,102,6,2,8,1 -3,11,102,6,2,8,1 -3,12,102,6,2,8,1 -3,13,102,6,2,8,1 -3,14,102,6,2,8,1 -3,15,102,6,2,8,1 -3,16,102,6,2,6,1 -3,17,102,6,2,0,1 -3,18,102,6,2,0,1 -3,19,102,6,2,0,1 -3,20,102,6,2,0,1 -3,21,102,6,2,0,1 -3,22,102,6,2,0,1 -3,23,102,6,2,0,1 -3,24,102,6,2,0,1 -3,25,102,6,2,0,1 -3,26,102,6,2,0,1 -3,27,102,6,2,0,1 -3,28,102,6,2,0,1 -3,29,102,6,2,0,1 -3,30,102,6,2,0,1 -3,31,102,6,2,0,1 -3,32,102,6,2,0,1 -3,33,102,6,2,0,1 -3,34,102,6,2,0,1 -3,35,102,6,2,0,1 -3,36,102,6,2,0,1 -3,37,102,6,2,0,1 -4,8,113,5,2,0,1 -4,9,102,6,2,0,1 -4,10,102,6,2,0,1 -4,11,102,6,2,0,1 -4,12,102,6,2,0,1 -4,13,102,6,2,0,1 -4,14,102,6,2,8,1 -4,15,102,6,2,8,1 -4,16,102,6,2,0,1 -4,17,102,6,2,0,1 -4,18,102,6,2,0,1 -4,19,102,6,2,0,1 -4,20,102,6,2,0,1 -4,21,102,6,2,0,1 -4,22,102,6,2,0,1 -4,23,102,6,2,0,1 -4,24,102,6,2,0,1 -4,25,102,6,2,0,1 -4,26,102,6,2,0,1 -4,27,102,6,2,0,1 -4,28,102,6,2,0,1 -4,29,102,6,2,0,1 -4,30,102,6,2,0,1 -4,31,102,6,2,0,1 -4,32,102,6,2,0,1 -4,33,102,6,2,0,1 -4,34,102,6,2,0,1 -4,35,102,6,2,0,1 -4,36,102,6,2,0,1 -4,37,102,6,2,0,1 +3,8,104,[mask],[mask],[unknown],[mask] +3,9,104,0,[mask],8,[other] +3,10,104,[mask],[mask],6,[mask] +3,11,104,0,[mask],8,[mask] +3,12,104,0,[mask],8,[mask] +3,13,104,1,[mask],8,[mask] +3,14,[other],2,[mask],[unknown],[mask] +3,15,129,1,[other],6,[mask] +3,16,107,2,[other],1,[mask] +3,17,107,2,[other],6,[mask] +3,18,129,9,[other],6,[mask] +3,19,129,9,[other],5,[mask] +3,20,129,9,[other],5,[mask] +3,21,129,9,[other],5,[mask] +3,22,129,9,[other],5,[other] +3,23,110,9,[other],5,[mask] +3,24,107,2,[other],8,[other] +3,25,107,2,1,5,[other] +3,26,110,9,1,[unknown],[other] +3,27,[other],9,1,[unknown],[other] +3,28,[other],2,1,[unknown],[other] +3,29,[other],2,1,[unknown],[other] +3,30,107,2,1,[unknown],[unknown] +3,31,129,2,1,[unknown],[mask] +3,32,129,2,1,[unknown],2 +3,33,129,2,1,5,2 +3,34,129,2,1,5,2 +3,35,129,2,1,5,2 +3,36,129,2,1,5,2 +3,37,129,2,1,5,2 +4,8,104,9,1,[unknown],[mask] +4,9,[other],7,1,[unknown],[other] +4,10,104,9,1,[unknown],[other] +4,11,[other],9,1,[unknown],[other] +4,12,[other],9,1,[unknown],[other] +4,13,[other],9,1,[unknown],[other] +4,14,129,2,1,5,[unknown] +4,15,129,2,1,1,2 +4,16,129,2,1,1,2 +4,17,129,7,1,5,2 +4,18,129,2,1,1,2 +4,19,129,7,1,5,2 +4,20,129,7,1,1,2 +4,21,129,7,1,1,[mask] +4,22,129,7,1,5,[mask] +4,23,129,2,1,5,[mask] +4,24,112,2,1,5,[mask] +4,25,107,2,[mask],[unknown],[mask] +4,26,129,2,[mask],5,[mask] +4,27,129,9,1,5,[mask] +4,28,129,9,1,5,[mask] +4,29,129,9,1,5,[mask] +4,30,129,9,1,5,[mask] +4,31,129,9,1,5,[mask] +4,32,129,9,1,5,[mask] +4,33,129,9,1,5,[other] +4,34,112,9,1,5,[mask] +4,35,107,7,[mask],[unknown],[mask] +4,36,107,7,[mask],[unknown],[mask] +4,37,104,7,[mask],[unknown],[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index a6dfbfa4..529df285 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,7,2,4,2 -5,9,113,5,2,0,1 -5,10,113,6,2,0,1 -5,11,113,6,2,0,1 -5,12,113,6,2,0,1 -5,13,113,6,2,0,1 -5,14,102,6,2,0,1 -5,15,102,6,2,0,1 -5,16,102,6,2,0,1 -5,17,102,6,2,0,1 -5,18,102,6,2,0,1 -5,19,102,6,2,0,1 -5,20,102,6,2,0,1 -5,21,102,6,2,0,1 -5,22,102,6,2,0,1 -5,23,102,6,2,0,1 -5,24,102,6,2,0,1 -5,25,102,6,2,0,1 -5,26,102,6,2,0,1 -5,27,102,6,2,0,1 -5,28,102,6,2,0,1 -5,29,102,6,2,0,1 -5,30,102,6,2,0,1 -5,31,102,6,2,0,1 -5,32,102,6,2,0,1 -5,33,102,6,2,0,1 -5,34,102,6,2,0,1 -5,35,102,6,2,0,1 -5,36,102,6,2,0,1 -5,37,102,6,2,0,1 +5,8,102,7,[mask],9,1 +5,9,107,[mask],[mask],[unknown],1 +5,10,107,[mask],[mask],[unknown],1 +5,11,107,[mask],[mask],[unknown],1 +5,12,104,[mask],[mask],[unknown],1 +5,13,104,[mask],[mask],[unknown],1 +5,14,104,[mask],[mask],[unknown],1 +5,15,104,[mask],[mask],3,1 +5,16,104,[mask],[mask],3,[other] +5,17,112,[unknown],[mask],3,[other] +5,18,111,[mask],[mask],3,2 +5,19,104,9,[mask],3,2 +5,20,104,5,[mask],3,2 +5,21,104,5,[mask],3,2 +5,22,104,5,[mask],3,2 +5,23,104,[unknown],[mask],3,2 +5,24,104,9,[mask],3,[unknown] +5,25,104,9,[mask],3,[mask] +5,26,112,[unknown],[mask],3,[mask] +5,27,112,[unknown],[mask],3,[mask] +5,28,112,[mask],[mask],3,[mask] +5,29,104,[mask],[mask],7,[mask] +5,30,107,9,[mask],3,[mask] +5,31,107,2,[mask],3,[mask] +5,32,107,2,[mask],6,[mask] +5,33,104,2,[mask],6,[mask] +5,34,104,9,[mask],6,[mask] +5,35,[other],9,[mask],6,[mask] +5,36,[other],2,[other],6,[mask] +5,37,107,9,[other],6,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index eeb5e8ef..819defac 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,102,6,2,8,1 -6,9,102,6,2,8,1 -6,10,102,6,2,8,1 -6,11,102,6,2,8,1 -6,12,102,6,2,8,1 -6,13,102,6,2,8,1 -6,14,102,6,2,8,1 -6,15,102,6,2,8,1 -6,16,102,6,2,6,1 -6,17,102,6,2,0,1 -6,18,102,6,2,0,1 -6,19,102,6,2,0,1 -6,20,102,6,2,0,1 -6,21,102,6,2,0,1 -6,22,102,6,2,0,1 -6,23,102,6,2,0,1 -6,24,102,6,2,0,1 -6,25,102,6,2,0,1 -6,26,102,6,2,0,1 -6,27,102,6,2,0,1 -6,28,102,6,2,0,1 -6,29,102,6,2,0,1 -6,30,102,6,2,0,1 -6,31,102,6,2,0,1 -6,32,102,6,2,0,1 -6,33,102,6,2,0,1 -6,34,102,6,2,0,1 -6,35,102,6,2,0,1 -6,36,102,6,2,0,1 -6,37,102,6,2,0,1 -7,8,102,6,2,8,1 -7,9,102,6,2,8,1 -7,10,102,6,2,8,1 -7,11,102,6,2,8,1 -7,12,102,6,2,8,1 -7,13,102,6,2,8,1 -7,14,102,6,3,6,1 -7,15,102,6,2,8,1 -7,16,102,6,2,0,1 -7,17,102,6,2,0,1 -7,18,102,6,2,0,1 -7,19,102,6,2,0,1 -7,20,102,6,2,0,1 -7,21,102,6,2,0,1 -7,22,102,6,2,0,1 -7,23,102,6,2,0,1 -7,24,102,6,2,0,1 -7,25,102,6,2,0,1 -7,26,102,6,2,0,1 -7,27,102,6,2,0,1 -7,28,102,6,2,0,1 -7,29,102,6,2,0,1 -7,30,102,6,2,0,1 -7,31,102,6,2,0,1 -7,32,102,6,2,0,1 -7,33,102,6,2,0,1 -7,34,102,6,2,0,1 -7,35,102,6,2,0,1 -7,36,102,6,2,0,1 -7,37,102,6,2,0,1 +6,8,129,9,1,5,[other] +6,9,129,9,1,5,[mask] +6,10,129,9,1,5,[other] +6,11,129,9,1,5,[other] +6,12,129,9,1,5,[other] +6,13,129,2,1,5,[mask] +6,14,129,2,1,8,[other] +6,15,112,7,1,[unknown],[unknown] +6,16,107,7,1,[unknown],2 +6,17,108,7,[mask],[unknown],2 +6,18,104,7,1,5,2 +6,19,108,7,1,[unknown],2 +6,20,104,7,1,5,2 +6,21,112,9,[mask],1,[mask] +6,22,129,9,[other],5,[mask] +6,23,104,9,[other],5,[mask] +6,24,112,9,8,1,[mask] +6,25,129,9,[other],5,[mask] +6,26,104,9,[other],1,[mask] +6,27,104,9,[other],1,[other] +6,28,112,7,[other],1,[mask] +6,29,[other],1,[other],8,[other] +6,30,[other],2,[mask],[unknown],[other] +6,31,[other],2,1,[unknown],[other] +6,32,110,2,1,5,[other] +6,33,[other],2,1,[unknown],[other] +6,34,[other],2,1,5,[mask] +6,35,129,2,1,8,[unknown] +6,36,129,2,1,5,[unknown] +6,37,129,2,1,5,2 +7,8,129,2,1,5,[mask] +7,9,129,2,1,5,[mask] +7,10,129,2,1,5,[mask] +7,11,129,2,1,5,[mask] +7,12,129,2,1,5,1 +7,13,107,2,1,5,[mask] +7,14,107,2,1,[unknown],1 +7,15,107,2,[mask],[unknown],1 +7,16,107,2,[mask],[unknown],1 +7,17,107,7,[mask],[unknown],1 +7,18,107,7,[mask],[unknown],1 +7,19,107,7,[mask],[unknown],1 +7,20,107,7,[mask],[unknown],1 +7,21,107,[mask],[mask],[unknown],1 +7,22,104,[mask],[mask],[unknown],2 +7,23,104,9,[mask],1,[other] +7,24,104,9,[mask],3,[mask] +7,25,104,[unknown],[mask],3,[other] +7,26,104,[mask],[mask],3,[mask] +7,27,104,9,[mask],[unknown],[other] +7,28,112,9,[mask],[unknown],[mask] +7,29,104,2,[mask],[unknown],[mask] +7,30,107,2,[other],[unknown],[mask] +7,31,107,2,3,1,[mask] +7,32,107,2,[other],[unknown],[mask] +7,33,107,2,[other],[unknown],[mask] +7,34,107,2,[other],[unknown],[mask] +7,35,107,2,[other],8,[mask] +7,36,[other],2,[other],8,[mask] +7,37,[other],9,[other],5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index 811522ec..a98e349c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,102,6,2,8,0 -8,9,102,6,2,8,1 -8,10,102,6,2,8,1 -8,11,102,6,2,8,1 -8,12,102,6,2,8,1 -8,13,102,6,2,8,1 -8,14,102,6,2,6,1 -8,15,102,6,3,6,1 -8,16,102,6,2,6,1 -8,17,102,6,2,0,1 -8,18,102,6,2,0,1 -8,19,102,6,2,0,1 -8,20,102,6,2,0,1 -8,21,102,6,2,0,1 -8,22,102,6,2,0,1 -8,23,102,6,2,0,1 -8,24,102,6,2,0,1 -8,25,102,6,2,0,1 -8,26,102,6,2,0,1 -8,27,102,6,2,0,1 -8,28,102,6,2,0,1 -8,29,102,6,2,0,1 -8,30,102,6,2,0,1 -8,31,102,6,2,0,1 -8,32,102,6,2,0,1 -8,33,102,6,2,0,1 -8,34,102,6,2,0,1 -8,35,102,6,2,0,1 -8,36,102,6,2,0,1 -8,37,102,6,2,0,1 +8,8,104,2,1,5,[mask] +8,9,129,9,1,5,[mask] +8,10,129,9,1,5,[mask] +8,11,129,9,1,5,[mask] +8,12,129,9,1,5,[mask] +8,13,129,9,1,5,[mask] +8,14,112,9,1,5,[other] +8,15,107,7,[mask],[unknown],[mask] +8,16,107,7,[mask],[unknown],[mask] +8,17,104,7,[mask],[unknown],[mask] +8,18,104,0,1,[unknown],2 +8,19,104,7,[mask],[unknown],[mask] +8,20,104,9,1,8,[mask] +8,21,112,9,1,[unknown],[mask] +8,22,104,9,1,1,[mask] +8,23,129,9,[other],1,[other] +8,24,112,2,[other],1,[mask] +8,25,129,2,[other],5,[mask] +8,26,129,2,[other],1,[mask] +8,27,129,2,[other],1,[other] +8,28,129,2,1,1,[mask] +8,29,129,9,1,5,[other] +8,30,129,2,1,5,[other] +8,31,129,2,1,5,[other] +8,32,129,2,1,5,[other] +8,33,129,2,1,5,[unknown] +8,34,129,2,1,5,2 +8,35,129,2,1,5,2 +8,36,129,2,1,5,2 +8,37,107,2,1,[unknown],2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index 12621cb2..9cd75ca4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,113,6,2,6,1 -9,9,102,6,2,0,1 -9,10,102,6,2,0,1 -9,11,102,6,2,0,1 -9,12,102,6,2,0,1 -9,13,102,6,2,0,1 -9,14,102,6,2,0,1 -9,15,102,6,2,0,1 -9,16,102,6,2,0,1 -9,17,102,6,2,0,1 -9,18,102,6,2,0,1 -9,19,102,6,2,0,1 -9,20,102,6,2,0,1 -9,21,102,6,2,0,1 -9,22,102,6,2,0,1 -9,23,102,6,2,0,1 -9,24,102,6,2,0,1 -9,25,102,6,2,0,1 -9,26,102,6,2,0,1 -9,27,102,6,2,0,1 -9,28,102,6,2,0,1 -9,29,102,6,2,0,1 -9,30,102,6,2,0,1 -9,31,102,6,2,0,1 -9,32,102,6,2,0,1 -9,33,102,6,2,0,1 -9,34,102,6,2,0,1 -9,35,102,6,2,0,1 -9,36,102,6,2,0,1 -9,37,102,6,2,0,1 +9,8,104,7,[mask],[unknown],[other] +9,9,104,7,[mask],[unknown],[other] +9,10,104,7,[mask],[unknown],[other] +9,11,104,0,[mask],[unknown],0 +9,12,104,7,[mask],[unknown],2 +9,13,104,9,[other],[unknown],2 +9,14,104,9,[other],[unknown],[mask] +9,15,[other],9,[other],[unknown],[mask] +9,16,107,2,[other],1,[mask] +9,17,107,2,[other],1,[mask] +9,18,107,2,[other],1,[mask] +9,19,107,2,[other],[unknown],[mask] +9,20,110,9,[other],[unknown],[other] +9,21,110,2,[other],[unknown],[other] +9,22,110,2,3,[unknown],[other] +9,23,110,1,1,[unknown],[other] +9,24,110,2,[mask],[unknown],[other] +9,25,110,2,[mask],7,[mask] +9,26,[other],2,[mask],[unknown],[mask] +9,27,[other],2,[mask],5,[mask] +9,28,129,2,[other],8,[mask] +9,29,129,2,1,5,[mask] +9,30,129,9,1,5,[mask] +9,31,129,9,1,5,[mask] +9,32,129,9,1,5,[unknown] +9,33,129,9,1,5,[mask] +9,34,129,9,1,5,2 +9,35,129,2,1,5,2 +9,36,112,2,1,5,2 +9,37,107,7,[mask],[unknown],[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 2a8d05f6..8cab47cb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,113,6,2,0,1 -0,9,113,6,2,0,1 -0,10,113,6,2,0,1 -0,11,113,6,2,0,1 -0,12,113,6,2,0,1 -0,13,113,6,2,0,2 -0,14,113,6,2,0,2 -0,15,113,6,2,0,2 -0,16,113,6,2,0,2 -0,17,113,6,2,0,2 -0,18,113,6,2,0,2 -0,19,113,6,2,0,2 -0,20,113,6,2,0,2 -0,21,113,6,2,0,2 -0,22,113,6,2,0,2 -0,23,113,6,2,0,2 -0,24,113,6,2,0,2 -0,25,113,6,2,0,2 -0,26,113,6,2,0,2 -0,27,113,6,2,0,2 -0,28,113,6,2,0,2 -0,29,113,6,2,0,2 -0,30,113,6,2,0,2 -0,31,113,6,2,0,2 -0,32,113,6,2,0,2 -0,33,113,6,2,0,2 -0,34,113,6,2,0,2 -0,35,113,6,2,0,2 -0,36,113,6,2,0,2 -0,37,113,6,2,0,2 +0,8,102,3,9,5,1 +0,9,102,4,3,0,1 +0,10,102,6,9,2,1 +0,11,102,4,3,0,1 +0,12,112,6,9,2,1 +0,13,102,4,3,0,1 +0,14,112,6,9,0,0 +0,15,102,4,3,0,1 +0,16,112,6,9,0,0 +0,17,102,4,3,0,2 +0,18,112,6,3,0,0 +0,19,102,4,9,0,0 +0,20,112,4,3,0,0 +0,21,112,4,3,0,0 +0,22,112,4,3,0,0 +0,23,112,4,3,0,0 +0,24,112,4,3,0,0 +0,25,112,4,3,0,0 +0,26,112,4,3,0,0 +0,27,112,4,3,0,0 +0,28,112,4,3,0,0 +0,29,112,4,3,0,0 +0,30,112,4,3,0,0 +0,31,112,4,3,0,0 +0,32,112,4,3,0,0 +0,33,112,4,3,0,0 +0,34,112,4,3,0,0 +0,35,112,4,3,0,0 +0,36,112,4,3,0,0 +0,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index cd416b33..5429f965 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,113,6,0,9,0 -1,9,100,6,0,8,0 -1,10,121,6,0,8,0 -1,11,120,4,0,8,0 -1,12,120,4,0,8,0 -1,13,120,0,0,5,0 -1,14,109,4,8,8,0 -1,15,109,4,9,5,0 -1,16,109,4,9,5,0 -1,17,109,4,9,5,0 -1,18,109,4,0,5,0 -1,19,109,4,9,5,0 -1,20,109,4,0,9,0 -1,21,109,4,0,5,0 -1,22,127,4,0,9,0 -1,23,120,4,0,9,0 -1,24,120,4,0,9,0 -1,25,109,4,0,5,0 -1,26,109,4,9,5,0 -1,27,127,4,0,9,0 -1,28,109,4,9,5,0 -1,29,109,4,9,5,0 -1,30,109,4,3,5,0 -1,31,109,4,3,5,0 -1,32,109,4,3,5,0 -1,33,109,4,3,5,0 -1,34,127,6,3,5,0 -1,35,109,6,3,5,0 -1,36,112,6,3,5,0 -1,37,103,6,3,0,0 +1,8,102,4,0,5,0 +1,9,102,6,0,2,1 +1,10,111,4,2,2,1 +1,11,112,4,9,5,1 +1,12,112,4,9,8,1 +1,13,112,4,9,0,0 +1,14,112,7,9,0,1 +1,15,112,4,3,0,0 +1,16,112,4,9,0,0 +1,17,112,4,9,0,1 +1,18,112,4,9,0,0 +1,19,112,4,3,0,0 +1,20,112,4,9,0,0 +1,21,112,4,3,0,0 +1,22,112,4,9,0,0 +1,23,112,4,3,0,0 +1,24,112,4,3,0,0 +1,25,112,4,3,0,0 +1,26,112,4,3,0,0 +1,27,112,4,3,0,0 +1,28,112,4,3,0,0 +1,29,112,4,3,0,0 +1,30,112,4,3,0,0 +1,31,112,4,3,0,0 +1,32,112,4,3,0,0 +1,33,112,4,3,0,0 +1,34,112,4,3,0,0 +1,35,112,4,3,0,0 +1,36,112,4,3,0,0 +1,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index cedb1297..d61975e1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,113,4,2,0,1 -2,9,113,6,2,0,0 -2,10,113,6,2,0,0 -2,11,113,6,2,0,1 -2,12,113,6,2,0,1 -2,13,113,6,2,0,1 -2,14,113,6,2,0,2 -2,15,113,6,2,0,2 -2,16,113,6,2,0,2 -2,17,113,6,2,0,2 -2,18,113,6,2,0,2 -2,19,113,6,2,0,2 -2,20,113,6,2,0,2 -2,21,113,6,2,0,2 -2,22,113,6,2,0,2 -2,23,113,6,2,0,2 -2,24,113,6,2,0,2 -2,25,113,6,2,0,2 -2,26,113,6,2,0,2 -2,27,113,6,2,0,2 -2,28,113,6,2,0,2 -2,29,113,6,2,0,2 -2,30,113,6,2,0,2 -2,31,113,6,2,0,2 -2,32,113,6,2,0,2 -2,33,113,6,2,0,2 -2,34,113,6,2,0,2 -2,35,113,6,2,0,2 -2,36,113,6,2,0,2 -2,37,113,6,2,0,2 +2,8,112,4,0,5,1 +2,9,112,4,3,0,0 +2,10,112,4,9,0,1 +2,11,112,4,9,0,0 +2,12,112,4,3,0,0 +2,13,112,4,9,0,0 +2,14,112,4,3,0,0 +2,15,112,4,9,0,0 +2,16,112,4,3,0,0 +2,17,112,4,3,0,0 +2,18,112,4,3,0,0 +2,19,112,4,3,0,0 +2,20,112,4,3,0,0 +2,21,112,4,3,0,0 +2,22,112,4,3,0,0 +2,23,112,4,3,0,0 +2,24,112,4,3,0,0 +2,25,112,4,3,0,0 +2,26,112,4,3,0,0 +2,27,112,4,3,0,0 +2,28,112,4,3,0,0 +2,29,112,4,3,0,0 +2,30,112,4,3,0,0 +2,31,112,4,3,0,0 +2,32,112,4,3,0,0 +2,33,112,4,3,0,0 +2,34,112,4,3,0,0 +2,35,112,4,3,0,0 +2,36,112,4,3,0,0 +2,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index 477f3560..dae0b6c2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,121,4,2,8,1 -3,9,121,4,2,8,1 -3,10,121,4,9,8,0 -3,11,109,4,9,5,0 -3,12,109,6,9,5,0 -3,13,121,6,0,5,0 -3,14,109,4,9,5,0 -3,15,109,4,0,5,0 -3,16,120,8,0,9,0 -3,17,120,4,0,5,0 -3,18,127,4,0,9,0 -3,19,120,4,0,9,0 -3,20,109,4,0,8,0 -3,21,109,4,9,5,0 -3,22,109,4,0,5,0 -3,23,109,4,9,5,0 -3,24,109,4,9,5,0 -3,25,109,4,3,5,0 -3,26,109,4,9,5,0 -3,27,127,4,0,9,0 -3,28,127,4,0,5,0 -3,29,127,4,0,9,0 -3,30,109,4,0,5,0 -3,31,109,4,0,9,0 -3,32,109,4,0,5,0 -3,33,109,4,9,5,0 -3,34,109,4,9,5,0 -3,35,109,4,9,5,0 -3,36,109,4,3,5,0 -3,37,109,4,3,5,0 -4,8,113,7,2,8,1 -4,9,113,6,2,8,0 -4,10,121,6,2,8,0 -4,11,121,4,2,8,0 -4,12,109,4,9,5,0 -4,13,109,6,9,5,0 -4,14,121,6,0,9,0 -4,15,120,4,0,5,0 -4,16,120,9,0,9,0 -4,17,120,0,0,5,0 -4,18,109,4,0,5,0 -4,19,109,4,0,5,0 -4,20,127,4,9,9,0 -4,21,127,4,9,5,0 -4,22,109,4,9,5,0 -4,23,109,4,9,5,0 -4,24,109,4,9,5,0 -4,25,109,6,3,9,0 -4,26,109,4,0,5,0 -4,27,127,6,0,9,0 -4,28,127,9,0,5,0 -4,29,127,4,0,9,0 -4,30,120,4,0,5,0 -4,31,109,4,3,9,0 -4,32,109,4,9,5,0 -4,33,109,4,9,5,0 -4,34,109,4,9,5,0 -4,35,109,4,9,5,0 -4,36,109,4,3,5,0 -4,37,109,4,3,5,0 +3,8,112,3,3,5,0 +3,9,102,4,3,5,0 +3,10,112,3,3,0,0 +3,11,112,4,3,5,0 +3,12,112,4,3,0,0 +3,13,112,4,3,0,0 +3,14,112,4,9,0,0 +3,15,112,4,3,0,0 +3,16,112,4,9,0,0 +3,17,112,4,3,0,0 +3,18,112,4,9,0,0 +3,19,112,4,3,0,0 +3,20,112,4,3,0,0 +3,21,112,4,3,0,0 +3,22,112,4,3,0,0 +3,23,112,4,3,0,0 +3,24,112,4,3,0,0 +3,25,112,4,3,0,0 +3,26,112,4,3,0,0 +3,27,112,4,3,0,0 +3,28,112,4,3,0,0 +3,29,112,4,3,0,0 +3,30,112,4,3,0,0 +3,31,112,4,3,0,0 +3,32,112,4,3,0,0 +3,33,112,4,3,0,0 +3,34,112,4,3,0,0 +3,35,112,4,3,0,0 +3,36,112,4,3,0,0 +3,37,112,4,3,0,0 +4,8,113,4,9,5,1 +4,9,112,4,9,8,1 +4,10,118,4,9,8,1 +4,11,102,4,9,0,1 +4,12,112,4,9,0,1 +4,13,112,4,9,0,1 +4,14,112,4,9,0,1 +4,15,112,4,9,0,1 +4,16,112,4,3,0,0 +4,17,112,4,9,0,1 +4,18,112,4,3,0,0 +4,19,112,4,3,0,1 +4,20,112,4,9,0,0 +4,21,112,4,3,0,0 +4,22,112,4,9,0,0 +4,23,112,4,3,0,0 +4,24,112,4,9,0,0 +4,25,112,4,3,0,0 +4,26,112,4,3,0,0 +4,27,112,4,9,0,0 +4,28,112,4,3,0,0 +4,29,112,4,3,0,0 +4,30,112,4,3,0,0 +4,31,112,4,3,0,0 +4,32,112,4,3,0,0 +4,33,112,4,3,0,0 +4,34,112,4,3,0,0 +4,35,112,4,3,0,0 +4,36,112,4,3,0,0 +4,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index e21fb885..83cec41e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,113,6,2,1,1 -5,9,113,6,2,0,2 -5,10,113,6,2,0,2 -5,11,113,6,2,0,2 -5,12,113,6,2,0,2 -5,13,113,6,2,0,2 -5,14,113,6,2,0,2 -5,15,113,6,2,0,2 -5,16,113,6,2,0,2 -5,17,113,6,2,0,2 -5,18,113,6,2,0,2 -5,19,113,6,2,0,2 -5,20,113,6,2,0,2 -5,21,113,6,2,0,2 -5,22,113,6,2,0,2 -5,23,113,6,2,0,2 -5,24,113,6,2,0,2 -5,25,113,6,2,0,2 -5,26,113,6,2,0,2 -5,27,113,6,2,0,2 -5,28,113,6,2,0,2 -5,29,113,6,2,0,2 -5,30,113,6,2,0,2 -5,31,113,6,2,0,2 -5,32,113,6,2,0,2 -5,33,113,6,2,0,2 -5,34,113,6,2,0,2 -5,35,113,6,2,0,2 -5,36,113,6,2,0,2 -5,37,113,6,2,0,2 +5,8,108,4,9,8,1 +5,9,104,4,9,8,1 +5,10,119,4,9,8,1 +5,11,104,4,9,8,1 +5,12,119,4,9,8,1 +5,13,104,4,9,8,0 +5,14,102,4,9,5,1 +5,15,119,4,3,0,0 +5,16,112,4,3,6,0 +5,17,112,4,3,5,0 +5,18,112,4,3,5,0 +5,19,112,4,3,0,0 +5,20,112,4,3,0,0 +5,21,112,4,3,6,0 +5,22,112,4,3,0,0 +5,23,112,4,9,0,0 +5,24,112,4,3,6,0 +5,25,112,4,3,0,0 +5,26,112,4,9,0,0 +5,27,112,4,3,0,0 +5,28,112,4,3,0,0 +5,29,112,4,3,6,0 +5,30,112,4,3,0,0 +5,31,112,4,3,0,0 +5,32,112,4,3,6,0 +5,33,112,4,3,0,0 +5,34,112,4,3,0,0 +5,35,112,4,3,0,0 +5,36,112,4,3,6,0 +5,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index 908877f2..2ce84b09 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,113,6,2,8,0 -6,9,113,6,2,8,0 -6,10,113,6,2,8,0 -6,11,121,6,2,8,0 -6,12,121,6,0,8,0 -6,13,109,6,0,8,0 -6,14,109,4,0,8,0 -6,15,109,4,0,5,0 -6,16,109,4,0,5,0 -6,17,109,4,9,5,0 -6,18,109,4,0,5,0 -6,19,109,4,9,5,0 -6,20,109,4,9,5,0 -6,21,109,4,3,9,0 -6,22,109,4,0,5,0 -6,23,109,4,3,9,0 -6,24,109,4,0,5,0 -6,25,127,4,0,9,0 -6,26,109,4,0,5,0 -6,27,127,4,0,9,0 -6,28,109,4,0,5,0 -6,29,109,4,9,5,0 -6,30,109,4,9,5,0 -6,31,109,4,9,5,0 -6,32,109,4,3,5,0 -6,33,109,4,3,5,0 -6,34,109,4,3,5,0 -6,35,109,4,3,5,0 -6,36,109,6,3,5,0 -6,37,127,6,3,9,0 -7,8,109,4,9,6,0 -7,9,121,4,9,6,0 -7,10,121,4,2,8,1 -7,11,109,4,9,8,0 -7,12,109,4,9,5,0 -7,13,109,4,9,5,0 -7,14,109,6,3,5,0 -7,15,121,6,0,5,0 -7,16,109,6,0,8,0 -7,17,109,4,0,5,0 -7,18,127,4,0,9,0 -7,19,120,4,0,5,0 -7,20,127,4,3,9,0 -7,21,109,4,9,5,0 -7,22,109,4,3,0,0 -7,23,109,4,9,5,0 -7,24,109,4,9,5,0 -7,25,109,4,3,5,0 -7,26,109,4,3,5,0 -7,27,109,6,3,5,0 -7,28,109,6,3,5,0 -7,29,112,6,3,9,0 -7,30,121,6,3,5,0 -7,31,112,6,3,9,0 -7,32,121,6,3,5,0 -7,33,103,6,3,0,0 -7,34,103,6,3,0,0 -7,35,103,6,2,0,0 -7,36,103,6,2,0,0 -7,37,103,6,2,0,0 +6,8,102,4,9,5,1 +6,9,112,4,3,0,1 +6,10,112,4,9,5,1 +6,11,112,4,3,0,1 +6,12,112,4,9,0,1 +6,13,112,4,3,0,0 +6,14,112,4,9,0,1 +6,15,112,4,3,0,0 +6,16,112,4,9,0,0 +6,17,112,4,3,0,0 +6,18,112,4,9,0,0 +6,19,112,4,3,0,0 +6,20,112,4,9,0,0 +6,21,112,4,3,0,0 +6,22,112,4,9,0,0 +6,23,112,4,3,0,0 +6,24,112,4,3,0,0 +6,25,112,4,3,0,0 +6,26,112,4,3,0,0 +6,27,112,4,3,0,0 +6,28,112,4,3,0,0 +6,29,112,4,3,0,0 +6,30,112,4,3,0,0 +6,31,112,4,3,0,0 +6,32,112,4,3,0,0 +6,33,112,4,3,0,0 +6,34,112,4,3,0,0 +6,35,112,4,3,0,0 +6,36,112,4,3,0,0 +6,37,112,4,3,0,0 +7,8,102,4,0,5,1 +7,9,112,4,0,8,1 +7,10,118,4,9,8,1 +7,11,112,4,9,0,1 +7,12,112,4,9,0,1 +7,13,112,4,9,0,1 +7,14,112,4,9,0,1 +7,15,112,4,9,0,0 +7,16,112,4,3,0,0 +7,17,112,4,9,0,1 +7,18,112,4,9,0,0 +7,19,112,4,3,0,0 +7,20,112,4,9,0,0 +7,21,112,4,3,0,0 +7,22,112,4,9,0,0 +7,23,112,4,3,0,0 +7,24,112,4,3,0,0 +7,25,112,4,3,0,0 +7,26,112,4,3,0,0 +7,27,112,4,3,0,0 +7,28,112,4,3,0,0 +7,29,112,4,3,0,0 +7,30,112,4,3,0,0 +7,31,112,4,3,0,0 +7,32,112,4,3,0,0 +7,33,112,4,3,0,0 +7,34,112,4,3,0,0 +7,35,112,4,3,0,0 +7,36,112,4,3,0,0 +7,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index d1cabc88..c373d0f8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,6,2,8,0 -8,9,113,6,2,8,0 -8,10,113,6,2,8,0 -8,11,113,6,2,0,0 -8,12,113,6,2,0,0 -8,13,113,6,8,0,0 -8,14,113,6,8,0,0 -8,15,113,9,7,0,0 -8,16,113,6,2,0,1 -8,17,113,6,2,0,1 -8,18,113,6,2,0,1 -8,19,113,6,2,0,1 -8,20,113,6,2,0,2 -8,21,113,6,2,0,2 -8,22,113,6,2,0,2 -8,23,113,6,2,0,2 -8,24,113,6,2,0,2 -8,25,113,6,2,0,2 -8,26,113,6,2,0,2 -8,27,113,6,2,0,2 -8,28,113,6,2,0,2 -8,29,113,6,2,0,2 -8,30,113,6,2,0,2 -8,31,113,6,2,0,2 -8,32,113,6,2,0,2 -8,33,113,6,2,0,2 -8,34,113,6,2,0,2 -8,35,113,6,2,0,2 -8,36,113,6,2,0,2 -8,37,113,6,2,0,2 +8,8,112,4,9,5,0 +8,9,112,4,0,5,0 +8,10,112,7,8,5,0 +8,11,112,4,9,5,0 +8,12,112,4,9,5,0 +8,13,112,4,9,5,1 +8,14,112,4,9,0,0 +8,15,112,4,9,0,0 +8,16,112,4,3,0,0 +8,17,112,4,9,0,0 +8,18,112,4,3,0,0 +8,19,112,4,3,0,0 +8,20,112,4,3,0,0 +8,21,112,4,9,0,0 +8,22,112,4,3,0,0 +8,23,112,4,3,0,0 +8,24,112,4,3,0,0 +8,25,112,4,3,0,0 +8,26,112,4,3,0,0 +8,27,112,4,3,0,0 +8,28,112,4,3,0,0 +8,29,112,4,3,0,0 +8,30,112,4,3,0,0 +8,31,112,4,3,0,0 +8,32,112,4,3,0,0 +8,33,112,4,3,0,0 +8,34,112,4,3,0,0 +8,35,112,4,3,0,0 +8,36,112,4,3,0,0 +8,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index f9969b00..3613e328 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,100,6,0,9,0 -9,9,100,9,8,9,0 -9,10,109,4,9,5,1 -9,11,113,6,0,9,0 -9,12,100,9,0,9,0 -9,13,109,4,9,5,1 -9,14,112,6,3,9,0 -9,15,121,6,0,5,0 -9,16,109,4,0,8,0 -9,17,109,4,0,5,0 -9,18,127,4,0,9,0 -9,19,109,4,9,5,0 -9,20,127,4,0,5,0 -9,21,127,4,0,9,0 -9,22,109,4,9,5,0 -9,23,109,4,9,5,0 -9,24,109,4,3,5,0 -9,25,109,4,3,5,0 -9,26,109,4,3,5,0 -9,27,109,6,3,5,0 -9,28,121,6,3,0,0 -9,29,109,4,3,7,0 -9,30,112,6,3,5,0 -9,31,103,6,3,0,0 -9,32,103,6,2,0,0 -9,33,103,6,2,0,0 -9,34,113,6,2,0,0 -9,35,113,6,2,0,0 -9,36,113,6,2,0,0 -9,37,113,6,2,0,1 +9,8,119,4,9,8,1 +9,9,102,4,9,8,1 +9,10,102,4,9,8,1 +9,11,102,4,9,0,1 +9,12,102,4,9,0,1 +9,13,102,6,9,0,1 +9,14,112,4,9,0,1 +9,15,112,4,9,0,0 +9,16,112,4,3,0,0 +9,17,112,4,3,0,0 +9,18,112,4,3,0,0 +9,19,112,4,3,0,0 +9,20,112,4,3,0,0 +9,21,112,4,9,0,0 +9,22,112,4,3,0,0 +9,23,112,4,3,0,0 +9,24,112,4,3,0,0 +9,25,112,4,3,0,0 +9,26,112,4,3,0,0 +9,27,112,4,3,0,0 +9,28,112,4,3,0,0 +9,29,112,4,3,0,0 +9,30,112,4,3,0,0 +9,31,112,4,3,0,0 +9,32,112,4,3,0,0 +9,33,112,4,3,0,0 +9,34,112,4,3,0,0 +9,35,112,4,3,0,0 +9,36,112,4,3,0,0 +9,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 068b8b9f..e820f648 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.013403586,0.013561583,0.010157157,0.02523759,0.02000361,0.05363709,0.021128021,0.025016747,0.02920473,0.01225187,0.0151882535,0.046147842,0.030095028,0.030087681,0.019925622,0.02262283,0.03150853,0.014046838,0.017826365,0.06419519,0.02504119,0.059139382,0.08537767,0.030591354,0.04970318,0.023754872,0.006926579,0.045255262,0.009768042,0.06675244,0.026345653,0.018249106,0.037849132 -0.016586032,0.009750425,0.008877863,0.044213485,0.015101754,0.030926332,0.10564914,0.038188923,0.021930052,0.012667373,0.019466935,0.031108072,0.05049339,0.026259657,0.033276457,0.033570215,0.030092146,0.008471316,0.018575478,0.017898783,0.018978879,0.06433024,0.053123724,0.01424231,0.08489147,0.020401172,0.012519794,0.03767036,0.009599258,0.0104606785,0.04588504,0.03737721,0.017415995 -0.007843759,0.0123399645,0.010932602,0.012196199,0.010071585,0.041178703,0.048805505,0.02791397,0.021404997,0.01442688,0.014203211,0.060977157,0.024207711,0.034439713,0.07799098,0.035463613,0.07618432,0.0120071145,0.012583348,0.013552799,0.017436162,0.038533,0.023809142,0.010679349,0.07326574,0.052771334,0.016932746,0.037566938,0.030193252,0.02263027,0.02893749,0.023646941,0.054873504 +0.013453301,0.013558816,0.010155084,0.025183218,0.019921565,0.05383606,0.02112372,0.025011655,0.029356034,0.012249369,0.015066982,0.046228647,0.030096248,0.030052193,0.019999536,0.022618225,0.031463686,0.013989219,0.017822728,0.064182125,0.025011655,0.059127342,0.0850275,0.030607535,0.049790215,0.023750037,0.0069251657,0.04524605,0.009766049,0.06673885,0.026443383,0.018245382,0.03795245 +0.016586587,0.009750751,0.00887816,0.044301387,0.015043382,0.030987818,0.10565262,0.038190182,0.021930778,0.0126184095,0.019467577,0.031093914,0.05049505,0.026299018,0.033277556,0.033669822,0.030034423,0.0084716,0.018576091,0.017899383,0.01901661,0.06408156,0.05312548,0.014242788,0.08489428,0.020441733,0.012520213,0.037671603,0.0095995795,0.01046103,0.04588656,0.037451517,0.017382594 +0.007844531,0.012341179,0.0109336795,0.01224514,0.009994192,0.041102406,0.04862002,0.027862249,0.021365335,0.014428301,0.014204611,0.06122185,0.02423375,0.034409486,0.07799866,0.035467107,0.07589478,0.012055296,0.012633842,0.013554134,0.017437879,0.038687624,0.023811487,0.010680402,0.07327296,0.05277653,0.017000694,0.03757064,0.030218352,0.0226325,0.028972154,0.02364927,0.05487891 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 06bccafb..8cfb24ae 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.019326234,0.008987534,0.01819081,0.021602122,0.03681829,0.06312124,0.03617675,0.017055342,0.04511071,0.0098323915,0.015110195,0.03783893,0.03835981,0.024985593,0.032971486,0.02502222,0.035477027,0.018369326,0.027649779,0.01682375,0.034184624,0.014531332,0.031430904,0.032019537,0.049933005,0.109490566,0.01257582,0.058377594,0.009717841,0.035477027,0.039423183,0.011185166,0.0128238555 -0.013355161,0.00794364,0.011924816,0.012399847,0.015252072,0.053862467,0.053862467,0.02285139,0.041217204,0.0128435325,0.011512868,0.051597085,0.037019096,0.019892447,0.055139776,0.030555336,0.03286122,0.013459907,0.0118320165,0.019393725,0.037602063,0.035810128,0.028006654,0.01410586,0.10880518,0.02236568,0.01507438,0.038644433,0.01388717,0.016685817,0.053027406,0.057112765,0.030096311 -0.015875405,0.0123637775,0.019149387,0.021762764,0.015875405,0.039832875,0.029979475,0.041419636,0.06085663,0.01757247,0.011569412,0.094256595,0.044872865,0.018487863,0.052461695,0.019603502,0.055845182,0.022963623,0.021300191,0.0145680895,0.028087579,0.031850714,0.013212684,0.019527076,0.04851914,0.05921513,0.014739814,0.050255228,0.023121139,0.019951142,0.019951142,0.019527076,0.021425363 +0.019366598,0.008988731,0.01826444,0.021583911,0.036751345,0.063376725,0.036252305,0.017057614,0.04511672,0.009872189,0.015112207,0.037917957,0.03821535,0.024958435,0.03297588,0.025031663,0.03541252,0.018371774,0.027673723,0.016891846,0.03425602,0.014533268,0.03134313,0.03208641,0.050135113,0.10865299,0.012577496,0.058385372,0.009719135,0.03555112,0.03950552,0.011186656,0.012875763 +0.013347994,0.007877592,0.011918416,0.012393192,0.015243887,0.053833574,0.053833574,0.022816842,0.04135633,0.01283664,0.01146183,0.051569402,0.037071574,0.019804265,0.054895345,0.030598652,0.032779507,0.013452683,0.011825667,0.01938332,0.03758189,0.035721082,0.027969431,0.01409829,0.10959972,0.022375524,0.01506629,0.0386237,0.013825605,0.016676864,0.05299896,0.057082128,0.030080168 +0.015875753,0.01241244,0.019149808,0.021741997,0.01581386,0.039911628,0.030156313,0.041339725,0.060857967,0.017572856,0.011569666,0.094258666,0.045049477,0.01848827,0.052462846,0.019565681,0.055846408,0.022941712,0.021279868,0.01456841,0.028019704,0.031789266,0.013212974,0.019489402,0.0485202,0.059216425,0.014740137,0.050256327,0.02307653,0.019912649,0.020029668,0.019489402,0.021384027 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index b9936480..1f2ed7bf 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012297478,0.013665343,0.018972449,0.011826368,0.024950994,0.078946404,0.037073772,0.020235552,0.029241972,0.015067184,0.017892724,0.023132304,0.015667394,0.04334363,0.0390813,0.022333188,0.037584122,0.00976618,0.017546648,0.0258028,0.034895677,0.030525848,0.022267856,0.016710458,0.13534562,0.093021594,0.011826368,0.024006857,0.01638725,0.025976619,0.04160183,0.016841521,0.01616473 -0.011090748,0.008306586,0.0069948467,0.009486419,0.01348292,0.08195016,0.0491262,0.049899824,0.026644321,0.007049708,0.012324387,0.03201389,0.02492027,0.049318474,0.041046478,0.048176013,0.046149794,0.00805102,0.012421048,0.019088384,0.0321235,0.02361709,0.03528076,0.020478847,0.047244202,0.053118087,0.01741415,0.06137783,0.010177442,0.028612677,0.08655661,0.010257265,0.016200101 -0.015800804,0.01356804,0.009696641,0.008967927,0.01755835,0.065492526,0.037830207,0.038803037,0.030613404,0.0072624483,0.013835645,0.025572212,0.017904656,0.035158474,0.062493403,0.09418089,0.030650796,0.0078525795,0.018222168,0.018400995,0.032899566,0.02009147,0.021096846,0.026204217,0.08847476,0.029853182,0.01636618,0.04572115,0.013781705,0.039645717,0.059865013,0.016238818,0.01989622 +0.012260135,0.01367717,0.018951818,0.011836603,0.024954304,0.079014726,0.037033457,0.020253064,0.029310184,0.015080225,0.017873267,0.023197588,0.015742326,0.043296497,0.039191596,0.022287127,0.037763875,0.009736525,0.017561834,0.025771594,0.034925878,0.030522447,0.022330698,0.016692288,0.13546278,0.09237757,0.011836603,0.024109898,0.01633749,0.026002275,0.041637834,0.016823206,0.016147152 +0.011046612,0.008305911,0.0069942786,0.009485649,0.013481825,0.08194348,0.048930686,0.050091043,0.026681205,0.0070491354,0.012323385,0.032058205,0.024869617,0.049314454,0.040963046,0.048172083,0.04605599,0.008050365,0.012420039,0.019124145,0.031980034,0.023615165,0.035277884,0.020437222,0.04724035,0.053113755,0.017480887,0.061613034,0.010176616,0.028699104,0.086549565,0.010256432,0.016198784 +0.015744025,0.013519284,0.00962413,0.008970675,0.017563729,0.06551258,0.0379899,0.038890805,0.030600358,0.007264674,0.013839886,0.02553013,0.017910143,0.035237998,0.062268827,0.09420972,0.030697633,0.007854985,0.018227752,0.01840663,0.032877516,0.020058408,0.021103306,0.026186656,0.08850185,0.0299061,0.016371196,0.045735154,0.0137859285,0.039580476,0.059883345,0.016243795,0.019902313 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 48bf280b..ab6b8364 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.014360831,0.018260473,0.018224843,0.011053926,0.03076024,0.07321574,0.037321977,0.01873005,0.036528688,0.015227427,0.015527761,0.02097666,0.020291606,0.022482706,0.037103932,0.02936596,0.033982046,0.013024708,0.019821553,0.028408663,0.050124213,0.025789138,0.018803358,0.019362386,0.14334947,0.056798175,0.010143653,0.031520464,0.013229817,0.017977372,0.050320394,0.014586981,0.033324774 -0.01811298,0.010022493,0.010627294,0.029121654,0.02044467,0.07640756,0.046524912,0.04837825,0.029228497,0.015523141,0.01671908,0.021955362,0.12305657,0.05190229,0.027959907,0.030796167,0.022829963,0.0101011,0.016204689,0.027190795,0.0332174,0.017317316,0.02210596,0.016141513,0.05655991,0.03148033,0.012669618,0.03716541,0.011312696,0.025932973,0.047257572,0.02219248,0.013539525 -0.0188605,0.014545823,0.011733642,0.027108917,0.03445344,0.08535639,0.038024917,0.02668049,0.023018274,0.0188605,0.02539817,0.013825609,0.023982013,0.11485958,0.021226147,0.043937705,0.021122757,0.019535357,0.01927009,0.024431145,0.02162367,0.017409071,0.021350885,0.01799681,0.02659432,0.069665864,0.020835934,0.06621647,0.014320311,0.03824837,0.020714207,0.016482577,0.022310078 -0.016216978,0.013081708,0.014939779,0.024982793,0.017741427,0.057494164,0.03569894,0.043145325,0.033766083,0.014881535,0.010308138,0.02417871,0.0764655,0.026581064,0.04486404,0.018091345,0.031891134,0.012629794,0.014939779,0.023734218,0.031922292,0.033275068,0.015534913,0.023116592,0.07858521,0.06695543,0.014311432,0.06540441,0.016028045,0.02678954,0.036832146,0.011410069,0.024202334 -0.011195347,0.0092090415,0.0072849514,0.026208512,0.011416156,0.057524852,0.029870834,0.03149794,0.026517449,0.009281268,0.01366335,0.078934886,0.03681583,0.030525122,0.050370444,0.020671988,0.037873372,0.00787691,0.01097881,0.042916153,0.016871985,0.061715156,0.057300583,0.019230815,0.08402575,0.0281726,0.0070058694,0.04515177,0.0079386905,0.060521476,0.021453522,0.017407559,0.022571096 -0.01740354,0.01922637,0.01123657,0.03960435,0.018671269,0.0817404,0.03641405,0.032466494,0.028904509,0.014204355,0.018381797,0.028214265,0.03581451,0.036342997,0.021490498,0.035640057,0.050952412,0.011684184,0.033546194,0.023464803,0.024068216,0.015661491,0.026706208,0.0505559,0.078608975,0.03567488,0.005650102,0.044790044,0.014204355,0.04054354,0.028234936,0.018238753,0.02165905 +0.01434968,0.018246295,0.018246295,0.011062379,0.030698866,0.073096424,0.03732033,0.018661758,0.03649588,0.015284481,0.015576431,0.020900974,0.020248648,0.022526698,0.037143078,0.029393356,0.03404698,0.013014595,0.01981463,0.028412612,0.050005887,0.025869979,0.0187521,0.019310784,0.14371982,0.056729846,0.010097493,0.031495996,0.013216318,0.018000763,0.05034006,0.014573876,0.0333467 +0.01807688,0.009905313,0.01062685,0.029172484,0.020458804,0.07633914,0.046557073,0.04852078,0.029202323,0.015531968,0.016718382,0.021956462,0.1231266,0.051788602,0.027899088,0.03077986,0.022778912,0.0100612985,0.016242629,0.027246153,0.033163358,0.017325047,0.022083469,0.016141823,0.05652651,0.031496324,0.012720227,0.037182026,0.011353725,0.025973134,0.047310814,0.022188853,0.013545157 +0.018902939,0.0145501075,0.01169134,0.027147124,0.034455173,0.08530861,0.038063984,0.026669418,0.023067255,0.01891448,0.025368463,0.013871527,0.023945192,0.11464649,0.021188384,0.043950647,0.02112382,0.019579314,0.019284002,0.02452501,0.021680264,0.017422704,0.021336326,0.018038407,0.026665552,0.06965661,0.020803943,0.06600996,0.014377083,0.038264383,0.020744508,0.01648542,0.022261553 +0.016216656,0.01308145,0.014939484,0.025020843,0.017754074,0.057443947,0.035689533,0.043020573,0.033728357,0.014948606,0.010307934,0.024133276,0.07651071,0.026627235,0.044945393,0.018055689,0.031882733,0.012678976,0.014916706,0.023783064,0.031886622,0.03319329,0.015595406,0.023117555,0.07884793,0.06692554,0.014312897,0.06517998,0.01608653,0.026792346,0.0368025,0.01140845,0.024165705 +0.011208817,0.009184176,0.007265281,0.026254857,0.011393673,0.05732051,0.029912245,0.031399224,0.026623994,0.00926186,0.013679789,0.07865209,0.036882624,0.030619256,0.050721206,0.02077786,0.037872672,0.0077945087,0.010975259,0.04301501,0.0168655,0.06145841,0.05736951,0.019180054,0.083752826,0.028208211,0.006933426,0.045228165,0.007977403,0.060601793,0.02146246,0.017494582,0.022652796 +0.017393991,0.019215824,0.0112304045,0.03964368,0.018711211,0.08226599,0.036385193,0.03245042,0.02884637,0.014205229,0.018300092,0.028105145,0.035746835,0.036245,0.021434186,0.035585742,0.0507631,0.011632246,0.033574894,0.023546595,0.024087338,0.01569116,0.026756804,0.050531257,0.07852272,0.03570976,0.005625673,0.044787344,0.014193096,0.04060556,0.028245514,0.018262153,0.021699423 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 5bf42858..934e0e29 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010741137,0.008597097,0.008732483,0.021761348,0.010615999,0.06205288,0.03822967,0.056279518,0.025933884,0.009895199,0.010699261,0.033606037,0.021071235,0.029112015,0.10072176,0.022342766,0.12244653,0.008139568,0.015147431,0.010699261,0.015325984,0.020106312,0.028507149,0.015266233,0.0655409,0.02857683,0.007127244,0.026108587,0.010492319,0.10311031,0.022039376,0.016799457,0.014174217 -0.009333175,0.014287093,0.009333175,0.03983506,0.0151492385,0.035707913,0.03427296,0.105981335,0.024172984,0.012510196,0.010052225,0.06503865,0.027972776,0.027532374,0.029922616,0.0156913,0.18455555,0.009046024,0.017920028,0.020828241,0.013008546,0.023856388,0.02995185,0.012364448,0.035987977,0.02517892,0.00704505,0.020148035,0.016284535,0.030334523,0.033939894,0.018131264,0.024625693 -0.010948875,0.0068784477,0.007794302,0.033332005,0.011385028,0.014280026,0.04296665,0.029207861,0.02900534,0.012024987,0.01593052,0.041807696,0.07056385,0.026035152,0.04887815,0.056921564,0.06475303,0.008232424,0.014906994,0.010086576,0.017841335,0.04450406,0.061787773,0.01656512,0.09203261,0.017360097,0.0076137474,0.04060063,0.013258555,0.019253442,0.023659023,0.06759603,0.02198812 +0.010731453,0.008589347,0.008724609,0.021720512,0.01064794,0.062239602,0.038269885,0.05600958,0.025929496,0.009886278,0.010731453,0.033510234,0.021114009,0.029029025,0.101420246,0.022333529,0.12233617,0.0081322305,0.015133775,0.010731453,0.015312167,0.020029424,0.028453656,0.015312167,0.065481834,0.028537137,0.0071766684,0.026116919,0.010441991,0.10301738,0.022019511,0.016718876,0.01416144 +0.009332455,0.014341904,0.009259829,0.039909847,0.015148069,0.035705153,0.03433731,0.10597313,0.02412395,0.01255819,0.01005145,0.06503362,0.027943308,0.02745641,0.02977456,0.01569009,0.18454129,0.009045325,0.017988779,0.02082663,0.013007542,0.023807997,0.029949531,0.012363493,0.03598519,0.025091063,0.0070445063,0.020107165,0.01634701,0.030421168,0.033937268,0.018200824,0.024696033 +0.0109061785,0.0068784403,0.0077942936,0.033202026,0.011385017,0.01428001,0.043134782,0.029179327,0.029015938,0.011978094,0.015992854,0.041807663,0.070288695,0.025984332,0.04887811,0.056921516,0.06500641,0.008232416,0.014906977,0.010086566,0.017806504,0.044417188,0.06178772,0.016565101,0.09203254,0.017326204,0.007613739,0.040600598,0.01325854,0.019178364,0.023705257,0.06786054,0.021988103 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 15dcf397..1593701e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.011449223,0.008812782,0.008951563,0.014304557,0.012673135,0.088313274,0.04466766,0.040118113,0.019976614,0.008214416,0.014027881,0.034923363,0.0200548,0.07524385,0.032968048,0.04163484,0.031914745,0.008343774,0.014360543,0.024238,0.029458722,0.049249835,0.036670923,0.027613169,0.055049576,0.03465159,0.015466914,0.052528672,0.012428015,0.048962105,0.049927797,0.016272627,0.016528884 -0.01242395,0.008741341,0.012918863,0.0126689905,0.012136149,0.03917598,0.026045907,0.02556709,0.024926098,0.010878774,0.011535247,0.05655713,0.019660482,0.029255617,0.03887111,0.02514614,0.0321624,0.010836362,0.015983855,0.023936106,0.017657993,0.2894735,0.014244129,0.0121836485,0.06459027,0.01704799,0.01135641,0.026951538,0.012918863,0.01786614,0.021508634,0.019737432,0.025035877 -0.019095432,0.015463947,0.0148135545,0.016017271,0.02569571,0.03876264,0.05160351,0.019207647,0.036166057,0.019740103,0.031347863,0.026176937,0.057680424,0.025998604,0.03910483,0.03476358,0.042780813,0.01607996,0.028070044,0.03522492,0.029742124,0.04114191,0.026955184,0.01176435,0.06334955,0.042365067,0.016655328,0.029546713,0.022676386,0.014080084,0.04580756,0.034661878,0.027459998 -0.012427352,0.012427352,0.011812032,0.044231243,0.012922402,0.08660057,0.032709766,0.07465436,0.020609653,0.0156484,0.016271763,0.031952046,0.09075662,0.0546183,0.03434656,0.031395294,0.053145062,0.010713048,0.016208325,0.019398829,0.014700311,0.02252502,0.012722059,0.013384786,0.06958552,0.03223411,0.009985658,0.03335491,0.01854668,0.042703256,0.015285905,0.013863714,0.018259136 -0.0175087,0.024107471,0.015511848,0.03606612,0.04308127,0.057521038,0.0672489,0.017136548,0.023082271,0.018029237,0.017170051,0.03007557,0.023931548,0.03831727,0.02473345,0.03831727,0.036348987,0.017338548,0.031151721,0.015941853,0.018348955,0.019839952,0.018894475,0.0121516315,0.16644265,0.023990046,0.012784643,0.04135001,0.018931413,0.033748895,0.0147726275,0.013139047,0.012985972 -0.011374115,0.021458177,0.012639273,0.019884368,0.034073096,0.020920198,0.021291187,0.017754741,0.037733898,0.014950992,0.014661813,0.07216797,0.019923242,0.028580561,0.030113481,0.052593373,0.055985354,0.019652708,0.01661401,0.03874207,0.025682075,0.045249857,0.06596687,0.016484719,0.052593373,0.02253194,0.01215507,0.030408999,0.026111996,0.032960337,0.027338427,0.022269435,0.05913232 +0.011400348,0.008775162,0.008843986,0.014321295,0.012677706,0.08820507,0.044946373,0.040066205,0.019908346,0.008184344,0.014077552,0.03491359,0.020098807,0.075348005,0.033000086,0.041619375,0.031996496,0.008308156,0.014333318,0.024208302,0.029419037,0.049255587,0.036585778,0.027604597,0.05521417,0.034725506,0.015523573,0.052534807,0.012420362,0.048949987,0.04967562,0.016328253,0.016530307 +0.012443908,0.008755383,0.012939616,0.012758654,0.012164551,0.0392054,0.02605592,0.025547082,0.024999686,0.010902902,0.011553777,0.05659787,0.019704089,0.029325426,0.03885284,0.025211142,0.03223767,0.010853769,0.016016373,0.023959927,0.01762386,0.28838542,0.014211388,0.012203965,0.06491157,0.017034778,0.0113316905,0.026981654,0.012987089,0.01789706,0.021515755,0.019766726,0.025063088 +0.01905886,0.015464511,0.014814094,0.01604256,0.025715468,0.038806655,0.051542424,0.019265728,0.03616295,0.019714328,0.03132796,0.026078215,0.05771773,0.025969015,0.039216194,0.0347988,0.042813707,0.016017856,0.028096773,0.035178926,0.029812263,0.0413246,0.026982497,0.011719628,0.06307021,0.0423485,0.016723165,0.029562214,0.02267167,0.01413746,0.04577323,0.034625072,0.027446749 +0.01243457,0.01243457,0.011818892,0.044152383,0.012939381,0.08657686,0.03272077,0.07462879,0.02063925,0.0156059675,0.016217737,0.03191114,0.09086477,0.054746,0.03436231,0.031505693,0.05321489,0.010677479,0.01619301,0.019355675,0.0146282725,0.0225271,0.012729448,0.013341161,0.069316395,0.03227055,0.009992678,0.033357985,0.018552922,0.042900607,0.015252949,0.013815998,0.01831384 +0.017431313,0.024062537,0.015443287,0.035962105,0.04309029,0.05766668,0.06726299,0.017111776,0.023123773,0.01796051,0.017127581,0.0300626,0.02393364,0.038289644,0.024756758,0.03822251,0.036356602,0.01729566,0.031027302,0.015982209,0.018346079,0.019839263,0.018921515,0.012098662,0.166915,0.024002396,0.012779513,0.041348573,0.01895388,0.033669606,0.0148399975,0.013130568,0.01298512 +0.011333878,0.02142407,0.01259456,0.019844584,0.034227207,0.020909905,0.02135618,0.01781424,0.037632555,0.015024115,0.014667127,0.07213027,0.01998162,0.028571296,0.03012072,0.052715294,0.05604668,0.019621471,0.016529996,0.038723007,0.025725903,0.045199998,0.065990776,0.016491702,0.05237854,0.02253048,0.012113549,0.030353254,0.026191704,0.032936145,0.027407028,0.022231326,0.059180837 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 891c35c6..99f876c0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.016557448,0.020405825,0.017625311,0.025519764,0.03680612,0.06548598,0.03477934,0.021892255,0.029666752,0.022543117,0.019700896,0.034173325,0.027245352,0.046527296,0.022107093,0.042529393,0.057565864,0.019357618,0.046165217,0.027687918,0.035638895,0.025644677,0.032544788,0.017625311,0.044396657,0.027566511,0.015253436,0.038048714,0.016557448,0.025694814,0.04571658,0.022499131,0.018471168 -0.012519716,0.008405341,0.010099248,0.021738015,0.018539116,0.04669845,0.04799298,0.030121356,0.03165953,0.0144665055,0.012816613,0.040493153,0.034098655,0.024898428,0.05459602,0.026919158,0.040335283,0.007896087,0.016138554,0.012967691,0.025155049,0.032252446,0.047619496,0.0095991995,0.2101071,0.025044747,0.012917135,0.04153446,0.0099039115,0.009017614,0.028981574,0.019657847,0.014809568 -0.009015803,0.0061482433,0.008469563,0.021126784,0.009229606,0.037883893,0.05087888,0.031684104,0.028091125,0.010216243,0.015396422,0.050680522,0.056981638,0.026749171,0.074900955,0.0725965,0.05147862,0.007532985,0.011897433,0.010136739,0.022011328,0.039779596,0.028429195,0.019273764,0.093946844,0.02702198,0.007894501,0.032245975,0.011531387,0.026202993,0.028933344,0.053738806,0.01789508 +0.016554631,0.020482207,0.017691284,0.025540352,0.036871806,0.06521957,0.034739483,0.021931322,0.029562298,0.022627497,0.019697545,0.034100845,0.027227417,0.046701454,0.022060204,0.042522155,0.05755607,0.019354325,0.0462476,0.027696729,0.03559805,0.025690442,0.032507494,0.01755361,0.04430249,0.027561821,0.015310531,0.037968013,0.016554631,0.025690442,0.045798164,0.022539282,0.018540308 +0.012518779,0.008404711,0.010098492,0.021736387,0.01857397,0.046512906,0.047989387,0.030192723,0.031626258,0.014409027,0.012815653,0.04049012,0.034029573,0.024860121,0.054591935,0.026916321,0.040332265,0.007895496,0.016200505,0.01296672,0.025196189,0.03225003,0.04780229,0.0095984815,0.21009137,0.025030646,0.012916167,0.041450314,0.009903169,0.0090169385,0.029021885,0.019694805,0.014866418 +0.00902418,0.0061539556,0.008477432,0.02116707,0.009238182,0.037993215,0.050727595,0.031682577,0.028151562,0.010265757,0.015410727,0.050727595,0.057034567,0.026796907,0.07497053,0.072663926,0.05152644,0.007539984,0.0119084865,0.010146158,0.022053301,0.039661318,0.028497316,0.019291667,0.09330233,0.027031815,0.007901835,0.03230746,0.011542101,0.026227333,0.028946083,0.05378872,0.017841876 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 44487bad..3381365f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012167323,0.016182173,0.019519432,0.031962857,0.019672524,0.042634357,0.030798472,0.034057528,0.04888053,0.015380938,0.010864196,0.07139911,0.027352633,0.018229676,0.069473244,0.016793964,0.05759534,0.015024639,0.014849597,0.022335472,0.023510464,0.06300949,0.016533598,0.019904418,0.051830195,0.050432164,0.013415492,0.05670241,0.024244925,0.03049917,0.019481344,0.02006053,0.015201745 -0.0109462105,0.008198333,0.012648323,0.023094064,0.010776506,0.070822805,0.049057525,0.03391485,0.023337783,0.018674767,0.014758534,0.046446733,0.017254474,0.044146996,0.03610217,0.023224108,0.042788733,0.0104449475,0.0142208915,0.019532802,0.0133592915,0.18805672,0.035611942,0.007946097,0.052837033,0.015406512,0.020093884,0.019705232,0.015497048,0.023872638,0.02404923,0.03451628,0.018656539 -0.01147871,0.0120766675,0.00944213,0.024731357,0.017097488,0.060144126,0.1535834,0.041579332,0.018271415,0.013791987,0.019640686,0.02893507,0.023210282,0.035703883,0.024359824,0.055624224,0.022061061,0.0103297215,0.013631306,0.018271415,0.019640686,0.040378857,0.03815534,0.013057991,0.04629459,0.02357579,0.027908226,0.02653935,0.01587448,0.012411445,0.06579788,0.036837246,0.019564113 +0.012163671,0.016177313,0.019475494,0.03201573,0.019628244,0.042621553,0.03087956,0.0340473,0.048865855,0.015436501,0.010860935,0.07137767,0.027397878,0.018224202,0.06918161,0.016821744,0.05757805,0.015020127,0.0148451375,0.02235058,0.02353786,0.062990576,0.016560948,0.019937342,0.05201743,0.050417025,0.013411464,0.056685384,0.024237646,0.030490013,0.01951357,0.020093713,0.015137932 +0.010944551,0.00819709,0.012646405,0.023028629,0.010774871,0.070812054,0.049050074,0.0339097,0.023305774,0.018763326,0.014756296,0.046439677,0.017285585,0.04431305,0.03609669,0.0231781,0.042782236,0.010443363,0.0142187355,0.019548915,0.013357266,0.18802817,0.035606537,0.007944892,0.05282901,0.015404175,0.020090831,0.019663798,0.015524992,0.023804635,0.024000125,0.03457851,0.018671932 +0.011467976,0.012065373,0.009433299,0.024672067,0.0170815,0.060087897,0.15464325,0.041540455,0.018254327,0.013779089,0.019622322,0.028830487,0.023233917,0.035531435,0.024444234,0.05557222,0.022083525,0.010320061,0.013618558,0.018254327,0.019622322,0.040341105,0.03819419,0.012994919,0.046251304,0.023599796,0.027953701,0.026456343,0.015859634,0.012399838,0.065480076,0.036802802,0.019507684 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index bb8ba9c4..b0c6cbe3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.015025156,0.019444002,0.016373487,0.078113556,0.1282854,0.08043589,0.11321145,0.07098442,0.1760316,0.1118925,0.11634979,0.035484683,0.038368087 -0.012999591,0.01708764,0.012599636,0.06817954,0.07748421,0.039885454,0.0934638,0.2801235,0.10305166,0.07075717,0.101851076,0.03280888,0.089707874 -0.025136897,0.034358066,0.031900384,0.042926658,0.059018586,0.05193135,0.06720416,0.11265576,0.05965599,0.23942567,0.0725941,0.02938801,0.1738044 +0.015029022,0.019297646,0.0163777,0.07805737,0.12882058,0.08037804,0.113240555,0.07114149,0.17607687,0.111921266,0.11592598,0.035355426,0.03837795 +0.0130002005,0.017088441,0.012600226,0.06811618,0.077639334,0.03980949,0.0932858,0.28013662,0.10305648,0.07076048,0.101855844,0.032938834,0.089712076 +0.0252677,0.03453685,0.031941365,0.04289794,0.05886402,0.051947314,0.0674056,0.11280049,0.05979099,0.23786764,0.072545536,0.029425764,0.17470881 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 8a8365f8..4f7e8351 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.034291983,0.032466996,0.029909998,0.16106153,0.04377453,0.09321527,0.11443302,0.09523961,0.023753362,0.10792062,0.08903354,0.067189634,0.10771004 -0.020611567,0.017356684,0.01605231,0.09023478,0.0966189,0.037395693,0.10224941,0.094196565,0.03358682,0.112299,0.067714855,0.04229219,0.2693913 -0.03479445,0.054101624,0.031929184,0.06602827,0.057086926,0.08603304,0.10489644,0.034523677,0.022729797,0.13338077,0.05976819,0.033461496,0.2812662 +0.034147155,0.032329876,0.029900245,0.1616392,0.043674875,0.09300306,0.11439571,0.095208555,0.023745617,0.10788543,0.08917852,0.06721694,0.10767492 +0.020598466,0.017345646,0.016042102,0.09035372,0.096557476,0.037299003,0.10258434,0.094136685,0.03356547,0.11222761,0.06780411,0.042265307,0.26922008 +0.034789838,0.054094452,0.03192495,0.06606789,0.05707936,0.08610568,0.10488253,0.034519102,0.022726784,0.13336308,0.059760265,0.033457063,0.281229 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 27982a02..8aaf1681 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.017545573,0.016227003,0.028927766,0.17582504,0.035030115,0.05548813,0.057663318,0.06000796,0.07401406,0.27232316,0.06309156,0.09522173,0.0486345 -0.014570021,0.015269251,0.02170198,0.118239954,0.02797496,0.09802437,0.12247076,0.116862416,0.06581848,0.12247076,0.1319062,0.06262835,0.08206254 -0.012689575,0.010939098,0.021585695,0.15763971,0.014379173,0.062643535,0.1632803,0.1765481,0.10177984,0.09413096,0.057163052,0.084543414,0.042677484 +0.017511223,0.016195234,0.028871126,0.17548077,0.035098363,0.055460665,0.057403073,0.059726194,0.073725,0.2739216,0.06293729,0.095035285,0.048634168 +0.014574757,0.015274214,0.021879302,0.11781726,0.028093578,0.09824792,0.12251057,0.1169004,0.0659042,0.12251057,0.13143465,0.06260283,0.08224971 +0.012698688,0.010946953,0.021601195,0.15775292,0.014389498,0.06268852,0.16339757,0.17667489,0.10145584,0.09401476,0.057232037,0.08443905,0.04270813 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 556d2b62..55d4c245 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.019172488,0.01932286,0.023036273,0.20292799,0.03028061,0.07068008,0.0837709,0.042287517,0.07884933,0.21601573,0.054938298,0.11836687,0.040351033 -0.013898927,0.011343973,0.015028323,0.16800593,0.04053331,0.06949026,0.26021266,0.13033302,0.052788023,0.07113817,0.049856827,0.079515524,0.037855063 -0.033207193,0.02873843,0.053064942,0.20104882,0.02988324,0.13392739,0.11727074,0.17263922,0.043395016,0.05972081,0.047289208,0.053953256,0.025861789 -0.01586071,0.017016059,0.019585362,0.06508605,0.037604593,0.13971801,0.16591924,0.055089667,0.04819104,0.16919172,0.10221989,0.07776479,0.086752884 -0.011261298,0.013583719,0.013583719,0.044976395,0.14044411,0.06680432,0.15245065,0.07024145,0.10684425,0.12988958,0.116887964,0.023654649,0.10937799 -0.018765636,0.029638039,0.04139015,0.19101273,0.034113172,0.11185279,0.07816212,0.1505144,0.065538496,0.0822338,0.07793347,0.09948393,0.01936132 +0.019247921,0.019242048,0.023122676,0.2023879,0.030257503,0.070795946,0.083553046,0.04229355,0.07910523,0.21612567,0.054946132,0.118629664,0.040292792 +0.013859086,0.011220005,0.014865906,0.16772893,0.04046441,0.06960686,0.26081634,0.1302294,0.052909687,0.071038246,0.049805023,0.07961735,0.03783882 +0.03323299,0.028751979,0.053304255,0.20066538,0.029766515,0.13464227,0.11751235,0.17178494,0.043314233,0.059854817,0.047320165,0.053955637,0.025894517 +0.01579723,0.016942782,0.019503407,0.06499989,0.03757122,0.13979305,0.16676494,0.055090666,0.048058998,0.16925676,0.101997375,0.077775694,0.086447895 +0.011209881,0.013517572,0.013519222,0.04491335,0.14133994,0.06666387,0.15254389,0.070202954,0.10669937,0.12986594,0.11656749,0.023598434,0.10935808 +0.01869931,0.029639825,0.041397702,0.19057001,0.0340989,0.11240363,0.078290984,0.15029393,0.0654575,0.08262617,0.078181155,0.09896303,0.01937786 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index bc78ed18..f0ffa839 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.017322686,0.016020864,0.0268299,0.08280347,0.045728423,0.046267454,0.111206844,0.21773246,0.03754178,0.22116125,0.05969938,0.06348763,0.05419789 -0.02507379,0.024976037,0.03481151,0.056836713,0.074419186,0.054873265,0.049670782,0.18239927,0.070286855,0.1535956,0.16607644,0.048425484,0.058555067 -0.008939866,0.014064383,0.009591076,0.05823833,0.09724553,0.03360716,0.19875696,0.2737993,0.077986516,0.10722134,0.04580116,0.039870534,0.03487773 +0.0173287,0.016026428,0.026839208,0.0828322,0.04565503,0.046283506,0.11124542,0.21780796,0.037408393,0.22123794,0.0596618,0.06350966,0.05416377 +0.025201809,0.025005685,0.034852836,0.05695978,0.0744348,0.05504581,0.049729746,0.18261582,0.07040466,0.15317841,0.16562536,0.048577756,0.058367517 +0.008935493,0.014057503,0.0095863845,0.058039587,0.09719801,0.03352519,0.19865984,0.2736655,0.07825349,0.107588395,0.04577878,0.03985105,0.034860685 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 466b8da1..35299c71 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.013754733,0.015586155,0.022677721,0.12847804,0.03051621,0.06587699,0.08986748,0.15864919,0.103033565,0.09547677,0.12501256,0.049436044,0.10163449 -0.013943452,0.025645932,0.013620452,0.05140305,0.07930422,0.041708842,0.07060354,0.10202771,0.17053087,0.10506101,0.07977025,0.044659745,0.2017209 -0.018764257,0.02466515,0.015314939,0.057096727,0.06734212,0.033450905,0.075309195,0.19099866,0.17664489,0.12380064,0.10006119,0.09039775,0.026153553 -0.014145564,0.020581674,0.029252458,0.070930876,0.034199588,0.10051818,0.2977565,0.12706688,0.046110548,0.08801666,0.046020575,0.077826284,0.047574252 -0.026296157,0.044383164,0.062163893,0.15014632,0.03826068,0.13198708,0.09405097,0.09818031,0.03994053,0.08800825,0.07123646,0.09924066,0.05610558 -0.034638647,0.031049881,0.038869288,0.061015755,0.14413515,0.06952924,0.05955869,0.10260714,0.18291703,0.14987685,0.054070164,0.04865788,0.023074314 +0.013696977,0.015395226,0.022755446,0.12909949,0.0304831,0.06601206,0.0899556,0.15893084,0.10253051,0.095681295,0.12471578,0.049288597,0.10145512 +0.013873818,0.025609914,0.01354995,0.05140924,0.07923226,0.041689683,0.07039259,0.102127224,0.17122677,0.10499674,0.0796728,0.044621523,0.2015975 +0.018696813,0.024568997,0.015257101,0.05712812,0.06721138,0.033482578,0.07528165,0.19145387,0.17692275,0.123415925,0.09988427,0.09062429,0.026072279 +0.0140934745,0.020499628,0.02925345,0.07079055,0.03404695,0.10040815,0.29820317,0.12686196,0.046179004,0.08807876,0.046114925,0.07786219,0.04760782 +0.026012044,0.044062022,0.06208434,0.15045841,0.038114253,0.13218476,0.09425221,0.09837236,0.040025376,0.08812661,0.07108019,0.09915601,0.05607141 +0.034625676,0.03115023,0.03877182,0.061037596,0.14396825,0.069717765,0.05949643,0.10258124,0.18308024,0.14989388,0.05404332,0.048556603,0.023076938 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index a0e4ca20..2446af67 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.034407627,0.052876856,0.04070077,0.09763607,0.057229374,0.09744556,0.06497616,0.10934721,0.109133855,0.04522797,0.11106918,0.13876884,0.041180536 -0.0108207315,0.016371245,0.015992004,0.12677342,0.058041103,0.041157305,0.12335392,0.1565443,0.07547841,0.14253521,0.076667026,0.06862328,0.08764204 -0.010323195,0.013255244,0.013783273,0.09987551,0.08344912,0.057697766,0.24241307,0.14760642,0.05647656,0.16022526,0.02466751,0.033980932,0.056246158 +0.034523316,0.053054646,0.040678408,0.0977732,0.05697494,0.09720199,0.06494046,0.109287135,0.109287135,0.045203123,0.11122518,0.13869257,0.041157912 +0.010823801,0.016375888,0.015996542,0.12631503,0.058085933,0.04108866,0.12338894,0.15658872,0.07549984,0.14257565,0.0769138,0.068508826,0.087838314 +0.010226722,0.013234361,0.013869491,0.09971816,0.08315507,0.05762093,0.24392943,0.14737387,0.056230776,0.15997283,0.024628649,0.033927396,0.056112282 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 3724cf36..99292a49 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.027727641,0.038949795,0.032799017,0.049429864,0.06950336,0.087946326,0.038047526,0.030811826,0.03009807,0.18509464,0.07083959,0.02142626,0.31732604 -0.020138782,0.02752645,0.021105262,0.05810302,0.11679962,0.026471928,0.03851643,0.2511587,0.10718136,0.10187445,0.08782126,0.035069607,0.10823318 -0.023077397,0.02427956,0.028720284,0.102021314,0.054821804,0.052516073,0.06696441,0.23307347,0.076410435,0.08334873,0.11628466,0.028385684,0.110096104 +0.027722225,0.038942188,0.03279261,0.04932378,0.06952372,0.08810105,0.038040094,0.030926377,0.03009219,0.18505847,0.07079118,0.021422075,0.31726402 +0.020294143,0.02752294,0.02110257,0.05809561,0.11678473,0.026572147,0.038662247,0.25112665,0.10716769,0.101861455,0.08781006,0.035202377,0.10779747 +0.023249542,0.02427032,0.028709352,0.10198248,0.054908074,0.052547373,0.06692258,0.23298474,0.07608357,0.08356145,0.1162404,0.028485935,0.110054195 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index 801421f5..a90a0f9c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.011098017,0.012674333,0.016274165,0.025602855,0.10047324,0.047448613,0.043594476,0.029584043,0.11252469,0.14505006,0.39121857,0.01773458,0.046722345 -0.013920534,0.0164024,0.022595258,0.06077886,0.0823278,0.060823392,0.09757592,0.069157906,0.16761106,0.104888335,0.100870125,0.14114267,0.061905783 -0.019095892,0.028002275,0.021808194,0.20934938,0.12697682,0.17906602,0.07730733,0.07637869,0.052111182,0.04527498,0.026305703,0.106716566,0.031607028 +0.011096026,0.012672059,0.016271247,0.02559827,0.100848414,0.047379345,0.043607958,0.02952103,0.112504534,0.14502408,0.3911485,0.017731398,0.046597134 +0.013814418,0.016405025,0.022598883,0.060714453,0.082501985,0.0610787,0.097782366,0.06913524,0.16763797,0.10449618,0.10068946,0.14116533,0.061979994 +0.019121636,0.028040025,0.021837592,0.20881435,0.12739657,0.17860837,0.07736431,0.07641633,0.052181434,0.045159265,0.026341166,0.10706935,0.031649638 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 64bbe388..c5539a6d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.028366636,0.033554886,0.04283361,0.06522581,0.20635305,0.08057263,0.12913246,0.036709156,0.08909872,0.09540245,0.027493887,0.064884335,0.100372225 -0.015950827,0.027133264,0.032474265,0.11224481,0.24183615,0.102800645,0.06656782,0.08485103,0.0548107,0.08240122,0.07644393,0.067781396,0.034703974 -0.0346278,0.030558925,0.03476333,0.13378303,0.2403646,0.1126566,0.09158917,0.03893308,0.0698818,0.043517902,0.041769095,0.05421182,0.07334285 +0.028286915,0.033591546,0.04288041,0.0652413,0.20657852,0.08050327,0.12876955,0.036749262,0.08919606,0.09513434,0.02763165,0.06495523,0.10048189 +0.015949441,0.027130906,0.03247144,0.11179749,0.24181513,0.10279171,0.06656204,0.08480224,0.05502044,0.082635805,0.07668217,0.0677755,0.034565672 +0.034620997,0.030552922,0.034756497,0.13375674,0.24031734,0.11263447,0.0917502,0.03892543,0.06997049,0.043424457,0.04176089,0.05420117,0.07332844 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index c6da86b1..263dcbe9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.015611125,0.028825635,0.024946507,0.05949394,0.25792566,0.17865989,0.061143175,0.05961025,0.08167672,0.07912997,0.05406415,0.05513047,0.043782484 -0.013057961,0.019449774,0.017848115,0.16736537,0.14540955,0.07191268,0.05906717,0.032956194,0.17133433,0.038080808,0.052356172,0.16933823,0.041823585 -0.015269818,0.018708972,0.024979755,0.21079336,0.16036314,0.06840117,0.06590937,0.03468096,0.12343589,0.05596387,0.06995491,0.1263631,0.025175674 +0.01560967,0.028822947,0.024944182,0.059488393,0.2579016,0.17794675,0.061197206,0.059604697,0.08186873,0.07943712,0.054059114,0.055341084,0.0437784 +0.013061907,0.019455653,0.01785351,0.16741595,0.14602278,0.07193442,0.058912177,0.032966156,0.17071792,0.03809232,0.052423164,0.1693894,0.041754596 +0.015262611,0.018700138,0.024967961,0.2106938,0.1602874,0.068318814,0.065813944,0.034664582,0.123377606,0.056046806,0.06990481,0.12679777,0.025163786 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index b138c563..682787e3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.01688767,0.02476413,0.02698642,0.07116921,0.2106128,0.1646674,0.04896163,0.025952587,0.05929015,0.12724508,0.16085288,0.03118275,0.031427316 -0.014174571,0.020224977,0.022126192,0.0230076,0.35156232,0.052318905,0.053994514,0.03936724,0.0823695,0.12882835,0.09388537,0.09206946,0.026071027 -0.051626947,0.03439096,0.048215687,0.060181446,0.07837651,0.17194399,0.10227216,0.056314826,0.054316334,0.15594643,0.024674308,0.116798475,0.04494196 -0.019099979,0.023038972,0.014644466,0.044235647,0.47743943,0.06330279,0.023493377,0.01940076,0.11745949,0.038357608,0.09147754,0.02800827,0.040041707 -0.010872557,0.00997722,0.011483708,0.037251316,0.3685879,0.028645372,0.035406873,0.025929531,0.12250072,0.057527177,0.22182012,0.023840794,0.046156727 -0.03117595,0.026252784,0.023167998,0.11226891,0.13280286,0.08968357,0.100637205,0.042946685,0.09678186,0.12972648,0.068729214,0.096971065,0.048855443 +0.016827505,0.024672894,0.026888637,0.071175836,0.2112891,0.1647487,0.048896004,0.025926603,0.05938984,0.12714048,0.16040213,0.031259973,0.031382322 +0.013997956,0.020205943,0.022106718,0.022882363,0.35228354,0.052252322,0.05392724,0.039436106,0.08225181,0.12857363,0.0942475,0.09183136,0.026003601 +0.05171333,0.03437709,0.04829341,0.060120467,0.07857956,0.1719225,0.10227148,0.05633357,0.054162037,0.15633135,0.024398591,0.116559125,0.044937547 +0.019069683,0.023180008,0.014620337,0.04426263,0.4761877,0.06358374,0.023508424,0.019419778,0.11789036,0.038552396,0.09140214,0.028023642,0.040299125 +0.01085677,0.009961516,0.011466335,0.03731547,0.36767113,0.02872022,0.035538275,0.026009187,0.1229666,0.05771425,0.22166713,0.023857085,0.046255976 +0.031226596,0.02629222,0.023113754,0.112368956,0.13236259,0.08975561,0.1010255,0.043042876,0.09706933,0.12928063,0.06875058,0.09676764,0.048943765 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 8748c33c..b2377fc1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.016345652,0.013981177,0.014882885,0.11213945,0.46299294,0.050342005,0.03998455,0.06528273,0.05401568,0.042521786,0.016603058,0.08975528,0.021152845 -0.021561448,0.02073544,0.017325114,0.17226464,0.13950415,0.09796191,0.052949805,0.16631368,0.06838009,0.038587876,0.062359657,0.103468396,0.038587876 -0.020325927,0.01738569,0.014526288,0.09583984,0.1389025,0.047259193,0.0788357,0.06192797,0.20210195,0.15195979,0.05210722,0.065693036,0.05313494 +0.016353136,0.013987578,0.015006481,0.11175343,0.4632051,0.05027907,0.040120237,0.0651852,0.05404043,0.042499743,0.01661066,0.0897964,0.021162536 +0.021549432,0.020723887,0.017451258,0.17284249,0.13888285,0.09771629,0.052868646,0.16687156,0.06822529,0.038566373,0.06232491,0.10341074,0.038566373 +0.020322079,0.01738239,0.014523531,0.0958217,0.1388762,0.04725025,0.07889779,0.061897356,0.20206368,0.15193103,0.052148256,0.06576083,0.053124882 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 0bb283aa..5af54919 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.011731772,0.022969693,0.018313037,0.12035259,0.14745906,0.07250908,0.05957885,0.068290815,0.15881966,0.04703879,0.07210307,0.15333316,0.0475004 -0.01647793,0.022347387,0.019721499,0.07884245,0.21705416,0.08566629,0.034075696,0.04938655,0.16707255,0.04240789,0.09426995,0.057626065,0.115051664 -0.014698837,0.023034362,0.022065567,0.03471401,0.057541963,0.07060523,0.0458093,0.026512388,0.21431695,0.279522,0.07709165,0.06710933,0.06697838 -0.019589733,0.019976106,0.014787107,0.039495137,0.57698613,0.047154225,0.023537608,0.0401759,0.043186717,0.049152493,0.045644898,0.058029015,0.022284957 -0.04979851,0.031715743,0.031346247,0.074355975,0.15856877,0.17689624,0.089297146,0.055445857,0.042346075,0.1642426,0.021044873,0.059688386,0.04525359 -0.027977334,0.027116563,0.0300153,0.06489063,0.08352489,0.118712805,0.09957648,0.06747558,0.053875085,0.14319499,0.2226528,0.02989828,0.031089291 +0.011690648,0.022708276,0.018247731,0.12031194,0.14736429,0.072557904,0.059560545,0.06837643,0.15909584,0.047002815,0.072019346,0.15372172,0.047342557 +0.016566617,0.022464922,0.019672144,0.07886144,0.21629961,0.08572125,0.0340683,0.04920004,0.16754173,0.04258672,0.09411154,0.057664577,0.115241036 +0.0146416435,0.02312187,0.021978369,0.03468886,0.057679538,0.07068581,0.045911815,0.026580743,0.21460655,0.27920017,0.077151075,0.066860445,0.0668931 +0.019577837,0.020039665,0.0147772245,0.03963531,0.5760377,0.047202054,0.023575775,0.040274374,0.043345284,0.049281806,0.045759395,0.058174577,0.02231905 +0.04962753,0.031602994,0.031358972,0.07433624,0.15786043,0.17700651,0.08936339,0.05545165,0.042340003,0.16477123,0.02115324,0.059756365,0.045371544 +0.028013574,0.027042532,0.030052343,0.06491127,0.083546355,0.118885174,0.099732846,0.06744788,0.054070134,0.14321429,0.2222415,0.029767558,0.03107451 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index f8f40bba..2ebebefb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.0342464,0.038354147,0.0311817,0.06441956,0.055262636,0.10589919,0.09309136,0.071602516,0.12141403,0.13439308,0.04130904,0.15468548,0.054140862 -0.0143472245,0.022048492,0.020232834,0.09900767,0.2333686,0.08585151,0.05457054,0.04249958,0.13348985,0.1477598,0.06448847,0.047783565,0.034551915 -0.015537152,0.014036647,0.01318621,0.09705379,0.33219895,0.034673247,0.06452561,0.04620453,0.1406619,0.06882144,0.033279873,0.10210958,0.037711035 +0.034384813,0.038509164,0.031307727,0.06452221,0.055054195,0.106119744,0.09328523,0.07180421,0.12095608,0.13388617,0.041476,0.15470518,0.05398935 +0.014236114,0.022049326,0.0202336,0.099011414,0.2333774,0.08577096,0.054572605,0.04250119,0.1334949,0.14776537,0.06464855,0.047785368,0.034553222 +0.015531263,0.014031327,0.013181212,0.09739672,0.33207306,0.034660105,0.06450115,0.0460519,0.14060858,0.06892985,0.03326726,0.10207088,0.037696745 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 8f216025..295be473 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.03765263,0.032458596,0.023470555,0.16874741,0.20756285,0.13245134,0.058517206,0.05027286,0.09747293,0.02659562,0.028421698,0.04208667,0.09428967 -0.01482675,0.025518453,0.02444518,0.04046103,0.08994222,0.11892158,0.036410987,0.1750695,0.14627604,0.042735364,0.020108057,0.18062681,0.08465808 -0.010264666,0.017460784,0.026728721,0.06693403,0.021815348,0.07467031,0.06196434,0.12652327,0.14004847,0.03016953,0.022773158,0.36467987,0.03596743 +0.037636146,0.032444384,0.023552097,0.16867347,0.20747192,0.13239335,0.05846303,0.050250847,0.09762073,0.026583975,0.028409252,0.04206824,0.09443264 +0.014826758,0.025618346,0.024445197,0.04046106,0.089766786,0.11938711,0.03626906,0.17506963,0.14627615,0.04265201,0.02010807,0.18062693,0.08449295 +0.010266415,0.017463759,0.026733276,0.06694543,0.021734,0.0745373,0.06203545,0.12654482,0.14007233,0.03017467,0.022777036,0.36474198,0.035973556 From b4c8d031c5d600722773a4f35862fb1d6c7323b0 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 8 Jun 2026 13:41:35 +0200 Subject: [PATCH 14/81] Add [mask] input column --- src/sequifier/preprocess.py | 135 ++++++++++++++++++++++++++++++---- tests/unit/test_preprocess.py | 96 ++++++++++++++++++++++++ 2 files changed, 216 insertions(+), 15 deletions(-) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 5e4f3ed7..519ce497 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -23,6 +23,12 @@ write_data, ) +RESERVED_MASK_COLUMN = "[mask]" +INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") +RESERVED_INPUT_COLUMNS = (*INPUT_METADATA_COLUMNS, RESERVED_MASK_COLUMN) +CATEGORICAL_MASK_ID = 2 +REAL_MASK_VALUE = 0.0 + @beartype def preprocess(args: Any, args_config: dict[str, Any]) -> None: @@ -131,6 +137,10 @@ def __init__( if selected_columns is not None: selected_columns = ["sequenceId", "itemPosition"] + selected_columns + if RESERVED_MASK_COLUMN in selected_columns: + raise ValueError( + f"'{RESERVED_MASK_COLUMN}' is not allowed to be in 'selected_columns'" + ) self._setup_split_paths(write_format, len(split_ratios)) @@ -161,9 +171,7 @@ def __init__( data = _load_and_preprocess_data( data_path, read_format, selected_columns, max_rows ) - data_columns = [ - col for col in data.columns if col not in ["sequenceId", "itemPosition"] - ] + data_columns = _get_data_columns(data) if self.metadata_config_path: metadata_path = os.path.join( self.project_root, self.metadata_config_path @@ -206,6 +214,7 @@ def __init__( n_classes=n_classes, col_types=col_types, ) + data = _apply_reserved_mask_column(data, data_columns, col_types) self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) @@ -269,9 +278,7 @@ def __init__( # Reconstruct data_columns from the provided col_types data_columns = [ - col - for col in col_types.keys() - if col not in ["sequenceId", "itemPosition"] + col for col in col_types.keys() if col not in RESERVED_INPUT_COLUMNS ] # We still need to find the files to process @@ -451,11 +458,7 @@ def _get_column_metadata_across_files( ) # Get columns for the current file (excluding metadata cols) - current_file_cols = [ - col - for col in data.columns - if col not in ["sequenceId", "itemPosition"] - ] + current_file_cols = _get_data_columns(data) if col_types is None: data_columns = current_file_cols @@ -880,6 +883,88 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No json.dump(metadata, f, indent=4) +@beartype +def _get_data_columns(data: pl.DataFrame) -> list[str]: + return [col for col in data.columns if col not in RESERVED_INPUT_COLUMNS] + + +@beartype +def _deduplicate_columns(columns: list[str]) -> list[str]: + return list(dict.fromkeys(columns)) + + +@beartype +def _selected_columns_with_optional_mask( + data_path: str, read_format: str, selected_columns: Optional[list[str]] +) -> Optional[list[str]]: + if selected_columns is None or read_format != "parquet": + return selected_columns + + schema_columns = pq.read_schema(data_path).names + if RESERVED_MASK_COLUMN in schema_columns: + return selected_columns + [RESERVED_MASK_COLUMN] + return selected_columns + + +@beartype +def _mask_column_expr(mask_dtype: Any) -> pl.Expr: + mask_col = pl.col(RESERVED_MASK_COLUMN) + + if isinstance(mask_dtype, pl.Boolean): + return mask_col + + if isinstance( + mask_dtype, + ( + pl.Int8, + pl.Int16, + pl.Int32, + pl.Int64, + pl.UInt8, + pl.UInt16, + pl.UInt32, + pl.UInt64, + pl.Float32, + pl.Float64, + ), + ): + return mask_col == 1 + + if isinstance(mask_dtype, (pl.String, pl.Utf8)): + return mask_col.str.to_lowercase().is_in(["1", "true"]) + + raise ValueError( + f"Column {RESERVED_MASK_COLUMN} must be boolean, numeric, or string, got {mask_dtype}" + ) + + +@beartype +def _apply_reserved_mask_column( + data: pl.DataFrame, data_columns: list[str], col_types: dict[str, str] +) -> pl.DataFrame: + if RESERVED_MASK_COLUMN not in data.columns: + return data + + mask_expr = _mask_column_expr(data.schema[RESERVED_MASK_COLUMN]) + updates = [] + for col in data_columns: + mask_value = ( + CATEGORICAL_MASK_ID if col_types[col] == "Int64" else REAL_MASK_VALUE + ) + updates.append( + pl.when(mask_expr) + .then(pl.lit(mask_value)) + .otherwise(pl.col(col)) + .cast(data.schema[col]) + .alias(col) + ) + + if updates: + data = data.with_columns(updates) + + return data.drop(RESERVED_MASK_COLUMN) + + @beartype def _apply_column_statistics( data: pl.DataFrame, @@ -1042,6 +1127,10 @@ def _get_column_statistics( ValueError: If a column has an unsupported data type (neither string, integer, nor float). """ + if RESERVED_MASK_COLUMN in data.columns: + mask_expr = _mask_column_expr(data.schema[RESERVED_MASK_COLUMN]) + data = data.filter(~mask_expr) + for data_col in data_columns: dtype = data.schema[data_col] if isinstance( @@ -1117,16 +1206,22 @@ def _load_and_preprocess_data( prepared data. """ logger.info(f"Reading data from '{data_path}'...") - data = read_data(data_path, read_format, columns=selected_columns) + columns_to_read = _selected_columns_with_optional_mask( + data_path, read_format, selected_columns + ) + data = read_data(data_path, read_format, columns=columns_to_read) if data.null_count().sum().sum_horizontal().item() != 0: raise ValueError(f"NaN or null values not accepted: {data.null_count()}") if selected_columns: selected_columns_filtered = [ - col for col in selected_columns if col not in ["sequenceId", "itemPosition"] + col for col in selected_columns if col not in INPUT_METADATA_COLUMNS ] - data = data.select(["sequenceId", "itemPosition"] + selected_columns_filtered) + columns_to_select = list(INPUT_METADATA_COLUMNS) + selected_columns_filtered + if RESERVED_MASK_COLUMN in data.columns: + columns_to_select.append(RESERVED_MASK_COLUMN) + data = data.select(_deduplicate_columns(columns_to_select)) if max_rows: data = data.slice(0, int(max_rows)) @@ -1287,6 +1382,7 @@ def _process_batches_multiple_files_inner( n_classes, col_types, ) + data = _apply_reserved_mask_column(data, data_columns, col_types) data_name_root_inner = f"{data_name_root}-{process_id}-{file_index_str}" @@ -1549,8 +1645,17 @@ def combine_maps( Returns: A new, combined, and re-indexed ID map. """ - combined_keys = sorted(list(set(list(map1.keys())).union(list(set(map2.keys()))))) + keys1 = {k for k in map1.keys() if k not in ["[unknown]", "[other]", "[mask]"]} + keys2 = {k for k in map2.keys() if k not in ["[unknown]", "[other]", "[mask]"]} + + combined_keys = sorted(list(keys1.union(keys2))) id_map = {id_: i + 3 for i, id_ in enumerate(combined_keys)} + + # Re-apply special mapping rules if these are string keys + if combined_keys and isinstance(combined_keys[0], str): + id_map["[unknown]"] = 0 + id_map["[other]"] = 1 + return id_map diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 82b56c35..56f6595b 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -1,10 +1,16 @@ +import json + import numpy as np import polars as pl import pytest import torch from sequifier.preprocess import ( + RESERVED_MASK_COLUMN, + Preprocessor, + _apply_reserved_mask_column, _get_column_statistics, + _get_data_columns, create_id_map, extract_sequences, extract_subsequences, @@ -133,6 +139,96 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): ) +def test_reserved_mask_column_is_not_a_data_column(): + data = pl.DataFrame( + { + "sequenceId": [1], + "itemPosition": [0], + "itemId": [101], + RESERVED_MASK_COLUMN: [1], + } + ) + + assert _get_data_columns(data) == ["itemId"] + + +def test_apply_reserved_mask_column_replaces_values_and_drops_column(): + data = pl.DataFrame( + { + "cat_col": [3, 4, 5, 6], + "num_col": [-1.0, 2.5, 3.5, 4.5], + RESERVED_MASK_COLUMN: ["0", "1", "0", "1"], + } + ) + + masked = _apply_reserved_mask_column( + data, + ["cat_col", "num_col"], + {"cat_col": "Int64", "num_col": "Float64"}, + ) + + assert RESERVED_MASK_COLUMN not in masked.columns + assert masked["cat_col"].to_list() == [3, 2, 5, 2] + assert masked["num_col"].to_list() == [-1.0, 0.0, 3.5, 0.0] + + +def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): + project_root = tmp_path / "project" + project_root.mkdir() + data_path = tmp_path / "masked-input.csv" + pl.DataFrame( + { + "sequenceId": [0, 0, 0], + "itemPosition": [0, 1, 2], + "itemId": ["a", "b", "c"], + "itemValue": [10.0, 100.0, 70.0], + RESERVED_MASK_COLUMN: [0, 1, 0], + } + ).write_csv(data_path) + + Preprocessor( + project_root=str(project_root), + continue_preprocessing=False, + data_path=str(data_path), + read_format="csv", + write_format="parquet", + merge_output=True, + selected_columns=["itemId", "itemValue"], + split_ratios=[1.0], + seq_length=2, + stride_by_split=[1], + max_rows=None, + seed=1010, + n_cores=1, + batches_per_file=1024, + process_by_file=True, + subsequence_start_mode="distribute", + use_precomputed_maps=None, + metadata_config_path=None, + ) + + output = pl.read_parquet(project_root / "data" / "masked-input-split0.parquet") + metadata_path = project_root / "configs" / "metadata_configs" / "masked-input.json" + + item_sequence = ( + output.filter(pl.col("inputCol") == "itemId").select(["2", "1", "0"]).row(0) + ) + value_sequence = ( + output.filter(pl.col("inputCol") == "itemValue").select(["2", "1", "0"]).row(0) + ) + + assert RESERVED_MASK_COLUMN not in output.columns + assert item_sequence == (3.0, 2.0, 4.0) + assert value_sequence[1] == 0.0 + assert value_sequence[0] != 0.0 + assert value_sequence[2] != 0.0 + + metadata = json.loads(metadata_path.read_text()) + assert RESERVED_MASK_COLUMN not in metadata["column_types"] + assert RESERVED_MASK_COLUMN not in metadata["id_maps"] + assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] + + @pytest.mark.parametrize("mode", ["distribute", "exact"]) def test_extract_subsequences_modes(mode): """Tests logic for 'distribute' vs 'exact' modes.""" From 3753839cd74b99aa8fe5bbddb20dd9b1580ecbef Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 8 Jun 2026 14:04:36 +0200 Subject: [PATCH 15/81] add reserved_mask_column --- documentation/configs/preprocess.md | 1 + documentation/consolidated-docs.md | 1 + src/sequifier/config/preprocess_config.py | 19 ++- src/sequifier/make.py | 1 + src/sequifier/preprocess.py | 128 ++++++++++++++---- ...ss-test-categorical-precomputed-stats.yaml | 1 + tests/unit/test_preprocess.py | 115 +++++++++++++++- 7 files changed, 233 insertions(+), 33 deletions(-) diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index f58c542c..ac5911f0 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -38,6 +38,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | +| `reserved_mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | | `use_precomputed_maps`| `list[str]` | No | `null` | If not `null`, enforces the use of precomputed maps for the variables in the list. | ### 3\. Sequence Logic & Splitting diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 65315961..ec13be11 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -246,6 +246,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | +| `reserved_mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | | `use_precomputed_maps`| `list[str]` | No | `null` | If not `null`, enforces the use of precomputed maps for the variables in the list. | ### 3\. Sequence Logic & Splitting diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index 94f72009..493c09c2 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -5,7 +5,13 @@ import numpy as np import yaml from beartype import beartype -from pydantic import BaseModel, ConfigDict, ValidationInfo, field_validator +from pydantic import ( + BaseModel, + ConfigDict, + ValidationInfo, + field_validator, + model_validator, +) from sequifier.helpers import try_catch_excess_keys @@ -56,6 +62,8 @@ class PreprocessorModel(BaseModel): process_by_file: A flag to indicate if processing should be done file by file. continue_preprocessing: Continue preprocessing job that was interrupted while writing to temp folder. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". + reserved_mask_column: Optional input column used to mask all model input columns. + Requires metadata_config_path when set. """ model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") @@ -79,6 +87,7 @@ class PreprocessorModel(BaseModel): subsequence_start_mode: str = "distribute" use_precomputed_maps: Optional[list[str]] = None metadata_config_path: Optional[str] = None + reserved_mask_column: Optional[str] = None @field_validator("data_path") @classmethod @@ -176,6 +185,14 @@ def validate_subsequence_start_mode(cls, v: str) -> str: ) return v + @model_validator(mode="after") + def validate_reserved_mask_column_requires_metadata(self) -> "PreprocessorModel": + if self.reserved_mask_column is not None and self.metadata_config_path is None: + raise ValueError( + "metadata_config_path must be set when reserved_mask_column is set" + ) + return self + def __init__(self, **kwargs): default_stride_for_split = [kwargs["seq_length"]] * len(kwargs["split_ratios"]) kwargs["stride_by_split"] = kwargs.get( diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 9ebf9383..1d20e3ab 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -5,6 +5,7 @@ read_format: csv write_format: parquet selected_columns: [EXAMPLE_INPUT_COLUMN_NAME] # should include all target column, can include additional columns +reserved_mask_column: null split_ratios: - 0.8 diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 519ce497..532b15eb 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -25,7 +25,6 @@ RESERVED_MASK_COLUMN = "[mask]" INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") -RESERVED_INPUT_COLUMNS = (*INPUT_METADATA_COLUMNS, RESERVED_MASK_COLUMN) CATEGORICAL_MASK_ID = 2 REAL_MASK_VALUE = 0.0 @@ -92,6 +91,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], + reserved_mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -112,6 +112,7 @@ def __init__( process_by_file: A flag to indicate if processing should be done file by file. use_precomputed_maps: An optional list of columns for which to enforce precomputed maps metadata_config_path: Optional path to a precomputed metadata config + reserved_mask_column: Optional input column used to mask all data columns """ self.project_root = project_root self.batches_per_file = batches_per_file @@ -129,6 +130,12 @@ def __init__( self.use_precomputed_maps = use_precomputed_maps self.metadata_config_path = metadata_config_path + self.reserved_mask_column = reserved_mask_column + if self.reserved_mask_column is not None and self.metadata_config_path is None: + raise ValueError( + "metadata_config_path must be set when reserved_mask_column is set" + ) + self.seed = seed np.random.seed(seed) self.n_cores = n_cores or multiprocessing.cpu_count() @@ -137,9 +144,12 @@ def __init__( if selected_columns is not None: selected_columns = ["sequenceId", "itemPosition"] + selected_columns - if RESERVED_MASK_COLUMN in selected_columns: + if ( + self.reserved_mask_column is not None + and self.reserved_mask_column in selected_columns + ): raise ValueError( - f"'{RESERVED_MASK_COLUMN}' is not allowed to be in 'selected_columns'" + f"'{self.reserved_mask_column}' is not allowed to be in 'selected_columns'" ) self._setup_split_paths(write_format, len(split_ratios)) @@ -169,9 +179,13 @@ def __init__( if os.path.isfile(data_path): data = _load_and_preprocess_data( - data_path, read_format, selected_columns, max_rows + data_path, + read_format, + selected_columns, + max_rows, + self.reserved_mask_column, ) - data_columns = _get_data_columns(data) + data_columns = _get_data_columns(data, self.reserved_mask_column) if self.metadata_config_path: metadata_path = os.path.join( self.project_root, self.metadata_config_path @@ -200,6 +214,7 @@ def __init__( selected_columns_statistics, 0, precomputed_id_maps, + self.reserved_mask_column, ) id_maps = id_maps | precomputed_id_maps @@ -214,7 +229,9 @@ def __init__( n_classes=n_classes, col_types=col_types, ) - data = _apply_reserved_mask_column(data, data_columns, col_types) + data = _apply_reserved_mask_column( + data, data_columns, col_types, self.reserved_mask_column + ) self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) @@ -278,7 +295,9 @@ def __init__( # Reconstruct data_columns from the provided col_types data_columns = [ - col for col in col_types.keys() if col not in RESERVED_INPUT_COLUMNS + col + for col in col_types.keys() + if col not in _reserved_input_columns(self.reserved_mask_column) ] # We still need to find the files to process @@ -455,10 +474,13 @@ def _get_column_metadata_across_files( read_format, selected_columns, max_rows_inner, + self.reserved_mask_column, ) # Get columns for the current file (excluding metadata cols) - current_file_cols = _get_data_columns(data) + current_file_cols = _get_data_columns( + data, self.reserved_mask_column + ) if col_types is None: data_columns = current_file_cols @@ -498,6 +520,7 @@ def _get_column_metadata_across_files( selected_columns_statistics, n_rows_running_count, precomputed_id_maps, + self.reserved_mask_column, ) n_rows_running_count += data.shape[0] @@ -584,6 +607,7 @@ def _process_batches_multiple_files( write_format: str, process_by_file: bool = True, subsequence_start_mode: str = "distribute", + reserved_mask_column: Optional[str] = None, ) -> None: """Processes batches of data from multiple files. @@ -605,7 +629,11 @@ def _process_batches_multiple_files( write_format: The file format for the output files. process_by_file: A flag to indicate if processing should be done file by file. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". + reserved_mask_column: Optional input column used to mask all data columns. """ + if reserved_mask_column is None: + reserved_mask_column = self.reserved_mask_column + if process_by_file: _process_batches_multiple_files_inner( project_root=self.project_root, @@ -632,6 +660,7 @@ def _process_batches_multiple_files( merge_output=self.merge_output, continue_preprocessing=self.continue_preprocessing, subsequence_start_mode=subsequence_start_mode, + reserved_mask_column=reserved_mask_column, ) input_files = create_file_paths_for_multiple_files2( self.project_root, @@ -676,6 +705,7 @@ def _process_batches_multiple_files( "merge_output": self.merge_output, "continue_preprocessing": self.continue_preprocessing, "subsequence_start_mode": subsequence_start_mode, + "reserved_mask_column": reserved_mask_column, } job_params = [ @@ -884,8 +914,21 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No @beartype -def _get_data_columns(data: pl.DataFrame) -> list[str]: - return [col for col in data.columns if col not in RESERVED_INPUT_COLUMNS] +def _reserved_input_columns(reserved_mask_column: Optional[str]) -> tuple[str, ...]: + if reserved_mask_column is None: + return INPUT_METADATA_COLUMNS + return (*INPUT_METADATA_COLUMNS, reserved_mask_column) + + +@beartype +def _get_data_columns( + data: pl.DataFrame, reserved_mask_column: Optional[str] = None +) -> list[str]: + return [ + col + for col in data.columns + if col not in _reserved_input_columns(reserved_mask_column) + ] @beartype @@ -895,20 +938,27 @@ def _deduplicate_columns(columns: list[str]) -> list[str]: @beartype def _selected_columns_with_optional_mask( - data_path: str, read_format: str, selected_columns: Optional[list[str]] + data_path: str, + read_format: str, + selected_columns: Optional[list[str]], + reserved_mask_column: Optional[str] = None, ) -> Optional[list[str]]: - if selected_columns is None or read_format != "parquet": + if ( + selected_columns is None + or read_format != "parquet" + or reserved_mask_column is None + ): return selected_columns schema_columns = pq.read_schema(data_path).names - if RESERVED_MASK_COLUMN in schema_columns: - return selected_columns + [RESERVED_MASK_COLUMN] + if reserved_mask_column in schema_columns: + return selected_columns + [reserved_mask_column] return selected_columns @beartype -def _mask_column_expr(mask_dtype: Any) -> pl.Expr: - mask_col = pl.col(RESERVED_MASK_COLUMN) +def _mask_column_expr(mask_dtype: Any, reserved_mask_column: str) -> pl.Expr: + mask_col = pl.col(reserved_mask_column) if isinstance(mask_dtype, pl.Boolean): return mask_col @@ -934,18 +984,23 @@ def _mask_column_expr(mask_dtype: Any) -> pl.Expr: return mask_col.str.to_lowercase().is_in(["1", "true"]) raise ValueError( - f"Column {RESERVED_MASK_COLUMN} must be boolean, numeric, or string, got {mask_dtype}" + f"Column {reserved_mask_column} must be boolean, numeric, or string, got {mask_dtype}" ) @beartype def _apply_reserved_mask_column( - data: pl.DataFrame, data_columns: list[str], col_types: dict[str, str] + data: pl.DataFrame, + data_columns: list[str], + col_types: dict[str, str], + reserved_mask_column: Optional[str] = None, ) -> pl.DataFrame: - if RESERVED_MASK_COLUMN not in data.columns: + if reserved_mask_column is None or reserved_mask_column not in data.columns: return data - mask_expr = _mask_column_expr(data.schema[RESERVED_MASK_COLUMN]) + mask_expr = _mask_column_expr( + data.schema[reserved_mask_column], reserved_mask_column + ) updates = [] for col in data_columns: mask_value = ( @@ -962,7 +1017,7 @@ def _apply_reserved_mask_column( if updates: data = data.with_columns(updates) - return data.drop(RESERVED_MASK_COLUMN) + return data.drop(reserved_mask_column) @beartype @@ -1091,6 +1146,7 @@ def _get_column_statistics( selected_columns_statistics: dict[str, dict[str, float]], n_rows_running_count: int, precomputed_id_maps: dict[str, dict[Union[str, int], int]], + reserved_mask_column: Optional[str] = None, ) -> tuple[ dict[str, dict[Union[str, int], int]], dict[str, dict[str, float]], @@ -1127,8 +1183,10 @@ def _get_column_statistics( ValueError: If a column has an unsupported data type (neither string, integer, nor float). """ - if RESERVED_MASK_COLUMN in data.columns: - mask_expr = _mask_column_expr(data.schema[RESERVED_MASK_COLUMN]) + if reserved_mask_column is not None and reserved_mask_column in data.columns: + mask_expr = _mask_column_expr( + data.schema[reserved_mask_column], reserved_mask_column + ) data = data.filter(~mask_expr) for data_col in data_columns: @@ -1184,6 +1242,7 @@ def _load_and_preprocess_data( read_format: str, selected_columns: Optional[list[str]], max_rows: Optional[int], + reserved_mask_column: Optional[str] = None, ) -> pl.DataFrame: """Loads data from a file and performs initial preparation. @@ -1207,7 +1266,7 @@ def _load_and_preprocess_data( """ logger.info(f"Reading data from '{data_path}'...") columns_to_read = _selected_columns_with_optional_mask( - data_path, read_format, selected_columns + data_path, read_format, selected_columns, reserved_mask_column ) data = read_data(data_path, read_format, columns=columns_to_read) @@ -1219,8 +1278,8 @@ def _load_and_preprocess_data( col for col in selected_columns if col not in INPUT_METADATA_COLUMNS ] columns_to_select = list(INPUT_METADATA_COLUMNS) + selected_columns_filtered - if RESERVED_MASK_COLUMN in data.columns: - columns_to_select.append(RESERVED_MASK_COLUMN) + if reserved_mask_column is not None and reserved_mask_column in data.columns: + columns_to_select.append(reserved_mask_column) data = data.select(_deduplicate_columns(columns_to_select)) if max_rows: @@ -1305,6 +1364,7 @@ def _process_batches_multiple_files_inner( merge_output: bool, continue_preprocessing: bool, subsequence_start_mode: str, + reserved_mask_column: Optional[str], ): """Inner function for processing batches of data from multiple files. @@ -1366,13 +1426,21 @@ def _process_batches_multiple_files_inner( logger.info(f"Skipping already processed file: {path}") if max_rows is not None: data = _load_and_preprocess_data( - path, read_format, selected_columns, max_rows_inner + path, + read_format, + selected_columns, + max_rows_inner, + reserved_mask_column, ) n_rows_running_count += data.shape[0] continue data = _load_and_preprocess_data( - path, read_format, selected_columns, max_rows_inner + path, + read_format, + selected_columns, + max_rows_inner, + reserved_mask_column, ) data, _, _ = _apply_column_statistics( data, @@ -1382,7 +1450,9 @@ def _process_batches_multiple_files_inner( n_classes, col_types, ) - data = _apply_reserved_mask_column(data, data_columns, col_types) + data = _apply_reserved_mask_column( + data, data_columns, col_types, reserved_mask_column + ) data_name_root_inner = f"{data_name_root}-{process_id}-{file_index_str}" diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml index 15adf0e8..2c0b797f 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml @@ -12,3 +12,4 @@ stride_by_split: - 1 max_rows: null metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json +reserved_mask_column: "[mask]" diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 56f6595b..e7ac8483 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -4,7 +4,9 @@ import polars as pl import pytest import torch +from pydantic import ValidationError +from sequifier.config.preprocess_config import PreprocessorModel from sequifier.preprocess import ( RESERVED_MASK_COLUMN, Preprocessor, @@ -149,7 +151,7 @@ def test_reserved_mask_column_is_not_a_data_column(): } ) - assert _get_data_columns(data) == ["itemId"] + assert _get_data_columns(data, RESERVED_MASK_COLUMN) == ["itemId"] def test_apply_reserved_mask_column_replaces_values_and_drops_column(): @@ -165,6 +167,7 @@ def test_apply_reserved_mask_column_replaces_values_and_drops_column(): data, ["cat_col", "num_col"], {"cat_col": "Int64", "num_col": "Float64"}, + RESERVED_MASK_COLUMN, ) assert RESERVED_MASK_COLUMN not in masked.columns @@ -175,6 +178,22 @@ def test_apply_reserved_mask_column_replaces_values_and_drops_column(): def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): project_root = tmp_path / "project" project_root.mkdir() + metadata_dir = project_root / "configs" / "metadata_configs" + metadata_dir.mkdir(parents=True) + metadata_config_path = "configs/metadata_configs/masked-input-base.json" + (project_root / metadata_config_path).write_text( + json.dumps( + { + "n_classes": {"itemId": 6}, + "id_maps": {"itemId": {"a": 3, "b": 4, "c": 5}}, + "split_paths": [], + "column_types": {"itemId": "Int64", "itemValue": "Float64"}, + "selected_columns_statistics": { + "itemValue": {"mean": 60.0, "std": 10.0} + }, + } + ) + ) data_path = tmp_path / "masked-input.csv" pl.DataFrame( { @@ -204,7 +223,8 @@ def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): process_by_file=True, subsequence_start_mode="distribute", use_precomputed_maps=None, - metadata_config_path=None, + metadata_config_path=metadata_config_path, + reserved_mask_column=RESERVED_MASK_COLUMN, ) output = pl.read_parquet(project_root / "data" / "masked-input-split0.parquet") @@ -218,7 +238,7 @@ def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): ) assert RESERVED_MASK_COLUMN not in output.columns - assert item_sequence == (3.0, 2.0, 4.0) + assert item_sequence == (3.0, 2.0, 5.0) assert value_sequence[1] == 0.0 assert value_sequence[0] != 0.0 assert value_sequence[2] != 0.0 @@ -229,6 +249,95 @@ def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] +def test_preprocessor_requires_metadata_config_for_reserved_mask_column(tmp_path): + project_root = tmp_path / "project" + project_root.mkdir() + data_path = tmp_path / "masked-input.csv" + pl.DataFrame( + { + "sequenceId": [0], + "itemPosition": [0], + "itemId": ["a"], + RESERVED_MASK_COLUMN: [0], + } + ).write_csv(data_path) + + with pytest.raises( + ValueError, + match="metadata_config_path must be set when reserved_mask_column is set", + ): + Preprocessor( + project_root=str(project_root), + continue_preprocessing=False, + data_path=str(data_path), + read_format="csv", + write_format="parquet", + merge_output=True, + selected_columns=["itemId"], + split_ratios=[1.0], + seq_length=1, + stride_by_split=[1], + max_rows=None, + seed=1010, + n_cores=1, + batches_per_file=1024, + process_by_file=True, + subsequence_start_mode="distribute", + use_precomputed_maps=None, + metadata_config_path=None, + reserved_mask_column=RESERVED_MASK_COLUMN, + ) + + +def test_preprocessor_config_defaults_reserved_mask_column_to_none(tmp_path): + data_path = tmp_path / "input.csv" + pl.DataFrame( + { + "sequenceId": [0], + "itemPosition": [0], + "itemId": ["a"], + RESERVED_MASK_COLUMN: [0], + } + ).write_csv(data_path) + + config = PreprocessorModel( + project_root=str(tmp_path), + data_path=str(data_path), + split_ratios=[1.0], + seq_length=1, + seed=1010, + ) + + assert config.reserved_mask_column is None + + +def test_preprocessor_config_requires_metadata_config_for_reserved_mask_column( + tmp_path, +): + data_path = tmp_path / "input.csv" + pl.DataFrame( + { + "sequenceId": [0], + "itemPosition": [0], + "itemId": ["a"], + RESERVED_MASK_COLUMN: [0], + } + ).write_csv(data_path) + + with pytest.raises( + ValidationError, + match="metadata_config_path must be set when reserved_mask_column is set", + ): + PreprocessorModel( + project_root=str(tmp_path), + data_path=str(data_path), + split_ratios=[1.0], + seq_length=1, + seed=1010, + reserved_mask_column=RESERVED_MASK_COLUMN, + ) + + @pytest.mark.parametrize("mode", ["distribute", "exact"]) def test_extract_subsequences_modes(mode): """Tests logic for 'distribute' vs 'exact' modes.""" From 04fdba6b4cd952d2a8e6ff7a5697d1ff5b0b29d9 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 8 Jun 2026 15:06:34 +0200 Subject: [PATCH 16/81] Rename reserved_mask_column to mask_column --- documentation/configs/preprocess.md | 2 +- documentation/consolidated-docs.md | 2 +- src/sequifier/config/preprocess_config.py | 12 +- src/sequifier/make.py | 2 +- src/sequifier/preprocess.py | 121 ++++++++---------- ...ss-test-categorical-precomputed-stats.yaml | 2 +- tests/unit/test_preprocess.py | 28 ++-- 7 files changed, 73 insertions(+), 96 deletions(-) diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index ac5911f0..74ef6c5d 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -38,7 +38,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | -| `reserved_mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | +| `mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | | `use_precomputed_maps`| `list[str]` | No | `null` | If not `null`, enforces the use of precomputed maps for the variables in the list. | ### 3\. Sequence Logic & Splitting diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index ec13be11..b1563d6a 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -246,7 +246,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | -| `reserved_mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | +| `mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | | `use_precomputed_maps`| `list[str]` | No | `null` | If not `null`, enforces the use of precomputed maps for the variables in the list. | ### 3\. Sequence Logic & Splitting diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index 493c09c2..4777d26d 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -62,7 +62,7 @@ class PreprocessorModel(BaseModel): process_by_file: A flag to indicate if processing should be done file by file. continue_preprocessing: Continue preprocessing job that was interrupted while writing to temp folder. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - reserved_mask_column: Optional input column used to mask all model input columns. + mask_column: Optional input column used to mask all model input columns. Requires metadata_config_path when set. """ @@ -87,7 +87,7 @@ class PreprocessorModel(BaseModel): subsequence_start_mode: str = "distribute" use_precomputed_maps: Optional[list[str]] = None metadata_config_path: Optional[str] = None - reserved_mask_column: Optional[str] = None + mask_column: Optional[str] = None @field_validator("data_path") @classmethod @@ -186,11 +186,9 @@ def validate_subsequence_start_mode(cls, v: str) -> str: return v @model_validator(mode="after") - def validate_reserved_mask_column_requires_metadata(self) -> "PreprocessorModel": - if self.reserved_mask_column is not None and self.metadata_config_path is None: - raise ValueError( - "metadata_config_path must be set when reserved_mask_column is set" - ) + def validate_mask_column_requires_metadata(self) -> "PreprocessorModel": + if self.mask_column is not None and self.metadata_config_path is None: + raise ValueError("metadata_config_path must be set when mask_column is set") return self def __init__(self, **kwargs): diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 1d20e3ab..8777ac97 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -5,7 +5,7 @@ read_format: csv write_format: parquet selected_columns: [EXAMPLE_INPUT_COLUMN_NAME] # should include all target column, can include additional columns -reserved_mask_column: null +mask_column: null split_ratios: - 0.8 diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 532b15eb..a1b6125e 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -91,7 +91,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -112,7 +112,7 @@ def __init__( process_by_file: A flag to indicate if processing should be done file by file. use_precomputed_maps: An optional list of columns for which to enforce precomputed maps metadata_config_path: Optional path to a precomputed metadata config - reserved_mask_column: Optional input column used to mask all data columns + mask_column: Optional input column used to mask all data columns """ self.project_root = project_root self.batches_per_file = batches_per_file @@ -130,11 +130,9 @@ def __init__( self.use_precomputed_maps = use_precomputed_maps self.metadata_config_path = metadata_config_path - self.reserved_mask_column = reserved_mask_column - if self.reserved_mask_column is not None and self.metadata_config_path is None: - raise ValueError( - "metadata_config_path must be set when reserved_mask_column is set" - ) + self.mask_column = mask_column + if self.mask_column is not None and self.metadata_config_path is None: + raise ValueError("metadata_config_path must be set when mask_column is set") self.seed = seed np.random.seed(seed) @@ -144,12 +142,9 @@ def __init__( if selected_columns is not None: selected_columns = ["sequenceId", "itemPosition"] + selected_columns - if ( - self.reserved_mask_column is not None - and self.reserved_mask_column in selected_columns - ): + if self.mask_column is not None and self.mask_column in selected_columns: raise ValueError( - f"'{self.reserved_mask_column}' is not allowed to be in 'selected_columns'" + f"'{self.mask_column}' is not allowed to be in 'selected_columns'" ) self._setup_split_paths(write_format, len(split_ratios)) @@ -183,9 +178,9 @@ def __init__( read_format, selected_columns, max_rows, - self.reserved_mask_column, + self.mask_column, ) - data_columns = _get_data_columns(data, self.reserved_mask_column) + data_columns = _get_data_columns(data, self.mask_column) if self.metadata_config_path: metadata_path = os.path.join( self.project_root, self.metadata_config_path @@ -214,7 +209,7 @@ def __init__( selected_columns_statistics, 0, precomputed_id_maps, - self.reserved_mask_column, + self.mask_column, ) id_maps = id_maps | precomputed_id_maps @@ -229,9 +224,7 @@ def __init__( n_classes=n_classes, col_types=col_types, ) - data = _apply_reserved_mask_column( - data, data_columns, col_types, self.reserved_mask_column - ) + data = _apply_mask_column(data, data_columns, col_types, self.mask_column) self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) @@ -297,7 +290,7 @@ def __init__( data_columns = [ col for col in col_types.keys() - if col not in _reserved_input_columns(self.reserved_mask_column) + if col not in _reserved_input_columns(self.mask_column) ] # We still need to find the files to process @@ -474,13 +467,11 @@ def _get_column_metadata_across_files( read_format, selected_columns, max_rows_inner, - self.reserved_mask_column, + self.mask_column, ) # Get columns for the current file (excluding metadata cols) - current_file_cols = _get_data_columns( - data, self.reserved_mask_column - ) + current_file_cols = _get_data_columns(data, self.mask_column) if col_types is None: data_columns = current_file_cols @@ -520,7 +511,7 @@ def _get_column_metadata_across_files( selected_columns_statistics, n_rows_running_count, precomputed_id_maps, - self.reserved_mask_column, + self.mask_column, ) n_rows_running_count += data.shape[0] @@ -607,7 +598,7 @@ def _process_batches_multiple_files( write_format: str, process_by_file: bool = True, subsequence_start_mode: str = "distribute", - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ) -> None: """Processes batches of data from multiple files. @@ -629,10 +620,10 @@ def _process_batches_multiple_files( write_format: The file format for the output files. process_by_file: A flag to indicate if processing should be done file by file. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - reserved_mask_column: Optional input column used to mask all data columns. + mask_column: Optional input column used to mask all data columns. """ - if reserved_mask_column is None: - reserved_mask_column = self.reserved_mask_column + if mask_column is None: + mask_column = self.mask_column if process_by_file: _process_batches_multiple_files_inner( @@ -660,7 +651,7 @@ def _process_batches_multiple_files( merge_output=self.merge_output, continue_preprocessing=self.continue_preprocessing, subsequence_start_mode=subsequence_start_mode, - reserved_mask_column=reserved_mask_column, + mask_column=mask_column, ) input_files = create_file_paths_for_multiple_files2( self.project_root, @@ -705,7 +696,7 @@ def _process_batches_multiple_files( "merge_output": self.merge_output, "continue_preprocessing": self.continue_preprocessing, "subsequence_start_mode": subsequence_start_mode, - "reserved_mask_column": reserved_mask_column, + "mask_column": mask_column, } job_params = [ @@ -914,20 +905,18 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No @beartype -def _reserved_input_columns(reserved_mask_column: Optional[str]) -> tuple[str, ...]: - if reserved_mask_column is None: +def _reserved_input_columns(mask_column: Optional[str]) -> tuple[str, ...]: + if mask_column is None: return INPUT_METADATA_COLUMNS - return (*INPUT_METADATA_COLUMNS, reserved_mask_column) + return (*INPUT_METADATA_COLUMNS, mask_column) @beartype def _get_data_columns( - data: pl.DataFrame, reserved_mask_column: Optional[str] = None + data: pl.DataFrame, mask_column: Optional[str] = None ) -> list[str]: return [ - col - for col in data.columns - if col not in _reserved_input_columns(reserved_mask_column) + col for col in data.columns if col not in _reserved_input_columns(mask_column) ] @@ -941,24 +930,20 @@ def _selected_columns_with_optional_mask( data_path: str, read_format: str, selected_columns: Optional[list[str]], - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ) -> Optional[list[str]]: - if ( - selected_columns is None - or read_format != "parquet" - or reserved_mask_column is None - ): + if selected_columns is None or read_format != "parquet" or mask_column is None: return selected_columns schema_columns = pq.read_schema(data_path).names - if reserved_mask_column in schema_columns: - return selected_columns + [reserved_mask_column] + if mask_column in schema_columns: + return selected_columns + [mask_column] return selected_columns @beartype -def _mask_column_expr(mask_dtype: Any, reserved_mask_column: str) -> pl.Expr: - mask_col = pl.col(reserved_mask_column) +def _mask_column_expr(mask_dtype: Any, mask_column: str) -> pl.Expr: + mask_col = pl.col(mask_column) if isinstance(mask_dtype, pl.Boolean): return mask_col @@ -981,26 +966,24 @@ def _mask_column_expr(mask_dtype: Any, reserved_mask_column: str) -> pl.Expr: return mask_col == 1 if isinstance(mask_dtype, (pl.String, pl.Utf8)): - return mask_col.str.to_lowercase().is_in(["1", "true"]) + return mask_col.str.to_lowercase().is_in(["1"]) raise ValueError( - f"Column {reserved_mask_column} must be boolean, numeric, or string, got {mask_dtype}" + f"Column {mask_column} must be boolean, numeric, or string, got {mask_dtype}" ) @beartype -def _apply_reserved_mask_column( +def _apply_mask_column( data: pl.DataFrame, data_columns: list[str], col_types: dict[str, str], - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ) -> pl.DataFrame: - if reserved_mask_column is None or reserved_mask_column not in data.columns: + if mask_column is None or mask_column not in data.columns: return data - mask_expr = _mask_column_expr( - data.schema[reserved_mask_column], reserved_mask_column - ) + mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) updates = [] for col in data_columns: mask_value = ( @@ -1017,7 +1000,7 @@ def _apply_reserved_mask_column( if updates: data = data.with_columns(updates) - return data.drop(reserved_mask_column) + return data.drop(mask_column) @beartype @@ -1146,7 +1129,7 @@ def _get_column_statistics( selected_columns_statistics: dict[str, dict[str, float]], n_rows_running_count: int, precomputed_id_maps: dict[str, dict[Union[str, int], int]], - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ) -> tuple[ dict[str, dict[Union[str, int], int]], dict[str, dict[str, float]], @@ -1183,10 +1166,8 @@ def _get_column_statistics( ValueError: If a column has an unsupported data type (neither string, integer, nor float). """ - if reserved_mask_column is not None and reserved_mask_column in data.columns: - mask_expr = _mask_column_expr( - data.schema[reserved_mask_column], reserved_mask_column - ) + if mask_column is not None and mask_column in data.columns: + mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) data = data.filter(~mask_expr) for data_col in data_columns: @@ -1242,7 +1223,7 @@ def _load_and_preprocess_data( read_format: str, selected_columns: Optional[list[str]], max_rows: Optional[int], - reserved_mask_column: Optional[str] = None, + mask_column: Optional[str] = None, ) -> pl.DataFrame: """Loads data from a file and performs initial preparation. @@ -1266,7 +1247,7 @@ def _load_and_preprocess_data( """ logger.info(f"Reading data from '{data_path}'...") columns_to_read = _selected_columns_with_optional_mask( - data_path, read_format, selected_columns, reserved_mask_column + data_path, read_format, selected_columns, mask_column ) data = read_data(data_path, read_format, columns=columns_to_read) @@ -1278,8 +1259,8 @@ def _load_and_preprocess_data( col for col in selected_columns if col not in INPUT_METADATA_COLUMNS ] columns_to_select = list(INPUT_METADATA_COLUMNS) + selected_columns_filtered - if reserved_mask_column is not None and reserved_mask_column in data.columns: - columns_to_select.append(reserved_mask_column) + if mask_column is not None and mask_column in data.columns: + columns_to_select.append(mask_column) data = data.select(_deduplicate_columns(columns_to_select)) if max_rows: @@ -1364,7 +1345,7 @@ def _process_batches_multiple_files_inner( merge_output: bool, continue_preprocessing: bool, subsequence_start_mode: str, - reserved_mask_column: Optional[str], + mask_column: Optional[str], ): """Inner function for processing batches of data from multiple files. @@ -1430,7 +1411,7 @@ def _process_batches_multiple_files_inner( read_format, selected_columns, max_rows_inner, - reserved_mask_column, + mask_column, ) n_rows_running_count += data.shape[0] continue @@ -1440,7 +1421,7 @@ def _process_batches_multiple_files_inner( read_format, selected_columns, max_rows_inner, - reserved_mask_column, + mask_column, ) data, _, _ = _apply_column_statistics( data, @@ -1450,9 +1431,7 @@ def _process_batches_multiple_files_inner( n_classes, col_types, ) - data = _apply_reserved_mask_column( - data, data_columns, col_types, reserved_mask_column - ) + data = _apply_mask_column(data, data_columns, col_types, mask_column) data_name_root_inner = f"{data_name_root}-{process_id}-{file_index_str}" diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml index 2c0b797f..11b3853c 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml @@ -12,4 +12,4 @@ stride_by_split: - 1 max_rows: null metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json -reserved_mask_column: "[mask]" +mask_column: "[mask]" diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index e7ac8483..b57bb27a 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -10,7 +10,7 @@ from sequifier.preprocess import ( RESERVED_MASK_COLUMN, Preprocessor, - _apply_reserved_mask_column, + _apply_mask_column, _get_column_statistics, _get_data_columns, create_id_map, @@ -141,7 +141,7 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): ) -def test_reserved_mask_column_is_not_a_data_column(): +def test_mask_column_is_not_a_data_column(): data = pl.DataFrame( { "sequenceId": [1], @@ -154,7 +154,7 @@ def test_reserved_mask_column_is_not_a_data_column(): assert _get_data_columns(data, RESERVED_MASK_COLUMN) == ["itemId"] -def test_apply_reserved_mask_column_replaces_values_and_drops_column(): +def test_apply_mask_column_replaces_values_and_drops_column(): data = pl.DataFrame( { "cat_col": [3, 4, 5, 6], @@ -163,7 +163,7 @@ def test_apply_reserved_mask_column_replaces_values_and_drops_column(): } ) - masked = _apply_reserved_mask_column( + masked = _apply_mask_column( data, ["cat_col", "num_col"], {"cat_col": "Int64", "num_col": "Float64"}, @@ -175,7 +175,7 @@ def test_apply_reserved_mask_column_replaces_values_and_drops_column(): assert masked["num_col"].to_list() == [-1.0, 0.0, 3.5, 0.0] -def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): +def test_preprocessor_applies_mask_column_end_to_end(tmp_path): project_root = tmp_path / "project" project_root.mkdir() metadata_dir = project_root / "configs" / "metadata_configs" @@ -224,7 +224,7 @@ def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): subsequence_start_mode="distribute", use_precomputed_maps=None, metadata_config_path=metadata_config_path, - reserved_mask_column=RESERVED_MASK_COLUMN, + mask_column=RESERVED_MASK_COLUMN, ) output = pl.read_parquet(project_root / "data" / "masked-input-split0.parquet") @@ -249,7 +249,7 @@ def test_preprocessor_applies_reserved_mask_column_end_to_end(tmp_path): assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] -def test_preprocessor_requires_metadata_config_for_reserved_mask_column(tmp_path): +def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): project_root = tmp_path / "project" project_root.mkdir() data_path = tmp_path / "masked-input.csv" @@ -264,7 +264,7 @@ def test_preprocessor_requires_metadata_config_for_reserved_mask_column(tmp_path with pytest.raises( ValueError, - match="metadata_config_path must be set when reserved_mask_column is set", + match="metadata_config_path must be set when mask_column is set", ): Preprocessor( project_root=str(project_root), @@ -285,11 +285,11 @@ def test_preprocessor_requires_metadata_config_for_reserved_mask_column(tmp_path subsequence_start_mode="distribute", use_precomputed_maps=None, metadata_config_path=None, - reserved_mask_column=RESERVED_MASK_COLUMN, + mask_column=RESERVED_MASK_COLUMN, ) -def test_preprocessor_config_defaults_reserved_mask_column_to_none(tmp_path): +def test_preprocessor_config_defaults_mask_column_to_none(tmp_path): data_path = tmp_path / "input.csv" pl.DataFrame( { @@ -308,10 +308,10 @@ def test_preprocessor_config_defaults_reserved_mask_column_to_none(tmp_path): seed=1010, ) - assert config.reserved_mask_column is None + assert config.mask_column is None -def test_preprocessor_config_requires_metadata_config_for_reserved_mask_column( +def test_preprocessor_config_requires_metadata_config_for_mask_column( tmp_path, ): data_path = tmp_path / "input.csv" @@ -326,7 +326,7 @@ def test_preprocessor_config_requires_metadata_config_for_reserved_mask_column( with pytest.raises( ValidationError, - match="metadata_config_path must be set when reserved_mask_column is set", + match="metadata_config_path must be set when mask_column is set", ): PreprocessorModel( project_root=str(tmp_path), @@ -334,7 +334,7 @@ def test_preprocessor_config_requires_metadata_config_for_reserved_mask_column( split_ratios=[1.0], seq_length=1, seed=1010, - reserved_mask_column=RESERVED_MASK_COLUMN, + mask_column=RESERVED_MASK_COLUMN, ) From 95fa63bd3442d781b8649fdf658412a130dd7103 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 8 Jun 2026 18:08:33 +0200 Subject: [PATCH 17/81] Bump version to 2.0.0.0 --- README.md | 2 +- docs/source/conf.py | 2 +- documentation/consolidated-docs.md | 2 +- pyproject.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2cbb9d99..85f64440 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Please cite with: title = {sequifier - causal transformer models for multivariate sequence modelling}, year = {2025}, publisher = {GitHub}, - version = {v1.2.0.0}, + version = {v2.0.0.0}, url = {[https://github.com/0xideas/sequifier](https://github.com/0xideas/sequifier)} } diff --git a/docs/source/conf.py b/docs/source/conf.py index 91f64673..b0b88606 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -15,7 +15,7 @@ project = 'sequifier' copyright = '2025, Leon Luithlen' author = 'Leon Luithlen' -release = 'v1.2.0.0' +release = 'v2.0.0.0' html_baseurl = 'https://www.sequifier.com/' # -- General configuration --------------------------------------------------- diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index b1563d6a..657cf59c 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -199,7 +199,7 @@ Please cite with: title = {sequifier - causal transformer models for multivariate sequence modelling}, year = {2025}, publisher = {GitHub}, - version = {v1.2.0.0}, + version = {v2.0.0.0}, url = {[https://github.com/0xideas/sequifier](https://github.com/0xideas/sequifier)} } diff --git a/pyproject.toml b/pyproject.toml index 7a561108..b6550e5c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sequifier" -version = "v1.2.0.0" +version = "v2.0.0.0" authors = [ { name = "Leon Luithlen", email = "leontimnaluithlen@gmail.com" }, ] From ea71ce029eba4fb479f3bb6a3c9fde67da1018f7 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 11:55:09 +0200 Subject: [PATCH 18/81] fix subsequence_starts problems --- src/sequifier/preprocess.py | 9 ++++----- tests/unit/test_preprocess.py | 10 +++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index a1b6125e..a90d28bc 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -23,7 +23,6 @@ write_data, ) -RESERVED_MASK_COLUMN = "[mask]" INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") CATEGORICAL_MASK_ID = 2 REAL_MASK_VALUE = 0.0 @@ -2054,7 +2053,7 @@ def extract_sequences( for in_row in raw_sequences.iter_rows(named=True): in_seq_lists_only = {col: in_row[col] for col in columns} - subsequences, left_pad_lengths = extract_subsequences( + subsequences, left_pad_lengths, subsequence_starts = extract_subsequences( in_seq_lists_only, seq_length, stride_for_split, @@ -2067,7 +2066,7 @@ def extract_sequences( row = [ in_row["sequenceId"], subsequence_id, - subsequence_id * stride_for_split, + int(subsequence_starts[subsequence_id]) - left_pad_lengths[subsequence_id], left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] @@ -2142,7 +2141,7 @@ def extract_subsequences( stride_for_split: int, columns: list[str], subsequence_start_mode: str, -) -> tuple[dict[str, list[list[Union[float, int]]]], list[int]]: +) -> tuple[dict[str, list[list[Union[float, int]]]], list[int], np.ndarray]: """Extracts subsequences from a dictionary of sequence lists. This function takes a dictionary `in_seq` where keys are column @@ -2186,7 +2185,7 @@ def extract_subsequences( } left_pad_lengths = [pad_len] * len(subsequence_starts) - return result, left_pad_lengths + return result, left_pad_lengths, subsequence_starts @beartype diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index b57bb27a..75fbb50d 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -36,7 +36,7 @@ def test_extract_subsequences_basic(): # Expected behavior: Window size is seq_length + 1 (history + target) # Windows: [10,11,12,13], [11,12,13,14], [12,13,14,15] - result, left_pad_lengths = extract_subsequences( + result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, seq_length, stride, columns, subsequence_start_mode="distribute" ) @@ -54,7 +54,7 @@ def test_extract_subsequences_padding(): # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding - result, left_pad_lengths = extract_subsequences( + result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, seq_length, stride, columns, subsequence_start_mode="distribute" ) @@ -64,7 +64,7 @@ def test_extract_subsequences_padding(): def test_extract_subsequences_returns_left_pad_lengths_when_requested(): input_data = {"col1": [0.0, 1.5]} - result, left_pad_lengths = extract_subsequences( + result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, seq_length=4, stride_for_split=1, @@ -351,7 +351,7 @@ def test_extract_subsequences_modes(mode): if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage - result, left_pad_lengths = extract_subsequences( + result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, seq_length, stride, columns, mode ) assert len(result["col1"]) > 0 @@ -367,7 +367,7 @@ def test_extract_subsequences_modes(mode): # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} - result, left_pad_lengths = extract_subsequences( + result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data_exact, seq_length, 4, columns, mode ) assert len(result["col1"]) > 0 From 3b3ee9610349dc174c25316e597d8110a05dc484 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 14:54:40 +0200 Subject: [PATCH 19/81] Add hyperparameter search for bert vars --- .gitignore | 2 +- .../config/hyperparameter_search_config.py | 148 +++++++++++++---- src/sequifier/io/yaml.py | 2 + tests/unit/data/empty.parquet | 0 .../unit/test_hyperparameter_search_config.py | 149 ++++++++++++++++++ tests/unit/test_infer.py | 2 +- tests/unit/test_preprocess.py | 4 +- 7 files changed, 268 insertions(+), 39 deletions(-) create mode 100644 tests/unit/data/empty.parquet create mode 100644 tests/unit/test_hyperparameter_search_config.py diff --git a/.gitignore b/.gitignore index d2bfad92..3a23070a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ logs/ metadata_configs/ outputs/ project_folder/ - +!tests/unit/data *\~ *.DS_Store diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 0659abf6..ee75b1fb 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -8,9 +8,12 @@ from loguru import logger from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator +from sequifier.config.probabilities import ProbabilityDistribution from sequifier.config.train_config import ( + BERTSpecModel, DotDict, ModelSpecModel, + ReplacementDistribution, TrainingSpecModel, TrainModel, ) @@ -70,6 +73,66 @@ def validate_step_and_log(self): OptunaInt = Union[list[int], IntDistribution] +def sample_param( + trial: Any, + name: str, + space: Union[list, FloatDistribution, IntDistribution], +): + if isinstance(space, list): + return trial.suggest_categorical(name, space) + if isinstance(space, FloatDistribution): + return trial.suggest_float( + name, space.low, space.high, step=space.step, log=space.log + ) + if isinstance(space, IntDistribution): + return trial.suggest_int( + name, space.low, space.high, step=space.step, log=space.log + ) + raise TypeError(f"Unsupported hyperparameter search space for {name}: {space}") + + +class BERTSpecHyperparameterSampling(BaseModel): + """Pydantic model for BERT objective hyperparameter sampling. + + Each BERT spec field is sampled independently so Optuna can track the + conditional search space without receiving nested objects as categorical + values. + """ + + model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") + + masking_probability: OptunaFloat + replacement_distribution: list[ReplacementDistribution] + span_masking: list[ProbabilityDistribution] + + def sample_trial(self, trial: Any) -> BERTSpecModel: + masking_probability = sample_param( + trial, "bert_masking_probability", self.masking_probability + ) + replacement_distribution_index = trial.suggest_categorical( + "bert_replacement_distribution_index", + list(range(len(self.replacement_distribution))), + ) + span_masking_index = trial.suggest_categorical( + "bert_span_masking_index", list(range(len(self.span_masking))) + ) + + replacement_distribution = self.replacement_distribution[ + replacement_distribution_index + ].model_copy(deep=True) + span_masking = self.span_masking[span_masking_index].model_copy(deep=True) + + logger.info( + f"{masking_probability = } - {replacement_distribution = } - {span_masking = }" + ) + + return BERTSpecModel( + masking_probability=masking_probability, + replacement_distribution=replacement_distribution, + span_masking=span_masking, + ) + + @beartype def load_hyperparameter_search_config( config_path: str, skip_metadata: bool @@ -165,8 +228,10 @@ class TrainingSpecHyperparameterSampling(BaseModel): save_batch_interval_minutes: the time interval in which a checkpoint is written to a unique checkpoint path save_batch_interval_minutes_val_loss: calculate val loss at the moment of batch interval saving calculate_validation_loss_on_initialization: calculate val loss on weight initialization + training_objective: Training objective choices, either 'causal' or 'bert'. batch_size: A list of possible batch sizes. learning_rate: A list of possible learning rates. + bert_spec: Optional BERT hyperparameter search space. Required if 'bert' can be sampled. criterion: A dictionary mapping target columns to loss functions. class_weights: Optional dictionary mapping columns to class weights. accumulation_steps: A list of possible gradient accumulation steps. @@ -198,8 +263,10 @@ class TrainingSpecHyperparameterSampling(BaseModel): save_batch_interval_minutes_val_loss: bool = True calculate_validation_loss_on_initialization: bool = False + training_objective: list[str] = Field(default_factory=lambda: ["causal"]) batch_size: OptunaInt learning_rate: list[float] # Kept as list to preserve coupling with epochs + bert_spec: Optional[BERTSpecHyperparameterSampling] = None criterion: dict[str, str] class_weights: Optional[dict[str, list[float]]] = None accumulation_steps: OptunaInt @@ -259,6 +326,32 @@ def __init__(self, **kwargs): DotDict(scheduler_config) for scheduler_config in kwargs["scheduler"] ] + @field_validator("training_objective", mode="before") + @classmethod + def normalize_training_objective(cls, v): + if isinstance(v, str): + return [v] + return v + + @field_validator("training_objective") + @classmethod + def validate_training_objective(cls, v): + allowed = {"causal", "bert"} + invalid = set(v).difference(allowed) + if invalid: + raise ValueError( + f"Only 'causal' and 'bert' are allowed, found {invalid}" + ) + return v + + @model_validator(mode="after") + def validate_bert_spec(self): + if "bert" in self.training_objective and self.bert_spec is None: + raise ValueError( + "If 'bert' is in training_objective, bert_spec must be configured." + ) + return self + @field_validator("layer_type_dtypes") @classmethod def validate_layer_type_dtypes(cls, v): @@ -343,29 +436,27 @@ def sample_trial(self, trial: Any) -> TrainingSpecModel: ) optimizer = self.optimizer[opt_index] - def sample_param( - name: str, space: Union[list, FloatDistribution, IntDistribution] - ): - if isinstance(space, list): - return trial.suggest_categorical(name, space) - elif isinstance(space, FloatDistribution): - return trial.suggest_float( - name, space.low, space.high, step=space.step, log=space.log - ) - elif isinstance(space, IntDistribution): - return trial.suggest_int( - name, space.low, space.high, step=space.step, log=space.log - ) + training_objective = trial.suggest_categorical( + "training_objective", self.training_objective + ) + bert_spec = ( + self.bert_spec.sample_trial(trial) + if training_objective == "bert" and self.bert_spec is not None + else None + ) - batch_size = sample_param("batch_size", self.batch_size) - dropout = sample_param("dropout", self.dropout) - accumulation_steps = sample_param("accumulation_steps", self.accumulation_steps) + batch_size = sample_param(trial, "batch_size", self.batch_size) + dropout = sample_param(trial, "dropout", self.dropout) + accumulation_steps = sample_param( + trial, "accumulation_steps", self.accumulation_steps + ) logger.info( - f"{learning_rate = } - {batch_size = } - {dropout = } - {optimizer = }" + f"{training_objective = } - {learning_rate = } - {batch_size = } - {dropout = } - {optimizer = }" ) return TrainingSpecModel( + training_objective=training_objective, device=self.device, epochs=epochs, log_interval=self.log_interval, @@ -380,6 +471,7 @@ def sample_param( learning_rate=learning_rate, criterion=self.criterion, class_weights=self.class_weights, + bert_spec=bert_spec, accumulation_steps=accumulation_steps, dropout=dropout, loss_weights=self.loss_weights, @@ -498,23 +590,11 @@ def sample_trial(self, trial: Any) -> ModelSpecModel: else self.feature_embedding_dims[dim_model_idx] ) - def sample_param( - name: str, space: Union[list, FloatDistribution, IntDistribution] - ): - if isinstance(space, list): - return trial.suggest_categorical(name, space) - elif isinstance(space, FloatDistribution): - return trial.suggest_float( - name, space.low, space.high, step=space.step, log=space.log - ) - elif isinstance(space, IntDistribution): - return trial.suggest_int( - name, space.low, space.high, step=space.step, log=space.log - ) - - dim_feedforward = sample_param("dim_feedforward", self.dim_feedforward) - num_layers = sample_param("num_layers", self.num_layers) - rope_theta = sample_param("rope_theta", self.rope_theta) + dim_feedforward = sample_param( + trial, "dim_feedforward", self.dim_feedforward + ) + num_layers = sample_param(trial, "num_layers", self.num_layers) + rope_theta = sample_param(trial, "rope_theta", self.rope_theta) activation_fn = trial.suggest_categorical("activation_fn", self.activation_fn) normalization = trial.suggest_categorical("normalization", self.normalization) diff --git a/src/sequifier/io/yaml.py b/src/sequifier/io/yaml.py index c275050a..f8cdcd63 100644 --- a/src/sequifier/io/yaml.py +++ b/src/sequifier/io/yaml.py @@ -1,5 +1,6 @@ import numpy import yaml +from pydantic import BaseModel from sequifier.config.train_config import ( DotDict, @@ -77,6 +78,7 @@ def increase_indent(self, flow=False, indentless=False): TrainModelDumper.add_representer(TrainModel, represent_sequifier_object) TrainModelDumper.add_representer(ModelSpecModel, represent_sequifier_object) TrainModelDumper.add_representer(TrainingSpecModel, represent_sequifier_object) +TrainModelDumper.add_multi_representer(BaseModel, represent_sequifier_object) TrainModelDumper.add_representer(DotDict, represent_dot_dict) TrainModelDumper.add_representer(numpy.float64, represent_numpy_float) TrainModelDumper.add_representer( diff --git a/tests/unit/data/empty.parquet b/tests/unit/data/empty.parquet new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py new file mode 100644 index 00000000..b09eed26 --- /dev/null +++ b/tests/unit/test_hyperparameter_search_config.py @@ -0,0 +1,149 @@ +import pytest +import yaml +from pydantic import ValidationError + +from sequifier.config.hyperparameter_search_config import ( + TrainingSpecHyperparameterSampling, +) +from sequifier.io.yaml import TrainModelDumper + + +class RecordingTrial: + def __init__(self, overrides=None): + self.overrides = overrides or {} + self.params = {} + + def suggest_categorical(self, name, choices): + value = self.overrides.get(name, choices[0]) + assert value in choices + self.params[name] = value + return value + + def suggest_float(self, name, low, high, step=None, log=False): + value = self.overrides.get(name, low) + self.params[name] = value + return value + + def suggest_int(self, name, low, high, step=1, log=False): + value = self.overrides.get(name, low) + self.params[name] = value + return value + + +def make_training_sampling(**overrides): + config = { + "device": "cpu", + "epochs": [1], + "save_interval_epochs": 1, + "batch_size": [2], + "learning_rate": [0.001], + "criterion": {"itemId": "CrossEntropyLoss"}, + "accumulation_steps": [1], + "dropout": [0.0], + "optimizer": [{"name": "Adam"}], + "scheduler": [{"name": "StepLR", "step_size": 1, "gamma": 0.99}], + "continue_training": False, + } + config.update(overrides) + return TrainingSpecHyperparameterSampling(**config) + + +def bert_spec_sampling_config(): + return { + "masking_probability": [0.15, 0.30], + "replacement_distribution": [ + {"masked": 0.8, "random": 0.1, "identical": 0.1}, + {"masked": 0.6, "random": 0.2, "identical": 0.2}, + ], + "span_masking": [ + {"type": "GeometricDistribution", "p": 1.0}, + {"type": "PoissonDistributionFloor", "rate": 2.0}, + ], + } + + +def test_training_objective_defaults_to_causal_without_bert_spec(): + sampling = make_training_sampling() + trial = RecordingTrial() + + training_spec = sampling.sample_trial(trial) + + assert training_spec.training_objective == "causal" + assert training_spec.bert_spec is None + assert trial.params["training_objective"] == "causal" + + +def test_bert_spec_fields_are_sampled_separately_for_bert_objective(): + sampling = make_training_sampling( + training_objective=["causal", "bert"], + bert_spec=bert_spec_sampling_config(), + ) + trial = RecordingTrial( + { + "training_objective": "bert", + "bert_masking_probability": 0.30, + "bert_replacement_distribution_index": 1, + "bert_span_masking_index": 1, + } + ) + + training_spec = sampling.sample_trial(trial) + + assert training_spec.training_objective == "bert" + assert training_spec.bert_spec.masking_probability == 0.30 + assert training_spec.bert_spec.replacement_distribution.masked == 0.6 + assert training_spec.bert_spec.replacement_distribution.random == 0.2 + assert training_spec.bert_spec.replacement_distribution.identical == 0.2 + assert training_spec.bert_spec.span_masking.type == "PoissonDistributionFloor" + assert set(trial.params).issuperset( + { + "training_objective", + "bert_masking_probability", + "bert_replacement_distribution_index", + "bert_span_masking_index", + } + ) + + +def test_causal_objective_does_not_sample_bert_fields(): + sampling = make_training_sampling( + training_objective=["causal", "bert"], + bert_spec=bert_spec_sampling_config(), + ) + trial = RecordingTrial({"training_objective": "causal"}) + + training_spec = sampling.sample_trial(trial) + + assert training_spec.training_objective == "causal" + assert training_spec.bert_spec is None + assert "bert_masking_probability" not in trial.params + assert "bert_replacement_distribution_index" not in trial.params + assert "bert_span_masking_index" not in trial.params + + +def test_bert_objective_requires_bert_spec_sampling_config(): + with pytest.raises(ValidationError, match="bert_spec"): + make_training_sampling(training_objective=["bert"]) + + +def test_bert_training_spec_dumps_to_plain_yaml(): + sampling = make_training_sampling( + training_objective=["bert"], + bert_spec=bert_spec_sampling_config(), + ) + training_spec = sampling.sample_trial(RecordingTrial()) + + dumped = yaml.dump(training_spec, Dumper=TrainModelDumper, sort_keys=False) + loaded = yaml.safe_load(dumped) + + assert loaded["training_objective"] == "bert" + assert loaded["bert_spec"]["masking_probability"] == 0.15 + assert loaded["bert_spec"]["replacement_distribution"] == { + "masked": 0.8, + "random": 0.1, + "identical": 0.1, + } + assert loaded["bert_spec"]["span_masking"] == { + "type": "GeometricDistribution", + "p": 1.0, + } diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index ecb3628b..998dbab8 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -164,7 +164,7 @@ def ar_config(): model_path="dummy.onnx", model_type="generative", training_objective="causal", - data_path="tests/unit/data/dummy.parquet", + data_path="tests/unit/data/empty.parquet", input_columns=["target_col"], categorical_columns=[], real_columns=["target_col"], diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 75fbb50d..481abc3d 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -8,7 +8,6 @@ from sequifier.config.preprocess_config import PreprocessorModel from sequifier.preprocess import ( - RESERVED_MASK_COLUMN, Preprocessor, _apply_mask_column, _get_column_statistics, @@ -24,8 +23,7 @@ # ========================================== # 1. Test Sequence Extraction (Sliding Window) # ========================================== - - +RESERVED_MASK_COLUMN = "[mask]" def test_extract_subsequences_basic(): """Tests basic sliding window extraction with sufficient length.""" input_data = {"col1": [10, 11, 12, 13, 14, 15]} From dbc355a82d48c88f0c3e2b7c75026d88cea4a4d8 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 14:56:09 +0200 Subject: [PATCH 20/81] Add hyperparameter search for bert vars --- pyrightconfig.json | 2 +- src/sequifier/config/hyperparameter_search_config.py | 8 ++------ src/sequifier/preprocess.py | 3 ++- tests/unit/test_preprocess.py | 2 ++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/pyrightconfig.json b/pyrightconfig.json index c2481558..c31d3b15 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,4 +1,4 @@ { "reportMissingImports": false, "reportMissingModuleSource": false -} \ No newline at end of file +} diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index ee75b1fb..cec47b2f 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -339,9 +339,7 @@ def validate_training_objective(cls, v): allowed = {"causal", "bert"} invalid = set(v).difference(allowed) if invalid: - raise ValueError( - f"Only 'causal' and 'bert' are allowed, found {invalid}" - ) + raise ValueError(f"Only 'causal' and 'bert' are allowed, found {invalid}") return v @model_validator(mode="after") @@ -590,9 +588,7 @@ def sample_trial(self, trial: Any) -> ModelSpecModel: else self.feature_embedding_dims[dim_model_idx] ) - dim_feedforward = sample_param( - trial, "dim_feedforward", self.dim_feedforward - ) + dim_feedforward = sample_param(trial, "dim_feedforward", self.dim_feedforward) num_layers = sample_param(trial, "num_layers", self.num_layers) rope_theta = sample_param(trial, "rope_theta", self.rope_theta) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index a90d28bc..a9401479 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -2066,7 +2066,8 @@ def extract_sequences( row = [ in_row["sequenceId"], subsequence_id, - int(subsequence_starts[subsequence_id]) - left_pad_lengths[subsequence_id], + int(subsequence_starts[subsequence_id]) + - left_pad_lengths[subsequence_id], left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 481abc3d..f478c3a8 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -24,6 +24,8 @@ # 1. Test Sequence Extraction (Sliding Window) # ========================================== RESERVED_MASK_COLUMN = "[mask]" + + def test_extract_subsequences_basic(): """Tests basic sliding window extraction with sufficient length.""" input_data = {"col1": [10, 11, 12, 13, 14, 15]} From c10f9eafdd03d918301464428ae9f62efcec716b Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 15:08:57 +0200 Subject: [PATCH 21/81] Update itemPosition in test outputs --- ...orical-1-best-embedding-3-0-embeddings.csv | 2 +- ...orical-1-best-embedding-3-1-embeddings.csv | 2 +- ...orical-1-best-embedding-3-2-embeddings.csv | 2 +- ...orical-1-best-embedding-3-3-embeddings.csv | 4 +- ...orical-1-best-embedding-3-4-embeddings.csv | 2 +- ...orical-1-best-embedding-3-5-embeddings.csv | 4 +- ...orical-1-best-embedding-3-6-embeddings.csv | 2 +- ...orical-1-best-embedding-3-7-embeddings.csv | 2 +- ...inf-size-best-embedding-3-0-embeddings.csv | 6 +- ...inf-size-best-embedding-3-1-embeddings.csv | 6 +- ...inf-size-best-embedding-3-2-embeddings.csv | 6 +- ...inf-size-best-embedding-3-3-embeddings.csv | 12 +- ...inf-size-best-embedding-3-4-embeddings.csv | 6 +- ...inf-size-best-embedding-3-5-embeddings.csv | 12 +- ...inf-size-best-embedding-3-6-embeddings.csv | 6 +- ...inf-size-best-embedding-3-7-embeddings.csv | 6 +- ...-1-best-3-autoregression-0-predictions.csv | 8 +- ...-1-best-3-autoregression-1-predictions.csv | 8 +- ...-1-best-3-autoregression-2-predictions.csv | 12 +- ...-1-best-3-autoregression-3-predictions.csv | 22 +- ...-1-best-3-autoregression-4-predictions.csv | 12 +- ...-1-best-3-autoregression-5-predictions.csv | 18 +- ...-1-best-3-autoregression-6-predictions.csv | 20 +- ...-1-best-3-autoregression-7-predictions.csv | 10 +- ...del-categorical-1-best-3-0-predictions.csv | 2 +- ...del-categorical-1-best-3-1-predictions.csv | 2 +- ...del-categorical-1-best-3-2-predictions.csv | 2 +- ...del-categorical-1-best-3-3-predictions.csv | 4 +- ...del-categorical-1-best-3-4-predictions.csv | 2 +- ...del-categorical-1-best-3-5-predictions.csv | 4 +- ...del-categorical-1-best-3-6-predictions.csv | 2 +- ...del-categorical-1-best-3-7-predictions.csv | 2 +- ...orical-1-inf-size-best-3-0-predictions.csv | 6 +- ...orical-1-inf-size-best-3-1-predictions.csv | 6 +- ...orical-1-inf-size-best-3-2-predictions.csv | 6 +- ...orical-1-inf-size-best-3-3-predictions.csv | 12 +- ...orical-1-inf-size-best-3-4-predictions.csv | 6 +- ...orical-1-inf-size-best-3-5-predictions.csv | 12 +- ...orical-1-inf-size-best-3-6-predictions.csv | 6 +- ...orical-1-inf-size-best-3-7-predictions.csv | 6 +- ...del-categorical-3-best-3-0-predictions.csv | 2 +- ...del-categorical-3-best-3-1-predictions.csv | 2 +- ...del-categorical-3-best-3-2-predictions.csv | 2 +- ...del-categorical-3-best-3-3-predictions.csv | 4 +- ...del-categorical-3-best-3-4-predictions.csv | 2 +- ...del-categorical-3-best-3-5-predictions.csv | 4 +- ...del-categorical-3-best-3-6-predictions.csv | 2 +- ...del-categorical-3-best-3-7-predictions.csv | 2 +- ...orical-3-inf-size-best-3-0-predictions.csv | 6 +- ...orical-3-inf-size-best-3-1-predictions.csv | 6 +- ...orical-3-inf-size-best-3-2-predictions.csv | 6 +- ...orical-3-inf-size-best-3-3-predictions.csv | 12 +- ...orical-3-inf-size-best-3-4-predictions.csv | 6 +- ...orical-3-inf-size-best-3-5-predictions.csv | 12 +- ...orical-3-inf-size-best-3-6-predictions.csv | 6 +- ...orical-3-inf-size-best-3-7-predictions.csv | 6 +- ...del-categorical-5-best-3-0-predictions.csv | 2 +- ...del-categorical-5-best-3-1-predictions.csv | 2 +- ...del-categorical-5-best-3-2-predictions.csv | 2 +- ...del-categorical-5-best-3-3-predictions.csv | 4 +- ...del-categorical-5-best-3-4-predictions.csv | 2 +- ...del-categorical-5-best-3-5-predictions.csv | 4 +- ...del-categorical-5-best-3-6-predictions.csv | 2 +- ...del-categorical-5-best-3-7-predictions.csv | 2 +- ...el-categorical-50-best-3-0-predictions.csv | 2 +- ...el-categorical-50-best-3-1-predictions.csv | 2 +- ...el-categorical-50-best-3-2-predictions.csv | 2 +- ...el-categorical-50-best-3-3-predictions.csv | 4 +- ...el-categorical-50-best-3-4-predictions.csv | 2 +- ...el-categorical-50-best-3-5-predictions.csv | 4 +- ...el-categorical-50-best-3-6-predictions.csv | 2 +- ...el-categorical-50-best-3-7-predictions.csv | 2 +- ...rical-distributed-best-3-0-predictions.csv | 2 +- ...rical-distributed-best-3-1-predictions.csv | 2 +- ...rical-distributed-best-3-2-predictions.csv | 2 +- ...rical-distributed-best-3-3-predictions.csv | 4 +- ...rical-distributed-best-3-4-predictions.csv | 2 +- ...rical-distributed-best-3-5-predictions.csv | 4 +- ...rical-distributed-best-3-6-predictions.csv | 2 +- ...rical-distributed-best-3-7-predictions.csv | 2 +- ...-categorical-lazy-best-3-0-predictions.csv | 2 +- ...-categorical-lazy-best-3-1-predictions.csv | 2 +- ...-categorical-lazy-best-3-2-predictions.csv | 2 +- ...-categorical-lazy-best-3-3-predictions.csv | 4 +- ...-categorical-lazy-best-3-4-predictions.csv | 2 +- ...-categorical-lazy-best-3-5-predictions.csv | 4 +- ...-categorical-lazy-best-3-6-predictions.csv | 2 +- ...-categorical-lazy-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-best-3-0-predictions.csv | 2 +- ...cal-multitarget-5-best-3-1-predictions.csv | 2 +- ...cal-multitarget-5-best-3-2-predictions.csv | 2 +- ...cal-multitarget-5-best-3-3-predictions.csv | 4 +- ...cal-multitarget-5-best-3-4-predictions.csv | 2 +- ...cal-multitarget-5-best-3-5-predictions.csv | 4 +- ...cal-multitarget-5-best-3-6-predictions.csv | 2 +- ...cal-multitarget-5-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-last-3-0-predictions.csv | 2 +- ...cal-multitarget-5-last-3-1-predictions.csv | 2 +- ...cal-multitarget-5-last-3-2-predictions.csv | 2 +- ...cal-multitarget-5-last-3-3-predictions.csv | 4 +- ...cal-multitarget-5-last-3-4-predictions.csv | 2 +- ...cal-multitarget-5-last-3-5-predictions.csv | 4 +- ...cal-multitarget-5-last-3-6-predictions.csv | 2 +- ...cal-multitarget-5-last-3-7-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 4 +- ...uifier-model-real-3-best-3-predictions.csv | 4 +- ...uifier-model-real-5-best-3-predictions.csv | 4 +- ...ifier-model-real-50-best-3-predictions.csv | 4 +- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-0-predictions.csv | 28 +- ...custom-eval-run-3-best-1-1-predictions.csv | 28 +- ...custom-eval-run-3-best-1-2-predictions.csv | 20 +- ...custom-eval-run-3-best-1-3-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-4-predictions.csv | 46 +- ...custom-eval-run-3-best-1-5-predictions.csv | 54 +-- ...custom-eval-run-3-best-1-6-predictions.csv | 24 +- ...custom-eval-run-3-best-1-7-predictions.csv | 30 +- 141 files changed, 1488 insertions(+), 1488 deletions(-) diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv index 69fa9fda..b6602347 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,7,0.129906,-0.5716,0.18384615,0.48382017,-0.95800894,-0.06879192,-1.5230852,0.32024476,-0.032266557,-0.2324689,1.2026423,1.2646347,-1.6631967,0.8923384,1.0081543,2.146518,1.260503,-0.024123436,-0.4261092,0.71811444,0.6665925,-0.83603954,0.7274643,0.081591725,-0.46056688,-0.7607759,-0.5974563,0.5428709,0.04133952,0.6946457,0.54585093,-1.3706633,0.9921805,-1.1147716,-1.1846336,-0.6535198,1.6928166,-0.6169712,1.1777917,-0.33404595,-1.2148309,0.16786538,1.4557567,-0.7030484,0.40415078,-2.0602548,-0.44774872,-0.9443908,-0.37846982,-1.4340259,-1.0351791,-0.54817986,-1.3410672,1.057497,0.6667623,1.8221252,-1.484842,1.5296896,0.2569867,-2.118917,0.27047974,-0.802363,-0.34508198,-0.7845012,0.29995131,-1.5465921,0.3353841,-0.85972494,0.9633959,0.1057641,0.77337104,1.4520825,-2.3267972,0.8137759,-0.9976677,0.25013983,-0.27935335,0.8346441,-0.33092296,-1.0873228,0.49370176,-0.4727684,-0.7608272,-0.8022482,1.3239352,-2.2216249,0.55208087,-1.1424916,1.1881708,-0.4595066,-0.09527821,0.9202227,0.57056504,-2.0961475,1.643413,-1.046783,-0.116270036,-0.3729071,-0.61354154,-0.8894295,-1.1429787,-0.78733057,0.57443416,1.4698808,0.43613648,-0.075808406,-0.14003257,-2.9505506,-0.016151994,0.6177055,0.68450046,0.5607075,0.87257403,-1.3993292,0.35658643,-0.0063092983,-0.25653496,-0.31633425,-3.5138404,0.88777286,1.6519107,0.40932092,-0.027439872,-0.79843307,-1.1049063,0.07724614,0.56875324,-1.0056511,0.48330793,-0.157245,-1.6178644,0.1934022,-1.9760464,0.0589674,0.5110818,0.089602806,-0.968479,-1.0943018,-0.7229412,1.4727569,0.47599703,-0.6288432,-2.055541,-1.011629,0.9921429,0.5582884,0.50531685,-0.097561255,0.731814,0.6783084,0.3472921,-1.7636684,0.27717423,0.28878227,0.5271399,1.5502092,0.1620326,-0.50224847,1.5970831,-0.6694094,-0.53928703,-1.924573,-0.013257886,-0.10813448,-2.0357018,-1.6700076,0.2103319,1.2394764,-1.1461264,0.036453854,0.40960938,-0.83274007,-0.008255889,-0.30468202,0.5700774,0.6194162,-1.6036439,0.2115395,0.6522949,-0.39073604,0.21115232,-0.46797746,-0.018942848,0.09517513,-0.61526686,0.67094487,-0.45691407,-0.42524102,-0.8716745,0.07637033,-0.72497505,-1.2465461,-0.4429114,1.5433344,-0.8214027,1.8114822,-0.90004414,-0.6661404,0.8775225,0.91526055 +0,0,3,0.129906,-0.5716,0.18384615,0.48382017,-0.95800894,-0.06879192,-1.5230852,0.32024476,-0.032266557,-0.2324689,1.2026423,1.2646347,-1.6631967,0.8923384,1.0081543,2.146518,1.260503,-0.024123436,-0.4261092,0.71811444,0.6665925,-0.83603954,0.7274643,0.081591725,-0.46056688,-0.7607759,-0.5974563,0.5428709,0.04133952,0.6946457,0.54585093,-1.3706633,0.9921805,-1.1147716,-1.1846336,-0.6535198,1.6928166,-0.6169712,1.1777917,-0.33404595,-1.2148309,0.16786538,1.4557567,-0.7030484,0.40415078,-2.0602548,-0.44774872,-0.9443908,-0.37846982,-1.4340259,-1.0351791,-0.54817986,-1.3410672,1.057497,0.6667623,1.8221252,-1.484842,1.5296896,0.2569867,-2.118917,0.27047974,-0.802363,-0.34508198,-0.7845012,0.29995131,-1.5465921,0.3353841,-0.85972494,0.9633959,0.1057641,0.77337104,1.4520825,-2.3267972,0.8137759,-0.9976677,0.25013983,-0.27935335,0.8346441,-0.33092296,-1.0873228,0.49370176,-0.4727684,-0.7608272,-0.8022482,1.3239352,-2.2216249,0.55208087,-1.1424916,1.1881708,-0.4595066,-0.09527821,0.9202227,0.57056504,-2.0961475,1.643413,-1.046783,-0.116270036,-0.3729071,-0.61354154,-0.8894295,-1.1429787,-0.78733057,0.57443416,1.4698808,0.43613648,-0.075808406,-0.14003257,-2.9505506,-0.016151994,0.6177055,0.68450046,0.5607075,0.87257403,-1.3993292,0.35658643,-0.0063092983,-0.25653496,-0.31633425,-3.5138404,0.88777286,1.6519107,0.40932092,-0.027439872,-0.79843307,-1.1049063,0.07724614,0.56875324,-1.0056511,0.48330793,-0.157245,-1.6178644,0.1934022,-1.9760464,0.0589674,0.5110818,0.089602806,-0.968479,-1.0943018,-0.7229412,1.4727569,0.47599703,-0.6288432,-2.055541,-1.011629,0.9921429,0.5582884,0.50531685,-0.097561255,0.731814,0.6783084,0.3472921,-1.7636684,0.27717423,0.28878227,0.5271399,1.5502092,0.1620326,-0.50224847,1.5970831,-0.6694094,-0.53928703,-1.924573,-0.013257886,-0.10813448,-2.0357018,-1.6700076,0.2103319,1.2394764,-1.1461264,0.036453854,0.40960938,-0.83274007,-0.008255889,-0.30468202,0.5700774,0.6194162,-1.6036439,0.2115395,0.6522949,-0.39073604,0.21115232,-0.46797746,-0.018942848,0.09517513,-0.61526686,0.67094487,-0.45691407,-0.42524102,-0.8716745,0.07637033,-0.72497505,-1.2465461,-0.4429114,1.5433344,-0.8214027,1.8114822,-0.90004414,-0.6661404,0.8775225,0.91526055 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv index 31fbd49b..03e75139 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,7,0.6310362,0.334674,0.16728853,0.36186692,-0.9478092,-0.3926634,-1.3003972,-0.044596065,-0.20526434,-0.026398035,0.19380486,0.8118285,-2.0392873,1.2787219,1.2542659,1.4919833,1.088667,-0.010551525,-0.8448257,0.43219802,0.56950766,-0.8026797,0.74732757,-0.42725757,-1.0895562,-0.21274805,-0.7626764,0.026918262,-0.5983657,0.28117272,0.73443246,-0.9515915,0.81785864,-1.6458837,-0.71132445,0.23738682,1.6034894,0.019240104,1.3241774,-0.20347075,-0.7043628,0.38013214,1.2755842,-1.4004871,0.46275398,-1.9880224,-0.9198009,-1.0473716,-0.65675557,-0.84835905,-1.3224105,-0.70712143,-0.7341193,1.1134466,0.6568125,1.3994768,-0.954168,1.3808511,0.251891,-1.9545913,0.2308793,-0.26487717,-0.64339316,-0.2622317,0.603964,-1.4150456,0.6588127,0.08482099,1.1321739,-0.099473916,0.010979951,1.831232,-1.8722236,0.88451487,-0.76108027,0.080021404,-0.06698817,1.07159,-0.9351867,-1.0435191,0.026436348,-0.41959018,-0.52513933,-0.5412578,2.0294697,-2.7480896,0.53006375,-1.0863824,0.33880177,-0.14623298,0.6506472,1.0939751,-0.48882413,-1.810358,1.3499824,-0.89643645,-0.008765998,-0.06027395,-0.48046795,-1.2652203,-1.4560691,-0.946743,-0.27704963,1.9105397,0.20772824,-0.3049073,-0.34610513,-3.3094442,-0.46867853,0.65010065,0.4332434,0.5593448,0.8796511,-0.8775561,0.56195873,0.2979048,0.54411083,-0.49651542,-2.4436908,1.2963794,1.9646289,0.41595295,0.077845775,-0.8488377,-1.2093579,-0.2594095,0.12893897,-0.5105848,0.64491534,-0.017900532,-2.1271238,0.27657434,-1.7817888,-0.6613088,0.2365224,-0.07435218,-1.0712526,-0.80908316,-0.77087396,1.1399101,0.7127807,-0.94809335,-2.0319622,-0.7065952,1.1998774,0.56364894,0.62384087,-0.25050914,-0.12355562,0.011005514,0.4171477,-2.2401168,1.0053111,0.10580753,0.5745275,1.6763166,0.3952029,-0.3734366,2.0440457,-0.5067878,-0.59976774,-2.560222,0.28748652,-0.068856396,-1.7209245,-1.5318912,0.7257471,0.8677974,-0.9443491,0.32327485,0.09680152,-1.0634658,0.2343228,-0.73152024,0.6149891,0.50479555,-1.6433326,0.36874586,1.5886227,-0.48504025,-0.5036868,-0.24184056,-0.20931806,-0.046914995,-0.6832404,0.3294942,0.5522635,-0.77527386,-1.4231143,0.22487257,-0.16668221,-1.7301935,0.025722886,1.6323115,-1.0889417,1.2082901,-0.3673339,0.19397202,0.32195246,1.1962756 +1,0,3,0.6310362,0.334674,0.16728853,0.36186692,-0.9478092,-0.3926634,-1.3003972,-0.044596065,-0.20526434,-0.026398035,0.19380486,0.8118285,-2.0392873,1.2787219,1.2542659,1.4919833,1.088667,-0.010551525,-0.8448257,0.43219802,0.56950766,-0.8026797,0.74732757,-0.42725757,-1.0895562,-0.21274805,-0.7626764,0.026918262,-0.5983657,0.28117272,0.73443246,-0.9515915,0.81785864,-1.6458837,-0.71132445,0.23738682,1.6034894,0.019240104,1.3241774,-0.20347075,-0.7043628,0.38013214,1.2755842,-1.4004871,0.46275398,-1.9880224,-0.9198009,-1.0473716,-0.65675557,-0.84835905,-1.3224105,-0.70712143,-0.7341193,1.1134466,0.6568125,1.3994768,-0.954168,1.3808511,0.251891,-1.9545913,0.2308793,-0.26487717,-0.64339316,-0.2622317,0.603964,-1.4150456,0.6588127,0.08482099,1.1321739,-0.099473916,0.010979951,1.831232,-1.8722236,0.88451487,-0.76108027,0.080021404,-0.06698817,1.07159,-0.9351867,-1.0435191,0.026436348,-0.41959018,-0.52513933,-0.5412578,2.0294697,-2.7480896,0.53006375,-1.0863824,0.33880177,-0.14623298,0.6506472,1.0939751,-0.48882413,-1.810358,1.3499824,-0.89643645,-0.008765998,-0.06027395,-0.48046795,-1.2652203,-1.4560691,-0.946743,-0.27704963,1.9105397,0.20772824,-0.3049073,-0.34610513,-3.3094442,-0.46867853,0.65010065,0.4332434,0.5593448,0.8796511,-0.8775561,0.56195873,0.2979048,0.54411083,-0.49651542,-2.4436908,1.2963794,1.9646289,0.41595295,0.077845775,-0.8488377,-1.2093579,-0.2594095,0.12893897,-0.5105848,0.64491534,-0.017900532,-2.1271238,0.27657434,-1.7817888,-0.6613088,0.2365224,-0.07435218,-1.0712526,-0.80908316,-0.77087396,1.1399101,0.7127807,-0.94809335,-2.0319622,-0.7065952,1.1998774,0.56364894,0.62384087,-0.25050914,-0.12355562,0.011005514,0.4171477,-2.2401168,1.0053111,0.10580753,0.5745275,1.6763166,0.3952029,-0.3734366,2.0440457,-0.5067878,-0.59976774,-2.560222,0.28748652,-0.068856396,-1.7209245,-1.5318912,0.7257471,0.8677974,-0.9443491,0.32327485,0.09680152,-1.0634658,0.2343228,-0.73152024,0.6149891,0.50479555,-1.6433326,0.36874586,1.5886227,-0.48504025,-0.5036868,-0.24184056,-0.20931806,-0.046914995,-0.6832404,0.3294942,0.5522635,-0.77527386,-1.4231143,0.22487257,-0.16668221,-1.7301935,0.025722886,1.6323115,-1.0889417,1.2082901,-0.3673339,0.19397202,0.32195246,1.1962756 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv index c085fdb1..ae9e5907 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,7,0.14896812,-0.7527326,0.098616265,1.5360665,-0.83212125,-0.8661572,0.87993956,0.7707245,0.8990906,0.35979807,1.5049816,0.9981651,-2.2045355,0.46189427,1.3522851,0.81136656,-0.3787586,-0.41562492,-1.6569216,0.9181141,0.8893558,-0.6614972,0.35581687,1.0705252,0.61813873,-1.6933419,-1.6523572,0.4721115,-0.6415743,-0.8052874,-1.1905364,-1.3483986,0.7520653,-1.4446422,0.032763932,-0.77299255,0.8698881,-0.9012206,-0.105312526,-0.03295452,-1.7241203,0.40647608,1.3450831,0.00073365227,0.23433386,-0.9771891,-0.1076481,1.2662536,-0.7311288,-0.6664411,0.006385311,-0.31623417,0.108964175,0.43619278,0.284846,0.34632137,0.13046862,1.7500304,-0.31573698,-2.1822793,-0.073760144,-0.63938767,-2.4171443,-1.3825034,1.4659554,0.061223067,-2.0762868,-1.1751351,-0.081808135,-1.6416469,0.61133504,1.4318693,-1.5806884,1.4651628,-0.42543516,0.27195463,-1.9691073,0.5124442,0.7785031,-1.2194265,-1.2140163,-0.21277447,-0.64433247,-0.34592688,1.480311,-1.6828288,0.5201631,-0.45541105,-0.17800705,-0.29835147,0.06779409,0.17683165,-0.5690362,-0.4795994,0.24317117,0.7038561,0.47528592,0.38569337,-0.92215085,0.12652376,-0.5222174,0.79115415,0.1062228,1.2142566,0.57600933,0.3640244,1.4705232,-1.8675983,-0.151888,0.84477943,0.5522926,0.25622973,0.50753284,-0.87316334,-1.7905984,-0.8826149,-0.80747306,1.2090178,-2.0752993,-0.18883346,0.35716313,0.12954345,-0.5863821,-0.3407679,-0.8663318,0.8249107,1.2127439,-1.0448643,-0.53810304,-0.6317458,-0.50353926,0.4781922,-0.91658026,-0.21077591,0.49530765,0.66140443,-0.061057545,-0.011890421,-1.4830853,-0.5170973,1.2860987,-0.48179677,-1.2840593,-0.12392463,-0.5612262,0.5283732,1.6894128,-0.015182488,1.6194154,0.6165103,0.846802,-1.259089,-0.19867773,0.05881237,0.87158996,1.7141718,-2.1852305,-0.17253563,1.7481165,0.7287171,-0.9333205,-0.5228718,-1.1484395,-1.0014697,-1.5860218,-0.9670557,0.5662043,-0.6358826,0.6285491,1.4611297,-1.5053117,-0.73541224,-1.1782357,0.4759477,0.56338716,0.29015008,-0.5925466,0.4408311,-0.23582521,-1.1164836,1.0048937,-0.39400414,-0.7058568,0.99132824,-1.3044466,2.0163782,-1.8661258,0.013690879,-0.98518753,-0.2840235,-1.4385029,-0.70052123,-1.5944667,1.7985247,0.9840921,1.857999,-0.74875927,1.5471251,0.73758185,0.14302142 +2,0,2,0.14896812,-0.7527326,0.098616265,1.5360665,-0.83212125,-0.8661572,0.87993956,0.7707245,0.8990906,0.35979807,1.5049816,0.9981651,-2.2045355,0.46189427,1.3522851,0.81136656,-0.3787586,-0.41562492,-1.6569216,0.9181141,0.8893558,-0.6614972,0.35581687,1.0705252,0.61813873,-1.6933419,-1.6523572,0.4721115,-0.6415743,-0.8052874,-1.1905364,-1.3483986,0.7520653,-1.4446422,0.032763932,-0.77299255,0.8698881,-0.9012206,-0.105312526,-0.03295452,-1.7241203,0.40647608,1.3450831,0.00073365227,0.23433386,-0.9771891,-0.1076481,1.2662536,-0.7311288,-0.6664411,0.006385311,-0.31623417,0.108964175,0.43619278,0.284846,0.34632137,0.13046862,1.7500304,-0.31573698,-2.1822793,-0.073760144,-0.63938767,-2.4171443,-1.3825034,1.4659554,0.061223067,-2.0762868,-1.1751351,-0.081808135,-1.6416469,0.61133504,1.4318693,-1.5806884,1.4651628,-0.42543516,0.27195463,-1.9691073,0.5124442,0.7785031,-1.2194265,-1.2140163,-0.21277447,-0.64433247,-0.34592688,1.480311,-1.6828288,0.5201631,-0.45541105,-0.17800705,-0.29835147,0.06779409,0.17683165,-0.5690362,-0.4795994,0.24317117,0.7038561,0.47528592,0.38569337,-0.92215085,0.12652376,-0.5222174,0.79115415,0.1062228,1.2142566,0.57600933,0.3640244,1.4705232,-1.8675983,-0.151888,0.84477943,0.5522926,0.25622973,0.50753284,-0.87316334,-1.7905984,-0.8826149,-0.80747306,1.2090178,-2.0752993,-0.18883346,0.35716313,0.12954345,-0.5863821,-0.3407679,-0.8663318,0.8249107,1.2127439,-1.0448643,-0.53810304,-0.6317458,-0.50353926,0.4781922,-0.91658026,-0.21077591,0.49530765,0.66140443,-0.061057545,-0.011890421,-1.4830853,-0.5170973,1.2860987,-0.48179677,-1.2840593,-0.12392463,-0.5612262,0.5283732,1.6894128,-0.015182488,1.6194154,0.6165103,0.846802,-1.259089,-0.19867773,0.05881237,0.87158996,1.7141718,-2.1852305,-0.17253563,1.7481165,0.7287171,-0.9333205,-0.5228718,-1.1484395,-1.0014697,-1.5860218,-0.9670557,0.5662043,-0.6358826,0.6285491,1.4611297,-1.5053117,-0.73541224,-1.1782357,0.4759477,0.56338716,0.29015008,-0.5925466,0.4408311,-0.23582521,-1.1164836,1.0048937,-0.39400414,-0.7058568,0.99132824,-1.3044466,2.0163782,-1.8661258,0.013690879,-0.98518753,-0.2840235,-1.4385029,-0.70052123,-1.5944667,1.7985247,0.9840921,1.857999,-0.74875927,1.5471251,0.73758185,0.14302142 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv index ecec6901..26935d23 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,7,0.3853767,-0.7623611,0.5445376,1.1489445,-0.93219095,-1.0841124,-0.27961808,0.19042599,0.06699983,0.6020505,0.7307122,0.9754021,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.97008324,0.62717986,1.3900626,-0.9464742,0.4837369,-0.030570975,-0.4290407,-1.1276956,-0.7923079,0.563961,-0.40978292,-0.23345281,-0.27136502,-0.8576837,0.69629353,-1.6003033,0.11132374,-0.5791753,1.9399358,-0.92576635,0.53490555,-0.49527624,-1.3456327,-0.176038,1.349483,-1.1282389,0.20037875,-0.955993,-0.8822724,-0.07519414,-0.77170074,-0.9350284,-0.5532876,-0.94019765,-0.10448791,1.1707093,0.6575927,1.3083346,-0.6112351,1.6713382,0.16979486,-2.0898654,0.00984007,-0.44183394,-1.1921827,-1.2657421,1.6432866,-1.130562,-0.46437404,-0.8430221,0.7453206,-0.65720564,0.35852155,1.6237744,-2.0383017,1.1427602,-0.8917945,0.20761068,-1.3489536,0.62074554,-0.44713894,-1.8621219,-0.5244267,-0.45581624,-0.39755735,-0.43458134,1.8005577,-2.0100255,0.3588848,-1.2393866,0.95991385,-0.65878445,0.741961,0.43640068,-0.37811747,-1.3537853,1.0124421,0.12569562,0.45669925,-0.062139705,-0.6899904,-0.7770923,-1.2683299,-0.42139253,-0.4123218,1.7224118,0.38184428,-0.5022623,0.1969878,-2.748319,-0.18802647,1.3159317,0.4502178,-0.26388726,0.5703611,-0.85277075,-0.46127146,0.23827219,-0.4298961,0.41151482,-2.6187694,0.5646321,1.1139392,-0.032928437,0.1021941,-0.6601091,-1.3054987,0.09395422,0.43201578,-1.4673975,0.08933542,-0.71540993,-1.6057761,0.4075759,-1.6277498,0.05748504,-0.18920064,0.1056629,-0.8918468,-0.17913246,-1.4436157,0.077475116,0.6109399,-0.83478075,-1.3056538,-0.87130284,0.28275952,0.87232274,0.8705629,-0.14861424,0.91572547,0.6586051,0.6749446,-1.7701945,0.1629751,0.4728509,1.0638493,1.7032028,-0.6542733,-0.017882407,2.1696196,-0.047487322,-0.77344674,-2.259672,-1.1815661,-0.5823015,-1.638453,-1.8893389,0.9176421,0.32815483,0.4039307,0.17879207,-0.32735565,-1.1835169,-1.0626798,-0.12413608,-0.13082603,0.5998312,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061567,-0.100991376,0.51506233,-1.2538948,1.3633755,-0.58895797,-0.21253212,-1.3333261,0.50792605,-0.97876984,-1.5163478,-0.6666502,1.8272516,-1.4814882,2.3199954,-0.6350161,0.1867251,0.83364874,0.9136821 -4,0,7,1.8327771,0.9652215,-0.25314748,0.21621384,1.9031243,0.7036974,-0.930624,-0.8883423,0.55273986,0.5570372,1.0132973,-0.96464247,-0.51950616,-0.05579906,-0.37479147,0.44072837,0.16671647,0.5790387,0.41375738,0.80011296,-1.5359617,-0.22593148,1.7854865,-0.71542114,-1.0921632,-0.041372035,-0.21795599,-0.3369114,-1.2671196,-0.7473329,0.18677177,-1.8774186,2.0318227,0.2733341,-0.9697609,-0.58609706,-0.36415994,0.22731349,0.4721085,-1.3540337,-0.25599056,0.65862226,1.5556433,-0.81543595,1.168724,-2.2140863,0.42116505,0.47876942,-0.6478898,0.44233415,0.20755047,-0.5501464,-0.5956206,-0.60861623,-1.3033564,-0.9219007,1.9484233,-0.02818083,0.9555862,-0.6107661,1.3185904,0.4262676,-1.1561952,-0.5161904,-0.8352084,0.22098036,-0.32627368,-1.1956955,1.7369198,-1.1766452,0.07778335,-1.4228516,-2.164931,0.61946803,-0.4467436,-0.01088463,-0.43634295,1.737324,0.6609657,-0.20005353,-0.56503403,0.29499987,0.11585043,-0.05404717,1.7766248,-1.624335,0.4819137,1.0377663,-1.2305183,0.8004889,-1.9219416,1.6361125,0.13642022,-1.2401025,0.56233984,-0.15820779,1.5966985,-0.25904042,-0.5514964,0.43703973,0.4001095,-0.12492117,1.6866364,2.0976322,-0.49593046,0.8581702,0.2179227,-0.6346643,-1.7050065,-1.6924847,-0.08375938,-0.38175428,-0.32693657,-0.9640046,-0.9026502,-0.5941344,0.19496141,-0.8319495,-0.55289805,-0.80228716,1.650307,1.2991756,-1.0835283,0.39504835,0.29286614,-0.13108593,-0.38219267,-0.59767234,-1.3788447,-0.26507112,0.34214637,1.0462471,1.5181249,-0.59406966,0.58952206,2.7725644,-1.0286809,1.18978,0.3369609,-1.0014182,-0.02982089,-0.5898692,-0.99967504,0.01042568,1.4441023,-0.87508506,0.57642156,2.5007522,-1.5390786,-1.6458069,-1.7197639,-0.74723464,1.1642295,-0.31345525,-0.0055794707,1.5905838,-0.9592406,-0.4174035,-0.6339656,0.8530592,1.2996758,-0.11439483,0.3914311,0.46125937,-3.0907335,-0.27514952,0.20107323,-1.4204425,-1.7638282,-0.48746726,-1.2546072,-0.2341572,-0.10110028,-0.24766739,1.7387944,-0.7589158,0.75030494,0.5836463,0.10834081,0.7989048,-0.4846295,-0.62584215,0.5027704,1.1866003,-0.28132582,-0.80156577,0.44897035,1.1347668,0.07279313,-0.61313444,0.8892234,0.71706593,0.65837866,0.33229896,1.174505,-0.7435528,0.5451965,0.36238024,1.4138215,0.37747207 +3,0,2,0.3853767,-0.7623611,0.5445376,1.1489445,-0.93219095,-1.0841124,-0.27961808,0.19042599,0.06699983,0.6020505,0.7307122,0.9754021,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.97008324,0.62717986,1.3900626,-0.9464742,0.4837369,-0.030570975,-0.4290407,-1.1276956,-0.7923079,0.563961,-0.40978292,-0.23345281,-0.27136502,-0.8576837,0.69629353,-1.6003033,0.11132374,-0.5791753,1.9399358,-0.92576635,0.53490555,-0.49527624,-1.3456327,-0.176038,1.349483,-1.1282389,0.20037875,-0.955993,-0.8822724,-0.07519414,-0.77170074,-0.9350284,-0.5532876,-0.94019765,-0.10448791,1.1707093,0.6575927,1.3083346,-0.6112351,1.6713382,0.16979486,-2.0898654,0.00984007,-0.44183394,-1.1921827,-1.2657421,1.6432866,-1.130562,-0.46437404,-0.8430221,0.7453206,-0.65720564,0.35852155,1.6237744,-2.0383017,1.1427602,-0.8917945,0.20761068,-1.3489536,0.62074554,-0.44713894,-1.8621219,-0.5244267,-0.45581624,-0.39755735,-0.43458134,1.8005577,-2.0100255,0.3588848,-1.2393866,0.95991385,-0.65878445,0.741961,0.43640068,-0.37811747,-1.3537853,1.0124421,0.12569562,0.45669925,-0.062139705,-0.6899904,-0.7770923,-1.2683299,-0.42139253,-0.4123218,1.7224118,0.38184428,-0.5022623,0.1969878,-2.748319,-0.18802647,1.3159317,0.4502178,-0.26388726,0.5703611,-0.85277075,-0.46127146,0.23827219,-0.4298961,0.41151482,-2.6187694,0.5646321,1.1139392,-0.032928437,0.1021941,-0.6601091,-1.3054987,0.09395422,0.43201578,-1.4673975,0.08933542,-0.71540993,-1.6057761,0.4075759,-1.6277498,0.05748504,-0.18920064,0.1056629,-0.8918468,-0.17913246,-1.4436157,0.077475116,0.6109399,-0.83478075,-1.3056538,-0.87130284,0.28275952,0.87232274,0.8705629,-0.14861424,0.91572547,0.6586051,0.6749446,-1.7701945,0.1629751,0.4728509,1.0638493,1.7032028,-0.6542733,-0.017882407,2.1696196,-0.047487322,-0.77344674,-2.259672,-1.1815661,-0.5823015,-1.638453,-1.8893389,0.9176421,0.32815483,0.4039307,0.17879207,-0.32735565,-1.1835169,-1.0626798,-0.12413608,-0.13082603,0.5998312,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061567,-0.100991376,0.51506233,-1.2538948,1.3633755,-0.58895797,-0.21253212,-1.3333261,0.50792605,-0.97876984,-1.5163478,-0.6666502,1.8272516,-1.4814882,2.3199954,-0.6350161,0.1867251,0.83364874,0.9136821 +4,0,2,1.8327771,0.9652215,-0.25314748,0.21621384,1.9031243,0.7036974,-0.930624,-0.8883423,0.55273986,0.5570372,1.0132973,-0.96464247,-0.51950616,-0.05579906,-0.37479147,0.44072837,0.16671647,0.5790387,0.41375738,0.80011296,-1.5359617,-0.22593148,1.7854865,-0.71542114,-1.0921632,-0.041372035,-0.21795599,-0.3369114,-1.2671196,-0.7473329,0.18677177,-1.8774186,2.0318227,0.2733341,-0.9697609,-0.58609706,-0.36415994,0.22731349,0.4721085,-1.3540337,-0.25599056,0.65862226,1.5556433,-0.81543595,1.168724,-2.2140863,0.42116505,0.47876942,-0.6478898,0.44233415,0.20755047,-0.5501464,-0.5956206,-0.60861623,-1.3033564,-0.9219007,1.9484233,-0.02818083,0.9555862,-0.6107661,1.3185904,0.4262676,-1.1561952,-0.5161904,-0.8352084,0.22098036,-0.32627368,-1.1956955,1.7369198,-1.1766452,0.07778335,-1.4228516,-2.164931,0.61946803,-0.4467436,-0.01088463,-0.43634295,1.737324,0.6609657,-0.20005353,-0.56503403,0.29499987,0.11585043,-0.05404717,1.7766248,-1.624335,0.4819137,1.0377663,-1.2305183,0.8004889,-1.9219416,1.6361125,0.13642022,-1.2401025,0.56233984,-0.15820779,1.5966985,-0.25904042,-0.5514964,0.43703973,0.4001095,-0.12492117,1.6866364,2.0976322,-0.49593046,0.8581702,0.2179227,-0.6346643,-1.7050065,-1.6924847,-0.08375938,-0.38175428,-0.32693657,-0.9640046,-0.9026502,-0.5941344,0.19496141,-0.8319495,-0.55289805,-0.80228716,1.650307,1.2991756,-1.0835283,0.39504835,0.29286614,-0.13108593,-0.38219267,-0.59767234,-1.3788447,-0.26507112,0.34214637,1.0462471,1.5181249,-0.59406966,0.58952206,2.7725644,-1.0286809,1.18978,0.3369609,-1.0014182,-0.02982089,-0.5898692,-0.99967504,0.01042568,1.4441023,-0.87508506,0.57642156,2.5007522,-1.5390786,-1.6458069,-1.7197639,-0.74723464,1.1642295,-0.31345525,-0.0055794707,1.5905838,-0.9592406,-0.4174035,-0.6339656,0.8530592,1.2996758,-0.11439483,0.3914311,0.46125937,-3.0907335,-0.27514952,0.20107323,-1.4204425,-1.7638282,-0.48746726,-1.2546072,-0.2341572,-0.10110028,-0.24766739,1.7387944,-0.7589158,0.75030494,0.5836463,0.10834081,0.7989048,-0.4846295,-0.62584215,0.5027704,1.1866003,-0.28132582,-0.80156577,0.44897035,1.1347668,0.07279313,-0.61313444,0.8892234,0.71706593,0.65837866,0.33229896,1.174505,-0.7435528,0.5451965,0.36238024,1.4138215,0.37747207 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv index 5278ebbd..0777c948 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,7,0.8678487,-1.1492083,-0.2957783,0.9786945,-1.9542453,-0.07664241,-0.039730284,-0.09718514,-0.465507,0.088307,0.014937709,1.1039451,-1.9457144,0.7994327,1.8773037,1.5537523,0.39788526,-0.4953133,-1.4370357,1.0003625,0.84108806,-0.99132866,0.15745479,0.4423289,-1.5118519,-1.9748083,-1.3705087,0.11752797,0.04718379,0.7227247,0.15624402,-1.3321223,0.8274153,-0.5020909,-0.8579634,-0.8208209,1.370573,-0.32510355,0.9213625,-0.45679018,-2.0167282,0.77819085,1.3592292,-1.6879606,0.35116172,-1.6433353,-0.8796014,0.47101834,-0.49356297,-1.540319,-0.56203103,-0.74793,0.114850305,0.5929445,1.0806793,0.8520335,-0.28449142,2.3426988,-0.71767795,-2.077216,0.4469343,-0.51118195,-1.8134437,-0.31995004,0.5275096,-0.7924808,-0.90600455,-0.5945146,0.62720716,-0.76678073,1.4406855,0.8350828,-1.3691337,0.43675637,-0.93423057,-0.58701897,-0.53982204,1.3742961,-0.3684079,-1.3804277,-1.3538327,-1.2029366,-0.6361641,-0.2061667,1.1179498,-0.8696951,0.46374846,-0.9316529,0.36905092,0.18406926,0.5726551,-0.097014,-0.3084513,-1.0851082,1.2294934,-0.43448213,0.4714254,0.29762262,-0.66758883,-0.2411063,-0.8684391,-0.15433899,0.3217168,1.7343627,0.6421659,-0.39611214,1.2057977,-3.0774305,0.8041049,1.0713868,0.3196744,0.885012,0.5413774,-1.8904048,-0.6433149,-0.7131405,-0.89828914,0.49162254,-1.7892698,1.266022,1.2143357,0.16972247,-0.4222612,-0.9209112,-1.2874361,-0.30553934,0.78019506,-1.3130422,-0.54638046,-0.06269859,-1.2766076,0.3067186,-1.1979859,-0.5041537,0.24134871,0.9985403,-0.20058915,-0.19003288,-0.9156221,0.73883057,0.60628974,-0.39632013,-1.401826,0.26617125,1.2859261,1.7502289,1.1291437,-0.2593595,1.014177,-0.002415313,-0.0126089025,-1.6622946,0.84452736,0.40896028,0.24172997,0.849172,-1.2459072,0.4409478,2.3070042,-0.20285252,-0.9055849,-1.9905902,-0.6291581,-0.70495003,-1.5236276,-1.6411536,0.28731304,0.23528825,-0.85808456,0.8726922,-0.8224612,-1.3814898,-0.8996288,0.0075938655,1.4490063,0.62249285,-1.3583359,-0.39259228,0.55505204,-1.1764418,1.2858897,-0.5120127,-0.3620197,0.028119635,-1.0583314,0.6261959,-0.93444824,-0.68522364,-0.5574861,0.12772661,-1.1170981,-1.7487799,-0.62091166,1.1936655,-0.55242705,1.6852115,-1.5539129,0.93077433,0.54523623,-0.32935345 +5,0,2,0.8678487,-1.1492083,-0.2957783,0.9786945,-1.9542453,-0.07664241,-0.039730284,-0.09718514,-0.465507,0.088307,0.014937709,1.1039451,-1.9457144,0.7994327,1.8773037,1.5537523,0.39788526,-0.4953133,-1.4370357,1.0003625,0.84108806,-0.99132866,0.15745479,0.4423289,-1.5118519,-1.9748083,-1.3705087,0.11752797,0.04718379,0.7227247,0.15624402,-1.3321223,0.8274153,-0.5020909,-0.8579634,-0.8208209,1.370573,-0.32510355,0.9213625,-0.45679018,-2.0167282,0.77819085,1.3592292,-1.6879606,0.35116172,-1.6433353,-0.8796014,0.47101834,-0.49356297,-1.540319,-0.56203103,-0.74793,0.114850305,0.5929445,1.0806793,0.8520335,-0.28449142,2.3426988,-0.71767795,-2.077216,0.4469343,-0.51118195,-1.8134437,-0.31995004,0.5275096,-0.7924808,-0.90600455,-0.5945146,0.62720716,-0.76678073,1.4406855,0.8350828,-1.3691337,0.43675637,-0.93423057,-0.58701897,-0.53982204,1.3742961,-0.3684079,-1.3804277,-1.3538327,-1.2029366,-0.6361641,-0.2061667,1.1179498,-0.8696951,0.46374846,-0.9316529,0.36905092,0.18406926,0.5726551,-0.097014,-0.3084513,-1.0851082,1.2294934,-0.43448213,0.4714254,0.29762262,-0.66758883,-0.2411063,-0.8684391,-0.15433899,0.3217168,1.7343627,0.6421659,-0.39611214,1.2057977,-3.0774305,0.8041049,1.0713868,0.3196744,0.885012,0.5413774,-1.8904048,-0.6433149,-0.7131405,-0.89828914,0.49162254,-1.7892698,1.266022,1.2143357,0.16972247,-0.4222612,-0.9209112,-1.2874361,-0.30553934,0.78019506,-1.3130422,-0.54638046,-0.06269859,-1.2766076,0.3067186,-1.1979859,-0.5041537,0.24134871,0.9985403,-0.20058915,-0.19003288,-0.9156221,0.73883057,0.60628974,-0.39632013,-1.401826,0.26617125,1.2859261,1.7502289,1.1291437,-0.2593595,1.014177,-0.002415313,-0.0126089025,-1.6622946,0.84452736,0.40896028,0.24172997,0.849172,-1.2459072,0.4409478,2.3070042,-0.20285252,-0.9055849,-1.9905902,-0.6291581,-0.70495003,-1.5236276,-1.6411536,0.28731304,0.23528825,-0.85808456,0.8726922,-0.8224612,-1.3814898,-0.8996288,0.0075938655,1.4490063,0.62249285,-1.3583359,-0.39259228,0.55505204,-1.1764418,1.2858897,-0.5120127,-0.3620197,0.028119635,-1.0583314,0.6261959,-0.93444824,-0.68522364,-0.5574861,0.12772661,-1.1170981,-1.7487799,-0.62091166,1.1936655,-0.55242705,1.6852115,-1.5539129,0.93077433,0.54523623,-0.32935345 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv index 257f845b..79e33b1c 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,7,0.47420236,1.2638448,-0.2942875,0.6063466,0.32506454,-0.011651637,-1.3833891,-1.2344038,-0.45170528,1.0377885,1.8840404,-0.33119497,-1.0696628,0.9726884,0.80814546,0.9354395,0.7167119,0.42845112,-0.015223959,0.81312424,-1.2162951,-1.1050558,0.6366257,-1.6387163,-0.9819105,-0.4953311,0.12158322,-0.67469686,-1.7174512,-0.2108714,1.0931984,-1.6311551,1.6655928,-1.1295462,-0.82908773,-0.27834365,0.35710472,0.7679168,1.2862792,-1.5655477,-0.47575817,0.38371342,0.8257985,-0.6541342,-0.06021277,-1.688667,0.31571636,-1.3439896,-1.3430765,0.0015745121,-0.87187445,-1.2474327,-0.82622105,0.53904265,0.4325758,0.7165552,-0.013134802,1.0078027,1.2916025,-1.6230769,0.1835245,1.4117191,-0.9933948,-0.17660141,-0.85399544,0.1709921,1.0725634,-0.23263937,1.7940853,0.49845877,-0.58278996,0.9100562,-2.1336787,-0.0805108,-0.15371813,0.5364138,0.036808733,0.27225935,0.43129516,-0.5169288,0.8617008,0.37777528,-0.3340564,-0.50667363,2.3349266,-3.2664785,0.23907632,0.13636121,-0.1356525,-0.2975334,-0.56251806,1.5495608,-0.25081053,-2.012842,1.4139545,-0.16621536,0.7844478,0.5935697,-0.85539633,-0.5690532,-0.5415988,-0.8971024,1.8330035,2.7651486,1.039496,-0.23426563,-0.57880294,-1.180363,-1.095461,-0.30837286,0.20563056,-0.45784765,0.799281,-0.585805,0.84253716,0.11244704,0.7201907,-1.2291319,-1.666961,-0.44462907,2.2034056,1.0664692,0.81338817,-0.4559743,-1.2628946,-0.22252318,-1.3892785,-0.74601096,0.09792413,-0.9173109,-1.1128796,0.4023642,-0.7147697,-0.77360827,0.39257395,2.3405876,-0.2756536,0.4053474,-0.8130045,-0.097918354,0.619593,-1.450402,-1.562418,-1.1680082,1.2857003,-1.2578353,0.41585723,1.0423979,-0.53722227,-0.38153183,-0.51949257,-1.5859616,1.3256049,-0.097610995,0.5610497,2.6576302,1.24299,-0.7566359,0.91003966,0.73991305,-0.10965724,-2.0155516,-0.009600935,-0.68587035,-1.7821821,-1.0589889,-0.13436046,0.4220983,-1.1379086,0.48460454,-0.61625963,-0.3349504,0.53863937,0.18685772,0.26678517,-0.20175351,-0.7204558,0.21726036,1.1120167,0.79319596,-0.36998117,-0.6713484,0.72676253,-0.18856229,0.46767554,-1.068567,0.32332298,-0.06708165,-1.2248515,-0.7845498,0.5460865,-0.61680746,1.510683,1.7673895,-0.68418354,0.44412625,0.7936944,-0.8888349,0.03981725,1.6578218 -7,0,7,-0.087797716,-0.72064584,0.3919503,0.30277744,-1.0405561,-0.8779837,-0.7976403,0.071234636,-0.29967022,0.2773496,-0.10566512,0.77108765,-1.7671878,0.824929,1.5373951,1.5010269,1.4846264,-0.7896349,-0.88700837,0.6919234,0.6787521,-0.4330691,0.6862605,-0.2904699,-0.9619546,-0.36133736,-0.9279964,0.18862396,-0.13149612,0.33348706,0.35246968,-0.86275643,0.7647198,-1.5118189,-0.24293631,-0.62797725,1.9434764,-0.15230915,1.2640054,-0.53051674,-1.571733,-0.23882791,1.2569784,-1.5155659,0.31609696,-1.4623228,-1.5276749,-0.63017756,-0.15530244,-1.2590177,-1.1136601,-0.8283698,-0.33160418,1.6386752,0.7145629,1.4172399,-0.9240341,1.155421,-0.20543078,-2.2690709,0.032772336,-0.6074186,-0.8408421,-0.43909267,1.1674483,-1.5343087,0.394567,-0.6319556,0.69497925,-0.17052399,0.66387993,1.6770401,-1.6856111,0.8501759,-1.0100725,-0.06956196,-0.49753228,0.45815924,-0.8491857,-1.5388991,-0.21994229,-0.61590695,-0.43685135,-0.54839456,1.844041,-1.9056602,0.23943688,-0.8901972,1.0178715,-0.4182901,0.47147426,0.28248206,-0.42557982,-1.3693498,1.378879,-0.832486,0.2925802,0.03857666,-0.99315274,-0.88979,-1.3541446,-0.38844082,-0.56667507,2.0802116,0.20410404,-0.5688037,-0.25536713,-2.8470826,0.22910759,1.339881,0.41405326,0.3723613,1.0213392,-0.61211425,0.20765173,0.22666255,-0.052260146,0.20032822,-2.3570492,1.4302993,1.4743407,-0.2883624,0.44256923,-0.7141606,-0.87645143,-0.20459794,0.5313736,-1.1576004,0.2882262,-0.3185675,-2.041501,0.55573565,-1.3157725,0.2728311,0.18704554,-0.34522107,-0.7096739,-0.43224367,-1.601502,1.0732054,0.91898465,-0.68341035,-1.5872612,-0.59699357,0.90725124,1.1939424,0.6279298,-0.49085775,0.9603635,0.668255,0.66679686,-1.698892,0.26019427,0.57732755,0.5378443,1.2200284,0.32803506,-0.15348187,2.141097,-0.014183752,-1.0378197,-2.6077065,-0.3066731,-0.06714382,-1.3892245,-1.7354015,0.53556174,0.9041617,-0.32855996,0.12410693,-0.40722385,-1.3432457,-0.73200125,-0.25400352,0.17272082,1.1034756,-2.2850537,0.6256181,1.7550697,-1.3452938,-0.017986335,-0.54053277,0.05288191,0.28705782,-0.98898697,0.7631376,0.15638618,-0.6830087,-1.3387133,0.62448514,-0.7181843,-1.9862368,0.070950225,1.8409837,-1.5815738,1.639628,-0.8540574,0.19265085,0.4421182,0.67777854 +6,0,3,0.47420236,1.2638448,-0.2942875,0.6063466,0.32506454,-0.011651637,-1.3833891,-1.2344038,-0.45170528,1.0377885,1.8840404,-0.33119497,-1.0696628,0.9726884,0.80814546,0.9354395,0.7167119,0.42845112,-0.015223959,0.81312424,-1.2162951,-1.1050558,0.6366257,-1.6387163,-0.9819105,-0.4953311,0.12158322,-0.67469686,-1.7174512,-0.2108714,1.0931984,-1.6311551,1.6655928,-1.1295462,-0.82908773,-0.27834365,0.35710472,0.7679168,1.2862792,-1.5655477,-0.47575817,0.38371342,0.8257985,-0.6541342,-0.06021277,-1.688667,0.31571636,-1.3439896,-1.3430765,0.0015745121,-0.87187445,-1.2474327,-0.82622105,0.53904265,0.4325758,0.7165552,-0.013134802,1.0078027,1.2916025,-1.6230769,0.1835245,1.4117191,-0.9933948,-0.17660141,-0.85399544,0.1709921,1.0725634,-0.23263937,1.7940853,0.49845877,-0.58278996,0.9100562,-2.1336787,-0.0805108,-0.15371813,0.5364138,0.036808733,0.27225935,0.43129516,-0.5169288,0.8617008,0.37777528,-0.3340564,-0.50667363,2.3349266,-3.2664785,0.23907632,0.13636121,-0.1356525,-0.2975334,-0.56251806,1.5495608,-0.25081053,-2.012842,1.4139545,-0.16621536,0.7844478,0.5935697,-0.85539633,-0.5690532,-0.5415988,-0.8971024,1.8330035,2.7651486,1.039496,-0.23426563,-0.57880294,-1.180363,-1.095461,-0.30837286,0.20563056,-0.45784765,0.799281,-0.585805,0.84253716,0.11244704,0.7201907,-1.2291319,-1.666961,-0.44462907,2.2034056,1.0664692,0.81338817,-0.4559743,-1.2628946,-0.22252318,-1.3892785,-0.74601096,0.09792413,-0.9173109,-1.1128796,0.4023642,-0.7147697,-0.77360827,0.39257395,2.3405876,-0.2756536,0.4053474,-0.8130045,-0.097918354,0.619593,-1.450402,-1.562418,-1.1680082,1.2857003,-1.2578353,0.41585723,1.0423979,-0.53722227,-0.38153183,-0.51949257,-1.5859616,1.3256049,-0.097610995,0.5610497,2.6576302,1.24299,-0.7566359,0.91003966,0.73991305,-0.10965724,-2.0155516,-0.009600935,-0.68587035,-1.7821821,-1.0589889,-0.13436046,0.4220983,-1.1379086,0.48460454,-0.61625963,-0.3349504,0.53863937,0.18685772,0.26678517,-0.20175351,-0.7204558,0.21726036,1.1120167,0.79319596,-0.36998117,-0.6713484,0.72676253,-0.18856229,0.46767554,-1.068567,0.32332298,-0.06708165,-1.2248515,-0.7845498,0.5460865,-0.61680746,1.510683,1.7673895,-0.68418354,0.44412625,0.7936944,-0.8888349,0.03981725,1.6578218 +7,0,2,-0.087797716,-0.72064584,0.3919503,0.30277744,-1.0405561,-0.8779837,-0.7976403,0.071234636,-0.29967022,0.2773496,-0.10566512,0.77108765,-1.7671878,0.824929,1.5373951,1.5010269,1.4846264,-0.7896349,-0.88700837,0.6919234,0.6787521,-0.4330691,0.6862605,-0.2904699,-0.9619546,-0.36133736,-0.9279964,0.18862396,-0.13149612,0.33348706,0.35246968,-0.86275643,0.7647198,-1.5118189,-0.24293631,-0.62797725,1.9434764,-0.15230915,1.2640054,-0.53051674,-1.571733,-0.23882791,1.2569784,-1.5155659,0.31609696,-1.4623228,-1.5276749,-0.63017756,-0.15530244,-1.2590177,-1.1136601,-0.8283698,-0.33160418,1.6386752,0.7145629,1.4172399,-0.9240341,1.155421,-0.20543078,-2.2690709,0.032772336,-0.6074186,-0.8408421,-0.43909267,1.1674483,-1.5343087,0.394567,-0.6319556,0.69497925,-0.17052399,0.66387993,1.6770401,-1.6856111,0.8501759,-1.0100725,-0.06956196,-0.49753228,0.45815924,-0.8491857,-1.5388991,-0.21994229,-0.61590695,-0.43685135,-0.54839456,1.844041,-1.9056602,0.23943688,-0.8901972,1.0178715,-0.4182901,0.47147426,0.28248206,-0.42557982,-1.3693498,1.378879,-0.832486,0.2925802,0.03857666,-0.99315274,-0.88979,-1.3541446,-0.38844082,-0.56667507,2.0802116,0.20410404,-0.5688037,-0.25536713,-2.8470826,0.22910759,1.339881,0.41405326,0.3723613,1.0213392,-0.61211425,0.20765173,0.22666255,-0.052260146,0.20032822,-2.3570492,1.4302993,1.4743407,-0.2883624,0.44256923,-0.7141606,-0.87645143,-0.20459794,0.5313736,-1.1576004,0.2882262,-0.3185675,-2.041501,0.55573565,-1.3157725,0.2728311,0.18704554,-0.34522107,-0.7096739,-0.43224367,-1.601502,1.0732054,0.91898465,-0.68341035,-1.5872612,-0.59699357,0.90725124,1.1939424,0.6279298,-0.49085775,0.9603635,0.668255,0.66679686,-1.698892,0.26019427,0.57732755,0.5378443,1.2200284,0.32803506,-0.15348187,2.141097,-0.014183752,-1.0378197,-2.6077065,-0.3066731,-0.06714382,-1.3892245,-1.7354015,0.53556174,0.9041617,-0.32855996,0.12410693,-0.40722385,-1.3432457,-0.73200125,-0.25400352,0.17272082,1.1034756,-2.2850537,0.6256181,1.7550697,-1.3452938,-0.017986335,-0.54053277,0.05288191,0.28705782,-0.98898697,0.7631376,0.15638618,-0.6830087,-1.3387133,0.62448514,-0.7181843,-1.9862368,0.070950225,1.8409837,-1.5815738,1.639628,-0.8540574,0.19265085,0.4421182,0.67777854 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv index e1edc7ec..902c22b2 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,7,1.6896031,0.2908513,-0.23292185,1.3335884,0.4545921,0.34372616,-0.4165884,-0.42207703,0.60733074,1.2122438,0.8359352,0.5889715,-1.7851549,1.4177665,0.7491191,0.5095494,0.26941696,0.21018945,-0.880237,0.5611264,0.49656537,-0.8069379,1.1553068,-0.0126349665,-0.10190317,-1.7098439,-0.7785349,0.08457157,-1.0872965,-0.46575686,0.17051879,-1.0981392,1.2801948,-0.20283222,-0.37779662,-1.045028,0.8350199,-0.4449086,0.37728134,-1.3267673,-1.3647467,0.49804264,1.072318,-1.5584799,0.62113297,-1.7105299,0.936378,0.96202284,-0.5543043,-0.22153261,0.5113075,-0.5170268,0.11910198,-0.16186874,0.33424348,-0.8031384,1.6559254,0.47857162,0.5240287,-0.85450006,1.1488028,-0.12382944,-2.3143659,-1.7480177,0.34907168,0.3368916,-0.96712863,-1.1980493,1.7140709,-1.4368651,0.66559404,-0.27778557,-1.7404891,1.0585526,-0.3457661,-0.026605887,-1.9635391,2.3253458,0.7187862,-0.6399079,-2.111302,-0.7639529,-0.3719801,-0.0044646794,1.4715577,-1.4121687,0.046070594,0.049432546,-0.67208856,0.77220047,-0.78486633,1.6651013,-0.5048683,-1.0169152,0.19552465,0.6060275,1.0623702,0.15507454,-0.3246709,0.2723275,-0.9548158,-0.060560215,1.6082474,1.8419513,-0.6165263,0.5530547,0.53137124,-1.6408414,-0.083764516,-0.6223381,0.053751897,0.17250697,-0.5837834,-1.9890918,-2.1878116,-0.63507724,-1.3977062,-0.09614903,-0.99611247,-0.8769,0.8914697,1.3250514,-1.3865021,0.070221275,0.14449106,-0.4635786,0.22937016,-1.06633,-1.124088,0.17105861,0.38474694,1.002527,0.062628046,-1.4390727,-0.07946947,2.1103234,-1.7293836,1.1202102,-0.1935348,-1.0497704,-0.1828823,-0.8191538,-0.9199905,-0.0011521083,1.4552091,0.028564112,1.5781827,1.5662959,-0.37651274,-0.75987285,-0.96915853,-1.9078714,1.1331102,-0.114896916,0.53727424,2.130492,-2.0829363,0.2657546,0.7349715,-0.30037367,0.7455469,-1.2468303,-0.94141734,-0.96966463,-2.640029,-1.1223298,0.8763038,-0.96782756,-0.92439544,1.2501682,-1.4089605,-0.8066179,-0.87894547,0.5093231,0.8661666,-1.0657727,-0.44514516,0.16784558,-0.82460415,-0.62026,0.22096872,-0.5744515,-0.05113996,0.9549697,-0.7317686,0.2157382,-0.73088646,1.3564851,-0.56419,-0.3550247,-1.0255395,-0.57220864,-0.9036402,0.36711925,-0.09569928,0.6653445,-0.5859867,1.2525154,1.7926836,0.031228034 +8,0,3,1.6896031,0.2908513,-0.23292185,1.3335884,0.4545921,0.34372616,-0.4165884,-0.42207703,0.60733074,1.2122438,0.8359352,0.5889715,-1.7851549,1.4177665,0.7491191,0.5095494,0.26941696,0.21018945,-0.880237,0.5611264,0.49656537,-0.8069379,1.1553068,-0.0126349665,-0.10190317,-1.7098439,-0.7785349,0.08457157,-1.0872965,-0.46575686,0.17051879,-1.0981392,1.2801948,-0.20283222,-0.37779662,-1.045028,0.8350199,-0.4449086,0.37728134,-1.3267673,-1.3647467,0.49804264,1.072318,-1.5584799,0.62113297,-1.7105299,0.936378,0.96202284,-0.5543043,-0.22153261,0.5113075,-0.5170268,0.11910198,-0.16186874,0.33424348,-0.8031384,1.6559254,0.47857162,0.5240287,-0.85450006,1.1488028,-0.12382944,-2.3143659,-1.7480177,0.34907168,0.3368916,-0.96712863,-1.1980493,1.7140709,-1.4368651,0.66559404,-0.27778557,-1.7404891,1.0585526,-0.3457661,-0.026605887,-1.9635391,2.3253458,0.7187862,-0.6399079,-2.111302,-0.7639529,-0.3719801,-0.0044646794,1.4715577,-1.4121687,0.046070594,0.049432546,-0.67208856,0.77220047,-0.78486633,1.6651013,-0.5048683,-1.0169152,0.19552465,0.6060275,1.0623702,0.15507454,-0.3246709,0.2723275,-0.9548158,-0.060560215,1.6082474,1.8419513,-0.6165263,0.5530547,0.53137124,-1.6408414,-0.083764516,-0.6223381,0.053751897,0.17250697,-0.5837834,-1.9890918,-2.1878116,-0.63507724,-1.3977062,-0.09614903,-0.99611247,-0.8769,0.8914697,1.3250514,-1.3865021,0.070221275,0.14449106,-0.4635786,0.22937016,-1.06633,-1.124088,0.17105861,0.38474694,1.002527,0.062628046,-1.4390727,-0.07946947,2.1103234,-1.7293836,1.1202102,-0.1935348,-1.0497704,-0.1828823,-0.8191538,-0.9199905,-0.0011521083,1.4552091,0.028564112,1.5781827,1.5662959,-0.37651274,-0.75987285,-0.96915853,-1.9078714,1.1331102,-0.114896916,0.53727424,2.130492,-2.0829363,0.2657546,0.7349715,-0.30037367,0.7455469,-1.2468303,-0.94141734,-0.96966463,-2.640029,-1.1223298,0.8763038,-0.96782756,-0.92439544,1.2501682,-1.4089605,-0.8066179,-0.87894547,0.5093231,0.8661666,-1.0657727,-0.44514516,0.16784558,-0.82460415,-0.62026,0.22096872,-0.5744515,-0.05113996,0.9549697,-0.7317686,0.2157382,-0.73088646,1.3564851,-0.56419,-0.3550247,-1.0255395,-0.57220864,-0.9036402,0.36711925,-0.09569928,0.6653445,-0.5859867,1.2525154,1.7926836,0.031228034 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv index 7c1f56ff..f9df3070 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,7,-0.16720563,-0.95600957,0.28606522,0.6061068,-0.3845801,-0.20699826,-1.1377771,0.20950346,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458502,2.1207294,2.1566582,-0.24435441,-0.64201504,1.7221576,0.93151706,-0.7352646,0.34909317,0.72475654,-0.53412133,-0.38585177,-0.7807762,0.55336505,0.0011219378,1.0769404,0.178836,-1.3198038,1.3214653,-1.3146976,-0.7111258,-0.48764378,1.6924084,-0.51583934,1.3672884,-0.5570951,-0.8911707,-0.7621178,1.6342849,-1.217147,0.21610765,-2.0004432,-0.9046609,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178051,1.1580858,0.932027,1.5196209,-1.0533147,1.2685812,0.0013257095,-1.983875,-0.02037545,-0.64693433,-1.3806919,-1.0592809,0.54943085,-1.3961786,-0.15649292,-0.5929407,0.9686789,-0.40543142,1.0557822,0.863148,-2.2666905,0.6786515,-0.98612607,-0.46339324,-0.5806146,1.359029,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.68368477,-0.4881073,1.0633672,-2.1536195,0.27614263,-0.94285184,0.8829792,-0.1332724,-0.69135016,0.057943374,0.29546717,-1.8476412,1.6050953,-0.77256185,-0.34552783,-0.39992267,-0.9135076,-1.4197912,-1.4342732,0.05444667,0.38957366,1.6343316,-0.018683603,0.20149979,-0.5184369,-2.7988343,-0.23812824,0.39474156,0.7759951,0.26147765,0.7695459,-0.8783734,0.24983662,0.22944757,-0.50273734,0.17921253,-2.96453,0.8493479,0.8776484,0.17855343,-0.3165259,-0.49537572,-1.4034132,-0.5197445,0.6516528,-1.1936586,0.4376411,-0.31979737,-1.1554341,-0.094374776,-1.4360906,-0.666431,0.19690529,0.22096215,-0.77558017,-0.6480959,-1.0999115,1.1237246,0.32265925,-0.7196827,-2.2545595,-1.4951689,0.5562803,1.1043608,1.1391095,0.12772338,0.39196157,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991095,-0.007137307,1.7125996,-0.8783491,-0.07996723,-2.1059916,-0.3130489,-0.31512117,-1.8248315,-1.5771933,0.51070344,0.7182178,-0.2582489,-0.45623493,-0.2644527,-0.9527642,-0.7283463,0.17178611,0.21193407,0.9493434,-1.3720604,0.15322249,0.701293,-0.551722,-0.15245207,0.06241879,-0.6320952,0.5529451,-0.4287735,1.0122428,-0.07743517,-0.28508037,-1.175873,0.21220748,-1.3312136,-1.4357239,0.21157013,0.5917681,-1.1742185,1.9612663,-1.2883047,0.06013697,1.073086,0.5143654 +9,0,2,-0.16720563,-0.95600957,0.28606522,0.6061068,-0.3845801,-0.20699826,-1.1377771,0.20950346,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458502,2.1207294,2.1566582,-0.24435441,-0.64201504,1.7221576,0.93151706,-0.7352646,0.34909317,0.72475654,-0.53412133,-0.38585177,-0.7807762,0.55336505,0.0011219378,1.0769404,0.178836,-1.3198038,1.3214653,-1.3146976,-0.7111258,-0.48764378,1.6924084,-0.51583934,1.3672884,-0.5570951,-0.8911707,-0.7621178,1.6342849,-1.217147,0.21610765,-2.0004432,-0.9046609,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178051,1.1580858,0.932027,1.5196209,-1.0533147,1.2685812,0.0013257095,-1.983875,-0.02037545,-0.64693433,-1.3806919,-1.0592809,0.54943085,-1.3961786,-0.15649292,-0.5929407,0.9686789,-0.40543142,1.0557822,0.863148,-2.2666905,0.6786515,-0.98612607,-0.46339324,-0.5806146,1.359029,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.68368477,-0.4881073,1.0633672,-2.1536195,0.27614263,-0.94285184,0.8829792,-0.1332724,-0.69135016,0.057943374,0.29546717,-1.8476412,1.6050953,-0.77256185,-0.34552783,-0.39992267,-0.9135076,-1.4197912,-1.4342732,0.05444667,0.38957366,1.6343316,-0.018683603,0.20149979,-0.5184369,-2.7988343,-0.23812824,0.39474156,0.7759951,0.26147765,0.7695459,-0.8783734,0.24983662,0.22944757,-0.50273734,0.17921253,-2.96453,0.8493479,0.8776484,0.17855343,-0.3165259,-0.49537572,-1.4034132,-0.5197445,0.6516528,-1.1936586,0.4376411,-0.31979737,-1.1554341,-0.094374776,-1.4360906,-0.666431,0.19690529,0.22096215,-0.77558017,-0.6480959,-1.0999115,1.1237246,0.32265925,-0.7196827,-2.2545595,-1.4951689,0.5562803,1.1043608,1.1391095,0.12772338,0.39196157,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991095,-0.007137307,1.7125996,-0.8783491,-0.07996723,-2.1059916,-0.3130489,-0.31512117,-1.8248315,-1.5771933,0.51070344,0.7182178,-0.2582489,-0.45623493,-0.2644527,-0.9527642,-0.7283463,0.17178611,0.21193407,0.9493434,-1.3720604,0.15322249,0.701293,-0.551722,-0.15245207,0.06241879,-0.6320952,0.5529451,-0.4287735,1.0122428,-0.07743517,-0.28508037,-1.175873,0.21220748,-1.3312136,-1.4357239,0.21157013,0.5917681,-1.1742185,1.9612663,-1.2883047,0.06013697,1.073086,0.5143654 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv index d4e16b52..b7a6d23e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,5,0.25,-0.0029144287,-1.1171875,-0.29296875,1.234375,0.76953125,-0.5703125,1.0390625,0.96875,-0.13964844,0.67578125,2.8125,0.44726562,0.28320312,-0.90234375,-0.04638672,-0.67578125,0.5625,3.265625,1.6875,1.015625,-0.90625,0.640625,0.2578125,0.030883789,0.79296875,-0.56640625,-0.4375,-0.921875,-0.87890625,0.09814453,0.05859375,0.16503906,1.140625,-1.125,0.0069274902,0.2890625,0.23144531,0.19335938,0.017700195,-0.37890625,-0.42578125,-0.25585938,-1.0703125,0.119628906,0.7578125,0.14355469,-1.484375,0.13476562,0.1328125,0.5,-1.5390625,0.068847656,0.119628906,-1.3515625,0.05126953,-0.33789062,-0.44726562,1.2265625,-1.2734375,-0.068359375,-0.36132812,2.1875,-0.40820312,-0.6953125,-1.1640625,0.025756836,-1.3984375,-0.2578125,0.8203125,0.047607422,1.4140625,-0.53125,-0.78515625,1.09375,2.859375,-0.90234375,-0.13671875,-2.34375,0.025390625,0.49414062,-0.068359375,0.54296875,0.31054688,0.04711914,-0.296875,-1.15625,-1.3359375,0.390625,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.013427734,-0.026367188,-0.32617188,0.5390625,-0.765625,-0.25195312,-0.16503906,0.24121094,1.0078125,-1.234375,-1.4609375,0.27148438,-0.640625,0.6953125,-0.45507812,-0.14746094,1.203125,0.5,0.14160156,-0.24804688,1.4375,-1.5390625,-1.0,-0.41992188,0.8203125,0.18652344,-0.21972656,0.39257812,0.47460938,-0.125,-1.484375,2.40625,-0.49804688,-1.2890625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40625,-1.6953125,0.546875,-1.3671875,-0.62109375,-0.08544922,-0.78515625,1.4140625,-1.640625,-0.875,2.03125,-0.671875,-0.375,-0.14160156,0.99609375,-0.76953125,0.38671875,1.1015625,-0.94140625,0.55078125,-0.875,-1.03125,-0.088378906,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.3984375,0.73046875,2.28125,0.068847656,0.079589844,-1.28125,-2.375,1.7734375,0.033935547,0.3828125,-0.79296875,-0.33398438,0.7421875,-0.94921875,-0.19433594,-0.90234375,-1.125,-0.6953125,0.64453125,-0.765625,-0.052490234,0.4140625,1.109375,-1.4453125,0.9375,-0.9609375,-1.2890625,1.796875,-0.9375,-1.4140625,-0.5390625,0.43554688,-0.58203125,-0.20507812,1.3828125,-0.4140625,0.30859375,0.33789062,1.2265625 -0,0,6,0.29882812,0.50390625,0.65625,-0.48828125,0.25976562,-0.027954102,0.671875,-0.6015625,0.59375,-0.66796875,0.68359375,0.09765625,1.609375,-0.73046875,0.0064086914,-0.31640625,-0.19628906,0.00049972534,2.625,0.16210938,-0.15332031,-1.3984375,0.66796875,0.05883789,-0.703125,-1.0078125,0.296875,-0.3125,-0.3828125,1.609375,0.64453125,-1.0703125,1.5078125,-1.40625,0.19335938,0.20996094,0.06640625,-1.046875,-0.84765625,0.8203125,-2.15625,0.29101562,-0.828125,-0.6484375,-0.27539062,-0.51953125,0.3125,-0.97265625,1.3359375,0.67578125,-0.78515625,0.34570312,-0.93359375,1.5390625,0.20117188,-0.30078125,0.13769531,-0.42382812,-1.140625,-0.83203125,1.3515625,0.5078125,-0.05419922,1.2578125,-0.18945312,0.4453125,-0.06201172,-1.8046875,-1.265625,1.546875,-0.66796875,0.5859375,0.64453125,0.061279297,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.015563965,-0.80859375,-0.6640625,0.5625,-0.1796875,-0.27734375,-0.609375,-1.234375,-1.9375,1.484375,-0.5078125,1.1953125,0.94921875,-0.96484375,0.328125,-1.1015625,-0.73828125,-1.921875,-0.75390625,-1.296875,0.042236328,-1.375,1.125,1.796875,-0.018066406,0.44335938,2.609375,-1.0390625,0.59375,0.28710938,-0.62109375,0.703125,1.1484375,0.64453125,-0.075683594,0.46484375,0.31054688,-0.21679688,0.24121094,-0.06591797,1.3046875,0.54296875,-0.61328125,1.1953125,-0.91015625,-1.1171875,1.1171875,-1.8125,-1.3984375,-0.19140625,-0.10058594,1.109375,-0.609375,-0.54296875,-1.359375,0.3828125,0.40234375,0.39453125,-0.40429688,0.21484375,-1.875,2.5,0.5703125,-0.67578125,2.328125,-0.25,-1.5234375,2.21875,-1.0859375,-1.34375,0.82421875,-0.9609375,0.203125,1.03125,-1.4140625,-0.32421875,-0.034423828,1.2578125,-0.82421875,1.09375,0.31835938,-0.39257812,-0.53515625,2.390625,1.78125,-0.953125,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30859375,-0.5,-1.7265625,-0.9140625,-0.890625,0.265625,0.98046875,-1.4375,0.50390625,0.26171875,-1.921875,-1.015625,1.171875,0.2734375,-1.5390625,-0.41796875,0.43164062,-0.20996094,-0.65234375,-0.05810547,-1.703125,1.78125,1.1796875,-0.53125,-1.0859375,0.90234375,1.796875,-0.3515625,1.3671875,1.0703125 -0,0,7,0.66796875,1.21875,-1.203125,-1.3125,-0.515625,-1.90625,0.31640625,1.1875,-0.52734375,-0.67578125,-0.053466797,-1.203125,-1.828125,-0.33203125,-0.9296875,1.0625,-0.27734375,0.91796875,0.1640625,0.020629883,0.90234375,-0.234375,-0.03466797,1.3359375,-1.71875,-0.96484375,-2.375,0.6640625,1.9921875,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.734375,-0.017211914,0.9375,1.3671875,-0.049804688,0.62109375,-2.15625,-0.27539062,0.072753906,1.7578125,0.71484375,2.015625,0.43164062,0.59765625,0.1875,1.25,0.28320312,-0.22949219,-1.3515625,-0.796875,-0.13183594,-0.43359375,-0.98046875,0.012390137,-0.06347656,-0.61328125,-0.1640625,0.53515625,0.34960938,-0.38085938,1.328125,0.23535156,0.16503906,0.06347656,-1.0703125,0.59765625,0.049316406,-0.171875,0.390625,-0.8359375,0.6796875,0.08544922,2.09375,-0.043945312,-0.42773438,0.03857422,1.2734375,0.609375,1.5703125,0.9140625,-0.08544922,0.98828125,-1.328125,0.515625,-1.7421875,0.3515625,0.95703125,2.21875,1.796875,-0.41015625,-0.068847656,-1.40625,-0.328125,0.013549805,0.96875,1.0390625,0.875,-0.18457031,1.03125,-0.17382812,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0077819824,-0.37890625,-0.22558594,2.546875,-0.8828125,-0.4765625,-0.88671875,-0.35351562,-1.0390625,0.98828125,0.68359375,2.046875,-1.875,-0.86328125,-2.953125,-0.21582031,0.18847656,-0.98046875,1.25,0.17382812,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.0703125,-1.8828125,0.58984375,0.53515625,-0.55078125,0.111816406,-2.1875,0.32421875,0.89453125,1.7109375,1.2109375,-0.6171875,-0.49804688,-1.625,1.0703125,-0.37695312,0.13085938,-0.041992188,-1.3515625,-0.7890625,1.4375,0.19433594,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.9609375,-0.32617188,0.078125,-1.3046875,-0.15039062,-0.26953125,0.29296875,0.46679688,-0.5859375,-0.32421875,0.46875,-1.1015625,0.984375,0.953125,0.25,0.99609375,-1.546875,0.041992188,-0.1015625,1.0,0.53515625,0.62109375,-0.8828125,-0.50390625,-0.32617188,-0.24804688,0.064453125,-0.5390625,-1.0546875,-1.234375,0.31640625,-0.037841797,-0.87890625,1.296875,0.1171875,1.8984375,-0.2265625,0.09667969,0.42578125 +0,0,1,0.25,-0.0029144287,-1.1171875,-0.29296875,1.234375,0.76953125,-0.5703125,1.0390625,0.96875,-0.13964844,0.67578125,2.8125,0.44726562,0.28320312,-0.90234375,-0.04638672,-0.67578125,0.5625,3.265625,1.6875,1.015625,-0.90625,0.640625,0.2578125,0.030883789,0.79296875,-0.56640625,-0.4375,-0.921875,-0.87890625,0.09814453,0.05859375,0.16503906,1.140625,-1.125,0.0069274902,0.2890625,0.23144531,0.19335938,0.017700195,-0.37890625,-0.42578125,-0.25585938,-1.0703125,0.119628906,0.7578125,0.14355469,-1.484375,0.13476562,0.1328125,0.5,-1.5390625,0.068847656,0.119628906,-1.3515625,0.05126953,-0.33789062,-0.44726562,1.2265625,-1.2734375,-0.068359375,-0.36132812,2.1875,-0.40820312,-0.6953125,-1.1640625,0.025756836,-1.3984375,-0.2578125,0.8203125,0.047607422,1.4140625,-0.53125,-0.78515625,1.09375,2.859375,-0.90234375,-0.13671875,-2.34375,0.025390625,0.49414062,-0.068359375,0.54296875,0.31054688,0.04711914,-0.296875,-1.15625,-1.3359375,0.390625,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.013427734,-0.026367188,-0.32617188,0.5390625,-0.765625,-0.25195312,-0.16503906,0.24121094,1.0078125,-1.234375,-1.4609375,0.27148438,-0.640625,0.6953125,-0.45507812,-0.14746094,1.203125,0.5,0.14160156,-0.24804688,1.4375,-1.5390625,-1.0,-0.41992188,0.8203125,0.18652344,-0.21972656,0.39257812,0.47460938,-0.125,-1.484375,2.40625,-0.49804688,-1.2890625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40625,-1.6953125,0.546875,-1.3671875,-0.62109375,-0.08544922,-0.78515625,1.4140625,-1.640625,-0.875,2.03125,-0.671875,-0.375,-0.14160156,0.99609375,-0.76953125,0.38671875,1.1015625,-0.94140625,0.55078125,-0.875,-1.03125,-0.088378906,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.3984375,0.73046875,2.28125,0.068847656,0.079589844,-1.28125,-2.375,1.7734375,0.033935547,0.3828125,-0.79296875,-0.33398438,0.7421875,-0.94921875,-0.19433594,-0.90234375,-1.125,-0.6953125,0.64453125,-0.765625,-0.052490234,0.4140625,1.109375,-1.4453125,0.9375,-0.9609375,-1.2890625,1.796875,-0.9375,-1.4140625,-0.5390625,0.43554688,-0.58203125,-0.20507812,1.3828125,-0.4140625,0.30859375,0.33789062,1.2265625 +0,0,2,0.29882812,0.50390625,0.65625,-0.48828125,0.25976562,-0.027954102,0.671875,-0.6015625,0.59375,-0.66796875,0.68359375,0.09765625,1.609375,-0.73046875,0.0064086914,-0.31640625,-0.19628906,0.00049972534,2.625,0.16210938,-0.15332031,-1.3984375,0.66796875,0.05883789,-0.703125,-1.0078125,0.296875,-0.3125,-0.3828125,1.609375,0.64453125,-1.0703125,1.5078125,-1.40625,0.19335938,0.20996094,0.06640625,-1.046875,-0.84765625,0.8203125,-2.15625,0.29101562,-0.828125,-0.6484375,-0.27539062,-0.51953125,0.3125,-0.97265625,1.3359375,0.67578125,-0.78515625,0.34570312,-0.93359375,1.5390625,0.20117188,-0.30078125,0.13769531,-0.42382812,-1.140625,-0.83203125,1.3515625,0.5078125,-0.05419922,1.2578125,-0.18945312,0.4453125,-0.06201172,-1.8046875,-1.265625,1.546875,-0.66796875,0.5859375,0.64453125,0.061279297,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.015563965,-0.80859375,-0.6640625,0.5625,-0.1796875,-0.27734375,-0.609375,-1.234375,-1.9375,1.484375,-0.5078125,1.1953125,0.94921875,-0.96484375,0.328125,-1.1015625,-0.73828125,-1.921875,-0.75390625,-1.296875,0.042236328,-1.375,1.125,1.796875,-0.018066406,0.44335938,2.609375,-1.0390625,0.59375,0.28710938,-0.62109375,0.703125,1.1484375,0.64453125,-0.075683594,0.46484375,0.31054688,-0.21679688,0.24121094,-0.06591797,1.3046875,0.54296875,-0.61328125,1.1953125,-0.91015625,-1.1171875,1.1171875,-1.8125,-1.3984375,-0.19140625,-0.10058594,1.109375,-0.609375,-0.54296875,-1.359375,0.3828125,0.40234375,0.39453125,-0.40429688,0.21484375,-1.875,2.5,0.5703125,-0.67578125,2.328125,-0.25,-1.5234375,2.21875,-1.0859375,-1.34375,0.82421875,-0.9609375,0.203125,1.03125,-1.4140625,-0.32421875,-0.034423828,1.2578125,-0.82421875,1.09375,0.31835938,-0.39257812,-0.53515625,2.390625,1.78125,-0.953125,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30859375,-0.5,-1.7265625,-0.9140625,-0.890625,0.265625,0.98046875,-1.4375,0.50390625,0.26171875,-1.921875,-1.015625,1.171875,0.2734375,-1.5390625,-0.41796875,0.43164062,-0.20996094,-0.65234375,-0.05810547,-1.703125,1.78125,1.1796875,-0.53125,-1.0859375,0.90234375,1.796875,-0.3515625,1.3671875,1.0703125 +0,0,3,0.66796875,1.21875,-1.203125,-1.3125,-0.515625,-1.90625,0.31640625,1.1875,-0.52734375,-0.67578125,-0.053466797,-1.203125,-1.828125,-0.33203125,-0.9296875,1.0625,-0.27734375,0.91796875,0.1640625,0.020629883,0.90234375,-0.234375,-0.03466797,1.3359375,-1.71875,-0.96484375,-2.375,0.6640625,1.9921875,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.734375,-0.017211914,0.9375,1.3671875,-0.049804688,0.62109375,-2.15625,-0.27539062,0.072753906,1.7578125,0.71484375,2.015625,0.43164062,0.59765625,0.1875,1.25,0.28320312,-0.22949219,-1.3515625,-0.796875,-0.13183594,-0.43359375,-0.98046875,0.012390137,-0.06347656,-0.61328125,-0.1640625,0.53515625,0.34960938,-0.38085938,1.328125,0.23535156,0.16503906,0.06347656,-1.0703125,0.59765625,0.049316406,-0.171875,0.390625,-0.8359375,0.6796875,0.08544922,2.09375,-0.043945312,-0.42773438,0.03857422,1.2734375,0.609375,1.5703125,0.9140625,-0.08544922,0.98828125,-1.328125,0.515625,-1.7421875,0.3515625,0.95703125,2.21875,1.796875,-0.41015625,-0.068847656,-1.40625,-0.328125,0.013549805,0.96875,1.0390625,0.875,-0.18457031,1.03125,-0.17382812,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0077819824,-0.37890625,-0.22558594,2.546875,-0.8828125,-0.4765625,-0.88671875,-0.35351562,-1.0390625,0.98828125,0.68359375,2.046875,-1.875,-0.86328125,-2.953125,-0.21582031,0.18847656,-0.98046875,1.25,0.17382812,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.0703125,-1.8828125,0.58984375,0.53515625,-0.55078125,0.111816406,-2.1875,0.32421875,0.89453125,1.7109375,1.2109375,-0.6171875,-0.49804688,-1.625,1.0703125,-0.37695312,0.13085938,-0.041992188,-1.3515625,-0.7890625,1.4375,0.19433594,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.9609375,-0.32617188,0.078125,-1.3046875,-0.15039062,-0.26953125,0.29296875,0.46679688,-0.5859375,-0.32421875,0.46875,-1.1015625,0.984375,0.953125,0.25,0.99609375,-1.546875,0.041992188,-0.1015625,1.0,0.53515625,0.62109375,-0.8828125,-0.50390625,-0.32617188,-0.24804688,0.064453125,-0.5390625,-1.0546875,-1.234375,0.31640625,-0.037841797,-0.87890625,1.296875,0.1171875,1.8984375,-0.2265625,0.09667969,0.42578125 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv index a0974d2a..9633bd19 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,5,1.0546875,0.89453125,-0.55078125,0.83203125,-0.65234375,-0.37890625,0.77734375,1.6484375,0.5625,-1.6171875,-0.53515625,0.54296875,0.76953125,-0.1015625,-1.4453125,0.828125,-0.05859375,0.58203125,0.34179688,-0.37304688,0.83984375,-0.9375,-0.032226562,-0.9140625,0.15820312,-0.953125,-1.5078125,-0.14160156,-1.1484375,-0.87890625,1.3203125,-1.3359375,1.71875,0.76171875,0.22167969,-1.578125,-0.122558594,-1.7265625,-0.7265625,-1.125,-1.2421875,-1.296875,-1.28125,0.017822266,-1.8828125,0.9296875,0.48046875,1.0078125,1.125,1.546875,-1.3046875,-0.13378906,-0.73046875,1.7421875,-0.671875,0.5078125,1.15625,0.66796875,-0.15234375,-0.23046875,0.05883789,0.51171875,0.08251953,-0.12207031,0.72265625,-0.5859375,-0.90625,-0.40429688,-0.7109375,0.25195312,1.5859375,-1.8125,0.57421875,-1.0390625,2.296875,2.609375,1.5390625,0.82421875,-0.34179688,-1.1328125,-0.38085938,-1.25,-0.42578125,-1.2734375,0.9296875,-1.1875,1.28125,0.59765625,-0.3046875,1.4921875,2.25,-1.3359375,0.16992188,0.734375,-0.45703125,0.57421875,0.19042969,-0.67578125,-0.21484375,0.5859375,-1.5703125,1.15625,1.03125,-0.02734375,1.9921875,-0.55859375,0.40429688,0.57421875,0.87890625,1.59375,-0.31835938,0.0119018555,0.296875,-0.61328125,1.0,-0.2890625,-1.6953125,0.16992188,-0.15234375,-0.28125,-0.66796875,-0.40039062,0.22363281,-0.026977539,-0.57421875,0.5859375,0.5703125,-0.59375,-0.48828125,-0.515625,-0.38476562,0.2109375,-0.25195312,-1.28125,-1.7578125,-0.46484375,-0.609375,0.37695312,-0.49609375,-2.328125,2.15625,-0.66796875,-0.5234375,-1.9453125,-0.30859375,-0.19140625,-0.7265625,-1.09375,0.61328125,3.640625,-0.44921875,1.0625,-1.7890625,0.828125,0.19335938,-0.9921875,0.14355469,1.2109375,0.29492188,-0.8515625,0.2578125,0.36523438,-0.029418945,0.12792969,-0.83984375,0.53125,0.15625,0.8359375,1.9765625,-2.328125,-0.33203125,0.29882812,-0.41601562,-0.25195312,0.27539062,1.1328125,1.0078125,1.203125,-0.42773438,0.38476562,-0.83203125,1.4375,0.875,0.13183594,0.32617188,-1.203125,1.4296875,0.91015625,-1.328125,-0.1953125,-0.41015625,-0.8203125,0.8203125,0.29101562,-1.6875,1.109375,0.049072266,-0.037353516,-0.34960938,-0.3828125 -1,0,6,-0.5546875,1.265625,-1.3671875,-1.5078125,0.30664062,-1.9453125,0.34375,1.6328125,1.609375,-0.58984375,0.21875,1.03125,-0.9453125,0.515625,-1.21875,0.53515625,0.2734375,0.21972656,-0.37109375,-0.07373047,0.33984375,-0.39453125,1.3359375,-0.0390625,-0.7421875,-0.921875,-2.421875,1.1015625,1.578125,-0.4765625,1.3671875,0.21191406,-1.1171875,0.14941406,1.5703125,-1.0859375,0.6640625,0.86328125,-0.7734375,1.046875,-1.546875,0.43164062,-0.22070312,-0.26953125,-0.32421875,2.625,-0.06201172,1.8125,1.140625,1.609375,-1.03125,1.0859375,-0.640625,-0.09033203,-0.82421875,-0.08984375,-0.51953125,0.48828125,-1.109375,1.40625,0.3984375,0.94140625,-0.16015625,0.609375,0.54296875,-1.203125,-0.12695312,0.71875,-1.65625,1.265625,0.52734375,0.7890625,2.046875,-0.53515625,0.55859375,2.09375,0.51171875,0.703125,-0.8359375,-0.40039062,0.48242188,-0.36523438,0.76171875,-0.13378906,-0.119628906,0.94140625,-1.421875,-0.27148438,-1.1640625,-0.6796875,0.5859375,1.53125,0.98046875,-0.25976562,0.7890625,-1.875,-0.53515625,-0.26171875,0.40625,-0.55859375,0.14160156,0.49414062,0.6953125,0.15527344,-0.76953125,0.068847656,-1.046875,-0.40039062,0.041259766,0.56640625,-1.6484375,-0.068359375,1.6640625,-2.3125,0.6484375,-0.14941406,-1.5625,-0.3125,0.91796875,0.08203125,1.171875,-2.34375,0.026367188,-1.359375,0.37890625,0.96484375,-0.26171875,-1.359375,1.0390625,-0.24902344,-1.328125,-0.91796875,-0.5390625,0.578125,-1.8984375,1.5390625,1.1875,-0.1953125,0.91015625,-2.03125,1.296875,0.123535156,0.6484375,0.8359375,-1.2421875,-1.3359375,-0.81640625,-1.3203125,-1.453125,-0.703125,0.60546875,-0.61328125,-0.48242188,0.875,-0.73828125,1.828125,0.5625,0.39453125,0.45898438,0.29101562,-0.27148438,1.1171875,0.73046875,0.36914062,0.026733398,-0.72265625,-0.38671875,0.7578125,-0.49414062,-1.9921875,-1.03125,-0.05883789,-1.578125,-0.6953125,0.8515625,-0.13183594,1.0703125,0.84375,-0.31445312,0.021362305,0.08154297,-1.1171875,0.30664062,0.16894531,0.33203125,0.06640625,-0.82421875,-0.8515625,-1.7734375,-1.0,0.2890625,0.81640625,-0.7265625,0.68359375,-0.81640625,2.640625,2.03125,0.09814453,-0.8984375,-0.48242188 -1,0,7,1.2578125,0.5703125,-0.9921875,0.103515625,-1.359375,-0.11767578,0.609375,1.0078125,-1.1640625,-1.4453125,-0.21582031,-0.37890625,-0.42382812,0.453125,-1.7421875,-0.8203125,-1.0625,0.28320312,-0.953125,-0.53125,0.59375,-0.21972656,-0.57421875,-0.46679688,-0.107421875,-2.171875,-2.390625,-0.4375,-0.008850098,0.19433594,-0.38085938,-1.4453125,0.2890625,0.87890625,-0.328125,-0.546875,-0.09423828,-2.390625,0.45507812,-0.08203125,0.40820312,-0.20996094,-0.859375,1.2421875,0.9375,0.3515625,-1.0234375,0.60546875,-0.025146484,1.1640625,0.16015625,-0.19824219,-1.65625,0.70703125,-0.90625,-0.67578125,-0.63671875,1.25,-1.0625,-1.03125,-0.28125,0.765625,1.265625,0.7734375,1.921875,-0.34960938,-0.28125,-0.5078125,-1.9296875,0.5,1.21875,-0.36132812,1.6640625,-0.6953125,0.8828125,0.828125,2.53125,1.234375,0.609375,0.099609375,-0.41210938,-0.3828125,0.37109375,-1.3359375,-0.27734375,0.99609375,0.31835938,-0.60546875,0.24121094,0.984375,0.5390625,1.34375,0.21972656,0.58203125,-0.95703125,-1.2890625,-0.734375,-0.13476562,1.1484375,1.0859375,0.38085938,1.2578125,-0.296875,-1.2265625,1.2578125,-1.078125,-0.71484375,0.69140625,0.41015625,-0.33398438,-0.96875,1.015625,1.578125,0.26367188,0.119628906,0.46679688,-0.3046875,0.515625,0.122558594,1.921875,0.30664062,-2.109375,-1.1484375,-0.59765625,-0.056152344,-1.25,0.171875,-1.046875,0.001335144,-0.16796875,0.421875,-0.5703125,-0.18945312,-0.022338867,-1.046875,2.4375,-0.9140625,-1.6875,1.40625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.8671875,0.30664062,0.375,0.20214844,2.203125,3.59375,0.41992188,0.26367188,-1.609375,1.015625,-0.0071411133,0.29492188,0.65625,1.1484375,-1.359375,0.62890625,0.97265625,1.75,0.8046875,-0.62109375,-0.51171875,-0.55078125,-0.3515625,1.6796875,0.5234375,-1.7578125,-0.62109375,-0.94140625,0.23242188,-0.55078125,0.703125,1.3984375,-0.3125,1.1171875,1.3125,-0.14257812,0.064941406,0.122558594,1.3671875,-0.64453125,0.49023438,-0.2890625,0.640625,1.4140625,-0.0033111572,-1.515625,0.21582031,-1.6015625,0.5390625,-1.7421875,-0.81640625,1.2109375,0.30273438,-1.09375,-1.234375,-0.36328125 +1,0,1,1.0546875,0.89453125,-0.55078125,0.83203125,-0.65234375,-0.37890625,0.77734375,1.6484375,0.5625,-1.6171875,-0.53515625,0.54296875,0.76953125,-0.1015625,-1.4453125,0.828125,-0.05859375,0.58203125,0.34179688,-0.37304688,0.83984375,-0.9375,-0.032226562,-0.9140625,0.15820312,-0.953125,-1.5078125,-0.14160156,-1.1484375,-0.87890625,1.3203125,-1.3359375,1.71875,0.76171875,0.22167969,-1.578125,-0.122558594,-1.7265625,-0.7265625,-1.125,-1.2421875,-1.296875,-1.28125,0.017822266,-1.8828125,0.9296875,0.48046875,1.0078125,1.125,1.546875,-1.3046875,-0.13378906,-0.73046875,1.7421875,-0.671875,0.5078125,1.15625,0.66796875,-0.15234375,-0.23046875,0.05883789,0.51171875,0.08251953,-0.12207031,0.72265625,-0.5859375,-0.90625,-0.40429688,-0.7109375,0.25195312,1.5859375,-1.8125,0.57421875,-1.0390625,2.296875,2.609375,1.5390625,0.82421875,-0.34179688,-1.1328125,-0.38085938,-1.25,-0.42578125,-1.2734375,0.9296875,-1.1875,1.28125,0.59765625,-0.3046875,1.4921875,2.25,-1.3359375,0.16992188,0.734375,-0.45703125,0.57421875,0.19042969,-0.67578125,-0.21484375,0.5859375,-1.5703125,1.15625,1.03125,-0.02734375,1.9921875,-0.55859375,0.40429688,0.57421875,0.87890625,1.59375,-0.31835938,0.0119018555,0.296875,-0.61328125,1.0,-0.2890625,-1.6953125,0.16992188,-0.15234375,-0.28125,-0.66796875,-0.40039062,0.22363281,-0.026977539,-0.57421875,0.5859375,0.5703125,-0.59375,-0.48828125,-0.515625,-0.38476562,0.2109375,-0.25195312,-1.28125,-1.7578125,-0.46484375,-0.609375,0.37695312,-0.49609375,-2.328125,2.15625,-0.66796875,-0.5234375,-1.9453125,-0.30859375,-0.19140625,-0.7265625,-1.09375,0.61328125,3.640625,-0.44921875,1.0625,-1.7890625,0.828125,0.19335938,-0.9921875,0.14355469,1.2109375,0.29492188,-0.8515625,0.2578125,0.36523438,-0.029418945,0.12792969,-0.83984375,0.53125,0.15625,0.8359375,1.9765625,-2.328125,-0.33203125,0.29882812,-0.41601562,-0.25195312,0.27539062,1.1328125,1.0078125,1.203125,-0.42773438,0.38476562,-0.83203125,1.4375,0.875,0.13183594,0.32617188,-1.203125,1.4296875,0.91015625,-1.328125,-0.1953125,-0.41015625,-0.8203125,0.8203125,0.29101562,-1.6875,1.109375,0.049072266,-0.037353516,-0.34960938,-0.3828125 +1,0,2,-0.5546875,1.265625,-1.3671875,-1.5078125,0.30664062,-1.9453125,0.34375,1.6328125,1.609375,-0.58984375,0.21875,1.03125,-0.9453125,0.515625,-1.21875,0.53515625,0.2734375,0.21972656,-0.37109375,-0.07373047,0.33984375,-0.39453125,1.3359375,-0.0390625,-0.7421875,-0.921875,-2.421875,1.1015625,1.578125,-0.4765625,1.3671875,0.21191406,-1.1171875,0.14941406,1.5703125,-1.0859375,0.6640625,0.86328125,-0.7734375,1.046875,-1.546875,0.43164062,-0.22070312,-0.26953125,-0.32421875,2.625,-0.06201172,1.8125,1.140625,1.609375,-1.03125,1.0859375,-0.640625,-0.09033203,-0.82421875,-0.08984375,-0.51953125,0.48828125,-1.109375,1.40625,0.3984375,0.94140625,-0.16015625,0.609375,0.54296875,-1.203125,-0.12695312,0.71875,-1.65625,1.265625,0.52734375,0.7890625,2.046875,-0.53515625,0.55859375,2.09375,0.51171875,0.703125,-0.8359375,-0.40039062,0.48242188,-0.36523438,0.76171875,-0.13378906,-0.119628906,0.94140625,-1.421875,-0.27148438,-1.1640625,-0.6796875,0.5859375,1.53125,0.98046875,-0.25976562,0.7890625,-1.875,-0.53515625,-0.26171875,0.40625,-0.55859375,0.14160156,0.49414062,0.6953125,0.15527344,-0.76953125,0.068847656,-1.046875,-0.40039062,0.041259766,0.56640625,-1.6484375,-0.068359375,1.6640625,-2.3125,0.6484375,-0.14941406,-1.5625,-0.3125,0.91796875,0.08203125,1.171875,-2.34375,0.026367188,-1.359375,0.37890625,0.96484375,-0.26171875,-1.359375,1.0390625,-0.24902344,-1.328125,-0.91796875,-0.5390625,0.578125,-1.8984375,1.5390625,1.1875,-0.1953125,0.91015625,-2.03125,1.296875,0.123535156,0.6484375,0.8359375,-1.2421875,-1.3359375,-0.81640625,-1.3203125,-1.453125,-0.703125,0.60546875,-0.61328125,-0.48242188,0.875,-0.73828125,1.828125,0.5625,0.39453125,0.45898438,0.29101562,-0.27148438,1.1171875,0.73046875,0.36914062,0.026733398,-0.72265625,-0.38671875,0.7578125,-0.49414062,-1.9921875,-1.03125,-0.05883789,-1.578125,-0.6953125,0.8515625,-0.13183594,1.0703125,0.84375,-0.31445312,0.021362305,0.08154297,-1.1171875,0.30664062,0.16894531,0.33203125,0.06640625,-0.82421875,-0.8515625,-1.7734375,-1.0,0.2890625,0.81640625,-0.7265625,0.68359375,-0.81640625,2.640625,2.03125,0.09814453,-0.8984375,-0.48242188 +1,0,3,1.2578125,0.5703125,-0.9921875,0.103515625,-1.359375,-0.11767578,0.609375,1.0078125,-1.1640625,-1.4453125,-0.21582031,-0.37890625,-0.42382812,0.453125,-1.7421875,-0.8203125,-1.0625,0.28320312,-0.953125,-0.53125,0.59375,-0.21972656,-0.57421875,-0.46679688,-0.107421875,-2.171875,-2.390625,-0.4375,-0.008850098,0.19433594,-0.38085938,-1.4453125,0.2890625,0.87890625,-0.328125,-0.546875,-0.09423828,-2.390625,0.45507812,-0.08203125,0.40820312,-0.20996094,-0.859375,1.2421875,0.9375,0.3515625,-1.0234375,0.60546875,-0.025146484,1.1640625,0.16015625,-0.19824219,-1.65625,0.70703125,-0.90625,-0.67578125,-0.63671875,1.25,-1.0625,-1.03125,-0.28125,0.765625,1.265625,0.7734375,1.921875,-0.34960938,-0.28125,-0.5078125,-1.9296875,0.5,1.21875,-0.36132812,1.6640625,-0.6953125,0.8828125,0.828125,2.53125,1.234375,0.609375,0.099609375,-0.41210938,-0.3828125,0.37109375,-1.3359375,-0.27734375,0.99609375,0.31835938,-0.60546875,0.24121094,0.984375,0.5390625,1.34375,0.21972656,0.58203125,-0.95703125,-1.2890625,-0.734375,-0.13476562,1.1484375,1.0859375,0.38085938,1.2578125,-0.296875,-1.2265625,1.2578125,-1.078125,-0.71484375,0.69140625,0.41015625,-0.33398438,-0.96875,1.015625,1.578125,0.26367188,0.119628906,0.46679688,-0.3046875,0.515625,0.122558594,1.921875,0.30664062,-2.109375,-1.1484375,-0.59765625,-0.056152344,-1.25,0.171875,-1.046875,0.001335144,-0.16796875,0.421875,-0.5703125,-0.18945312,-0.022338867,-1.046875,2.4375,-0.9140625,-1.6875,1.40625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.8671875,0.30664062,0.375,0.20214844,2.203125,3.59375,0.41992188,0.26367188,-1.609375,1.015625,-0.0071411133,0.29492188,0.65625,1.1484375,-1.359375,0.62890625,0.97265625,1.75,0.8046875,-0.62109375,-0.51171875,-0.55078125,-0.3515625,1.6796875,0.5234375,-1.7578125,-0.62109375,-0.94140625,0.23242188,-0.55078125,0.703125,1.3984375,-0.3125,1.1171875,1.3125,-0.14257812,0.064941406,0.122558594,1.3671875,-0.64453125,0.49023438,-0.2890625,0.640625,1.4140625,-0.0033111572,-1.515625,0.21582031,-1.6015625,0.5390625,-1.7421875,-0.81640625,1.2109375,0.30273438,-1.09375,-1.234375,-0.36328125 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv index 6031742c..2451ec01 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,5,1.203125,-0.09814453,-1.3359375,-0.6015625,0.96484375,-1.4765625,-0.8203125,3.140625,-0.5234375,-1.671875,0.023925781,1.5859375,-0.53125,-0.74609375,-0.57421875,1.7421875,-0.26953125,-1.3984375,0.059326172,0.48828125,-1.3671875,-0.6796875,-0.44921875,1.234375,-0.09033203,0.32617188,-2.5,-0.15136719,-0.8828125,-0.06982422,-0.022216797,0.78515625,0.69140625,0.7734375,-0.07470703,-1.0546875,1.2578125,-0.17285156,0.515625,0.6875,-0.0625,-0.008483887,0.11669922,-0.7890625,-0.11816406,0.65625,-0.46875,0.96875,-0.43945312,2.21875,-0.60546875,-2.21875,-1.3359375,-0.04736328,-0.15039062,-0.33203125,0.91796875,0.296875,0.40039062,-1.046875,-0.36523438,1.484375,-0.1328125,0.53515625,-0.265625,-0.03125,-0.002380371,1.4921875,0.16699219,-0.11767578,-0.4140625,-0.29296875,0.8984375,-0.671875,1.625,2.140625,0.625,0.2734375,-0.2421875,-0.75,1.671875,0.75,0.53515625,-0.62890625,-0.44140625,-1.1640625,1.328125,1.828125,0.49414062,1.65625,1.7421875,-0.7734375,-1.046875,1.3671875,-0.28710938,0.03100586,-1.7265625,-0.734375,-1.0859375,-0.21777344,-1.0625,-0.24414062,1.4375,0.94140625,-0.47265625,0.25195312,-1.640625,-0.62109375,-0.29101562,0.0234375,-1.140625,-1.9296875,1.4140625,-2.265625,0.84765625,0.27929688,-2.046875,1.2734375,-0.30078125,-1.21875,1.25,-0.4765625,-0.92578125,-0.36523438,0.4140625,2.75,-0.43164062,-0.40625,0.44335938,-1.8671875,-1.4765625,-1.640625,0.36914062,-1.1015625,-0.890625,-0.012817383,1.328125,0.34570312,0.43554688,-1.3515625,1.46875,-1.8203125,-0.62890625,-0.15527344,0.16113281,0.46875,-0.32421875,0.83203125,-0.73828125,0.83203125,-0.6171875,-0.018188477,0.8125,-0.4453125,0.045898438,-0.7578125,0.3203125,0.015563965,1.65625,1.015625,-1.1484375,1.875,1.2890625,0.8203125,-0.57421875,0.77734375,0.16894531,1.3125,1.2578125,0.76953125,-1.296875,-0.17089844,0.060546875,1.0859375,-1.28125,0.43359375,0.3515625,-0.69140625,-0.059326172,-1.171875,0.45898438,0.38476562,0.30273438,-1.09375,0.22363281,-0.24414062,-1.3984375,0.0134887695,-0.83984375,-1.3515625,0.20996094,1.421875,-0.11621094,-0.43164062,0.12207031,1.1953125,0.49609375,0.6015625,-1.0703125,0.4609375 -2,0,6,0.31445312,-0.33398438,-0.72265625,-0.4453125,0.40429688,-0.546875,-0.006439209,1.5859375,-0.13769531,-0.828125,-0.53515625,-0.375,1.2265625,0.49804688,-1.6484375,0.44726562,-0.5234375,-1.984375,0.42578125,-0.6875,0.5625,-0.32421875,-0.27734375,-0.06640625,-1.328125,-1.8203125,-1.640625,-0.08984375,-2.078125,0.49023438,-0.6875,-1.1171875,0.5625,0.07519531,0.546875,1.6796875,0.62109375,-1.453125,-1.8671875,1.1953125,-1.4765625,0.3515625,-0.54296875,-0.043701172,0.23144531,1.0625,0.5625,-0.546875,0.24023438,1.71875,-2.109375,-1.328125,-1.40625,0.73046875,-1.9921875,0.62109375,0.125,-0.66796875,-0.19140625,-2.140625,1.1796875,-0.16113281,0.42578125,-0.072265625,0.17675781,0.055908203,-1.0859375,0.18847656,-0.671875,2.0,0.90625,-1.6015625,-0.4609375,-0.49609375,0.044189453,1.921875,1.1171875,1.109375,-0.61328125,-0.8828125,1.5546875,0.31835938,0.27734375,-0.5078125,-0.67578125,-0.030639648,0.28710938,0.9609375,-0.66796875,0.67578125,2.125,-0.17285156,0.14941406,0.41796875,-1.390625,-0.19921875,-0.30273438,-0.53125,1.4140625,-0.328125,-2.25,0.14160156,2.25,1.15625,-0.46679688,-0.22851562,1.484375,-0.9296875,0.40039062,0.71484375,0.2734375,0.36328125,0.8515625,-1.4296875,0.30664062,-0.46875,0.18554688,-0.27148438,-0.65234375,-0.65625,1.328125,-0.55078125,0.4140625,-1.1875,-0.24609375,1.2734375,-0.44921875,-2.296875,-0.005645752,-0.041015625,0.671875,-0.061767578,0.19238281,-1.3046875,-1.34375,-0.19921875,-0.35351562,-0.47070312,-0.019042969,-1.8046875,3.0625,-0.76953125,0.39257812,-0.053955078,-0.06933594,1.828125,-1.234375,-0.01977539,-1.9375,1.921875,0.23632812,1.125,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.4375,1.6171875,1.4296875,0.671875,-0.71484375,1.3515625,1.375,0.49804688,-1.3359375,0.53515625,-1.1171875,-0.33984375,2.375,-0.25195312,0.2265625,-0.14550781,-0.66796875,-0.31835938,0.118652344,0.453125,-0.9375,-0.91796875,0.93359375,-0.58984375,-0.18164062,-0.10888672,1.265625,0.48828125,0.6640625,-0.30273438,1.3203125,0.82421875,-0.5390625,-1.0390625,-0.23242188,0.53125,2.15625,0.024658203,0.83203125,-0.15625,1.40625,-0.20996094,1.21875,0.27148438 -2,0,7,0.76953125,0.111328125,-0.36523438,-0.22363281,0.20703125,-0.7578125,-0.2734375,1.4140625,0.5546875,-1.09375,0.5859375,1.4140625,0.4375,0.54296875,-1.6015625,0.8046875,0.19335938,-1.2109375,-0.11230469,0.119628906,0.98828125,-0.5390625,-0.39257812,0.578125,-0.29296875,-0.73046875,-0.51171875,0.06201172,-1.0078125,-0.059814453,-0.68359375,-0.51171875,1.78125,-0.45117188,1.296875,1.59375,0.83203125,-0.16015625,-2.21875,1.7265625,-1.8359375,0.375,-0.59765625,-0.05078125,0.6328125,0.81640625,-0.33984375,-0.1328125,-0.4453125,1.90625,-1.375,-0.11328125,-0.6875,-0.08935547,-0.796875,0.71484375,0.62109375,0.60546875,-0.07861328,-1.2421875,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53515625,-0.53125,1.265625,-0.10449219,-1.1640625,-0.09814453,0.6171875,-0.15527344,1.9296875,1.390625,0.38671875,-1.0,-1.46875,1.3828125,-0.20019531,0.59765625,-1.2890625,-1.3671875,-0.3359375,0.19433594,1.40625,-0.81640625,0.36132812,1.9609375,-0.03540039,-0.8203125,0.62109375,-1.546875,0.93359375,-0.17773438,0.890625,0.734375,0.9921875,-2.46875,0.013305664,2.0,1.03125,-1.3984375,0.35546875,0.91015625,-1.6640625,-1.0703125,0.18652344,0.578125,-0.36132812,1.546875,-1.5078125,-0.359375,-1.21875,0.95703125,-0.045410156,-0.3046875,-1.296875,2.125,0.44140625,-0.59765625,-1.2734375,0.60546875,0.41992188,-0.73046875,-2.1875,0.26367188,-0.36523438,0.18261719,-1.1640625,-0.54296875,-0.79296875,-1.84375,1.65625,0.30859375,-0.62109375,-0.53125,-1.34375,1.8203125,-1.6953125,-0.68359375,-0.3828125,-0.17871094,1.3125,-0.58203125,0.51953125,-2.6875,-0.1171875,0.25976562,1.125,0.69921875,-1.0390625,-0.22753906,-0.78515625,0.90234375,0.47851562,1.1171875,0.54296875,-0.41015625,0.3671875,-0.26171875,0.91796875,-1.5703125,1.28125,-1.109375,-0.58203125,1.3984375,0.08935547,-1.6796875,-0.79296875,-0.64453125,-0.34960938,0.16503906,0.36328125,0.80078125,-0.4609375,0.31054688,-0.828125,-0.49804688,-0.03466797,0.640625,-0.48828125,1.234375,-1.5546875,0.47070312,0.61328125,0.24902344,-0.85546875,1.09375,1.546875,0.86328125,-0.7421875,-0.7109375,-0.67578125,2.21875,1.6484375,1.1953125,-0.23925781 +2,0,0,1.203125,-0.09814453,-1.3359375,-0.6015625,0.96484375,-1.4765625,-0.8203125,3.140625,-0.5234375,-1.671875,0.023925781,1.5859375,-0.53125,-0.74609375,-0.57421875,1.7421875,-0.26953125,-1.3984375,0.059326172,0.48828125,-1.3671875,-0.6796875,-0.44921875,1.234375,-0.09033203,0.32617188,-2.5,-0.15136719,-0.8828125,-0.06982422,-0.022216797,0.78515625,0.69140625,0.7734375,-0.07470703,-1.0546875,1.2578125,-0.17285156,0.515625,0.6875,-0.0625,-0.008483887,0.11669922,-0.7890625,-0.11816406,0.65625,-0.46875,0.96875,-0.43945312,2.21875,-0.60546875,-2.21875,-1.3359375,-0.04736328,-0.15039062,-0.33203125,0.91796875,0.296875,0.40039062,-1.046875,-0.36523438,1.484375,-0.1328125,0.53515625,-0.265625,-0.03125,-0.002380371,1.4921875,0.16699219,-0.11767578,-0.4140625,-0.29296875,0.8984375,-0.671875,1.625,2.140625,0.625,0.2734375,-0.2421875,-0.75,1.671875,0.75,0.53515625,-0.62890625,-0.44140625,-1.1640625,1.328125,1.828125,0.49414062,1.65625,1.7421875,-0.7734375,-1.046875,1.3671875,-0.28710938,0.03100586,-1.7265625,-0.734375,-1.0859375,-0.21777344,-1.0625,-0.24414062,1.4375,0.94140625,-0.47265625,0.25195312,-1.640625,-0.62109375,-0.29101562,0.0234375,-1.140625,-1.9296875,1.4140625,-2.265625,0.84765625,0.27929688,-2.046875,1.2734375,-0.30078125,-1.21875,1.25,-0.4765625,-0.92578125,-0.36523438,0.4140625,2.75,-0.43164062,-0.40625,0.44335938,-1.8671875,-1.4765625,-1.640625,0.36914062,-1.1015625,-0.890625,-0.012817383,1.328125,0.34570312,0.43554688,-1.3515625,1.46875,-1.8203125,-0.62890625,-0.15527344,0.16113281,0.46875,-0.32421875,0.83203125,-0.73828125,0.83203125,-0.6171875,-0.018188477,0.8125,-0.4453125,0.045898438,-0.7578125,0.3203125,0.015563965,1.65625,1.015625,-1.1484375,1.875,1.2890625,0.8203125,-0.57421875,0.77734375,0.16894531,1.3125,1.2578125,0.76953125,-1.296875,-0.17089844,0.060546875,1.0859375,-1.28125,0.43359375,0.3515625,-0.69140625,-0.059326172,-1.171875,0.45898438,0.38476562,0.30273438,-1.09375,0.22363281,-0.24414062,-1.3984375,0.0134887695,-0.83984375,-1.3515625,0.20996094,1.421875,-0.11621094,-0.43164062,0.12207031,1.1953125,0.49609375,0.6015625,-1.0703125,0.4609375 +2,0,1,0.31445312,-0.33398438,-0.72265625,-0.4453125,0.40429688,-0.546875,-0.006439209,1.5859375,-0.13769531,-0.828125,-0.53515625,-0.375,1.2265625,0.49804688,-1.6484375,0.44726562,-0.5234375,-1.984375,0.42578125,-0.6875,0.5625,-0.32421875,-0.27734375,-0.06640625,-1.328125,-1.8203125,-1.640625,-0.08984375,-2.078125,0.49023438,-0.6875,-1.1171875,0.5625,0.07519531,0.546875,1.6796875,0.62109375,-1.453125,-1.8671875,1.1953125,-1.4765625,0.3515625,-0.54296875,-0.043701172,0.23144531,1.0625,0.5625,-0.546875,0.24023438,1.71875,-2.109375,-1.328125,-1.40625,0.73046875,-1.9921875,0.62109375,0.125,-0.66796875,-0.19140625,-2.140625,1.1796875,-0.16113281,0.42578125,-0.072265625,0.17675781,0.055908203,-1.0859375,0.18847656,-0.671875,2.0,0.90625,-1.6015625,-0.4609375,-0.49609375,0.044189453,1.921875,1.1171875,1.109375,-0.61328125,-0.8828125,1.5546875,0.31835938,0.27734375,-0.5078125,-0.67578125,-0.030639648,0.28710938,0.9609375,-0.66796875,0.67578125,2.125,-0.17285156,0.14941406,0.41796875,-1.390625,-0.19921875,-0.30273438,-0.53125,1.4140625,-0.328125,-2.25,0.14160156,2.25,1.15625,-0.46679688,-0.22851562,1.484375,-0.9296875,0.40039062,0.71484375,0.2734375,0.36328125,0.8515625,-1.4296875,0.30664062,-0.46875,0.18554688,-0.27148438,-0.65234375,-0.65625,1.328125,-0.55078125,0.4140625,-1.1875,-0.24609375,1.2734375,-0.44921875,-2.296875,-0.005645752,-0.041015625,0.671875,-0.061767578,0.19238281,-1.3046875,-1.34375,-0.19921875,-0.35351562,-0.47070312,-0.019042969,-1.8046875,3.0625,-0.76953125,0.39257812,-0.053955078,-0.06933594,1.828125,-1.234375,-0.01977539,-1.9375,1.921875,0.23632812,1.125,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.4375,1.6171875,1.4296875,0.671875,-0.71484375,1.3515625,1.375,0.49804688,-1.3359375,0.53515625,-1.1171875,-0.33984375,2.375,-0.25195312,0.2265625,-0.14550781,-0.66796875,-0.31835938,0.118652344,0.453125,-0.9375,-0.91796875,0.93359375,-0.58984375,-0.18164062,-0.10888672,1.265625,0.48828125,0.6640625,-0.30273438,1.3203125,0.82421875,-0.5390625,-1.0390625,-0.23242188,0.53125,2.15625,0.024658203,0.83203125,-0.15625,1.40625,-0.20996094,1.21875,0.27148438 +2,0,2,0.76953125,0.111328125,-0.36523438,-0.22363281,0.20703125,-0.7578125,-0.2734375,1.4140625,0.5546875,-1.09375,0.5859375,1.4140625,0.4375,0.54296875,-1.6015625,0.8046875,0.19335938,-1.2109375,-0.11230469,0.119628906,0.98828125,-0.5390625,-0.39257812,0.578125,-0.29296875,-0.73046875,-0.51171875,0.06201172,-1.0078125,-0.059814453,-0.68359375,-0.51171875,1.78125,-0.45117188,1.296875,1.59375,0.83203125,-0.16015625,-2.21875,1.7265625,-1.8359375,0.375,-0.59765625,-0.05078125,0.6328125,0.81640625,-0.33984375,-0.1328125,-0.4453125,1.90625,-1.375,-0.11328125,-0.6875,-0.08935547,-0.796875,0.71484375,0.62109375,0.60546875,-0.07861328,-1.2421875,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53515625,-0.53125,1.265625,-0.10449219,-1.1640625,-0.09814453,0.6171875,-0.15527344,1.9296875,1.390625,0.38671875,-1.0,-1.46875,1.3828125,-0.20019531,0.59765625,-1.2890625,-1.3671875,-0.3359375,0.19433594,1.40625,-0.81640625,0.36132812,1.9609375,-0.03540039,-0.8203125,0.62109375,-1.546875,0.93359375,-0.17773438,0.890625,0.734375,0.9921875,-2.46875,0.013305664,2.0,1.03125,-1.3984375,0.35546875,0.91015625,-1.6640625,-1.0703125,0.18652344,0.578125,-0.36132812,1.546875,-1.5078125,-0.359375,-1.21875,0.95703125,-0.045410156,-0.3046875,-1.296875,2.125,0.44140625,-0.59765625,-1.2734375,0.60546875,0.41992188,-0.73046875,-2.1875,0.26367188,-0.36523438,0.18261719,-1.1640625,-0.54296875,-0.79296875,-1.84375,1.65625,0.30859375,-0.62109375,-0.53125,-1.34375,1.8203125,-1.6953125,-0.68359375,-0.3828125,-0.17871094,1.3125,-0.58203125,0.51953125,-2.6875,-0.1171875,0.25976562,1.125,0.69921875,-1.0390625,-0.22753906,-0.78515625,0.90234375,0.47851562,1.1171875,0.54296875,-0.41015625,0.3671875,-0.26171875,0.91796875,-1.5703125,1.28125,-1.109375,-0.58203125,1.3984375,0.08935547,-1.6796875,-0.79296875,-0.64453125,-0.34960938,0.16503906,0.36328125,0.80078125,-0.4609375,0.31054688,-0.828125,-0.49804688,-0.03466797,0.640625,-0.48828125,1.234375,-1.5546875,0.47070312,0.61328125,0.24902344,-0.85546875,1.09375,1.546875,0.86328125,-0.7421875,-0.7109375,-0.67578125,2.21875,1.6484375,1.1953125,-0.23925781 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv index 1f353e1c..d4d5cdcd 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,5,1.0859375,-0.07324219,-1.484375,0.24511719,0.85546875,-1.703125,-0.57421875,2.953125,-0.0625,-0.76171875,0.23046875,2.65625,0.26757812,-0.36328125,-0.69921875,1.734375,0.2734375,-1.328125,0.359375,0.92578125,-0.24414062,-0.73828125,-0.65625,0.5390625,0.9375,1.3359375,-2.703125,0.38671875,-0.59375,-1.0234375,0.34375,-0.045166016,1.6953125,1.34375,0.54296875,-0.62890625,0.99609375,-0.021362305,-0.40820312,0.10644531,0.04736328,0.30859375,-0.17773438,-1.6484375,-0.13574219,0.8828125,-1.5625,0.44726562,0.07519531,0.79296875,-0.84765625,-1.421875,-1.171875,-1.046875,-0.19042969,-0.20800781,0.74609375,0.30078125,-0.24511719,-1.0625,0.21191406,0.71484375,1.3203125,0.8125,-1.265625,-0.32226562,0.30859375,0.27929688,-0.57421875,-0.40234375,0.41601562,-0.42382812,0.49609375,-0.47070312,2.28125,3.09375,1.046875,0.02355957,-0.81640625,-0.84765625,1.453125,0.6875,0.82421875,-1.6015625,0.04321289,-0.3984375,0.47070312,1.328125,0.578125,2.203125,1.875,-0.765625,-1.015625,1.359375,-0.61328125,-0.08691406,-1.3984375,0.0048828125,-0.14941406,0.6796875,-0.51171875,0.16015625,0.052734375,1.265625,-1.046875,-0.18261719,-1.125,0.028930664,-1.3828125,-0.35351562,-1.125,-1.53125,1.765625,-1.8984375,0.61328125,-0.03857422,-1.4609375,0.69140625,-0.0063476562,-0.39453125,1.2734375,0.11425781,-0.890625,-0.11328125,-0.04321289,2.421875,-0.75,-0.62109375,1.3828125,-1.5390625,-1.171875,-2.828125,0.103027344,-0.890625,-1.2109375,0.33984375,1.15625,-0.27539062,0.18066406,-1.171875,0.92578125,-1.2734375,-1.3984375,-0.54296875,-0.19824219,0.54296875,-0.82421875,0.765625,-0.34960938,0.026489258,0.41992188,-0.5390625,0.21484375,-1.2109375,0.28125,-0.12695312,0.96875,0.041503906,1.3359375,0.58984375,-0.18261719,2.46875,0.421875,0.94921875,-0.05883789,0.40039062,0.18945312,0.4765625,1.2734375,1.265625,-1.0234375,-0.640625,-0.88671875,0.91015625,-1.2890625,0.29492188,0.14355469,-0.30078125,0.23828125,-0.30078125,-0.5390625,-0.328125,0.49023438,-1.2109375,0.546875,-0.5234375,-1.1015625,-0.91015625,-0.515625,-0.97265625,0.57421875,0.96484375,-0.42773438,-0.8046875,-0.16699219,1.921875,-0.18457031,0.93359375,-1.453125,-0.171875 -3,0,6,-0.31054688,0.4609375,-1.6953125,-1.1796875,-0.61328125,0.16113281,-0.45703125,2.109375,0.5625,-0.8203125,1.734375,1.125,1.453125,-0.36328125,0.07763672,0.9609375,-0.07128906,-0.9375,0.76171875,-0.53515625,0.62109375,-0.012634277,0.8671875,0.96875,-0.055664062,0.13867188,0.2265625,-0.30859375,-1.2890625,-1.7265625,-0.31054688,1.6953125,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.2421875,0.53515625,0.75,-0.20214844,-0.45703125,0.16113281,-1.5,0.27539062,0.84375,0.23828125,0.55078125,0.3984375,-0.30273438,-2.21875,0.80078125,-0.9140625,0.35546875,-0.85546875,-1.015625,-0.24023438,-0.61328125,0.28125,-0.050048828,-0.12060547,0.86328125,0.69140625,1.5546875,1.40625,0.08886719,-1.28125,0.5390625,-0.765625,0.5390625,-0.40625,0.12109375,0.484375,0.09765625,-0.62109375,2.421875,-0.609375,0.017333984,-0.14648438,-0.03149414,-0.88671875,0.09033203,0.99609375,-0.8359375,0.88671875,0.76171875,-0.6171875,-0.4140625,1.0859375,-0.34570312,1.390625,-0.24902344,-0.875,0.8359375,-0.1171875,-1.125,0.6796875,-0.83203125,-1.3984375,-1.2109375,-1.4140625,0.6796875,3.15625,-0.81640625,-1.234375,-1.1640625,-0.6796875,0.30664062,-0.15429688,0.91796875,-0.546875,-0.47070312,0.8828125,-1.25,1.7734375,-0.30273438,-0.5546875,-0.36523438,0.011047363,-0.64453125,-0.0018310547,-0.828125,0.45507812,-0.44140625,-1.03125,1.28125,-0.88671875,-1.6640625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.984375,-1.734375,1.5,0.69140625,0.3359375,-0.43359375,-1.96875,2.484375,-1.375,-1.0078125,-0.061523438,-0.18261719,-0.26171875,0.32421875,-1.59375,-1.1953125,0.24121094,-0.068359375,1.59375,1.421875,-2.140625,0.106933594,-0.18359375,0.41210938,-1.0234375,1.6796875,-0.58203125,0.42382812,-0.27734375,0.90234375,-0.71484375,-0.013977051,2.234375,-0.953125,-0.110839844,1.5859375,-0.2578125,-1.6171875,-1.1015625,-2.0625,-1.5546875,-0.734375,0.47460938,-0.030151367,0.001625061,-1.328125,-1.2734375,-0.12890625,-0.48632812,0.7421875,-0.03100586,0.734375,-1.0546875,-0.45507812,0.15820312,-1.09375,1.0703125,1.734375,-0.21289062,0.6953125,-0.46679688,-0.95703125,0.75,1.90625,1.609375,0.66015625,1.421875 -3,0,7,0.578125,0.41992188,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.91015625,1.6640625,1.390625,0.76171875,0.19921875,0.42773438,0.95703125,-0.8359375,-0.28320312,1.0625,-0.7265625,0.80078125,-0.29101562,2.28125,2.0,-0.28125,0.5546875,-0.17382812,-1.1640625,-0.57421875,-0.32617188,0.35546875,0.6484375,1.078125,2.125,-0.0016326904,-0.47460938,-0.20605469,0.5,0.60546875,-1.2734375,-1.0546875,-1.84375,1.0078125,-0.4765625,0.66796875,0.19921875,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34765625,0.14355469,-1.6640625,0.95703125,1.625,-0.106933594,-0.53515625,-0.020629883,-0.53125,0.026367188,0.2421875,0.25976562,-1.40625,-1.1796875,1.1484375,1.53125,-1.078125,-0.23925781,1.0234375,0.092285156,-1.4296875,0.88671875,-0.88671875,0.49609375,0.9453125,0.65625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.76953125,0.546875,1.7734375,0.037597656,1.0390625,0.057128906,-0.39453125,1.265625,0.06640625,0.828125,1.2265625,-0.90625,-1.3046875,0.52734375,-0.42578125,-0.75390625,1.5546875,-0.31640625,-0.5078125,-0.5078125,-0.921875,-1.0234375,2.40625,-0.26367188,-1.9453125,-1.6953125,0.7109375,-1.5234375,0.86328125,0.64453125,-0.26171875,-1.6171875,0.921875,-1.234375,0.27539062,-0.53125,0.028320312,0.421875,0.3515625,-1.3515625,1.34375,0.4765625,-0.31445312,-2.140625,0.45507812,2.015625,-0.734375,-0.119628906,1.796875,-1.59375,0.453125,1.234375,1.2109375,-2.625,-2.296875,-0.28710938,-1.015625,0.5625,-0.030273438,-1.4765625,0.89453125,-0.09814453,-0.28710938,0.296875,-0.40234375,0.54296875,-0.9921875,-0.30273438,-0.8046875,0.640625,-0.43945312,0.29492188,-0.69140625,-0.15136719,-0.29101562,-2.109375,-0.78125,-0.55859375,0.53515625,1.4609375,-0.80859375,-1.3828125,0.078125,-0.8515625,0.90625,-0.040039062,-2.0,-1.515625,2.046875,-0.59765625,-0.30664062,0.5390625,-1.5234375,-0.47265625,-0.22363281,-0.09326172,1.5390625,0.22265625,-0.34960938,0.11425781,0.4765625,1.7578125,0.47851562,-0.25390625,0.63671875,-0.7109375,-0.37695312,0.31640625,0.52734375,1.546875,0.8359375,0.60546875,-0.21386719,-0.50390625,0.40820312,-1.53125,0.76953125,0.12988281,1.8046875,0.21191406 -4,0,5,2.046875,0.015991211,-1.2265625,1.3203125,1.1015625,-1.015625,-0.7109375,1.546875,-0.13476562,-0.93359375,1.03125,1.0546875,1.0390625,0.23828125,-1.75,0.83984375,-0.37109375,-0.0859375,0.375,0.013183594,0.875,0.49804688,0.625,0.36523438,0.40429688,0.08935547,-1.7578125,0.33007812,-1.6640625,0.45507812,0.16796875,0.79296875,1.34375,1.765625,0.7109375,0.41015625,0.24316406,-1.2421875,0.734375,0.91015625,-0.80078125,0.203125,-1.0546875,-0.734375,0.40429688,-0.106933594,1.2890625,-0.21386719,-0.81640625,-0.78125,-0.4453125,-1.1953125,-2.203125,-1.5390625,-1.6796875,-0.8203125,0.27929688,0.29296875,0.3828125,-0.6953125,0.09716797,0.23046875,0.049072266,0.76171875,-0.21875,-1.2578125,-0.049560547,0.20996094,0.13867188,0.92578125,1.1875,-2.8125,0.037597656,-0.033935547,0.62109375,2.046875,0.40039062,-0.6484375,0.1484375,-1.9375,-0.48046875,0.29492188,0.114746094,-1.640625,1.1328125,0.6484375,0.25195312,-0.3671875,1.2734375,-0.0703125,1.9609375,0.92578125,0.002456665,0.47460938,0.49804688,-1.546875,-0.19433594,-0.63671875,-0.67578125,-0.064941406,-0.90625,1.3125,0.94140625,-0.29296875,-0.6328125,-1.875,-1.2578125,-0.1796875,-0.12109375,1.3984375,-0.37695312,0.5078125,0.38476562,-0.3203125,1.0,1.296875,-0.78125,-0.859375,0.071777344,-0.265625,-0.12597656,-0.7265625,-1.0859375,0.8359375,-1.3828125,1.5234375,-0.8984375,-1.0859375,0.1484375,0.29101562,0.6171875,-0.7890625,-0.3984375,-0.62109375,-0.84375,0.6953125,0.13183594,-1.1640625,0.48632812,-2.28125,1.96875,-1.984375,-1.1015625,0.44726562,0.76953125,0.31054688,-1.3359375,0.671875,1.4296875,2.46875,-0.029663086,0.85546875,0.45703125,0.2890625,1.53125,1.0859375,-0.953125,0.27148438,0.78125,-0.98046875,-0.18945312,1.4921875,1.0,1.15625,-0.6640625,0.88671875,-0.26757812,-0.15527344,1.125,-1.1328125,-1.203125,-1.375,0.09814453,-1.828125,-1.6484375,-0.82421875,0.35546875,-1.8515625,0.5390625,-0.09033203,-0.49023438,-0.88671875,0.5234375,-1.9921875,1.5,0.39648438,0.58984375,-0.5,-0.052001953,-2.0625,1.1171875,-0.055664062,1.15625,-0.47265625,-0.171875,2.65625,0.6171875,0.014770508,0.3046875,1.015625 -4,0,6,0.38867188,1.015625,-0.84375,-1.046875,1.4921875,0.36523438,-1.2578125,1.28125,0.83203125,-0.13476562,0.16894531,0.7109375,-0.65234375,0.14550781,-0.390625,-0.63671875,-1.1953125,0.2109375,1.8671875,1.171875,0.6640625,-0.39257812,0.9375,0.6796875,-0.84375,-0.7734375,-2.078125,-1.0625,-2.015625,-0.031982422,-0.38671875,0.07421875,0.22460938,1.0546875,-0.57421875,0.09472656,0.38085938,-0.24316406,0.546875,0.86328125,-1.6796875,0.47265625,-0.044433594,0.08251953,0.26953125,0.37890625,0.7890625,-0.875,0.703125,0.65234375,0.984375,-1.2734375,0.107910156,0.28320312,-1.9921875,-0.6484375,-0.34570312,-1.0078125,0.62109375,-1.390625,0.2890625,0.76171875,2.03125,-0.73046875,0.47851562,-1.0546875,-0.05053711,-1.2734375,-0.16992188,1.484375,0.49804688,1.4140625,0.044189453,-1.046875,-0.04296875,0.83203125,-0.37695312,0.3046875,-0.71484375,0.064941406,0.51171875,-0.9140625,0.46484375,-0.32617188,-0.37890625,-0.26367188,-0.50390625,-1.3359375,1.5078125,0.38671875,1.3125,1.75,-1.0,1.453125,-0.53515625,-0.7421875,-0.4140625,-0.028686523,-0.98046875,-0.09326172,-0.62890625,1.234375,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.11279297,0.31054688,0.021728516,0.35351562,0.3984375,0.106933594,0.38867188,1.0,-0.53125,-0.5703125,-0.3203125,0.67578125,0.07324219,0.25195312,-0.22070312,-1.0,0.22167969,-1.15625,2.078125,-0.1875,-2.203125,1.359375,2.84375,0.62109375,-1.625,-2.03125,0.47851562,-1.6875,-0.69921875,-1.1640625,-1.4765625,0.41015625,-1.6875,2.140625,-2.296875,-0.98828125,1.875,0.796875,-0.75390625,0.7734375,0.22265625,-0.37695312,1.75,0.375,-0.22753906,1.1640625,-0.37695312,0.051513672,0.83203125,1.6875,0.35351562,0.7578125,-2.046875,0.875,1.203125,0.9765625,2.203125,-1.03125,1.03125,-1.6171875,-1.421875,2.03125,-0.81640625,0.39453125,-1.515625,0.11816406,-0.1875,-0.72265625,-1.0390625,-0.49023438,-1.3828125,0.22851562,0.0050354004,-0.8203125,-0.61328125,0.8359375,0.6015625,-0.35351562,1.2265625,-0.06347656,-0.56640625,1.0625,-0.9765625,-1.109375,0.034423828,0.45898438,-0.5859375,-1.03125,1.953125,0.79296875,0.66796875,-0.421875,0.6640625 -4,0,7,1.265625,-0.80859375,-0.62890625,0.19921875,-0.29101562,-0.51171875,-0.76953125,0.8828125,-0.671875,-0.6328125,0.32617188,1.1875,1.0546875,0.5234375,-0.66015625,1.515625,-0.31445312,-0.44921875,2.265625,-0.46289062,1.6953125,0.15039062,-0.20507812,0.05078125,2.1875,-0.5390625,-0.98046875,-1.3125,-0.5546875,0.49023438,-0.29882812,0.54296875,1.03125,-0.008605957,-1.984375,-0.13183594,0.5390625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.099609375,0.921875,0.19726562,-0.6796875,-1.2578125,-0.103515625,-0.44140625,-1.0078125,-1.59375,-0.59375,-0.50390625,1.9765625,0.48632812,0.014526367,0.23632812,-0.7109375,1.328125,-0.578125,0.5234375,1.5234375,0.58203125,0.18652344,-0.48632812,-0.4609375,2.265625,-0.023071289,0.17675781,0.029907227,-0.37890625,0.28515625,1.0859375,2.375,-0.25,0.083984375,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111328125,1.0,-0.15722656,0.31445312,1.578125,0.55859375,1.6015625,1.578125,-0.40429688,0.28710938,0.97265625,-1.7265625,1.5703125,-0.90625,-0.034179688,0.375,-0.22167969,-0.83984375,0.19335938,-0.22460938,0.28710938,-0.92578125,-0.29882812,-0.48828125,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.65234375,-0.6796875,-0.61328125,-0.100097656,-0.79296875,0.96875,-0.24511719,0.21386719,0.77734375,1.15625,-0.25195312,-1.7265625,-1.2109375,0.8984375,-1.421875,-0.94921875,0.022949219,0.23046875,0.97265625,-0.30273438,-0.2890625,-1.28125,-0.60546875,-0.20898438,1.8515625,-0.62890625,-1.6796875,-2.625,2.171875,0.64453125,-1.078125,-0.12597656,-0.83984375,-0.20507812,0.671875,-0.87109375,0.296875,1.9296875,-0.36523438,-0.111816406,1.3125,-2.09375,-0.30859375,-1.6015625,1.609375,1.265625,1.40625,-0.84765625,-0.48242188,-0.8046875,0.37890625,-0.28710938,-1.140625,0.18652344,0.096191406,-1.0859375,1.8359375,-0.390625,0.30859375,-0.28125,-1.2890625,0.4609375,-0.51171875,1.5859375,0.21289062,-0.12695312,0.96484375,0.09326172,-1.328125,0.22460938,-0.020507812,0.5,0.018676758,-0.546875,1.0,-0.44335938,1.5625,-0.89453125,-0.15917969,-0.53515625,1.25,-0.67578125,-0.81640625,0.48632812,0.7109375,2.765625,2.171875,0.546875 +3,0,0,1.0859375,-0.07324219,-1.484375,0.24511719,0.85546875,-1.703125,-0.57421875,2.953125,-0.0625,-0.76171875,0.23046875,2.65625,0.26757812,-0.36328125,-0.69921875,1.734375,0.2734375,-1.328125,0.359375,0.92578125,-0.24414062,-0.73828125,-0.65625,0.5390625,0.9375,1.3359375,-2.703125,0.38671875,-0.59375,-1.0234375,0.34375,-0.045166016,1.6953125,1.34375,0.54296875,-0.62890625,0.99609375,-0.021362305,-0.40820312,0.10644531,0.04736328,0.30859375,-0.17773438,-1.6484375,-0.13574219,0.8828125,-1.5625,0.44726562,0.07519531,0.79296875,-0.84765625,-1.421875,-1.171875,-1.046875,-0.19042969,-0.20800781,0.74609375,0.30078125,-0.24511719,-1.0625,0.21191406,0.71484375,1.3203125,0.8125,-1.265625,-0.32226562,0.30859375,0.27929688,-0.57421875,-0.40234375,0.41601562,-0.42382812,0.49609375,-0.47070312,2.28125,3.09375,1.046875,0.02355957,-0.81640625,-0.84765625,1.453125,0.6875,0.82421875,-1.6015625,0.04321289,-0.3984375,0.47070312,1.328125,0.578125,2.203125,1.875,-0.765625,-1.015625,1.359375,-0.61328125,-0.08691406,-1.3984375,0.0048828125,-0.14941406,0.6796875,-0.51171875,0.16015625,0.052734375,1.265625,-1.046875,-0.18261719,-1.125,0.028930664,-1.3828125,-0.35351562,-1.125,-1.53125,1.765625,-1.8984375,0.61328125,-0.03857422,-1.4609375,0.69140625,-0.0063476562,-0.39453125,1.2734375,0.11425781,-0.890625,-0.11328125,-0.04321289,2.421875,-0.75,-0.62109375,1.3828125,-1.5390625,-1.171875,-2.828125,0.103027344,-0.890625,-1.2109375,0.33984375,1.15625,-0.27539062,0.18066406,-1.171875,0.92578125,-1.2734375,-1.3984375,-0.54296875,-0.19824219,0.54296875,-0.82421875,0.765625,-0.34960938,0.026489258,0.41992188,-0.5390625,0.21484375,-1.2109375,0.28125,-0.12695312,0.96875,0.041503906,1.3359375,0.58984375,-0.18261719,2.46875,0.421875,0.94921875,-0.05883789,0.40039062,0.18945312,0.4765625,1.2734375,1.265625,-1.0234375,-0.640625,-0.88671875,0.91015625,-1.2890625,0.29492188,0.14355469,-0.30078125,0.23828125,-0.30078125,-0.5390625,-0.328125,0.49023438,-1.2109375,0.546875,-0.5234375,-1.1015625,-0.91015625,-0.515625,-0.97265625,0.57421875,0.96484375,-0.42773438,-0.8046875,-0.16699219,1.921875,-0.18457031,0.93359375,-1.453125,-0.171875 +3,0,1,-0.31054688,0.4609375,-1.6953125,-1.1796875,-0.61328125,0.16113281,-0.45703125,2.109375,0.5625,-0.8203125,1.734375,1.125,1.453125,-0.36328125,0.07763672,0.9609375,-0.07128906,-0.9375,0.76171875,-0.53515625,0.62109375,-0.012634277,0.8671875,0.96875,-0.055664062,0.13867188,0.2265625,-0.30859375,-1.2890625,-1.7265625,-0.31054688,1.6953125,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.2421875,0.53515625,0.75,-0.20214844,-0.45703125,0.16113281,-1.5,0.27539062,0.84375,0.23828125,0.55078125,0.3984375,-0.30273438,-2.21875,0.80078125,-0.9140625,0.35546875,-0.85546875,-1.015625,-0.24023438,-0.61328125,0.28125,-0.050048828,-0.12060547,0.86328125,0.69140625,1.5546875,1.40625,0.08886719,-1.28125,0.5390625,-0.765625,0.5390625,-0.40625,0.12109375,0.484375,0.09765625,-0.62109375,2.421875,-0.609375,0.017333984,-0.14648438,-0.03149414,-0.88671875,0.09033203,0.99609375,-0.8359375,0.88671875,0.76171875,-0.6171875,-0.4140625,1.0859375,-0.34570312,1.390625,-0.24902344,-0.875,0.8359375,-0.1171875,-1.125,0.6796875,-0.83203125,-1.3984375,-1.2109375,-1.4140625,0.6796875,3.15625,-0.81640625,-1.234375,-1.1640625,-0.6796875,0.30664062,-0.15429688,0.91796875,-0.546875,-0.47070312,0.8828125,-1.25,1.7734375,-0.30273438,-0.5546875,-0.36523438,0.011047363,-0.64453125,-0.0018310547,-0.828125,0.45507812,-0.44140625,-1.03125,1.28125,-0.88671875,-1.6640625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.984375,-1.734375,1.5,0.69140625,0.3359375,-0.43359375,-1.96875,2.484375,-1.375,-1.0078125,-0.061523438,-0.18261719,-0.26171875,0.32421875,-1.59375,-1.1953125,0.24121094,-0.068359375,1.59375,1.421875,-2.140625,0.106933594,-0.18359375,0.41210938,-1.0234375,1.6796875,-0.58203125,0.42382812,-0.27734375,0.90234375,-0.71484375,-0.013977051,2.234375,-0.953125,-0.110839844,1.5859375,-0.2578125,-1.6171875,-1.1015625,-2.0625,-1.5546875,-0.734375,0.47460938,-0.030151367,0.001625061,-1.328125,-1.2734375,-0.12890625,-0.48632812,0.7421875,-0.03100586,0.734375,-1.0546875,-0.45507812,0.15820312,-1.09375,1.0703125,1.734375,-0.21289062,0.6953125,-0.46679688,-0.95703125,0.75,1.90625,1.609375,0.66015625,1.421875 +3,0,2,0.578125,0.41992188,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.91015625,1.6640625,1.390625,0.76171875,0.19921875,0.42773438,0.95703125,-0.8359375,-0.28320312,1.0625,-0.7265625,0.80078125,-0.29101562,2.28125,2.0,-0.28125,0.5546875,-0.17382812,-1.1640625,-0.57421875,-0.32617188,0.35546875,0.6484375,1.078125,2.125,-0.0016326904,-0.47460938,-0.20605469,0.5,0.60546875,-1.2734375,-1.0546875,-1.84375,1.0078125,-0.4765625,0.66796875,0.19921875,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34765625,0.14355469,-1.6640625,0.95703125,1.625,-0.106933594,-0.53515625,-0.020629883,-0.53125,0.026367188,0.2421875,0.25976562,-1.40625,-1.1796875,1.1484375,1.53125,-1.078125,-0.23925781,1.0234375,0.092285156,-1.4296875,0.88671875,-0.88671875,0.49609375,0.9453125,0.65625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.76953125,0.546875,1.7734375,0.037597656,1.0390625,0.057128906,-0.39453125,1.265625,0.06640625,0.828125,1.2265625,-0.90625,-1.3046875,0.52734375,-0.42578125,-0.75390625,1.5546875,-0.31640625,-0.5078125,-0.5078125,-0.921875,-1.0234375,2.40625,-0.26367188,-1.9453125,-1.6953125,0.7109375,-1.5234375,0.86328125,0.64453125,-0.26171875,-1.6171875,0.921875,-1.234375,0.27539062,-0.53125,0.028320312,0.421875,0.3515625,-1.3515625,1.34375,0.4765625,-0.31445312,-2.140625,0.45507812,2.015625,-0.734375,-0.119628906,1.796875,-1.59375,0.453125,1.234375,1.2109375,-2.625,-2.296875,-0.28710938,-1.015625,0.5625,-0.030273438,-1.4765625,0.89453125,-0.09814453,-0.28710938,0.296875,-0.40234375,0.54296875,-0.9921875,-0.30273438,-0.8046875,0.640625,-0.43945312,0.29492188,-0.69140625,-0.15136719,-0.29101562,-2.109375,-0.78125,-0.55859375,0.53515625,1.4609375,-0.80859375,-1.3828125,0.078125,-0.8515625,0.90625,-0.040039062,-2.0,-1.515625,2.046875,-0.59765625,-0.30664062,0.5390625,-1.5234375,-0.47265625,-0.22363281,-0.09326172,1.5390625,0.22265625,-0.34960938,0.11425781,0.4765625,1.7578125,0.47851562,-0.25390625,0.63671875,-0.7109375,-0.37695312,0.31640625,0.52734375,1.546875,0.8359375,0.60546875,-0.21386719,-0.50390625,0.40820312,-1.53125,0.76953125,0.12988281,1.8046875,0.21191406 +4,0,0,2.046875,0.015991211,-1.2265625,1.3203125,1.1015625,-1.015625,-0.7109375,1.546875,-0.13476562,-0.93359375,1.03125,1.0546875,1.0390625,0.23828125,-1.75,0.83984375,-0.37109375,-0.0859375,0.375,0.013183594,0.875,0.49804688,0.625,0.36523438,0.40429688,0.08935547,-1.7578125,0.33007812,-1.6640625,0.45507812,0.16796875,0.79296875,1.34375,1.765625,0.7109375,0.41015625,0.24316406,-1.2421875,0.734375,0.91015625,-0.80078125,0.203125,-1.0546875,-0.734375,0.40429688,-0.106933594,1.2890625,-0.21386719,-0.81640625,-0.78125,-0.4453125,-1.1953125,-2.203125,-1.5390625,-1.6796875,-0.8203125,0.27929688,0.29296875,0.3828125,-0.6953125,0.09716797,0.23046875,0.049072266,0.76171875,-0.21875,-1.2578125,-0.049560547,0.20996094,0.13867188,0.92578125,1.1875,-2.8125,0.037597656,-0.033935547,0.62109375,2.046875,0.40039062,-0.6484375,0.1484375,-1.9375,-0.48046875,0.29492188,0.114746094,-1.640625,1.1328125,0.6484375,0.25195312,-0.3671875,1.2734375,-0.0703125,1.9609375,0.92578125,0.002456665,0.47460938,0.49804688,-1.546875,-0.19433594,-0.63671875,-0.67578125,-0.064941406,-0.90625,1.3125,0.94140625,-0.29296875,-0.6328125,-1.875,-1.2578125,-0.1796875,-0.12109375,1.3984375,-0.37695312,0.5078125,0.38476562,-0.3203125,1.0,1.296875,-0.78125,-0.859375,0.071777344,-0.265625,-0.12597656,-0.7265625,-1.0859375,0.8359375,-1.3828125,1.5234375,-0.8984375,-1.0859375,0.1484375,0.29101562,0.6171875,-0.7890625,-0.3984375,-0.62109375,-0.84375,0.6953125,0.13183594,-1.1640625,0.48632812,-2.28125,1.96875,-1.984375,-1.1015625,0.44726562,0.76953125,0.31054688,-1.3359375,0.671875,1.4296875,2.46875,-0.029663086,0.85546875,0.45703125,0.2890625,1.53125,1.0859375,-0.953125,0.27148438,0.78125,-0.98046875,-0.18945312,1.4921875,1.0,1.15625,-0.6640625,0.88671875,-0.26757812,-0.15527344,1.125,-1.1328125,-1.203125,-1.375,0.09814453,-1.828125,-1.6484375,-0.82421875,0.35546875,-1.8515625,0.5390625,-0.09033203,-0.49023438,-0.88671875,0.5234375,-1.9921875,1.5,0.39648438,0.58984375,-0.5,-0.052001953,-2.0625,1.1171875,-0.055664062,1.15625,-0.47265625,-0.171875,2.65625,0.6171875,0.014770508,0.3046875,1.015625 +4,0,1,0.38867188,1.015625,-0.84375,-1.046875,1.4921875,0.36523438,-1.2578125,1.28125,0.83203125,-0.13476562,0.16894531,0.7109375,-0.65234375,0.14550781,-0.390625,-0.63671875,-1.1953125,0.2109375,1.8671875,1.171875,0.6640625,-0.39257812,0.9375,0.6796875,-0.84375,-0.7734375,-2.078125,-1.0625,-2.015625,-0.031982422,-0.38671875,0.07421875,0.22460938,1.0546875,-0.57421875,0.09472656,0.38085938,-0.24316406,0.546875,0.86328125,-1.6796875,0.47265625,-0.044433594,0.08251953,0.26953125,0.37890625,0.7890625,-0.875,0.703125,0.65234375,0.984375,-1.2734375,0.107910156,0.28320312,-1.9921875,-0.6484375,-0.34570312,-1.0078125,0.62109375,-1.390625,0.2890625,0.76171875,2.03125,-0.73046875,0.47851562,-1.0546875,-0.05053711,-1.2734375,-0.16992188,1.484375,0.49804688,1.4140625,0.044189453,-1.046875,-0.04296875,0.83203125,-0.37695312,0.3046875,-0.71484375,0.064941406,0.51171875,-0.9140625,0.46484375,-0.32617188,-0.37890625,-0.26367188,-0.50390625,-1.3359375,1.5078125,0.38671875,1.3125,1.75,-1.0,1.453125,-0.53515625,-0.7421875,-0.4140625,-0.028686523,-0.98046875,-0.09326172,-0.62890625,1.234375,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.11279297,0.31054688,0.021728516,0.35351562,0.3984375,0.106933594,0.38867188,1.0,-0.53125,-0.5703125,-0.3203125,0.67578125,0.07324219,0.25195312,-0.22070312,-1.0,0.22167969,-1.15625,2.078125,-0.1875,-2.203125,1.359375,2.84375,0.62109375,-1.625,-2.03125,0.47851562,-1.6875,-0.69921875,-1.1640625,-1.4765625,0.41015625,-1.6875,2.140625,-2.296875,-0.98828125,1.875,0.796875,-0.75390625,0.7734375,0.22265625,-0.37695312,1.75,0.375,-0.22753906,1.1640625,-0.37695312,0.051513672,0.83203125,1.6875,0.35351562,0.7578125,-2.046875,0.875,1.203125,0.9765625,2.203125,-1.03125,1.03125,-1.6171875,-1.421875,2.03125,-0.81640625,0.39453125,-1.515625,0.11816406,-0.1875,-0.72265625,-1.0390625,-0.49023438,-1.3828125,0.22851562,0.0050354004,-0.8203125,-0.61328125,0.8359375,0.6015625,-0.35351562,1.2265625,-0.06347656,-0.56640625,1.0625,-0.9765625,-1.109375,0.034423828,0.45898438,-0.5859375,-1.03125,1.953125,0.79296875,0.66796875,-0.421875,0.6640625 +4,0,2,1.265625,-0.80859375,-0.62890625,0.19921875,-0.29101562,-0.51171875,-0.76953125,0.8828125,-0.671875,-0.6328125,0.32617188,1.1875,1.0546875,0.5234375,-0.66015625,1.515625,-0.31445312,-0.44921875,2.265625,-0.46289062,1.6953125,0.15039062,-0.20507812,0.05078125,2.1875,-0.5390625,-0.98046875,-1.3125,-0.5546875,0.49023438,-0.29882812,0.54296875,1.03125,-0.008605957,-1.984375,-0.13183594,0.5390625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.099609375,0.921875,0.19726562,-0.6796875,-1.2578125,-0.103515625,-0.44140625,-1.0078125,-1.59375,-0.59375,-0.50390625,1.9765625,0.48632812,0.014526367,0.23632812,-0.7109375,1.328125,-0.578125,0.5234375,1.5234375,0.58203125,0.18652344,-0.48632812,-0.4609375,2.265625,-0.023071289,0.17675781,0.029907227,-0.37890625,0.28515625,1.0859375,2.375,-0.25,0.083984375,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111328125,1.0,-0.15722656,0.31445312,1.578125,0.55859375,1.6015625,1.578125,-0.40429688,0.28710938,0.97265625,-1.7265625,1.5703125,-0.90625,-0.034179688,0.375,-0.22167969,-0.83984375,0.19335938,-0.22460938,0.28710938,-0.92578125,-0.29882812,-0.48828125,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.65234375,-0.6796875,-0.61328125,-0.100097656,-0.79296875,0.96875,-0.24511719,0.21386719,0.77734375,1.15625,-0.25195312,-1.7265625,-1.2109375,0.8984375,-1.421875,-0.94921875,0.022949219,0.23046875,0.97265625,-0.30273438,-0.2890625,-1.28125,-0.60546875,-0.20898438,1.8515625,-0.62890625,-1.6796875,-2.625,2.171875,0.64453125,-1.078125,-0.12597656,-0.83984375,-0.20507812,0.671875,-0.87109375,0.296875,1.9296875,-0.36523438,-0.111816406,1.3125,-2.09375,-0.30859375,-1.6015625,1.609375,1.265625,1.40625,-0.84765625,-0.48242188,-0.8046875,0.37890625,-0.28710938,-1.140625,0.18652344,0.096191406,-1.0859375,1.8359375,-0.390625,0.30859375,-0.28125,-1.2890625,0.4609375,-0.51171875,1.5859375,0.21289062,-0.12695312,0.96484375,0.09326172,-1.328125,0.22460938,-0.020507812,0.5,0.018676758,-0.546875,1.0,-0.44335938,1.5625,-0.89453125,-0.15917969,-0.53515625,1.25,-0.67578125,-0.81640625,0.48632812,0.7109375,2.765625,2.171875,0.546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv index f76bfe98..254cb8d4 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,5,0.58984375,0.99609375,-0.34570312,-1.3515625,-0.484375,-0.91015625,-0.88671875,0.4609375,0.94921875,-1.25,-0.1953125,-0.58203125,-1.09375,1.546875,-1.6640625,0.671875,-0.33007812,0.453125,-0.81640625,0.87109375,1.671875,0.70703125,0.06347656,0.34570312,0.41015625,-0.58984375,-1.8828125,-0.15136719,-1.0,1.2109375,-0.92578125,-0.22558594,0.83984375,0.20800781,-0.22753906,0.91015625,0.40039062,-0.060546875,-0.58984375,0.6171875,-1.8046875,0.38085938,-0.12109375,0.40625,-0.0045166016,1.34375,0.703125,0.13867188,-0.40039062,1.25,-0.41796875,-0.66796875,-1.515625,-0.021972656,-0.045654297,1.8203125,0.018310547,-0.23730469,0.40429688,-1.546875,0.29101562,0.39453125,1.2890625,0.2421875,0.9765625,1.1875,-1.5859375,1.4765625,0.013549805,-0.22753906,-0.80078125,-1.2109375,-0.765625,-0.07080078,-0.58203125,0.013427734,0.4921875,0.55859375,0.3125,0.64453125,1.078125,-1.046875,1.0,0.42382812,-0.53125,0.49804688,0.34375,0.62890625,-0.5859375,-0.50390625,3.578125,0.421875,0.79296875,1.2734375,-0.52734375,1.03125,-0.97265625,0.31640625,-0.578125,0.34179688,-0.82421875,0.17285156,1.375,-1.140625,0.04663086,0.17480469,-0.38671875,-1.859375,-0.4453125,0.828125,-0.15234375,-0.40429688,0.43554688,-0.8125,-0.6171875,-0.609375,-0.34570312,0.6953125,0.42773438,-0.125,0.73046875,-1.0703125,-0.62890625,-1.8359375,-0.82421875,1.6484375,-0.35742188,-1.6328125,-1.1015625,-0.96484375,1.3125,0.25585938,-2.375,-0.58984375,-1.5625,2.0,0.13769531,-0.45507812,-1.3515625,-2.5625,1.1015625,-2.25,0.5859375,-0.092285156,0.64453125,0.35351562,-0.20507812,-0.76171875,-0.087402344,1.5546875,-1.578125,0.59375,0.60546875,-0.10253906,1.2890625,-0.061279297,0.41601562,0.9375,0.796875,0.41992188,-0.87890625,-0.6640625,-0.37109375,0.09082031,-2.6875,2.40625,0.22851562,-0.012207031,1.421875,-0.91796875,-1.9140625,-0.8671875,-1.1171875,-0.92578125,-0.44921875,1.5078125,1.1875,-1.0078125,-0.18554688,-0.91015625,0.44921875,1.3203125,0.50390625,-0.041992188,1.0078125,-1.109375,-0.13476562,1.609375,0.58203125,-1.3125,-0.23535156,1.3671875,1.2265625,0.3828125,-0.55078125,0.44140625,3.265625,-0.100097656,-0.18652344,0.44726562 -5,0,6,-0.43945312,-0.69921875,-0.38476562,-1.4296875,0.18261719,-1.203125,-0.9453125,1.6484375,0.064453125,0.8125,-0.8671875,-0.53125,1.4140625,0.87890625,-2.140625,0.92578125,-0.515625,-0.86328125,0.10058594,0.5078125,2.453125,-0.18164062,-0.84765625,0.23925781,0.484375,-0.37890625,-2.0625,-1.1328125,-0.421875,1.7421875,-0.26367188,0.50390625,-0.98046875,0.546875,-1.2578125,0.49609375,-0.37304688,-0.49609375,-0.27734375,-0.6015625,-0.94921875,0.33203125,-0.6953125,-0.28515625,0.5390625,2.5,-0.10595703,-0.31640625,1.390625,1.0625,-1.0,-2.421875,-2.328125,0.4375,-0.609375,1.671875,-0.28125,-0.80859375,-0.26367188,-1.5546875,-0.87890625,-0.80859375,1.5859375,0.9609375,1.4296875,2.015625,-1.671875,1.6328125,-0.96875,0.62109375,1.296875,-1.296875,-0.69921875,-0.26367188,-0.23632812,0.24609375,0.26367188,-0.33789062,0.7265625,0.73046875,1.5703125,-0.43359375,0.27929688,1.75,-0.84375,0.64453125,-0.8203125,0.049316406,0.13769531,-0.11621094,1.4765625,-0.36132812,1.7734375,-0.103515625,-0.14453125,0.025878906,-1.84375,0.78125,-0.5390625,0.375,-0.28710938,-0.26953125,0.35742188,0.17578125,0.3671875,1.3125,-1.671875,-2.625,-1.0703125,-0.62109375,-0.19824219,0.7734375,-1.0546875,-0.53125,-0.100097656,-2.375,-0.09667969,0.81640625,0.33007812,1.5859375,0.11230469,-0.3828125,-0.15625,-1.65625,-1.265625,0.63671875,-1.359375,-0.77734375,-0.78515625,0.4765625,2.0625,-0.75390625,-1.71875,-0.5546875,-0.28515625,0.83984375,-0.13671875,0.079589844,-0.100097656,-2.046875,-0.328125,1.609375,0.58984375,0.95703125,0.52734375,0.15820312,-0.5234375,0.20507812,-0.59375,1.0390625,0.034423828,-0.90234375,0.54296875,-0.53515625,0.4375,-0.1796875,1.40625,1.0078125,0.55078125,0.359375,-0.19433594,0.875,0.41601562,0.49804688,-1.7890625,1.7265625,0.734375,0.20996094,0.45898438,0.037597656,-0.49609375,0.63671875,-0.039794922,0.18457031,-1.1171875,1.9921875,0.18261719,-1.6640625,-0.5703125,-0.09667969,-0.66015625,0.875,0.91796875,0.3828125,0.28515625,-0.28515625,0.27734375,0.3984375,0.32226562,-0.7890625,-1.4609375,0.7578125,1.5,0.15039062,-0.55078125,0.27734375,2.375,-0.39453125,1.015625,1.109375 -5,0,7,0.90234375,0.56640625,0.828125,0.19921875,-1.140625,-0.07861328,-1.1953125,-0.034179688,2.609375,-1.453125,1.8359375,-0.03930664,0.34960938,1.3671875,-0.625,-0.42578125,-0.46484375,0.18164062,2.265625,1.1484375,0.24023438,-0.51171875,-0.15625,0.578125,-0.48242188,-0.53515625,0.6484375,-0.52734375,0.90625,0.5078125,-0.40625,-0.008117676,0.78125,-0.6796875,0.38085938,0.91796875,0.953125,-0.19042969,-0.21191406,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.234375,0.50390625,-0.29101562,0.87890625,0.6796875,-0.16015625,-0.265625,-0.74609375,0.95703125,0.9375,0.41015625,-0.65234375,-0.49804688,-0.578125,0.7734375,1.1953125,-0.37890625,1.2578125,0.099609375,0.640625,0.51953125,-0.20703125,-1.2578125,-1.46875,0.41210938,-0.111328125,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.48046875,-1.09375,1.2578125,-1.8828125,-0.70703125,0.9375,-1.1640625,-0.6953125,0.5078125,-0.36132812,-1.515625,0.48242188,0.28710938,1.5390625,1.2109375,-0.46875,0.87109375,-0.453125,0.16308594,-1.7890625,0.73828125,-0.640625,-0.36914062,-1.6875,0.609375,0.9140625,-1.296875,-0.34960938,2.171875,-0.6328125,-0.7890625,-0.375,0.78515625,-0.47265625,0.25976562,1.2265625,-0.58203125,0.26757812,0.34960938,-0.625,0.453125,-0.41210938,0.55859375,0.6875,-0.0054626465,0.4453125,-1.6796875,-1.9140625,0.55859375,-0.16894531,-0.19921875,-0.34765625,1.140625,1.0703125,0.61328125,-1.5078125,-0.265625,-1.09375,1.578125,0.16503906,-0.734375,-0.41601562,-1.75,1.6875,-0.26953125,-0.62890625,1.5078125,-0.28710938,-0.075683594,1.4609375,-0.73046875,-1.1875,0.22167969,-1.0859375,-0.16503906,2.15625,-0.578125,-0.609375,0.19628906,1.40625,-0.39648438,0.65625,0.390625,-0.75,-0.3046875,1.390625,1.2421875,-1.171875,-0.14550781,-0.6640625,-0.6171875,0.6484375,-1.6953125,-2.109375,-0.25585938,-2.984375,-0.40234375,-0.578125,2.484375,0.80078125,-1.0546875,-0.4765625,0.36132812,-0.33007812,-0.092285156,-0.068359375,-0.65625,-1.15625,0.20800781,1.1171875,0.58984375,-0.38671875,-0.8203125,-1.5234375,0.296875,0.546875,-0.8671875,-2.8125,1.2578125,3.171875,0.20019531,0.34375,0.85546875 +5,0,0,0.58984375,0.99609375,-0.34570312,-1.3515625,-0.484375,-0.91015625,-0.88671875,0.4609375,0.94921875,-1.25,-0.1953125,-0.58203125,-1.09375,1.546875,-1.6640625,0.671875,-0.33007812,0.453125,-0.81640625,0.87109375,1.671875,0.70703125,0.06347656,0.34570312,0.41015625,-0.58984375,-1.8828125,-0.15136719,-1.0,1.2109375,-0.92578125,-0.22558594,0.83984375,0.20800781,-0.22753906,0.91015625,0.40039062,-0.060546875,-0.58984375,0.6171875,-1.8046875,0.38085938,-0.12109375,0.40625,-0.0045166016,1.34375,0.703125,0.13867188,-0.40039062,1.25,-0.41796875,-0.66796875,-1.515625,-0.021972656,-0.045654297,1.8203125,0.018310547,-0.23730469,0.40429688,-1.546875,0.29101562,0.39453125,1.2890625,0.2421875,0.9765625,1.1875,-1.5859375,1.4765625,0.013549805,-0.22753906,-0.80078125,-1.2109375,-0.765625,-0.07080078,-0.58203125,0.013427734,0.4921875,0.55859375,0.3125,0.64453125,1.078125,-1.046875,1.0,0.42382812,-0.53125,0.49804688,0.34375,0.62890625,-0.5859375,-0.50390625,3.578125,0.421875,0.79296875,1.2734375,-0.52734375,1.03125,-0.97265625,0.31640625,-0.578125,0.34179688,-0.82421875,0.17285156,1.375,-1.140625,0.04663086,0.17480469,-0.38671875,-1.859375,-0.4453125,0.828125,-0.15234375,-0.40429688,0.43554688,-0.8125,-0.6171875,-0.609375,-0.34570312,0.6953125,0.42773438,-0.125,0.73046875,-1.0703125,-0.62890625,-1.8359375,-0.82421875,1.6484375,-0.35742188,-1.6328125,-1.1015625,-0.96484375,1.3125,0.25585938,-2.375,-0.58984375,-1.5625,2.0,0.13769531,-0.45507812,-1.3515625,-2.5625,1.1015625,-2.25,0.5859375,-0.092285156,0.64453125,0.35351562,-0.20507812,-0.76171875,-0.087402344,1.5546875,-1.578125,0.59375,0.60546875,-0.10253906,1.2890625,-0.061279297,0.41601562,0.9375,0.796875,0.41992188,-0.87890625,-0.6640625,-0.37109375,0.09082031,-2.6875,2.40625,0.22851562,-0.012207031,1.421875,-0.91796875,-1.9140625,-0.8671875,-1.1171875,-0.92578125,-0.44921875,1.5078125,1.1875,-1.0078125,-0.18554688,-0.91015625,0.44921875,1.3203125,0.50390625,-0.041992188,1.0078125,-1.109375,-0.13476562,1.609375,0.58203125,-1.3125,-0.23535156,1.3671875,1.2265625,0.3828125,-0.55078125,0.44140625,3.265625,-0.100097656,-0.18652344,0.44726562 +5,0,1,-0.43945312,-0.69921875,-0.38476562,-1.4296875,0.18261719,-1.203125,-0.9453125,1.6484375,0.064453125,0.8125,-0.8671875,-0.53125,1.4140625,0.87890625,-2.140625,0.92578125,-0.515625,-0.86328125,0.10058594,0.5078125,2.453125,-0.18164062,-0.84765625,0.23925781,0.484375,-0.37890625,-2.0625,-1.1328125,-0.421875,1.7421875,-0.26367188,0.50390625,-0.98046875,0.546875,-1.2578125,0.49609375,-0.37304688,-0.49609375,-0.27734375,-0.6015625,-0.94921875,0.33203125,-0.6953125,-0.28515625,0.5390625,2.5,-0.10595703,-0.31640625,1.390625,1.0625,-1.0,-2.421875,-2.328125,0.4375,-0.609375,1.671875,-0.28125,-0.80859375,-0.26367188,-1.5546875,-0.87890625,-0.80859375,1.5859375,0.9609375,1.4296875,2.015625,-1.671875,1.6328125,-0.96875,0.62109375,1.296875,-1.296875,-0.69921875,-0.26367188,-0.23632812,0.24609375,0.26367188,-0.33789062,0.7265625,0.73046875,1.5703125,-0.43359375,0.27929688,1.75,-0.84375,0.64453125,-0.8203125,0.049316406,0.13769531,-0.11621094,1.4765625,-0.36132812,1.7734375,-0.103515625,-0.14453125,0.025878906,-1.84375,0.78125,-0.5390625,0.375,-0.28710938,-0.26953125,0.35742188,0.17578125,0.3671875,1.3125,-1.671875,-2.625,-1.0703125,-0.62109375,-0.19824219,0.7734375,-1.0546875,-0.53125,-0.100097656,-2.375,-0.09667969,0.81640625,0.33007812,1.5859375,0.11230469,-0.3828125,-0.15625,-1.65625,-1.265625,0.63671875,-1.359375,-0.77734375,-0.78515625,0.4765625,2.0625,-0.75390625,-1.71875,-0.5546875,-0.28515625,0.83984375,-0.13671875,0.079589844,-0.100097656,-2.046875,-0.328125,1.609375,0.58984375,0.95703125,0.52734375,0.15820312,-0.5234375,0.20507812,-0.59375,1.0390625,0.034423828,-0.90234375,0.54296875,-0.53515625,0.4375,-0.1796875,1.40625,1.0078125,0.55078125,0.359375,-0.19433594,0.875,0.41601562,0.49804688,-1.7890625,1.7265625,0.734375,0.20996094,0.45898438,0.037597656,-0.49609375,0.63671875,-0.039794922,0.18457031,-1.1171875,1.9921875,0.18261719,-1.6640625,-0.5703125,-0.09667969,-0.66015625,0.875,0.91796875,0.3828125,0.28515625,-0.28515625,0.27734375,0.3984375,0.32226562,-0.7890625,-1.4609375,0.7578125,1.5,0.15039062,-0.55078125,0.27734375,2.375,-0.39453125,1.015625,1.109375 +5,0,2,0.90234375,0.56640625,0.828125,0.19921875,-1.140625,-0.07861328,-1.1953125,-0.034179688,2.609375,-1.453125,1.8359375,-0.03930664,0.34960938,1.3671875,-0.625,-0.42578125,-0.46484375,0.18164062,2.265625,1.1484375,0.24023438,-0.51171875,-0.15625,0.578125,-0.48242188,-0.53515625,0.6484375,-0.52734375,0.90625,0.5078125,-0.40625,-0.008117676,0.78125,-0.6796875,0.38085938,0.91796875,0.953125,-0.19042969,-0.21191406,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.234375,0.50390625,-0.29101562,0.87890625,0.6796875,-0.16015625,-0.265625,-0.74609375,0.95703125,0.9375,0.41015625,-0.65234375,-0.49804688,-0.578125,0.7734375,1.1953125,-0.37890625,1.2578125,0.099609375,0.640625,0.51953125,-0.20703125,-1.2578125,-1.46875,0.41210938,-0.111328125,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.48046875,-1.09375,1.2578125,-1.8828125,-0.70703125,0.9375,-1.1640625,-0.6953125,0.5078125,-0.36132812,-1.515625,0.48242188,0.28710938,1.5390625,1.2109375,-0.46875,0.87109375,-0.453125,0.16308594,-1.7890625,0.73828125,-0.640625,-0.36914062,-1.6875,0.609375,0.9140625,-1.296875,-0.34960938,2.171875,-0.6328125,-0.7890625,-0.375,0.78515625,-0.47265625,0.25976562,1.2265625,-0.58203125,0.26757812,0.34960938,-0.625,0.453125,-0.41210938,0.55859375,0.6875,-0.0054626465,0.4453125,-1.6796875,-1.9140625,0.55859375,-0.16894531,-0.19921875,-0.34765625,1.140625,1.0703125,0.61328125,-1.5078125,-0.265625,-1.09375,1.578125,0.16503906,-0.734375,-0.41601562,-1.75,1.6875,-0.26953125,-0.62890625,1.5078125,-0.28710938,-0.075683594,1.4609375,-0.73046875,-1.1875,0.22167969,-1.0859375,-0.16503906,2.15625,-0.578125,-0.609375,0.19628906,1.40625,-0.39648438,0.65625,0.390625,-0.75,-0.3046875,1.390625,1.2421875,-1.171875,-0.14550781,-0.6640625,-0.6171875,0.6484375,-1.6953125,-2.109375,-0.25585938,-2.984375,-0.40234375,-0.578125,2.484375,0.80078125,-1.0546875,-0.4765625,0.36132812,-0.33007812,-0.092285156,-0.068359375,-0.65625,-1.15625,0.20800781,1.1171875,0.58984375,-0.38671875,-0.8203125,-1.5234375,0.296875,0.546875,-0.8671875,-2.8125,1.2578125,3.171875,0.20019531,0.34375,0.85546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv index a0c6dbf9..76476f56 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,5,0.13964844,0.10888672,0.27539062,-0.88671875,1.390625,0.61328125,0.48828125,1.0234375,-0.4921875,-1.046875,0.12597656,-0.26757812,0.57421875,0.35351562,-1.25,0.48632812,-0.546875,-1.9140625,1.1328125,-0.53125,-0.087402344,-0.6640625,1.28125,0.5234375,-1.234375,-1.5078125,-0.953125,-0.8671875,-1.7890625,0.44335938,-0.64453125,-0.26171875,0.010559082,-0.4609375,-0.5234375,0.953125,0.91796875,-0.73828125,-1.4609375,1.578125,-1.8046875,0.030517578,-0.07519531,0.09814453,0.38671875,0.5234375,0.63671875,-0.69921875,0.38085938,1.8515625,-1.1953125,-1.6015625,-0.98046875,1.1015625,-2.421875,0.091796875,-0.21289062,-0.80859375,1.328125,-1.6953125,1.734375,0.18359375,0.29296875,0.30273438,-0.5078125,-0.06640625,-1.0703125,0.16210938,0.546875,1.84375,0.05517578,-0.31835938,0.57421875,-0.13574219,-0.66796875,1.8515625,0.76953125,1.1796875,-1.7734375,-0.5234375,1.28125,0.89453125,-0.11816406,0.12207031,-0.63671875,-0.20117188,-0.46484375,1.4453125,-0.36132812,0.98828125,1.3828125,0.21386719,-0.921875,0.36523438,-1.4296875,0.22363281,-0.59375,-0.640625,0.625,-0.890625,-2.375,-0.18066406,2.515625,0.78125,-0.79296875,0.0051574707,0.063964844,-1.0703125,0.49609375,0.98828125,0.703125,0.036376953,0.56640625,-0.796875,0.49414062,-0.31640625,-0.47851562,-0.34765625,-0.484375,-1.1796875,0.71484375,-0.78515625,0.60546875,-1.5703125,-0.22460938,1.265625,-1.3203125,-2.40625,0.013122559,0.17382812,-0.18652344,0.044921875,-0.025512695,-1.3671875,-1.03125,-0.13671875,-0.65234375,0.25390625,0.20507812,-1.7265625,3.375,-0.40429688,1.3125,1.109375,-1.234375,1.0703125,-0.6015625,-0.671875,-2.515625,1.1015625,-0.30859375,-0.03564453,1.0625,-0.484375,-1.078125,-1.2109375,0.38085938,1.359375,1.015625,1.4375,-0.26367188,-0.011962891,1.8203125,1.2421875,-1.78125,1.6640625,-1.671875,-0.24511719,2.125,-0.20117188,0.36914062,-0.40234375,0.099609375,0.62109375,0.68359375,0.041992188,-0.86328125,-0.84765625,0.859375,-0.61328125,-0.3046875,-0.890625,0.13964844,0.86328125,0.1484375,0.54296875,0.59375,0.037841797,0.87109375,-1.8046875,0.09863281,1.375,1.2578125,0.28710938,0.43554688,-0.17871094,1.6875,0.15625,1.40625,0.51953125 -6,0,6,0.828125,0.83203125,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39257812,-0.10253906,-1.4375,1.109375,-0.19335938,0.53125,-0.54296875,-0.99609375,-0.37109375,-0.81640625,-0.39648438,1.1171875,1.25,0.20410156,-1.8984375,0.36132812,0.35742188,-0.90234375,-1.609375,-1.3828125,-0.34960938,0.22753906,0.057861328,-0.23632812,-0.328125,1.71875,0.20703125,-0.33007812,-0.16992188,0.31445312,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71875,-0.26757812,1.2578125,-0.27929688,0.25390625,-0.734375,-1.0234375,0.43554688,1.7109375,1.140625,-1.7734375,-0.49414062,-0.26757812,-1.0859375,-2.140625,0.3828125,1.3046875,-0.11279297,-1.015625,1.609375,1.59375,1.734375,-0.34570312,-1.0390625,-0.71875,0.05029297,-2.078125,-0.30078125,0.85546875,0.38476562,0.17382812,1.3515625,-1.4921875,0.45898438,0.51953125,0.18359375,-0.20214844,-1.71875,0.39648438,-0.2734375,0.71875,-0.016235352,0.32226562,-0.76171875,0.734375,-2.828125,0.45507812,1.578125,1.2109375,1.4296875,1.203125,1.125,0.22558594,-0.6328125,-0.9375,-0.87109375,1.25,-0.22753906,0.123535156,-0.54296875,-0.40039062,0.890625,-0.11279297,-1.0390625,0.78125,-0.98828125,-0.18164062,-0.34765625,-0.328125,0.18261719,1.96875,0.13378906,-0.63671875,-0.57421875,0.6796875,-0.4140625,0.33398438,-0.46484375,0.83984375,0.052490234,-1.09375,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.59765625,-0.24511719,0.765625,-0.04272461,-2.5,-0.93359375,0.73828125,-1.3125,2.546875,-0.31445312,0.013977051,1.8203125,-1.3203125,1.4296875,-0.75,0.12158203,1.171875,0.6640625,-0.20117188,-0.22558594,-0.28320312,-0.56640625,0.203125,0.4296875,-0.32226562,-1.34375,1.0234375,-1.140625,1.2265625,0.69921875,-0.36523438,-0.39257812,1.0546875,0.78515625,1.1484375,1.0078125,3.03125,-2.671875,1.6171875,-2.25,1.1796875,0.16796875,-0.29492188,-1.7734375,-1.84375,0.7265625,-0.6484375,0.65625,0.27734375,-0.66796875,-1.96875,1.40625,-0.35351562,0.09667969,0.15332031,0.83984375,-0.11230469,-1.015625,1.578125,-0.49609375,-0.26757812,0.5078125,-0.36914062,0.65625,1.546875,-0.31835938,-1.046875,-0.8125,-0.46289062,-0.46875,-0.19726562,0.19726562,0.51953125 -6,0,7,-0.9140625,0.041748047,-0.34179688,1.09375,1.3671875,-0.032226562,-0.43945312,1.0625,0.59765625,-0.66015625,0.27539062,1.84375,-0.2890625,-0.65625,-0.97265625,0.22949219,-0.00076293945,-1.046875,1.96875,-0.48046875,-0.123046875,-2.0625,-0.8125,0.53515625,-0.11816406,-0.62890625,0.71484375,0.73828125,0.68359375,0.40820312,0.44140625,0.2734375,1.328125,-0.515625,2.125,0.88671875,1.171875,-0.82421875,-1.015625,0.6640625,-0.40429688,-0.80859375,-1.8671875,-1.875,-0.828125,0.890625,-0.3984375,-0.94140625,0.86328125,1.75,1.140625,-0.5703125,-1.1484375,0.31054688,-0.12109375,-2.03125,0.35546875,1.515625,0.43359375,0.15722656,0.78125,0.83203125,-0.3515625,1.2890625,-1.3203125,0.5546875,-1.3359375,-1.9140625,0.47851562,-0.049316406,0.8046875,1.4453125,1.765625,-1.7734375,0.8203125,0.921875,-0.08251953,-0.69140625,-0.2890625,0.92578125,-1.03125,0.5703125,-0.28710938,-0.91015625,0.04296875,-1.359375,-0.4375,-0.19238281,1.5625,0.859375,1.4453125,-0.13574219,-0.20117188,1.0859375,-0.3203125,-0.27734375,-0.8203125,-0.9609375,-1.0234375,-0.21289062,0.083984375,0.40625,1.390625,1.1875,-1.0703125,1.3671875,0.61328125,0.19824219,-0.049560547,0.5234375,0.74609375,0.84375,2.484375,-1.578125,0.77734375,-0.35546875,-1.53125,0.66796875,-0.83984375,-0.7890625,1.328125,0.4609375,-0.671875,-0.64453125,-1.296875,2.015625,-0.06689453,0.7578125,0.8203125,-1.28125,1.484375,-2.328125,0.15722656,0.19335938,-0.110839844,0.8984375,0.72265625,-0.12988281,0.41210938,-1.0,1.5703125,0.26367188,-1.4453125,1.3828125,-0.36523438,-1.015625,0.49804688,-0.31640625,-0.1875,-1.25,0.7890625,0.22851562,2.671875,-0.921875,-0.8125,0.0390625,0.140625,-1.59375,1.1953125,0.12207031,0.63671875,0.59765625,1.1328125,0.47851562,0.0546875,0.73046875,0.020141602,0.98046875,-0.33398438,-0.005218506,-1.1953125,-1.40625,-2.359375,-1.2890625,-0.41796875,0.99609375,-0.49804688,-1.53125,-1.640625,-0.953125,0.7109375,0.16601562,0.25585938,-1.234375,-0.83984375,-1.21875,-0.25,0.19042969,-1.2578125,1.078125,-1.2109375,-0.030517578,-0.8671875,-1.1875,-1.609375,0.578125,-0.1875,0.21386719,0.203125,1.609375 -7,0,5,0.8671875,1.2109375,-0.828125,-0.984375,-1.28125,0.32617188,-0.5,1.5234375,-0.7890625,-0.71484375,1.625,0.010192871,-0.060791016,-0.28125,-1.15625,1.640625,-0.28515625,-1.5234375,0.15039062,-0.66796875,1.34375,0.84375,0.47851562,1.125,0.88671875,-0.85546875,-0.9296875,-1.9453125,-1.6171875,-0.62890625,-1.2578125,2.453125,1.015625,2.515625,-0.16992188,0.14550781,-0.40234375,-0.59765625,0.86328125,0.5546875,-0.62890625,0.28125,0.640625,0.20019531,1.3046875,0.36328125,0.58203125,0.27539062,0.6484375,-1.1796875,-0.83984375,-0.5078125,-1.890625,-1.609375,-1.03125,0.59375,0.08642578,-0.33789062,0.31445312,-0.75,-0.19042969,-0.515625,1.8515625,1.0,1.1796875,0.7109375,-0.890625,-0.13964844,0.22460938,0.24707031,-0.03857422,-0.36132812,-0.6796875,-0.18847656,-0.47265625,-0.15332031,-0.23339844,-0.13085938,-0.014709473,0.45898438,-0.48046875,-0.5390625,1.1328125,0.4296875,1.109375,1.2890625,-0.97265625,0.53125,1.359375,-1.015625,1.3359375,0.40625,0.546875,1.2109375,0.21875,-1.3125,0.765625,1.0,-1.71875,-0.29882812,-0.64453125,0.328125,2.234375,-1.7734375,-1.2265625,-1.484375,-2.0,-1.7265625,-0.48242188,0.93359375,0.21289062,-1.0078125,0.09082031,0.57421875,0.52734375,0.203125,0.008850098,-0.984375,-0.265625,0.22753906,-0.36914062,-0.31054688,-1.4375,-1.0,-1.46875,1.0625,-1.7578125,-0.55078125,1.0390625,0.98828125,0.90625,-0.484375,-1.140625,-0.64453125,-1.7578125,0.83203125,1.109375,-0.18359375,-1.6640625,-2.421875,1.4765625,-0.55078125,-0.640625,0.59765625,0.4765625,0.18261719,-0.24902344,-0.52734375,0.71875,1.5390625,-0.75390625,0.27539062,1.2734375,-1.2109375,0.67578125,0.3125,0.59375,-0.86328125,0.77734375,-1.1328125,0.796875,-0.40234375,0.64453125,-0.6484375,-1.140625,3.46875,-0.7578125,-1.1953125,0.33007812,-1.0234375,-1.0,-0.47460938,-1.28125,-1.1171875,-0.38085938,1.171875,0.78515625,-0.72265625,1.0390625,-0.49804688,0.39453125,0.3515625,0.73046875,-1.2890625,1.1484375,-0.053710938,0.08935547,0.28515625,0.25,0.3828125,2.03125,-0.14257812,-0.033203125,-0.7265625,-0.011657715,0.84375,2.0625,1.796875,0.84765625,0.66796875 -7,0,6,0.58984375,1.3984375,-0.609375,-0.51171875,-1.9140625,-0.7421875,1.0234375,0.9765625,0.18652344,0.0099487305,0.11669922,0.44335938,-0.01940918,-0.82421875,-0.51953125,1.796875,-1.2578125,-0.82421875,0.34960938,0.27929688,0.45703125,-0.6015625,1.046875,0.3671875,1.2734375,-0.50390625,-1.984375,-0.71875,0.5,-0.6328125,-0.73828125,-0.008544922,2.21875,-0.43359375,-0.62109375,-0.07519531,0.25976562,-1.28125,-0.515625,-0.6875,-0.42773438,0.18847656,0.29882812,-0.09863281,-0.73046875,0.15234375,0.37890625,0.6640625,-0.27734375,-0.20019531,0.89453125,0.546875,-3.765625,-0.15625,1.15625,1.71875,-0.15332031,0.34375,0.47070312,-0.100097656,-1.0546875,-1.1171875,1.0390625,0.328125,1.6015625,-0.375,-0.23828125,-0.34765625,0.04638672,0.35546875,-0.32617188,1.125,-0.045654297,-0.9921875,2.4375,0.83203125,0.88671875,-0.12792969,-1.4453125,0.34179688,0.59765625,-0.27929688,1.5234375,0.123046875,0.37304688,0.003616333,-1.203125,1.125,1.59375,-0.24609375,0.87890625,-0.34570312,1.0,0.52734375,-1.2734375,0.57421875,-0.84375,1.8203125,-1.3984375,0.35742188,0.33789062,0.9765625,-0.5546875,0.71484375,-0.625,-0.21484375,-1.6875,-1.75,-0.29296875,0.33398438,-1.4609375,-2.3125,0.31445312,-0.20410156,-1.4140625,1.15625,-0.66796875,1.0390625,-1.140625,-0.54296875,-0.13085938,0.41210938,-1.203125,-1.328125,0.484375,0.765625,-1.6328125,-0.09716797,-0.18652344,-1.1328125,1.1484375,-0.23730469,-0.110839844,-2.1875,-0.765625,-0.6640625,1.65625,0.048095703,-1.421875,-2.78125,1.453125,0.15136719,-1.3984375,-1.203125,-0.328125,-0.44921875,0.40625,0.77734375,2.21875,1.9765625,-0.5390625,-1.0703125,0.17578125,-0.3203125,-0.23925781,-1.2734375,1.234375,0.08105469,0.99609375,0.09765625,-0.27148438,-0.072753906,0.22949219,-0.40234375,-1.15625,0.62890625,-0.515625,-1.375,0.58203125,0.46875,0.84375,0.61328125,-0.796875,0.80859375,-1.6015625,1.1328125,2.75,-0.35546875,1.6796875,1.90625,-0.25390625,0.65234375,0.625,-1.0234375,0.047607422,-1.03125,0.49023438,-0.087890625,0.84375,-0.04272461,0.18847656,0.96875,-0.0099487305,0.3125,-1.09375,-0.20214844,0.014343262,1.9921875,1.0703125,0.028198242 -7,0,7,0.9609375,0.671875,-1.0234375,-0.95703125,0.057128906,-0.6953125,-0.15332031,1.9921875,0.82421875,0.625,-1.3359375,1.84375,-0.36328125,1.15625,0.025634766,0.765625,0.62890625,-0.35546875,0.87890625,1.4140625,0.22949219,-0.049072266,-0.74609375,-0.33203125,-0.6171875,1.3828125,-0.64453125,0.028442383,0.8984375,-2.203125,0.5703125,1.796875,1.1796875,0.16113281,-0.59375,-0.4140625,0.22558594,1.4609375,0.080078125,-0.107421875,-0.9765625,-0.07910156,-0.53125,0.49023438,0.26171875,0.05053711,-0.24121094,-0.33203125,0.071777344,0.18066406,0.09472656,-1.390625,-0.35742188,-0.73828125,0.07324219,0.49804688,-1.6484375,0.15332031,0.28515625,-0.64453125,-1.1484375,-0.6875,1.6171875,-0.33789062,0.45117188,0.55859375,0.25195312,-0.18261719,-0.29492188,1.046875,0.22167969,2.078125,-0.859375,-0.7421875,0.86328125,1.5859375,0.16601562,-0.81640625,-2.84375,0.70703125,1.6015625,0.578125,1.859375,2.0625,-0.66796875,0.80078125,-0.6796875,-0.65625,-0.55859375,1.375,1.140625,1.0,-0.16992188,1.2890625,0.020141602,0.111816406,-1.640625,1.03125,-0.12890625,0.45507812,0.66796875,-0.50390625,-0.484375,-0.34375,-0.59765625,0.9375,-0.3359375,-0.9140625,-1.71875,-0.875,-0.17871094,-0.47265625,1.59375,-0.83203125,-0.15039062,-1.078125,0.21484375,0.19238281,0.8984375,0.8046875,1.234375,0.06225586,-1.0703125,-0.78515625,-0.46679688,0.73828125,-0.17675781,-0.23925781,1.2265625,-0.53125,0.8984375,-1.859375,0.29492188,-1.1640625,-1.359375,0.765625,-1.578125,0.16601562,0.22460938,-2.046875,0.071777344,-0.13378906,-1.375,1.234375,-0.23828125,0.06689453,-0.53515625,1.7109375,0.21679688,-1.875,1.5859375,-2.109375,0.34375,0.20410156,0.15039062,0.46679688,1.421875,0.68359375,-0.54296875,0.23535156,-1.578125,2.234375,-0.8359375,0.796875,1.1484375,-0.78515625,-0.484375,-2.875,0.23535156,1.25,-0.55859375,0.73828125,-1.1171875,1.3203125,0.091308594,1.703125,0.23144531,-1.4921875,-0.765625,0.82421875,-0.61328125,0.51953125,-0.41601562,0.47070312,-1.7109375,0.29882812,-1.6796875,-2.046875,1.484375,-0.9765625,-1.5703125,-0.92578125,-1.5234375,0.48242188,0.06982422,0.064941406,0.24121094,-0.37890625,-0.859375,1.265625 +6,0,1,0.13964844,0.10888672,0.27539062,-0.88671875,1.390625,0.61328125,0.48828125,1.0234375,-0.4921875,-1.046875,0.12597656,-0.26757812,0.57421875,0.35351562,-1.25,0.48632812,-0.546875,-1.9140625,1.1328125,-0.53125,-0.087402344,-0.6640625,1.28125,0.5234375,-1.234375,-1.5078125,-0.953125,-0.8671875,-1.7890625,0.44335938,-0.64453125,-0.26171875,0.010559082,-0.4609375,-0.5234375,0.953125,0.91796875,-0.73828125,-1.4609375,1.578125,-1.8046875,0.030517578,-0.07519531,0.09814453,0.38671875,0.5234375,0.63671875,-0.69921875,0.38085938,1.8515625,-1.1953125,-1.6015625,-0.98046875,1.1015625,-2.421875,0.091796875,-0.21289062,-0.80859375,1.328125,-1.6953125,1.734375,0.18359375,0.29296875,0.30273438,-0.5078125,-0.06640625,-1.0703125,0.16210938,0.546875,1.84375,0.05517578,-0.31835938,0.57421875,-0.13574219,-0.66796875,1.8515625,0.76953125,1.1796875,-1.7734375,-0.5234375,1.28125,0.89453125,-0.11816406,0.12207031,-0.63671875,-0.20117188,-0.46484375,1.4453125,-0.36132812,0.98828125,1.3828125,0.21386719,-0.921875,0.36523438,-1.4296875,0.22363281,-0.59375,-0.640625,0.625,-0.890625,-2.375,-0.18066406,2.515625,0.78125,-0.79296875,0.0051574707,0.063964844,-1.0703125,0.49609375,0.98828125,0.703125,0.036376953,0.56640625,-0.796875,0.49414062,-0.31640625,-0.47851562,-0.34765625,-0.484375,-1.1796875,0.71484375,-0.78515625,0.60546875,-1.5703125,-0.22460938,1.265625,-1.3203125,-2.40625,0.013122559,0.17382812,-0.18652344,0.044921875,-0.025512695,-1.3671875,-1.03125,-0.13671875,-0.65234375,0.25390625,0.20507812,-1.7265625,3.375,-0.40429688,1.3125,1.109375,-1.234375,1.0703125,-0.6015625,-0.671875,-2.515625,1.1015625,-0.30859375,-0.03564453,1.0625,-0.484375,-1.078125,-1.2109375,0.38085938,1.359375,1.015625,1.4375,-0.26367188,-0.011962891,1.8203125,1.2421875,-1.78125,1.6640625,-1.671875,-0.24511719,2.125,-0.20117188,0.36914062,-0.40234375,0.099609375,0.62109375,0.68359375,0.041992188,-0.86328125,-0.84765625,0.859375,-0.61328125,-0.3046875,-0.890625,0.13964844,0.86328125,0.1484375,0.54296875,0.59375,0.037841797,0.87109375,-1.8046875,0.09863281,1.375,1.2578125,0.28710938,0.43554688,-0.17871094,1.6875,0.15625,1.40625,0.51953125 +6,0,2,0.828125,0.83203125,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39257812,-0.10253906,-1.4375,1.109375,-0.19335938,0.53125,-0.54296875,-0.99609375,-0.37109375,-0.81640625,-0.39648438,1.1171875,1.25,0.20410156,-1.8984375,0.36132812,0.35742188,-0.90234375,-1.609375,-1.3828125,-0.34960938,0.22753906,0.057861328,-0.23632812,-0.328125,1.71875,0.20703125,-0.33007812,-0.16992188,0.31445312,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71875,-0.26757812,1.2578125,-0.27929688,0.25390625,-0.734375,-1.0234375,0.43554688,1.7109375,1.140625,-1.7734375,-0.49414062,-0.26757812,-1.0859375,-2.140625,0.3828125,1.3046875,-0.11279297,-1.015625,1.609375,1.59375,1.734375,-0.34570312,-1.0390625,-0.71875,0.05029297,-2.078125,-0.30078125,0.85546875,0.38476562,0.17382812,1.3515625,-1.4921875,0.45898438,0.51953125,0.18359375,-0.20214844,-1.71875,0.39648438,-0.2734375,0.71875,-0.016235352,0.32226562,-0.76171875,0.734375,-2.828125,0.45507812,1.578125,1.2109375,1.4296875,1.203125,1.125,0.22558594,-0.6328125,-0.9375,-0.87109375,1.25,-0.22753906,0.123535156,-0.54296875,-0.40039062,0.890625,-0.11279297,-1.0390625,0.78125,-0.98828125,-0.18164062,-0.34765625,-0.328125,0.18261719,1.96875,0.13378906,-0.63671875,-0.57421875,0.6796875,-0.4140625,0.33398438,-0.46484375,0.83984375,0.052490234,-1.09375,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.59765625,-0.24511719,0.765625,-0.04272461,-2.5,-0.93359375,0.73828125,-1.3125,2.546875,-0.31445312,0.013977051,1.8203125,-1.3203125,1.4296875,-0.75,0.12158203,1.171875,0.6640625,-0.20117188,-0.22558594,-0.28320312,-0.56640625,0.203125,0.4296875,-0.32226562,-1.34375,1.0234375,-1.140625,1.2265625,0.69921875,-0.36523438,-0.39257812,1.0546875,0.78515625,1.1484375,1.0078125,3.03125,-2.671875,1.6171875,-2.25,1.1796875,0.16796875,-0.29492188,-1.7734375,-1.84375,0.7265625,-0.6484375,0.65625,0.27734375,-0.66796875,-1.96875,1.40625,-0.35351562,0.09667969,0.15332031,0.83984375,-0.11230469,-1.015625,1.578125,-0.49609375,-0.26757812,0.5078125,-0.36914062,0.65625,1.546875,-0.31835938,-1.046875,-0.8125,-0.46289062,-0.46875,-0.19726562,0.19726562,0.51953125 +6,0,3,-0.9140625,0.041748047,-0.34179688,1.09375,1.3671875,-0.032226562,-0.43945312,1.0625,0.59765625,-0.66015625,0.27539062,1.84375,-0.2890625,-0.65625,-0.97265625,0.22949219,-0.00076293945,-1.046875,1.96875,-0.48046875,-0.123046875,-2.0625,-0.8125,0.53515625,-0.11816406,-0.62890625,0.71484375,0.73828125,0.68359375,0.40820312,0.44140625,0.2734375,1.328125,-0.515625,2.125,0.88671875,1.171875,-0.82421875,-1.015625,0.6640625,-0.40429688,-0.80859375,-1.8671875,-1.875,-0.828125,0.890625,-0.3984375,-0.94140625,0.86328125,1.75,1.140625,-0.5703125,-1.1484375,0.31054688,-0.12109375,-2.03125,0.35546875,1.515625,0.43359375,0.15722656,0.78125,0.83203125,-0.3515625,1.2890625,-1.3203125,0.5546875,-1.3359375,-1.9140625,0.47851562,-0.049316406,0.8046875,1.4453125,1.765625,-1.7734375,0.8203125,0.921875,-0.08251953,-0.69140625,-0.2890625,0.92578125,-1.03125,0.5703125,-0.28710938,-0.91015625,0.04296875,-1.359375,-0.4375,-0.19238281,1.5625,0.859375,1.4453125,-0.13574219,-0.20117188,1.0859375,-0.3203125,-0.27734375,-0.8203125,-0.9609375,-1.0234375,-0.21289062,0.083984375,0.40625,1.390625,1.1875,-1.0703125,1.3671875,0.61328125,0.19824219,-0.049560547,0.5234375,0.74609375,0.84375,2.484375,-1.578125,0.77734375,-0.35546875,-1.53125,0.66796875,-0.83984375,-0.7890625,1.328125,0.4609375,-0.671875,-0.64453125,-1.296875,2.015625,-0.06689453,0.7578125,0.8203125,-1.28125,1.484375,-2.328125,0.15722656,0.19335938,-0.110839844,0.8984375,0.72265625,-0.12988281,0.41210938,-1.0,1.5703125,0.26367188,-1.4453125,1.3828125,-0.36523438,-1.015625,0.49804688,-0.31640625,-0.1875,-1.25,0.7890625,0.22851562,2.671875,-0.921875,-0.8125,0.0390625,0.140625,-1.59375,1.1953125,0.12207031,0.63671875,0.59765625,1.1328125,0.47851562,0.0546875,0.73046875,0.020141602,0.98046875,-0.33398438,-0.005218506,-1.1953125,-1.40625,-2.359375,-1.2890625,-0.41796875,0.99609375,-0.49804688,-1.53125,-1.640625,-0.953125,0.7109375,0.16601562,0.25585938,-1.234375,-0.83984375,-1.21875,-0.25,0.19042969,-1.2578125,1.078125,-1.2109375,-0.030517578,-0.8671875,-1.1875,-1.609375,0.578125,-0.1875,0.21386719,0.203125,1.609375 +7,0,0,0.8671875,1.2109375,-0.828125,-0.984375,-1.28125,0.32617188,-0.5,1.5234375,-0.7890625,-0.71484375,1.625,0.010192871,-0.060791016,-0.28125,-1.15625,1.640625,-0.28515625,-1.5234375,0.15039062,-0.66796875,1.34375,0.84375,0.47851562,1.125,0.88671875,-0.85546875,-0.9296875,-1.9453125,-1.6171875,-0.62890625,-1.2578125,2.453125,1.015625,2.515625,-0.16992188,0.14550781,-0.40234375,-0.59765625,0.86328125,0.5546875,-0.62890625,0.28125,0.640625,0.20019531,1.3046875,0.36328125,0.58203125,0.27539062,0.6484375,-1.1796875,-0.83984375,-0.5078125,-1.890625,-1.609375,-1.03125,0.59375,0.08642578,-0.33789062,0.31445312,-0.75,-0.19042969,-0.515625,1.8515625,1.0,1.1796875,0.7109375,-0.890625,-0.13964844,0.22460938,0.24707031,-0.03857422,-0.36132812,-0.6796875,-0.18847656,-0.47265625,-0.15332031,-0.23339844,-0.13085938,-0.014709473,0.45898438,-0.48046875,-0.5390625,1.1328125,0.4296875,1.109375,1.2890625,-0.97265625,0.53125,1.359375,-1.015625,1.3359375,0.40625,0.546875,1.2109375,0.21875,-1.3125,0.765625,1.0,-1.71875,-0.29882812,-0.64453125,0.328125,2.234375,-1.7734375,-1.2265625,-1.484375,-2.0,-1.7265625,-0.48242188,0.93359375,0.21289062,-1.0078125,0.09082031,0.57421875,0.52734375,0.203125,0.008850098,-0.984375,-0.265625,0.22753906,-0.36914062,-0.31054688,-1.4375,-1.0,-1.46875,1.0625,-1.7578125,-0.55078125,1.0390625,0.98828125,0.90625,-0.484375,-1.140625,-0.64453125,-1.7578125,0.83203125,1.109375,-0.18359375,-1.6640625,-2.421875,1.4765625,-0.55078125,-0.640625,0.59765625,0.4765625,0.18261719,-0.24902344,-0.52734375,0.71875,1.5390625,-0.75390625,0.27539062,1.2734375,-1.2109375,0.67578125,0.3125,0.59375,-0.86328125,0.77734375,-1.1328125,0.796875,-0.40234375,0.64453125,-0.6484375,-1.140625,3.46875,-0.7578125,-1.1953125,0.33007812,-1.0234375,-1.0,-0.47460938,-1.28125,-1.1171875,-0.38085938,1.171875,0.78515625,-0.72265625,1.0390625,-0.49804688,0.39453125,0.3515625,0.73046875,-1.2890625,1.1484375,-0.053710938,0.08935547,0.28515625,0.25,0.3828125,2.03125,-0.14257812,-0.033203125,-0.7265625,-0.011657715,0.84375,2.0625,1.796875,0.84765625,0.66796875 +7,0,1,0.58984375,1.3984375,-0.609375,-0.51171875,-1.9140625,-0.7421875,1.0234375,0.9765625,0.18652344,0.0099487305,0.11669922,0.44335938,-0.01940918,-0.82421875,-0.51953125,1.796875,-1.2578125,-0.82421875,0.34960938,0.27929688,0.45703125,-0.6015625,1.046875,0.3671875,1.2734375,-0.50390625,-1.984375,-0.71875,0.5,-0.6328125,-0.73828125,-0.008544922,2.21875,-0.43359375,-0.62109375,-0.07519531,0.25976562,-1.28125,-0.515625,-0.6875,-0.42773438,0.18847656,0.29882812,-0.09863281,-0.73046875,0.15234375,0.37890625,0.6640625,-0.27734375,-0.20019531,0.89453125,0.546875,-3.765625,-0.15625,1.15625,1.71875,-0.15332031,0.34375,0.47070312,-0.100097656,-1.0546875,-1.1171875,1.0390625,0.328125,1.6015625,-0.375,-0.23828125,-0.34765625,0.04638672,0.35546875,-0.32617188,1.125,-0.045654297,-0.9921875,2.4375,0.83203125,0.88671875,-0.12792969,-1.4453125,0.34179688,0.59765625,-0.27929688,1.5234375,0.123046875,0.37304688,0.003616333,-1.203125,1.125,1.59375,-0.24609375,0.87890625,-0.34570312,1.0,0.52734375,-1.2734375,0.57421875,-0.84375,1.8203125,-1.3984375,0.35742188,0.33789062,0.9765625,-0.5546875,0.71484375,-0.625,-0.21484375,-1.6875,-1.75,-0.29296875,0.33398438,-1.4609375,-2.3125,0.31445312,-0.20410156,-1.4140625,1.15625,-0.66796875,1.0390625,-1.140625,-0.54296875,-0.13085938,0.41210938,-1.203125,-1.328125,0.484375,0.765625,-1.6328125,-0.09716797,-0.18652344,-1.1328125,1.1484375,-0.23730469,-0.110839844,-2.1875,-0.765625,-0.6640625,1.65625,0.048095703,-1.421875,-2.78125,1.453125,0.15136719,-1.3984375,-1.203125,-0.328125,-0.44921875,0.40625,0.77734375,2.21875,1.9765625,-0.5390625,-1.0703125,0.17578125,-0.3203125,-0.23925781,-1.2734375,1.234375,0.08105469,0.99609375,0.09765625,-0.27148438,-0.072753906,0.22949219,-0.40234375,-1.15625,0.62890625,-0.515625,-1.375,0.58203125,0.46875,0.84375,0.61328125,-0.796875,0.80859375,-1.6015625,1.1328125,2.75,-0.35546875,1.6796875,1.90625,-0.25390625,0.65234375,0.625,-1.0234375,0.047607422,-1.03125,0.49023438,-0.087890625,0.84375,-0.04272461,0.18847656,0.96875,-0.0099487305,0.3125,-1.09375,-0.20214844,0.014343262,1.9921875,1.0703125,0.028198242 +7,0,2,0.9609375,0.671875,-1.0234375,-0.95703125,0.057128906,-0.6953125,-0.15332031,1.9921875,0.82421875,0.625,-1.3359375,1.84375,-0.36328125,1.15625,0.025634766,0.765625,0.62890625,-0.35546875,0.87890625,1.4140625,0.22949219,-0.049072266,-0.74609375,-0.33203125,-0.6171875,1.3828125,-0.64453125,0.028442383,0.8984375,-2.203125,0.5703125,1.796875,1.1796875,0.16113281,-0.59375,-0.4140625,0.22558594,1.4609375,0.080078125,-0.107421875,-0.9765625,-0.07910156,-0.53125,0.49023438,0.26171875,0.05053711,-0.24121094,-0.33203125,0.071777344,0.18066406,0.09472656,-1.390625,-0.35742188,-0.73828125,0.07324219,0.49804688,-1.6484375,0.15332031,0.28515625,-0.64453125,-1.1484375,-0.6875,1.6171875,-0.33789062,0.45117188,0.55859375,0.25195312,-0.18261719,-0.29492188,1.046875,0.22167969,2.078125,-0.859375,-0.7421875,0.86328125,1.5859375,0.16601562,-0.81640625,-2.84375,0.70703125,1.6015625,0.578125,1.859375,2.0625,-0.66796875,0.80078125,-0.6796875,-0.65625,-0.55859375,1.375,1.140625,1.0,-0.16992188,1.2890625,0.020141602,0.111816406,-1.640625,1.03125,-0.12890625,0.45507812,0.66796875,-0.50390625,-0.484375,-0.34375,-0.59765625,0.9375,-0.3359375,-0.9140625,-1.71875,-0.875,-0.17871094,-0.47265625,1.59375,-0.83203125,-0.15039062,-1.078125,0.21484375,0.19238281,0.8984375,0.8046875,1.234375,0.06225586,-1.0703125,-0.78515625,-0.46679688,0.73828125,-0.17675781,-0.23925781,1.2265625,-0.53125,0.8984375,-1.859375,0.29492188,-1.1640625,-1.359375,0.765625,-1.578125,0.16601562,0.22460938,-2.046875,0.071777344,-0.13378906,-1.375,1.234375,-0.23828125,0.06689453,-0.53515625,1.7109375,0.21679688,-1.875,1.5859375,-2.109375,0.34375,0.20410156,0.15039062,0.46679688,1.421875,0.68359375,-0.54296875,0.23535156,-1.578125,2.234375,-0.8359375,0.796875,1.1484375,-0.78515625,-0.484375,-2.875,0.23535156,1.25,-0.55859375,0.73828125,-1.1171875,1.3203125,0.091308594,1.703125,0.23144531,-1.4921875,-0.765625,0.82421875,-0.61328125,0.51953125,-0.41601562,0.47070312,-1.7109375,0.29882812,-1.6796875,-2.046875,1.484375,-0.9765625,-1.5703125,-0.92578125,-1.5234375,0.48242188,0.06982422,0.064941406,0.24121094,-0.37890625,-0.859375,1.265625 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv index 0aac125f..439e2692 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,5,1.078125,0.25195312,-0.16601562,-0.296875,0.109375,-0.42578125,-1.28125,0.7890625,0.23632812,0.46484375,0.13574219,0.921875,1.2421875,-0.13476562,-0.55859375,-0.13183594,-1.078125,-2.25,0.9375,0.21386719,1.7890625,-1.0234375,-1.2890625,-0.2109375,1.40625,-0.30078125,-0.71484375,-0.013305664,0.2578125,-0.14648438,-0.84765625,-0.61328125,1.9453125,-0.94921875,-0.93359375,-0.41601562,0.09472656,-1.140625,-2.578125,-0.453125,0.44726562,-0.87890625,-0.71484375,-0.29882812,-1.21875,0.5234375,-0.3203125,0.5,1.765625,1.4296875,-0.27148438,0.36328125,-1.6640625,1.2578125,-0.10595703,0.38671875,-0.5,1.8828125,0.71484375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.875,0.41601562,0.9375,1.421875,1.2265625,-0.41992188,-0.94921875,2.90625,1.78125,-0.3515625,-0.11669922,-0.5,0.26953125,-0.34765625,0.26757812,0.0007362366,2.34375,-0.48046875,-0.58984375,-0.41601562,2.5,1.0546875,0.91015625,0.8125,0.5390625,0.8203125,0.06933594,-0.84765625,-0.13769531,0.5546875,1.0390625,0.5078125,-0.9453125,0.19824219,1.0390625,-0.46484375,0.37109375,-0.16796875,0.76953125,-1.171875,-1.15625,0.375,0.33398438,-1.015625,-0.15820312,-0.55859375,-1.9453125,-1.78125,0.10253906,-0.625,1.2265625,-1.2578125,0.44140625,0.61328125,0.41210938,-2.203125,-1.359375,-0.8046875,0.18847656,-0.5625,0.43945312,0.6640625,-0.62890625,1.7578125,-0.25390625,0.14550781,-1.5078125,-0.65234375,0.5703125,0.55859375,0.19726562,-0.75,-2.5,1.0703125,2.59375,-0.7109375,-1.21875,-1.265625,1.234375,0.31640625,-0.15332031,0.31640625,0.6015625,0.56640625,0.98046875,0.6328125,-0.6171875,-0.77734375,-1.4609375,0.29296875,-0.049316406,1.171875,-0.64453125,0.35546875,0.57421875,0.080078125,-1.0703125,0.5859375,-0.28515625,0.57421875,-0.74609375,-1.2890625,1.2890625,0.14550781,0.65234375,-0.8984375,-0.52734375,-1.6953125,1.84375,-0.17871094,-0.58203125,0.07861328,-0.48632812,1.25,0.40625,0.828125,-0.68359375,-1.0703125,-1.5546875,0.18652344,0.36328125,0.6953125,0.625,-0.30078125,0.36328125,0.796875,-0.93359375,-0.6328125,-1.8828125,-0.6953125,1.25,1.03125,0.72265625 -8,0,6,0.87109375,0.984375,-0.17871094,0.12597656,0.08203125,-0.60546875,0.765625,1.0703125,1.078125,-0.80859375,1.3203125,1.5546875,0.053710938,-1.03125,-0.14355469,0.30078125,-0.67578125,-1.0078125,0.8359375,0.3359375,0.026489258,-0.36328125,-0.24609375,1.640625,-0.18164062,0.14550781,-2.78125,0.21191406,0.3203125,0.7890625,-0.5078125,-0.90625,1.3671875,-0.78125,0.57421875,0.59375,0.53515625,-0.93359375,-0.21972656,1.0859375,-1.2109375,1.109375,-0.34179688,-2.421875,-0.8671875,-0.7890625,0.25976562,-0.22949219,1.3046875,1.6015625,0.5546875,-0.47070312,-0.92578125,0.6796875,0.46875,0.26757812,0.19921875,-0.5078125,-1.0703125,-0.036376953,1.4765625,0.20703125,0.6328125,0.859375,0.50390625,-0.43554688,-0.14160156,0.55859375,-1.3671875,0.66796875,-0.09863281,0.5390625,0.84765625,-0.42578125,1.8359375,0.8046875,1.3984375,1.046875,-0.35546875,0.36914062,-0.0859375,-1.125,0.83984375,-1.4375,-0.45507812,0.3671875,-0.03173828,-0.036132812,1.75,0.1875,1.34375,-0.5390625,-1.03125,1.2421875,-1.09375,-0.59765625,-2.75,0.49023438,-0.6015625,-0.3671875,-1.453125,1.171875,0.38085938,0.19140625,-0.58984375,1.84375,-0.75,0.16601562,-1.1640625,0.30859375,-0.56640625,-0.42578125,0.91796875,-0.26367188,0.36328125,1.765625,-0.5078125,0.5546875,-0.15917969,-0.44335938,0.57421875,-0.62890625,-0.4921875,-0.94140625,-1.328125,2.109375,-1.2578125,-1.0546875,0.71875,-1.265625,1.3203125,-1.2109375,-0.6875,-0.76171875,-1.59375,0.65234375,1.09375,-0.52734375,0.057373047,-2.46875,1.703125,-0.9453125,-1.7578125,1.3671875,0.71484375,-0.04272461,0.875,-0.89453125,-1.171875,0.9140625,-1.296875,-0.70703125,0.68359375,-1.0234375,1.109375,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.07128906,1.65625,2.453125,1.4609375,-1.53125,0.100097656,-0.5390625,0.084472656,0.859375,-0.16113281,-1.015625,-0.296875,-1.6328125,-0.14746094,-1.5390625,1.0390625,0.9140625,-1.1640625,0.29492188,0.046875,-1.2734375,-1.4140625,0.54296875,-1.0,-0.45703125,0.24902344,0.022705078,0.56640625,-1.6171875,-1.625,-0.234375,2.46875,-0.3671875,-0.9609375,-1.546875,1.03125,1.4921875,1.09375,-0.421875,-0.59375 -8,0,7,1.25,1.5546875,0.10205078,-0.26171875,-1.609375,-0.016479492,-1.328125,1.4375,1.40625,-2.640625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.49609375,0.46679688,0.29101562,0.41210938,1.859375,-0.016845703,-0.8046875,-0.034179688,-0.39453125,-0.25195312,-0.8671875,-1.0546875,-0.71484375,-0.22363281,0.09765625,-0.20605469,-0.25195312,0.01928711,1.0546875,0.71875,0.099609375,0.28710938,1.421875,0.14550781,-0.8828125,1.6875,-2.3125,-0.22265625,0.114746094,2.140625,0.26367188,0.921875,-0.87109375,0.71484375,-0.0625,0.87890625,-0.6484375,-0.09033203,-0.34960938,-0.25390625,-0.4140625,-0.45703125,0.19628906,0.8125,-1.1328125,0.16796875,0.546875,0.65234375,1.65625,-0.41601562,1.359375,0.43359375,-0.36328125,-1.2578125,-0.98046875,0.076660156,-0.2734375,-0.234375,0.6171875,0.04272461,-0.9140625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66796875,0.95703125,-1.2421875,-0.17773438,0.3359375,0.24609375,-1.3046875,0.10058594,0.51171875,1.953125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.6796875,0.0028839111,0.19433594,-0.703125,-2.390625,0.87890625,1.71875,-1.7421875,0.03149414,1.5390625,-1.109375,-0.46484375,0.053466797,0.20800781,-0.08691406,-0.3125,1.328125,-0.7265625,0.06738281,0.080078125,-0.37890625,0.24707031,-0.25390625,0.859375,1.640625,-0.56640625,-0.15332031,-1.796875,-0.51171875,0.20214844,0.39257812,-1.5546875,-0.11767578,1.3828125,-0.890625,1.1171875,-1.3984375,0.6484375,-2.09375,1.515625,0.9140625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.765625,0.03930664,-0.18945312,0.203125,0.48046875,-0.5859375,-0.76171875,1.2421875,-1.40625,0.29492188,0.578125,-0.114746094,-0.31835938,0.09765625,1.1953125,0.34179688,0.53125,0.03564453,-0.66796875,0.16796875,0.44140625,0.13085938,-1.2578125,0.84375,-0.6015625,0.67578125,0.671875,-2.015625,-2.109375,-1.328125,-2.171875,-0.49414062,0.34765625,2.28125,0.36914062,-0.5234375,0.036865234,-0.44726562,0.64453125,-0.27734375,-0.25390625,0.21191406,-0.38085938,0.14160156,0.91796875,1.453125,-0.47460938,0.048583984,0.084472656,0.2578125,0.77734375,-1.421875,-3.140625,1.265625,3.359375,0.6484375,-0.44726562,0.4921875 +8,0,1,1.078125,0.25195312,-0.16601562,-0.296875,0.109375,-0.42578125,-1.28125,0.7890625,0.23632812,0.46484375,0.13574219,0.921875,1.2421875,-0.13476562,-0.55859375,-0.13183594,-1.078125,-2.25,0.9375,0.21386719,1.7890625,-1.0234375,-1.2890625,-0.2109375,1.40625,-0.30078125,-0.71484375,-0.013305664,0.2578125,-0.14648438,-0.84765625,-0.61328125,1.9453125,-0.94921875,-0.93359375,-0.41601562,0.09472656,-1.140625,-2.578125,-0.453125,0.44726562,-0.87890625,-0.71484375,-0.29882812,-1.21875,0.5234375,-0.3203125,0.5,1.765625,1.4296875,-0.27148438,0.36328125,-1.6640625,1.2578125,-0.10595703,0.38671875,-0.5,1.8828125,0.71484375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.875,0.41601562,0.9375,1.421875,1.2265625,-0.41992188,-0.94921875,2.90625,1.78125,-0.3515625,-0.11669922,-0.5,0.26953125,-0.34765625,0.26757812,0.0007362366,2.34375,-0.48046875,-0.58984375,-0.41601562,2.5,1.0546875,0.91015625,0.8125,0.5390625,0.8203125,0.06933594,-0.84765625,-0.13769531,0.5546875,1.0390625,0.5078125,-0.9453125,0.19824219,1.0390625,-0.46484375,0.37109375,-0.16796875,0.76953125,-1.171875,-1.15625,0.375,0.33398438,-1.015625,-0.15820312,-0.55859375,-1.9453125,-1.78125,0.10253906,-0.625,1.2265625,-1.2578125,0.44140625,0.61328125,0.41210938,-2.203125,-1.359375,-0.8046875,0.18847656,-0.5625,0.43945312,0.6640625,-0.62890625,1.7578125,-0.25390625,0.14550781,-1.5078125,-0.65234375,0.5703125,0.55859375,0.19726562,-0.75,-2.5,1.0703125,2.59375,-0.7109375,-1.21875,-1.265625,1.234375,0.31640625,-0.15332031,0.31640625,0.6015625,0.56640625,0.98046875,0.6328125,-0.6171875,-0.77734375,-1.4609375,0.29296875,-0.049316406,1.171875,-0.64453125,0.35546875,0.57421875,0.080078125,-1.0703125,0.5859375,-0.28515625,0.57421875,-0.74609375,-1.2890625,1.2890625,0.14550781,0.65234375,-0.8984375,-0.52734375,-1.6953125,1.84375,-0.17871094,-0.58203125,0.07861328,-0.48632812,1.25,0.40625,0.828125,-0.68359375,-1.0703125,-1.5546875,0.18652344,0.36328125,0.6953125,0.625,-0.30078125,0.36328125,0.796875,-0.93359375,-0.6328125,-1.8828125,-0.6953125,1.25,1.03125,0.72265625 +8,0,2,0.87109375,0.984375,-0.17871094,0.12597656,0.08203125,-0.60546875,0.765625,1.0703125,1.078125,-0.80859375,1.3203125,1.5546875,0.053710938,-1.03125,-0.14355469,0.30078125,-0.67578125,-1.0078125,0.8359375,0.3359375,0.026489258,-0.36328125,-0.24609375,1.640625,-0.18164062,0.14550781,-2.78125,0.21191406,0.3203125,0.7890625,-0.5078125,-0.90625,1.3671875,-0.78125,0.57421875,0.59375,0.53515625,-0.93359375,-0.21972656,1.0859375,-1.2109375,1.109375,-0.34179688,-2.421875,-0.8671875,-0.7890625,0.25976562,-0.22949219,1.3046875,1.6015625,0.5546875,-0.47070312,-0.92578125,0.6796875,0.46875,0.26757812,0.19921875,-0.5078125,-1.0703125,-0.036376953,1.4765625,0.20703125,0.6328125,0.859375,0.50390625,-0.43554688,-0.14160156,0.55859375,-1.3671875,0.66796875,-0.09863281,0.5390625,0.84765625,-0.42578125,1.8359375,0.8046875,1.3984375,1.046875,-0.35546875,0.36914062,-0.0859375,-1.125,0.83984375,-1.4375,-0.45507812,0.3671875,-0.03173828,-0.036132812,1.75,0.1875,1.34375,-0.5390625,-1.03125,1.2421875,-1.09375,-0.59765625,-2.75,0.49023438,-0.6015625,-0.3671875,-1.453125,1.171875,0.38085938,0.19140625,-0.58984375,1.84375,-0.75,0.16601562,-1.1640625,0.30859375,-0.56640625,-0.42578125,0.91796875,-0.26367188,0.36328125,1.765625,-0.5078125,0.5546875,-0.15917969,-0.44335938,0.57421875,-0.62890625,-0.4921875,-0.94140625,-1.328125,2.109375,-1.2578125,-1.0546875,0.71875,-1.265625,1.3203125,-1.2109375,-0.6875,-0.76171875,-1.59375,0.65234375,1.09375,-0.52734375,0.057373047,-2.46875,1.703125,-0.9453125,-1.7578125,1.3671875,0.71484375,-0.04272461,0.875,-0.89453125,-1.171875,0.9140625,-1.296875,-0.70703125,0.68359375,-1.0234375,1.109375,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.07128906,1.65625,2.453125,1.4609375,-1.53125,0.100097656,-0.5390625,0.084472656,0.859375,-0.16113281,-1.015625,-0.296875,-1.6328125,-0.14746094,-1.5390625,1.0390625,0.9140625,-1.1640625,0.29492188,0.046875,-1.2734375,-1.4140625,0.54296875,-1.0,-0.45703125,0.24902344,0.022705078,0.56640625,-1.6171875,-1.625,-0.234375,2.46875,-0.3671875,-0.9609375,-1.546875,1.03125,1.4921875,1.09375,-0.421875,-0.59375 +8,0,3,1.25,1.5546875,0.10205078,-0.26171875,-1.609375,-0.016479492,-1.328125,1.4375,1.40625,-2.640625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.49609375,0.46679688,0.29101562,0.41210938,1.859375,-0.016845703,-0.8046875,-0.034179688,-0.39453125,-0.25195312,-0.8671875,-1.0546875,-0.71484375,-0.22363281,0.09765625,-0.20605469,-0.25195312,0.01928711,1.0546875,0.71875,0.099609375,0.28710938,1.421875,0.14550781,-0.8828125,1.6875,-2.3125,-0.22265625,0.114746094,2.140625,0.26367188,0.921875,-0.87109375,0.71484375,-0.0625,0.87890625,-0.6484375,-0.09033203,-0.34960938,-0.25390625,-0.4140625,-0.45703125,0.19628906,0.8125,-1.1328125,0.16796875,0.546875,0.65234375,1.65625,-0.41601562,1.359375,0.43359375,-0.36328125,-1.2578125,-0.98046875,0.076660156,-0.2734375,-0.234375,0.6171875,0.04272461,-0.9140625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66796875,0.95703125,-1.2421875,-0.17773438,0.3359375,0.24609375,-1.3046875,0.10058594,0.51171875,1.953125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.6796875,0.0028839111,0.19433594,-0.703125,-2.390625,0.87890625,1.71875,-1.7421875,0.03149414,1.5390625,-1.109375,-0.46484375,0.053466797,0.20800781,-0.08691406,-0.3125,1.328125,-0.7265625,0.06738281,0.080078125,-0.37890625,0.24707031,-0.25390625,0.859375,1.640625,-0.56640625,-0.15332031,-1.796875,-0.51171875,0.20214844,0.39257812,-1.5546875,-0.11767578,1.3828125,-0.890625,1.1171875,-1.3984375,0.6484375,-2.09375,1.515625,0.9140625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.765625,0.03930664,-0.18945312,0.203125,0.48046875,-0.5859375,-0.76171875,1.2421875,-1.40625,0.29492188,0.578125,-0.114746094,-0.31835938,0.09765625,1.1953125,0.34179688,0.53125,0.03564453,-0.66796875,0.16796875,0.44140625,0.13085938,-1.2578125,0.84375,-0.6015625,0.67578125,0.671875,-2.015625,-2.109375,-1.328125,-2.171875,-0.49414062,0.34765625,2.28125,0.36914062,-0.5234375,0.036865234,-0.44726562,0.64453125,-0.27734375,-0.25390625,0.21191406,-0.38085938,0.14160156,0.91796875,1.453125,-0.47460938,0.048583984,0.084472656,0.2578125,0.77734375,-1.421875,-3.140625,1.265625,3.359375,0.6484375,-0.44726562,0.4921875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv index f8e891b1..90369015 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,5,0.78515625,1.0,-0.059326172,0.65234375,0.359375,-0.50390625,0.3359375,1.0859375,-0.15917969,-1.0546875,0.72265625,-0.24804688,-1.1328125,-0.8515625,-1.046875,0.14648438,-1.0859375,1.3671875,-0.43164062,0.30273438,-0.024780273,0.80078125,-0.33203125,-0.13867188,-0.61328125,-1.4765625,-2.765625,0.3125,-0.6328125,0.5078125,-1.0390625,-1.109375,-0.38671875,0.21972656,-0.63671875,-0.8984375,0.51171875,-1.265625,0.63671875,-0.10107422,-0.7578125,0.43554688,0.40039062,1.5859375,0.29882812,0.6953125,0.059570312,0.296875,-2.15625,0.80859375,1.28125,-1.2890625,-2.3125,-0.14160156,-0.92578125,-0.4453125,0.07861328,1.0078125,-0.27734375,-0.8125,-0.07714844,1.265625,-0.076660156,-0.171875,1.3046875,-0.58984375,0.33789062,-0.0034332275,0.22070312,0.94140625,0.18554688,-2.0,0.8984375,-1.1015625,-0.13476562,1.2734375,1.7578125,-0.1328125,0.22949219,-0.36328125,0.8984375,0.47265625,-0.17578125,-1.0859375,-0.46289062,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.625,1.6875,0.88671875,0.59765625,-0.28125,-0.20898438,-1.1015625,0.80078125,0.12158203,0.6015625,1.6640625,0.671875,-0.90625,-0.21191406,0.5,-0.34960938,-0.9453125,-0.53125,0.42382812,-0.16308594,-1.59375,2.015625,0.078125,0.50390625,-0.359375,0.16796875,-0.4765625,1.5625,-0.3046875,1.4453125,1.46875,-1.296875,-0.78515625,-1.03125,0.025268555,0.20703125,0.3359375,-1.0546875,-2.203125,0.18457031,0.22167969,-0.78515625,-0.8515625,0.21289062,0.24511719,1.0,-0.44140625,-1.1015625,1.2421875,-1.890625,1.3515625,-0.54296875,-0.4375,-0.12060547,1.1796875,0.33398438,-0.96875,-0.115722656,2.21875,3.484375,-0.27734375,-0.74609375,-2.359375,2.203125,-0.48828125,0.23925781,0.20214844,1.265625,-1.5,0.4453125,-0.95703125,1.0546875,0.671875,1.75,-1.9375,0.234375,-1.2578125,0.828125,1.21875,-1.140625,-0.06640625,-1.0703125,1.8359375,-0.80078125,-0.48046875,0.0024719238,0.038330078,-0.7265625,1.2265625,0.17480469,-0.5625,0.31054688,1.53125,0.30273438,-0.06640625,0.43554688,1.3046875,0.50390625,0.953125,-2.96875,-0.12597656,-0.103027344,0.011413574,-1.2421875,-1.4140625,1.6640625,1.234375,-0.5390625,-0.890625,-0.50390625 -9,0,6,-0.16210938,1.3515625,-0.18554688,-0.9375,0.55859375,0.32421875,0.58203125,-0.81640625,1.578125,-1.453125,2.109375,-1.2890625,-0.4609375,-0.17871094,-0.43554688,-0.48242188,-1.0625,0.029785156,0.9296875,0.63671875,0.30664062,-0.98046875,1.2578125,0.07373047,-1.6171875,-2.0625,-0.64453125,-0.014831543,-0.08935547,1.328125,0.62109375,-0.2734375,0.703125,0.83984375,0.114746094,-0.17382812,0.59375,0.65234375,-0.30859375,0.00042533875,-0.45117188,0.56640625,1.0546875,0.90625,-0.72265625,0.99609375,0.07324219,-1.6484375,-0.703125,2.234375,0.578125,-1.109375,-0.609375,0.84765625,0.34960938,-0.515625,-0.0063476562,1.09375,0.55078125,-0.171875,0.96875,1.671875,0.20996094,0.49804688,0.99609375,0.24511719,-0.8515625,-0.90234375,0.24316406,0.9765625,-1.1015625,0.49609375,0.38476562,-0.53515625,-0.53515625,-0.34375,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.09033203,-0.040039062,2.171875,0.28320312,0.023925781,-2.203125,-0.55078125,0.671875,-0.13183594,2.203125,0.045898438,1.328125,-0.72265625,-0.11621094,-0.049804688,-1.2109375,0.20996094,-0.80859375,-1.5390625,-0.41210938,-0.6171875,1.4921875,-0.45507812,-0.54296875,1.109375,-2.046875,0.33007812,-0.21484375,-0.34179688,-0.4921875,2.109375,-0.43164062,-2.609375,-0.58203125,0.65625,-0.984375,0.84765625,-0.25,0.13378906,0.5625,-1.171875,0.026733398,-2.21875,-1.265625,2.296875,-1.46875,-0.70703125,-0.4140625,-0.38085938,1.0859375,0.07324219,-1.0546875,-0.03540039,-1.078125,2.375,-0.54296875,0.625,0.72265625,-0.8984375,1.421875,0.22167969,0.17089844,2.203125,0.06591797,-1.0703125,-0.053222656,-0.75,-1.265625,0.6484375,-0.49804688,-0.65234375,-0.68359375,0.052490234,-0.86328125,-0.05078125,0.19726562,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.125,-2.421875,1.90625,-0.78515625,2.03125,-0.029541016,-0.14746094,-1.2421875,-0.02709961,-0.48242188,-1.125,0.6015625,0.3359375,-0.11328125,-2.6875,-0.5,-0.94140625,1.28125,0.578125,0.5078125,0.796875,-0.98828125,1.7734375,-1.28125,-0.25390625,-0.71484375,0.12695312,0.48632812,0.6640625,0.36523438,0.41796875,-0.12597656,-1.734375,0.2109375,-0.034423828,1.0,0.7265625 -9,0,7,-0.31445312,0.34179688,0.55859375,-2.0625,-0.025634766,0.67578125,1.8046875,-0.69921875,1.046875,-0.98046875,1.1171875,-1.359375,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.045166016,-0.62890625,2.09375,-0.7421875,-0.78515625,-1.4140625,1.25,-0.15234375,-2.484375,-1.6171875,0.18164062,-0.7890625,-0.51171875,1.65625,0.52734375,-0.546875,-0.118652344,0.099121094,1.1015625,0.78125,-0.20898438,-0.13964844,-1.8203125,0.953125,-1.546875,0.51953125,0.94921875,0.97265625,0.6015625,1.375,-0.984375,-1.140625,-0.2265625,1.609375,-1.78125,0.25390625,-1.0078125,1.8671875,-0.25,0.625,0.20898438,0.27734375,-0.045166016,-0.34375,0.60546875,-0.045654297,-0.703125,0.52734375,0.6328125,1.4140625,-0.78515625,-1.1015625,-0.984375,2.109375,-1.1015625,-0.5703125,0.083496094,0.87109375,-0.40625,0.76953125,1.5703125,0.19335938,-0.21386719,0.22753906,1.125,0.4609375,-0.16113281,1.25,0.17089844,-0.82421875,-0.66015625,-1.2734375,-0.5703125,-0.328125,0.87109375,0.03540039,-0.83984375,-1.0,-1.546875,0.48242188,-0.5703125,-0.60546875,-0.25585938,-0.625,-1.3828125,0.0625,2.3125,1.1875,0.17480469,1.7890625,-0.92578125,-0.10107422,0.53125,-0.78515625,0.40039062,1.015625,0.90625,-2.578125,0.546875,-0.34179688,0.28710938,0.19042969,-0.76953125,0.5390625,1.75,-0.38671875,1.2421875,-2.0625,0.83203125,0.15625,-2.140625,-1.6015625,-0.19628906,0.24804688,0.7109375,0.6875,0.32421875,-1.5078125,0.578125,0.40429688,-0.25195312,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25390625,1.71875,-0.875,-0.36132812,0.19042969,-0.15136719,-2.421875,0.66015625,-0.5390625,-0.140625,-0.4140625,-1.2578125,-1.234375,-0.92578125,0.33789062,-0.07519531,-0.055908203,2.09375,-2.078125,-0.67578125,1.1640625,-0.014465332,-1.6875,-0.109375,-0.17285156,1.3515625,0.024536133,0.46679688,0.34960938,0.50390625,-1.375,-0.30078125,0.035888672,-0.14941406,0.765625,-1.2890625,-0.25390625,0.111328125,-0.26953125,-1.140625,1.0546875,0.79296875,-0.640625,-0.17480469,0.3671875,0.0234375,-1.1484375,-0.17480469,-0.54296875,1.203125,1.265625,0.1328125,-0.029907227,-0.45703125,1.3359375,-0.6953125,2.046875,0.58203125 +9,0,0,0.78515625,1.0,-0.059326172,0.65234375,0.359375,-0.50390625,0.3359375,1.0859375,-0.15917969,-1.0546875,0.72265625,-0.24804688,-1.1328125,-0.8515625,-1.046875,0.14648438,-1.0859375,1.3671875,-0.43164062,0.30273438,-0.024780273,0.80078125,-0.33203125,-0.13867188,-0.61328125,-1.4765625,-2.765625,0.3125,-0.6328125,0.5078125,-1.0390625,-1.109375,-0.38671875,0.21972656,-0.63671875,-0.8984375,0.51171875,-1.265625,0.63671875,-0.10107422,-0.7578125,0.43554688,0.40039062,1.5859375,0.29882812,0.6953125,0.059570312,0.296875,-2.15625,0.80859375,1.28125,-1.2890625,-2.3125,-0.14160156,-0.92578125,-0.4453125,0.07861328,1.0078125,-0.27734375,-0.8125,-0.07714844,1.265625,-0.076660156,-0.171875,1.3046875,-0.58984375,0.33789062,-0.0034332275,0.22070312,0.94140625,0.18554688,-2.0,0.8984375,-1.1015625,-0.13476562,1.2734375,1.7578125,-0.1328125,0.22949219,-0.36328125,0.8984375,0.47265625,-0.17578125,-1.0859375,-0.46289062,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.625,1.6875,0.88671875,0.59765625,-0.28125,-0.20898438,-1.1015625,0.80078125,0.12158203,0.6015625,1.6640625,0.671875,-0.90625,-0.21191406,0.5,-0.34960938,-0.9453125,-0.53125,0.42382812,-0.16308594,-1.59375,2.015625,0.078125,0.50390625,-0.359375,0.16796875,-0.4765625,1.5625,-0.3046875,1.4453125,1.46875,-1.296875,-0.78515625,-1.03125,0.025268555,0.20703125,0.3359375,-1.0546875,-2.203125,0.18457031,0.22167969,-0.78515625,-0.8515625,0.21289062,0.24511719,1.0,-0.44140625,-1.1015625,1.2421875,-1.890625,1.3515625,-0.54296875,-0.4375,-0.12060547,1.1796875,0.33398438,-0.96875,-0.115722656,2.21875,3.484375,-0.27734375,-0.74609375,-2.359375,2.203125,-0.48828125,0.23925781,0.20214844,1.265625,-1.5,0.4453125,-0.95703125,1.0546875,0.671875,1.75,-1.9375,0.234375,-1.2578125,0.828125,1.21875,-1.140625,-0.06640625,-1.0703125,1.8359375,-0.80078125,-0.48046875,0.0024719238,0.038330078,-0.7265625,1.2265625,0.17480469,-0.5625,0.31054688,1.53125,0.30273438,-0.06640625,0.43554688,1.3046875,0.50390625,0.953125,-2.96875,-0.12597656,-0.103027344,0.011413574,-1.2421875,-1.4140625,1.6640625,1.234375,-0.5390625,-0.890625,-0.50390625 +9,0,1,-0.16210938,1.3515625,-0.18554688,-0.9375,0.55859375,0.32421875,0.58203125,-0.81640625,1.578125,-1.453125,2.109375,-1.2890625,-0.4609375,-0.17871094,-0.43554688,-0.48242188,-1.0625,0.029785156,0.9296875,0.63671875,0.30664062,-0.98046875,1.2578125,0.07373047,-1.6171875,-2.0625,-0.64453125,-0.014831543,-0.08935547,1.328125,0.62109375,-0.2734375,0.703125,0.83984375,0.114746094,-0.17382812,0.59375,0.65234375,-0.30859375,0.00042533875,-0.45117188,0.56640625,1.0546875,0.90625,-0.72265625,0.99609375,0.07324219,-1.6484375,-0.703125,2.234375,0.578125,-1.109375,-0.609375,0.84765625,0.34960938,-0.515625,-0.0063476562,1.09375,0.55078125,-0.171875,0.96875,1.671875,0.20996094,0.49804688,0.99609375,0.24511719,-0.8515625,-0.90234375,0.24316406,0.9765625,-1.1015625,0.49609375,0.38476562,-0.53515625,-0.53515625,-0.34375,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.09033203,-0.040039062,2.171875,0.28320312,0.023925781,-2.203125,-0.55078125,0.671875,-0.13183594,2.203125,0.045898438,1.328125,-0.72265625,-0.11621094,-0.049804688,-1.2109375,0.20996094,-0.80859375,-1.5390625,-0.41210938,-0.6171875,1.4921875,-0.45507812,-0.54296875,1.109375,-2.046875,0.33007812,-0.21484375,-0.34179688,-0.4921875,2.109375,-0.43164062,-2.609375,-0.58203125,0.65625,-0.984375,0.84765625,-0.25,0.13378906,0.5625,-1.171875,0.026733398,-2.21875,-1.265625,2.296875,-1.46875,-0.70703125,-0.4140625,-0.38085938,1.0859375,0.07324219,-1.0546875,-0.03540039,-1.078125,2.375,-0.54296875,0.625,0.72265625,-0.8984375,1.421875,0.22167969,0.17089844,2.203125,0.06591797,-1.0703125,-0.053222656,-0.75,-1.265625,0.6484375,-0.49804688,-0.65234375,-0.68359375,0.052490234,-0.86328125,-0.05078125,0.19726562,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.125,-2.421875,1.90625,-0.78515625,2.03125,-0.029541016,-0.14746094,-1.2421875,-0.02709961,-0.48242188,-1.125,0.6015625,0.3359375,-0.11328125,-2.6875,-0.5,-0.94140625,1.28125,0.578125,0.5078125,0.796875,-0.98828125,1.7734375,-1.28125,-0.25390625,-0.71484375,0.12695312,0.48632812,0.6640625,0.36523438,0.41796875,-0.12597656,-1.734375,0.2109375,-0.034423828,1.0,0.7265625 +9,0,2,-0.31445312,0.34179688,0.55859375,-2.0625,-0.025634766,0.67578125,1.8046875,-0.69921875,1.046875,-0.98046875,1.1171875,-1.359375,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.045166016,-0.62890625,2.09375,-0.7421875,-0.78515625,-1.4140625,1.25,-0.15234375,-2.484375,-1.6171875,0.18164062,-0.7890625,-0.51171875,1.65625,0.52734375,-0.546875,-0.118652344,0.099121094,1.1015625,0.78125,-0.20898438,-0.13964844,-1.8203125,0.953125,-1.546875,0.51953125,0.94921875,0.97265625,0.6015625,1.375,-0.984375,-1.140625,-0.2265625,1.609375,-1.78125,0.25390625,-1.0078125,1.8671875,-0.25,0.625,0.20898438,0.27734375,-0.045166016,-0.34375,0.60546875,-0.045654297,-0.703125,0.52734375,0.6328125,1.4140625,-0.78515625,-1.1015625,-0.984375,2.109375,-1.1015625,-0.5703125,0.083496094,0.87109375,-0.40625,0.76953125,1.5703125,0.19335938,-0.21386719,0.22753906,1.125,0.4609375,-0.16113281,1.25,0.17089844,-0.82421875,-0.66015625,-1.2734375,-0.5703125,-0.328125,0.87109375,0.03540039,-0.83984375,-1.0,-1.546875,0.48242188,-0.5703125,-0.60546875,-0.25585938,-0.625,-1.3828125,0.0625,2.3125,1.1875,0.17480469,1.7890625,-0.92578125,-0.10107422,0.53125,-0.78515625,0.40039062,1.015625,0.90625,-2.578125,0.546875,-0.34179688,0.28710938,0.19042969,-0.76953125,0.5390625,1.75,-0.38671875,1.2421875,-2.0625,0.83203125,0.15625,-2.140625,-1.6015625,-0.19628906,0.24804688,0.7109375,0.6875,0.32421875,-1.5078125,0.578125,0.40429688,-0.25195312,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25390625,1.71875,-0.875,-0.36132812,0.19042969,-0.15136719,-2.421875,0.66015625,-0.5390625,-0.140625,-0.4140625,-1.2578125,-1.234375,-0.92578125,0.33789062,-0.07519531,-0.055908203,2.09375,-2.078125,-0.67578125,1.1640625,-0.014465332,-1.6875,-0.109375,-0.17285156,1.3515625,0.024536133,0.46679688,0.34960938,0.50390625,-1.375,-0.30078125,0.035888672,-0.14941406,0.765625,-1.2890625,-0.25390625,0.111328125,-0.26953125,-1.140625,1.0546875,0.79296875,-0.640625,-0.17480469,0.3671875,0.0234375,-1.1484375,-0.17480469,-0.54296875,1.203125,1.265625,0.1328125,-0.029907227,-0.45703125,1.3359375,-0.6953125,2.046875,0.58203125 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-0-predictions.csv index 4c3b4b21..b31efdb2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-0-predictions.csv @@ -1,4 +1,8 @@ sequenceId,itemPosition,itemId +0,4,113 +0,5,113 +0,6,113 +0,7,113 0,8,113 0,9,113 0,10,113 @@ -15,7 +19,3 @@ sequenceId,itemPosition,itemId 0,21,113 0,22,113 0,23,113 -0,24,113 -0,25,113 -0,26,113 -0,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv index fb1845ae..72488290 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv @@ -1,4 +1,8 @@ sequenceId,itemPosition,itemId +1,4,113 +1,5,113 +1,6,113 +1,7,113 1,8,113 1,9,113 1,10,113 @@ -15,7 +19,3 @@ sequenceId,itemPosition,itemId 1,21,113 1,22,113 1,23,113 -1,24,113 -1,25,113 -1,26,113 -1,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv index b59ddd38..9966bc14 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv @@ -1,5 +1,10 @@ sequenceId,itemPosition,itemId -2,8,103 +2,3,103 +2,4,122 +2,5,122 +2,6,122 +2,7,122 +2,8,122 2,9,122 2,10,122 2,11,122 @@ -14,8 +19,3 @@ sequenceId,itemPosition,itemId 2,20,122 2,21,122 2,22,122 -2,23,122 -2,24,122 -2,25,122 -2,26,122 -2,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv index ec95ae85..bcce6828 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv @@ -1,5 +1,10 @@ sequenceId,itemPosition,itemId -3,8,103 +3,3,103 +3,4,124 +3,5,124 +3,6,124 +3,7,124 +3,8,124 3,9,124 3,10,124 3,11,124 @@ -14,11 +19,11 @@ sequenceId,itemPosition,itemId 3,20,124 3,21,124 3,22,124 -3,23,124 -3,24,124 -3,25,124 -3,26,124 -3,27,124 +4,3,122 +4,4,122 +4,5,122 +4,6,122 +4,7,122 4,8,122 4,9,122 4,10,122 @@ -34,8 +39,3 @@ sequenceId,itemPosition,itemId 4,20,122 4,21,122 4,22,122 -4,23,122 -4,24,122 -4,25,122 -4,26,122 -4,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv index e689f7f2..90a13a9d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv @@ -1,5 +1,10 @@ sequenceId,itemPosition,itemId -5,8,103 +5,3,103 +5,4,122 +5,5,122 +5,6,122 +5,7,122 +5,8,122 5,9,122 5,10,122 5,11,122 @@ -14,8 +19,3 @@ sequenceId,itemPosition,itemId 5,20,122 5,21,122 5,22,122 -5,23,122 -5,24,122 -5,25,122 -5,26,122 -5,27,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv index 0acf1d86..f87b5d08 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv @@ -1,4 +1,8 @@ sequenceId,itemPosition,itemId +6,4,113 +6,5,113 +6,6,113 +6,7,113 6,8,113 6,9,113 6,10,113 @@ -15,10 +19,11 @@ sequenceId,itemPosition,itemId 6,21,113 6,22,113 6,23,113 -6,24,113 -6,25,113 -6,26,113 -6,27,113 +7,3,113 +7,4,113 +7,5,113 +7,6,113 +7,7,113 7,8,113 7,9,113 7,10,113 @@ -34,8 +39,3 @@ sequenceId,itemPosition,itemId 7,20,113 7,21,113 7,22,113 -7,23,113 -7,24,113 -7,25,113 -7,26,113 -7,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv index a074f362..fcb6691b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv @@ -1,21 +1,21 @@ sequenceId,itemPosition,itemId +8,4,122 +8,5,122 +8,6,122 +8,7,122 8,8,122 8,9,122 -8,10,122 +8,10,113 8,11,122 8,12,122 8,13,122 -8,14,113 +8,14,122 8,15,122 8,16,122 -8,17,122 -8,18,122 -8,19,122 -8,20,122 +8,17,113 +8,18,113 +8,19,113 +8,20,113 8,21,113 8,22,113 8,23,113 -8,24,113 -8,25,113 -8,26,113 -8,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv index c97879eb..2b8cfd75 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv @@ -1,4 +1,9 @@ sequenceId,itemPosition,itemId +9,3,113 +9,4,113 +9,5,113 +9,6,113 +9,7,113 9,8,113 9,9,113 9,10,113 @@ -14,8 +19,3 @@ sequenceId,itemPosition,itemId 9,20,113 9,21,113 9,22,113 -9,23,113 -9,24,113 -9,25,113 -9,26,113 -9,27,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-0-predictions.csv index 5aa808f6..783e9350 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,113 +0,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv index c3d900b3..9eb44d36 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,113 +1,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv index 460f1499..ac8d014f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,103 +2,3,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv index 90765ba3..19f45567 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,103 -4,8,122 +3,3,103 +4,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv index 60a3b97e..e7767b59 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,103 +5,3,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv index 953b3bbc..e09b589d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,113 -7,8,113 +6,4,113 +7,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv index f3ae7b5b..d9b241c6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,122 +8,4,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv index ba964099..d5752b57 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,113 +9,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-0-predictions.csv index b376d486..461de2e0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-0-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -0,6,119 -0,7,103 -0,8,111 +0,2,119 +0,3,103 +0,4,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv index 5158426c..d32d6aab 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -1,6,122 -1,7,124 -1,8,113 +1,2,122 +1,3,124 +1,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv index 613c7045..118f3041 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -2,6,121 -2,7,102 -2,8,126 +2,1,121 +2,2,102 +2,3,126 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv index a4583793..d7dc85f6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId -3,6,121 -3,7,109 -3,8,102 -4,6,127 -4,7,119 -4,8,120 +3,1,121 +3,2,109 +3,3,102 +4,1,127 +4,2,119 +4,3,120 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-4-predictions.csv index 670c736f..a133efa3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-4-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -5,6,126 -5,7,104 -5,8,112 +5,1,126 +5,2,104 +5,3,112 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv index 285c20cb..0a48eeb8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId -6,6,102 -6,7,118 -6,8,113 -7,6,109 -7,7,103 -7,8,113 +6,2,102 +6,3,118 +6,4,113 +7,1,109 +7,2,103 +7,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv index 79312602..12b5fd01 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -8,6,104 -8,7,121 -8,8,112 +8,2,104 +8,3,121 +8,4,112 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv index 2ee41e48..de154d9e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId -9,6,118 -9,7,118 -9,8,118 +9,1,118 +9,2,118 +9,3,118 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-0-predictions.csv index 5aa808f6..783e9350 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,113 +0,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv index 1213b475..4ac41fe6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,127 +1,4,127 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-2-predictions.csv index 7e8daf90..5b9010cb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,113 +2,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv index 90765ba3..19f45567 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,103 -4,8,122 +3,3,103 +4,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv index 60a3b97e..e7767b59 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,103 +5,3,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv index 132c76ec..6ed65b7f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,122 -7,8,122 +6,4,122 +7,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv index bc91b117..c2bb5aec 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,103 +8,4,103 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv index 824e36f4..40d6064e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,124 +9,3,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv index 799db1cf..4f60920f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -0,6,119,5,7 -0,7,103,4,5 -0,8,111,6,0 +0,2,119,5,7 +0,3,103,4,5 +0,4,111,6,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv index 84336320..79b88c4f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -1,6,122,0,1 -1,7,121,9,1 -1,8,108,9,1 +1,2,122,0,1 +1,3,121,9,1 +1,4,108,9,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv index f2206ac1..98346781 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -2,6,121,6,1 -2,7,127,7,5 -2,8,112,4,0 +2,1,121,6,1 +2,2,127,7,5 +2,3,112,4,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv index bba6a834..248bef03 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -3,6,121,6,1 -3,7,109,3,1 -3,8,110,0,2 -4,6,121,6,1 -4,7,121,3,1 -4,8,102,0,1 +3,1,121,6,1 +3,2,109,3,1 +3,3,110,0,2 +4,1,121,6,1 +4,2,121,3,1 +4,3,102,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv index a3007f68..2dbc2594 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -5,6,113,6,1 -5,7,113,4,0 -5,8,121,4,5 +5,1,113,6,1 +5,2,113,4,0 +5,3,121,4,5 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv index 3fe6eafb..36d5bae9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv @@ -1,7 +1,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -6,6,102,4,5 -6,7,118,9,1 -6,8,121,4,6 -7,6,109,3,1 -7,7,121,0,2 -7,8,108,5,7 +6,2,102,4,5 +6,3,118,9,1 +6,4,121,4,6 +7,1,109,3,1 +7,2,121,0,2 +7,3,108,5,7 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv index e453627c..3e0792ba 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -8,6,102,8,8 -8,7,121,4,1 -8,8,121,3,1 +8,2,102,8,8 +8,3,121,4,1 +8,4,121,3,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv index 62834e55..20f73580 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv @@ -1,4 +1,4 @@ sequenceId,itemPosition,itemId,supCat1,supCat2 -9,6,108,9,1 -9,7,118,4,8 -9,8,103,4,8 +9,1,108,9,1 +9,2,118,4,8 +9,3,103,4,8 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-0-predictions.csv index 5aa808f6..783e9350 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,113 +0,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-1-predictions.csv index c3d900b3..9eb44d36 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,113 +1,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv index 8302df2f..53c89ed7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,122 +2,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv index 3ee3129e..6b9ee33a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,122 -4,8,113 +3,3,122 +4,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-4-predictions.csv index 4e9004da..2b757dfc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,113 +5,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv index c71ccfa4..579df4c3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,113 -7,8,122 +6,4,113 +7,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-6-predictions.csv index 346e8242..3f1e127e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,113 +8,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-7-predictions.csv index ba964099..d5752b57 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,113 +9,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv index 7240bc4f..d5e918cd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,124 +0,4,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv index dea53fa9..e87652fa 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,122 +1,4,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv index 1616d64b..8ace2dd0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,124 +2,3,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv index a467ff6d..47d128ca 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,122 -4,8,124 +3,3,122 +4,3,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv index 81899090..081fa079 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,124 +5,3,124 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv index 3e2fb799..12c49755 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,113 -7,8,128 +6,4,113 +7,3,128 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv index 346e8242..3f1e127e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,113 +8,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv index 56680af1..d302645a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,121 +9,3,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv index f27b432d..0502ed89 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,100 +0,4,100 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv index 72fb79cf..79a8ecae 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,115 +1,4,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv index 53195e3d..20ab5369 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,102 +2,3,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv index b08ec867..e4054674 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,115 -4,8,102 +3,3,115 +4,3,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv index a620b023..f37176b4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,122 +5,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv index ebfed34f..25b28cdd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,115 -7,8,111 +6,4,115 +7,3,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv index ae1ba6f4..8eb4c4a0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,111 +8,4,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv index 56680af1..d302645a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,121 +9,3,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv index f27b432d..0502ed89 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -0,8,100 +0,4,100 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-1-predictions.csv index 72fb79cf..79a8ecae 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -1,8,115 +1,4,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv index 8302df2f..53c89ed7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -2,8,122 +2,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv index b08ec867..e4054674 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -3,8,115 -4,8,102 +3,3,115 +4,3,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv index a620b023..f37176b4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -5,8,122 +5,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv index ebfed34f..25b28cdd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId -6,8,115 -7,8,111 +6,4,115 +7,3,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv index a2894aea..59349bc1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,8,102 +8,4,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv index 56680af1..d302645a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -9,8,121 +9,3,121 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv index 31f237e5..ed59d730 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,109,[other],0.00014168024 +0,4,109,[other],0.00014168024 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv index 5875e518..98c7c6b4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,102,[unknown],-0.09726027 +1,4,102,[unknown],-0.09726027 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv index 7521792f..461de44b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,[mask],[unknown],-0.12791729 +2,3,[mask],[unknown],-0.12791729 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv index 9bf8759e..8cb7700d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,103,4,0.043316968 -4,8,110,4,0.032937437 +3,3,103,4,0.043316968 +4,3,110,4,0.032937437 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv index c93e224e..02507d44 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,110,9,-0.075533785 +5,3,110,9,-0.075533785 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv index ddd61771..93e77202 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,122,7,-0.04820269 -7,8,113,[other],0.057539806 +6,4,122,7,-0.04820269 +7,3,113,[other],0.057539806 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv index 2911647f..c2229265 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,110,[mask],-0.095947556 +8,4,110,[mask],-0.095947556 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv index 9ad6394e..ced3fa21 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,114,6,-0.0014844015 +9,3,114,6,-0.0014844015 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv index 09619471..626180f8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,8,102,4,0.016973361 +0,4,102,4,0.016973361 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv index 99102984..35dc1d9f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,8,100,[unknown],-0.09465362 +1,4,100,[unknown],-0.09465362 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv index b2187677..c0b5fba4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,8,100,[unknown],-0.12798095 +2,3,100,[unknown],-0.12798095 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv index 2fbedb5c..5fc0d368 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,8,111,4,0.058097668 -4,8,128,4,0.047720857 +3,3,111,4,0.058097668 +4,3,128,4,0.047720857 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv index 5063e0ad..8901171a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,8,102,6,-0.06665557 +5,3,102,6,-0.06665557 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv index 2740828e..5c04fea5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,8,110,7,-0.029965512 -7,8,102,4,0.083941795 +6,4,110,7,-0.029965512 +7,3,102,4,0.083941795 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv index a3fb49ac..30927882 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,8,128,0,-0.07864175 +8,4,128,0,-0.07864175 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv index 5d07e206..69f195e6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,8,125,6,0.00074065477 +9,3,125,6,0.00074065477 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 78d03599..d1af2939 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.03839054 -0,22,0.3938979 -0,23,0.48175326 -0,24,0.19821997 -0,25,0.3539636 -0,26,0.25612468 -0,27,0.24314602 -0,28,0.44780913 -0,29,0.01864058 -0,30,0.039980453 -0,31,0.22218053 -0,32,-0.2989616 -0,33,-0.10028865 -0,34,-0.07033796 -0,35,-0.002902084 -0,36,-0.01792423 -0,37,-0.036144238 -0,38,0.11984898 -0,39,0.051461555 -0,40,0.11685391 -1,19,0.24713944 -1,20,0.2920655 -1,21,0.13532351 -1,22,0.22817066 -1,23,0.090397455 -1,24,-0.13223606 -1,25,0.19821997 -1,26,-0.03339876 -1,27,0.072926216 -1,28,-0.11127058 -1,29,-0.33290574 -1,30,0.034239903 -1,31,-0.07483056 -1,32,-0.14122127 -1,33,0.06344183 -1,34,-0.11426565 -1,35,-0.09978948 -1,36,0.05919882 -1,37,-0.035395473 -1,38,0.0037588265 -2,17,0.2920655 -2,18,0.15029885 -2,19,0.07043032 -2,20,-0.050121233 -2,21,0.12184569 -2,22,-0.060354386 -2,23,0.20021668 -2,24,0.054955803 -2,25,-0.04438068 -2,26,-0.07233467 -2,27,-0.05062041 -2,28,-0.1981276 -2,29,0.012400852 -2,30,-0.03127725 -2,31,-0.121254146 -2,32,-0.04138561 -2,33,-0.122751676 -2,34,-0.11426565 -2,35,-0.052117944 -2,36,0.066936076 -3,17,0.03473908 -3,18,0.18623969 -3,19,0.32600963 -3,20,0.030496065 -3,21,0.06843361 -3,22,0.3938979 -3,23,0.25013453 -3,24,0.19222984 -3,25,-0.10577962 -3,26,-0.114764825 -3,27,0.04971443 -3,28,0.102377735 -3,29,-0.055861782 -3,30,-0.0040096357 -3,31,0.12533994 -3,32,-0.21709637 -3,33,-0.007753473 -3,34,0.021136472 -3,35,-0.055362605 -3,36,0.17326106 -4,14,0.16926762 -4,15,-0.10028865 -4,16,-0.042883147 -4,17,0.17725448 -4,18,0.21119861 -4,19,-0.054863427 -4,20,-0.018797792 -4,21,-0.0050235917 -4,22,-0.13523114 -4,23,-0.2670142 -4,24,0.048466485 -4,25,-0.037392184 -4,26,0.061694708 -4,27,0.13432515 -4,28,-0.06634453 -4,29,-0.065346174 -4,30,-0.21609803 -4,31,-0.03639383 -4,32,-0.04188479 -4,33,0.19222984 -5,14,0.106371164 -5,15,0.44581243 -5,16,0.24414438 -5,17,0.14730379 -5,18,0.40188473 -5,19,0.17625612 -5,20,0.17026599 -5,21,0.1403153 -5,22,-0.07383221 -5,23,0.03149442 -5,24,-0.22308652 -5,25,-0.0021962146 -5,26,0.042226754 -5,27,-0.021917658 -5,28,0.016394278 -5,29,-0.02690944 -5,30,-0.07832481 -5,31,-0.06684371 -5,32,-0.20910953 -5,33,-0.095296875 -6,18,0.024505924 -6,19,0.13831857 -6,20,0.15329392 -6,21,0.16427584 -6,22,0.07192786 -6,23,0.044972237 -6,24,0.0412284 -6,25,-0.10078783 -6,26,-0.13822621 -6,27,-0.24604872 -6,28,-0.061103154 -6,29,-0.07782563 -6,30,-0.17915882 -6,31,-0.13323443 -6,32,0.044972237 -6,33,-0.03489629 -6,34,0.018016607 -6,35,-0.012994845 -6,36,0.05520539 -6,37,-0.006505527 -7,15,0.15229557 -7,16,0.4877434 -7,17,0.18424298 -7,18,0.029622503 -7,19,0.24015094 -7,20,0.32001948 -7,21,0.0098425625 -7,22,-0.109273866 -7,23,-0.11626236 -7,24,-0.03364835 -7,25,-0.20611446 -7,26,0.056952514 -7,27,-0.20711282 -7,28,0.009031397 -7,29,-0.006973507 -7,30,-0.12025579 -7,31,-0.049622055 -7,32,-0.16917527 -7,33,-0.0004529903 -7,34,0.02163565 -8,20,0.076919645 -8,21,-0.09978948 -8,22,-0.011310118 -8,23,0.10187856 -8,24,0.1722627 -8,25,0.09538924 -8,26,0.061694708 -8,27,0.16727091 -8,28,-0.23107336 -8,29,0.07592129 -8,30,-0.0009950667 -8,31,-0.018298615 -8,32,-0.013369229 -8,33,0.0527095 -8,34,0.04721854 -8,35,-0.019047381 -8,36,0.000061787316 -8,37,0.18524134 -8,38,-0.07882399 -8,39,0.007346671 -9,16,0.23016739 -9,17,0.25412795 -9,18,0.23815423 -9,19,0.16028242 -9,20,0.10736952 -9,21,0.20720518 -9,22,0.06394101 -9,23,-0.095296875 -9,24,0.05894923 -9,25,-0.04837411 -9,26,-0.057359315 -9,27,0.03224319 -9,28,-0.13523114 -9,29,-0.046127804 -9,30,0.3180228 -9,31,-0.15519828 -9,32,-0.14221963 -9,33,0.08640403 -9,34,0.08390814 -9,35,-0.017425053 +0,21,-0.25203884 +0,22,0.07592129 +0,23,0.29406223 +0,24,0.2411493 +0,25,0.21718875 +0,26,0.29605892 +0,27,0.13432515 +0,28,0.20121504 +0,29,-0.016863476 +0,30,-0.21210459 +0,31,-0.022416836 +0,32,0.042226754 +0,33,0.08740239 +0,34,0.2900688 +0,35,-0.06784207 +0,36,-0.09479769 +0,37,0.01564551 +0,38,-0.12325086 +0,39,-0.25403556 +0,40,-0.032525197 +1,19,0.25113288 +1,20,0.16227913 +1,21,0.07142868 +1,22,0.27209836 +1,23,0.27209836 +1,24,-0.11975661 +1,25,0.1148572 +1,26,-0.029405331 +1,27,-0.008003062 +1,28,-0.02528711 +1,29,-0.089306735 +1,30,0.21020025 +1,31,0.07192786 +1,32,0.07642046 +1,33,0.11385884 +1,34,0.062443476 +1,35,0.20021668 +1,36,0.08340896 +1,37,0.18224627 +1,38,-0.05960562 +2,17,0.054456625 +2,18,0.001980504 +2,19,-0.08032152 +2,20,-0.015865121 +2,21,-0.05710973 +2,22,-0.11027222 +2,23,0.11186212 +2,24,-0.09030509 +2,25,0.029123325 +2,26,0.034239903 +2,27,0.035987027 +2,28,0.0001475836 +2,29,-0.021792863 +2,30,0.07642046 +2,31,-0.17217033 +2,32,0.16227913 +2,33,-0.14421634 +2,34,-0.102784544 +2,35,-0.09180263 +2,36,-0.22308652 +3,17,0.23116574 +3,18,0.20421012 +3,19,0.42384857 +3,20,0.16727091 +3,21,0.24713944 +3,22,0.11136295 +3,23,0.008781808 +3,24,0.088899925 +3,25,-0.07982235 +3,26,0.11136295 +3,27,-0.1522032 +3,28,-0.085313305 +3,29,0.029248118 +3,30,0.035987027 +3,31,0.012463248 +3,32,-0.101287015 +3,33,-0.101287015 +3,34,0.10886706 +3,35,-0.0046804063 +3,36,-0.043382324 +4,14,0.2900688 +4,15,0.17425941 +4,16,0.007783452 +4,17,-0.08181906 +4,18,0.016643867 +4,19,-0.04487986 +4,20,0.2780885 +4,21,-0.00597515 +4,22,-0.015677929 +4,23,-0.11726072 +4,24,-0.021044096 +4,25,0.054955803 +4,26,-0.14122127 +4,27,-0.11726072 +4,28,-0.10428208 +4,29,-0.10178619 +4,30,-0.14122127 +4,31,-0.028781358 +4,32,-0.21709637 +4,33,-0.15719499 +5,14,0.05520539 +5,15,0.33199978 +5,16,0.27209836 +5,17,0.2231789 +5,18,0.11735309 +5,19,0.11335966 +5,20,0.051461555 +5,21,0.2391526 +5,22,-0.03364835 +5,23,-0.20411775 +5,24,0.16427584 +5,25,-0.19213746 +5,26,0.037234973 +5,27,-0.09579605 +5,28,0.056702927 +5,29,0.045471415 +5,30,0.20421012 +5,31,-0.006349534 +5,32,0.100880206 +5,33,0.030246476 +6,18,0.29605892 +6,19,0.29605892 +6,20,0.1792512 +6,21,0.17425941 +6,22,0.19821997 +6,23,0.0434747 +6,24,0.0016997161 +6,25,-0.07483056 +6,26,-0.065845355 +6,27,0.015146332 +6,28,-0.026160672 +6,29,0.021136472 +6,30,-0.09629523 +6,31,-0.16318512 +6,32,-0.22907665 +6,33,0.090896636 +6,34,-0.06509659 +6,35,-0.07982235 +6,36,0.015271126 +6,37,-0.08481413 +7,15,0.072926216 +7,16,0.014896743 +7,17,-0.029654922 +7,18,-0.043631915 +7,19,-0.05261712 +7,20,0.2740951 +7,21,-0.11626236 +7,22,0.023881953 +7,23,-0.0000942059 +7,24,-0.064597405 +7,25,0.2780885 +7,26,0.0055371495 +7,27,0.054706212 +7,28,0.032991957 +7,29,0.078916356 +7,30,0.24514273 +7,31,0.090397455 +7,32,0.041977167 +7,33,-0.047874928 +7,34,-0.05910644 +8,20,-0.08281741 +8,21,0.21918546 +8,22,0.14131364 +8,23,0.04996402 +8,24,0.21119861 +8,25,0.07242704 +8,26,0.0065355063 +8,27,-0.018922588 +8,28,-0.051618766 +8,29,-0.18315226 +8,30,-0.22408487 +8,31,0.055704568 +8,32,-0.10178619 +8,33,-0.14022292 +8,34,0.13732022 +8,35,-0.048873287 +8,36,0.16327749 +8,37,0.004351601 +8,38,0.08690321 +8,39,-0.024538344 +9,16,0.3958946 +9,17,0.37193403 +9,18,0.082909785 +9,19,0.018765375 +9,20,0.34398004 +9,21,0.17425941 +9,22,0.084407315 +9,23,0.09938267 +9,24,0.017143045 +9,25,-0.1751654 +9,26,-0.107277155 +9,27,0.10886706 +9,28,0.26211482 +9,29,-0.026784645 +9,30,-0.05261712 +9,31,-0.14721142 +9,32,-0.11376647 +9,33,0.03149442 +9,34,0.019264553 +9,35,0.04671936 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 744668f3..1cf52011 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -11,8 +11,8 @@ sequenceId,itemPosition,itemValue 2,9,0.11735309 3,8,0.36993733 3,9,0.29805565 -4,8,-0.13523114 -5,8,0.14131364 +4,7,-0.13523114 +5,7,0.14131364 6,8,0.3359932 6,9,0.26810494 6,10,0.31402937 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index 2d1901f7..68074514 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -11,8 +11,8 @@ sequenceId,itemPosition,itemValue 2,9,-0.18891405 3,8,0.08957863 3,9,0.17450903 -4,8,0.37695938 -5,8,-0.18002598 +4,7,0.37695938 +5,7,-0.18002598 6,8,0.2999295 6,9,0.33745688 6,10,0.007867463 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index 27254750..7c11814b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -11,8 +11,8 @@ sequenceId,itemPosition,itemValue 2,9,-0.29939193 3,8,-0.1360021 3,9,0.23850942 -4,8,0.104493044 -5,8,-0.3471238 +4,7,0.104493044 +5,7,-0.3471238 6,8,0.09990344 6,9,-0.11305408 6,10,0.15406075 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index e1bc7a5b..22ba483f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -11,8 +11,8 @@ sequenceId,itemPosition,itemValue 2,9,-0.24058047 3,8,0.01506035 3,9,0.37075448 -4,8,0.3579036 -5,8,-0.12813523 +4,7,0.3579036 +5,7,-0.12813523 6,8,0.3395452 6,9,0.2771266 6,10,0.31567925 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index aaee17e3..9a24e80c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,127,1,1,2,1 -0,9,113,4,9,8,1 -0,10,113,1,1,8,1 -0,11,113,1,9,8,1 -0,12,113,1,9,8,1 -0,13,113,1,9,8,1 -0,14,113,1,8,8,1 -0,15,113,1,0,8,1 -0,16,113,1,9,7,1 -0,17,121,1,8,7,1 -0,18,105,1,8,7,1 -0,19,105,1,8,7,1 -0,20,105,1,8,7,1 -0,21,113,1,7,7,1 -0,22,113,6,7,7,1 -0,23,113,6,7,2,1 -0,24,113,1,7,8,1 -0,25,113,1,7,8,1 -0,26,113,1,7,8,1 -0,27,113,1,0,8,1 -0,28,113,1,0,8,1 -0,29,113,1,0,8,1 -0,30,113,1,0,8,1 -0,31,113,1,0,8,1 -0,32,113,1,0,7,1 -0,33,108,1,8,7,1 -0,34,108,1,0,7,1 -0,35,108,6,0,7,1 -0,36,108,1,0,7,1 -0,37,108,6,7,7,1 +0,4,127,1,1,2,1 +0,5,127,1,8,8,1 +0,6,113,1,1,7,0 +0,7,105,8,9,7,1 +0,8,127,1,1,0,1 +0,9,113,1,7,7,1 +0,10,113,8,9,1,1 +0,11,113,1,1,7,1 +0,12,105,8,5,7,1 +0,13,113,1,5,8,1 +0,14,113,1,[other],8,1 +0,15,113,1,5,7,1 +0,16,105,1,5,7,1 +0,17,108,1,8,7,1 +0,18,108,1,5,7,1 +0,19,124,1,5,7,1 +0,20,124,1,5,7,1 +0,21,105,8,5,7,1 +0,22,105,1,5,7,1 +0,23,110,1,5,7,1 +0,24,110,1,5,8,1 +0,25,110,1,7,8,1 +0,26,110,[other],7,7,1 +0,27,110,5,7,7,1 +0,28,103,5,7,0,1 +0,29,102,1,5,0,1 +0,30,103,1,7,7,1 +0,31,102,5,5,0,1 +0,32,103,1,7,0,1 +0,33,102,[mask],7,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index 7ae8e23a..12e2155a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,121,6,0,8,0 -1,9,121,1,0,8,0 -1,10,121,1,0,8,0 -1,11,121,1,0,8,0 -1,12,121,1,0,8,0 -1,13,126,1,0,8,0 -1,14,127,1,0,8,0 -1,15,127,0,0,8,0 -1,16,127,0,9,8,0 -1,17,127,0,7,7,0 -1,18,105,8,9,7,1 -1,19,127,0,7,2,1 -1,20,113,4,7,8,1 -1,21,113,1,9,8,1 -1,22,113,1,7,8,1 -1,23,113,1,9,8,1 -1,24,113,1,0,8,1 -1,25,113,1,0,8,1 -1,26,113,1,0,8,1 -1,27,113,1,0,8,1 -1,28,113,1,0,7,1 -1,29,108,1,8,7,1 -1,30,108,1,8,7,1 -1,31,105,6,8,7,1 -1,32,113,1,8,7,1 -1,33,113,6,7,7,1 -1,34,113,6,7,7,1 -1,35,113,6,7,2,1 -1,36,113,1,7,8,1 -1,37,113,1,0,8,1 +1,4,121,1,0,7,0 +1,5,108,3,0,8,1 +1,6,103,1,0,7,0 +1,7,103,8,0,7,1 +1,8,108,1,0,2,1 +1,9,113,1,0,7,1 +1,10,108,8,7,7,1 +1,11,124,8,7,7,1 +1,12,105,8,7,7,1 +1,13,113,8,5,7,1 +1,14,113,1,[other],8,1 +1,15,113,1,[other],8,1 +1,16,113,1,[other],7,1 +1,17,108,1,5,7,1 +1,18,124,1,[other],7,1 +1,19,108,1,5,7,1 +1,20,124,1,5,7,1 +1,21,124,1,5,7,1 +1,22,105,8,5,7,1 +1,23,105,1,5,7,1 +1,24,124,8,5,7,1 +1,25,110,8,5,7,1 +1,26,110,1,5,8,1 +1,27,110,1,7,8,1 +1,28,110,6,7,7,1 +1,29,110,1,7,0,1 +1,30,113,1,7,0,1 +1,31,113,1,7,0,1 +1,32,113,1,7,0,1 +1,33,113,[mask],5,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index 38fb6ff6..5cf7bea0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,121,1,8,0,0 -2,9,105,0,8,7,0 -2,10,121,1,8,2,0 -2,11,113,4,7,8,0 -2,12,121,1,9,8,0 -2,13,127,1,0,8,0 -2,14,127,4,0,8,1 -2,15,127,1,0,8,0 -2,16,127,4,7,8,1 -2,17,127,1,0,8,1 -2,18,103,1,0,8,1 -2,19,113,1,0,8,1 -2,20,103,1,9,7,1 -2,21,105,1,7,7,1 -2,22,113,1,9,7,1 -2,23,105,1,9,7,1 -2,24,113,1,7,7,1 -2,25,113,6,9,7,1 -2,26,113,1,7,7,1 -2,27,113,6,5,7,1 -2,28,113,1,8,8,1 -2,29,113,1,0,8,1 -2,30,113,1,0,8,1 -2,31,113,1,0,8,1 -2,32,113,1,0,8,1 -2,33,113,1,0,8,1 -2,34,113,1,0,7,1 -2,35,108,1,8,7,1 -2,36,105,1,8,7,1 -2,37,105,1,9,7,1 +2,3,128,1,8,6,0 +2,4,105,0,8,7,2 +2,5,105,1,8,2,1 +2,6,113,1,8,7,2 +2,7,105,1,9,7,1 +2,8,105,1,7,7,1 +2,9,113,1,7,7,1 +2,10,113,1,5,7,1 +2,11,113,1,[other],8,1 +2,12,113,1,[other],7,1 +2,13,113,8,5,7,1 +2,14,113,1,[other],8,1 +2,15,113,1,5,7,1 +2,16,113,1,5,7,1 +2,17,105,1,5,7,1 +2,18,108,1,5,7,1 +2,19,108,1,5,7,1 +2,20,108,1,5,7,1 +2,21,124,1,5,7,1 +2,22,105,8,5,7,1 +2,23,110,1,5,7,1 +2,24,110,8,5,8,1 +2,25,110,1,5,8,1 +2,26,110,[other],5,8,1 +2,27,127,1,7,8,1 +2,28,103,5,7,0,1 +2,29,103,1,5,7,1 +2,30,103,1,5,0,1 +2,31,103,[other],4,0,1 +2,32,127,1,4,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index 932a6a31..4e1d63dd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,127,4,0,2,0 -3,9,127,4,0,8,1 -3,10,127,4,0,8,1 -3,11,127,1,0,2,1 -3,12,113,4,9,8,1 -3,13,121,1,1,2,1 -3,14,113,0,9,8,1 -3,15,113,1,1,8,1 -3,16,113,1,9,7,1 -3,17,105,1,9,7,1 -3,18,105,1,8,7,1 -3,19,105,1,9,7,1 -3,20,113,1,8,7,1 -3,21,105,8,9,7,1 -3,22,113,1,8,8,1 -3,23,113,1,9,8,1 -3,24,113,1,7,8,1 -3,25,113,1,9,7,1 -3,26,113,1,8,7,1 -3,27,113,1,8,7,1 -3,28,113,1,8,7,1 -3,29,113,1,8,7,1 -3,30,113,1,5,7,1 -3,31,113,1,5,8,1 -3,32,113,1,0,8,1 -3,33,113,1,0,8,1 -3,34,113,1,0,8,1 -3,35,113,1,0,8,1 -3,36,113,1,0,7,1 -3,37,108,1,8,7,1 -4,8,127,4,0,8,0 -4,9,127,4,0,8,1 -4,10,127,1,0,2,1 -4,11,127,4,7,8,1 -4,12,127,1,1,8,1 -4,13,127,1,0,8,1 -4,14,113,1,0,8,1 -4,15,113,1,9,8,1 -4,16,113,1,9,7,1 -4,17,105,1,9,7,1 -4,18,105,1,9,7,1 -4,19,105,1,9,7,1 -4,20,105,1,9,7,1 -4,21,113,1,9,7,1 -4,22,113,1,9,7,1 -4,23,113,1,9,7,1 -4,24,113,1,9,8,1 -4,25,113,1,9,8,1 -4,26,113,1,9,8,1 -4,27,113,1,9,8,1 -4,28,113,1,9,7,1 -4,29,113,1,8,7,1 -4,30,105,1,8,7,1 -4,31,113,1,8,7,1 -4,32,113,1,8,7,1 -4,33,113,1,8,7,1 -4,34,113,1,9,7,1 -4,35,113,1,7,8,1 -4,36,113,1,7,8,1 -4,37,113,1,7,8,1 +3,3,127,5,0,2,0 +3,4,127,4,0,8,0 +3,5,127,4,0,8,0 +3,6,127,4,0,8,0 +3,7,127,4,0,8,0 +3,8,127,4,0,8,1 +3,9,108,1,0,8,1 +3,10,103,1,7,7,1 +3,11,103,8,9,7,1 +3,12,103,1,7,7,1 +3,13,113,8,7,7,1 +3,14,113,8,5,7,1 +3,15,113,1,5,7,1 +3,16,113,1,5,7,1 +3,17,113,1,5,7,1 +3,18,113,1,[other],8,1 +3,19,113,1,[other],7,1 +3,20,108,8,5,7,1 +3,21,108,1,2,7,1 +3,22,108,1,5,7,1 +3,23,108,1,5,7,1 +3,24,124,1,5,7,1 +3,25,124,1,5,7,1 +3,26,124,8,5,7,1 +3,27,124,1,5,7,1 +3,28,124,8,5,7,1 +3,29,110,8,5,7,1 +3,30,110,1,5,8,1 +3,31,110,1,7,8,1 +3,32,110,[other],7,7,1 +4,3,127,0,9,[unknown],1 +4,4,127,0,1,8,1 +4,5,102,0,1,8,1 +4,6,127,1,4,8,0 +4,7,127,0,1,7,1 +4,8,127,0,4,0,1 +4,9,127,1,1,7,1 +4,10,124,1,9,0,1 +4,11,113,1,7,7,1 +4,12,113,8,5,0,1 +4,13,113,1,5,8,1 +4,14,113,1,7,8,1 +4,15,113,1,5,7,1 +4,16,113,1,5,7,1 +4,17,113,1,5,7,1 +4,18,113,1,5,7,1 +4,19,108,1,5,7,1 +4,20,108,1,5,7,1 +4,21,103,1,5,7,1 +4,22,103,1,5,7,1 +4,23,110,1,5,7,1 +4,24,110,1,5,8,1 +4,25,110,1,5,8,1 +4,26,110,1,5,0,1 +4,27,110,0,5,7,1 +4,28,110,[other],5,0,1 +4,29,127,0,4,7,1 +4,30,103,0,5,0,1 +4,31,103,[other],4,0,1 +4,32,127,1,4,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index 0c148033..4f5b8222 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,121,1,5,4,1 -5,9,127,1,0,8,1 -5,10,127,1,0,2,1 -5,11,127,1,7,2,1 -5,12,127,1,1,0,1 -5,13,105,1,9,2,1 -5,14,113,1,7,0,1 -5,15,113,1,9,7,1 -5,16,105,8,9,7,1 -5,17,105,1,8,2,1 -5,18,113,0,7,8,1 -5,19,113,1,9,8,1 -5,20,113,1,9,8,1 -5,21,113,1,9,8,1 -5,22,113,1,0,8,1 -5,23,113,1,0,8,1 -5,24,113,1,0,8,1 -5,25,113,1,0,7,1 -5,26,108,1,8,7,1 -5,27,105,1,8,7,1 -5,28,105,1,8,7,1 -5,29,105,1,9,7,1 -5,30,113,1,7,7,1 -5,31,113,6,7,7,1 -5,32,113,6,7,2,1 -5,33,113,1,7,8,1 -5,34,113,1,7,8,1 -5,35,113,1,9,8,1 -5,36,113,1,0,8,1 -5,37,113,1,0,8,1 +5,3,128,1,5,4,1 +5,4,128,1,5,6,1 +5,5,105,1,5,6,1 +5,6,128,1,5,0,1 +5,7,105,1,5,7,1 +5,8,105,1,5,0,1 +5,9,113,1,7,7,1 +5,10,105,1,9,7,1 +5,11,103,1,9,7,1 +5,12,108,1,9,7,1 +5,13,113,1,5,7,1 +5,14,113,1,5,8,1 +5,15,113,1,5,8,1 +5,16,113,1,5,8,1 +5,17,113,1,5,7,1 +5,18,105,1,5,7,1 +5,19,105,1,5,7,1 +5,20,103,1,5,7,1 +5,21,103,1,5,7,1 +5,22,103,1,5,7,1 +5,23,103,1,5,7,1 +5,24,108,1,5,7,1 +5,25,124,8,5,7,1 +5,26,110,8,5,7,1 +5,27,110,1,5,8,1 +5,28,110,2,7,8,1 +5,29,110,2,5,0,1 +5,30,110,1,5,7,1 +5,31,124,[other],5,0,1 +5,32,127,1,8,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index 1b1ae93e..929f2c8c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,121,4,0,8,0 -6,9,113,1,0,8,0 -6,10,113,1,0,8,1 -6,11,113,1,0,8,1 -6,12,113,1,0,8,1 -6,13,113,1,0,8,1 -6,14,113,1,0,8,1 -6,15,113,1,9,7,1 -6,16,105,8,9,7,1 -6,17,105,1,8,7,1 -6,18,105,1,9,7,1 -6,19,105,1,9,7,1 -6,20,113,1,7,7,1 -6,21,113,6,9,7,1 -6,22,113,1,3,2,1 -6,23,113,6,7,8,1 -6,24,113,1,9,8,1 -6,25,113,1,0,8,1 -6,26,113,1,0,8,1 -6,27,113,1,0,8,1 -6,28,113,1,0,8,1 -6,29,113,1,0,8,1 -6,30,113,1,0,7,1 -6,31,108,1,8,7,1 -6,32,105,1,8,7,1 -6,33,105,1,9,7,1 -6,34,105,1,7,7,1 -6,35,113,6,7,7,1 -6,36,113,6,7,7,1 -6,37,113,6,7,2,1 -7,8,105,4,9,8,0 -7,9,121,0,8,8,0 -7,10,113,0,8,8,0 -7,11,121,4,8,8,0 -7,12,127,0,0,8,0 -7,13,121,4,8,8,0 -7,14,127,4,0,8,0 -7,15,127,1,0,8,0 -7,16,127,4,0,8,1 -7,17,127,1,0,8,0 -7,18,127,1,0,8,1 -7,19,127,1,7,8,1 -7,20,113,1,7,8,1 -7,21,113,1,9,7,1 -7,22,103,1,7,7,1 -7,23,113,8,7,7,1 -7,24,113,1,9,7,1 -7,25,113,1,7,7,1 -7,26,113,6,5,7,1 -7,27,113,1,5,8,1 -7,28,113,1,0,8,1 -7,29,113,1,0,8,1 -7,30,113,1,0,8,1 -7,31,113,1,0,8,1 -7,32,113,1,0,7,1 -7,33,108,1,8,7,1 -7,34,108,1,8,7,1 -7,35,108,1,8,7,1 -7,36,122,6,7,7,1 -7,37,113,6,7,7,1 +6,4,109,4,8,8,1 +6,5,113,1,0,7,0 +6,6,113,1,7,7,1 +6,7,113,1,7,7,1 +6,8,113,1,7,7,1 +6,9,102,8,7,7,1 +6,10,102,5,7,7,1 +6,11,102,1,7,7,1 +6,12,113,1,7,7,1 +6,13,113,8,5,0,1 +6,14,102,1,5,2,1 +6,15,113,1,7,8,1 +6,16,113,1,1,0,1 +6,17,113,1,5,7,1 +6,18,105,1,5,7,1 +6,19,105,1,5,7,1 +6,20,108,1,7,7,1 +6,21,108,8,7,7,1 +6,22,105,5,5,7,1 +6,23,113,1,5,7,1 +6,24,113,1,5,8,1 +6,25,113,1,5,8,1 +6,26,113,1,5,8,1 +6,27,113,1,5,7,1 +6,28,108,1,5,7,1 +6,29,108,1,5,7,1 +6,30,103,1,5,7,1 +6,31,103,1,5,7,1 +6,32,103,1,5,7,1 +6,33,103,8,5,7,1 +7,3,105,0,9,8,0 +7,4,127,0,1,7,0 +7,5,105,0,9,8,1 +7,6,127,0,1,7,0 +7,7,105,0,9,8,1 +7,8,113,0,1,0,0 +7,9,113,1,9,8,1 +7,10,113,1,1,8,1 +7,11,113,1,9,8,1 +7,12,113,1,1,7,1 +7,13,113,1,9,7,1 +7,14,113,1,9,7,1 +7,15,105,1,5,7,1 +7,16,113,1,9,8,1 +7,17,113,1,5,7,1 +7,18,105,1,5,7,1 +7,19,105,1,5,7,1 +7,20,113,1,5,7,1 +7,21,113,1,5,7,1 +7,22,113,1,5,7,1 +7,23,113,1,5,7,1 +7,24,113,1,5,7,1 +7,25,113,1,5,7,1 +7,26,113,1,5,7,1 +7,27,113,1,5,7,1 +7,28,113,1,5,7,1 +7,29,113,1,5,7,1 +7,30,113,1,5,7,1 +7,31,113,1,5,7,1 +7,32,113,1,5,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index 9dc6a76d..83cccde4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,113,1,0,8,0 -8,9,113,1,0,8,1 -8,10,113,1,0,2,1 -8,11,113,1,8,2,1 -8,12,113,1,0,8,1 -8,13,113,1,0,8,1 -8,14,113,1,0,2,1 -8,15,113,1,0,2,1 -8,16,113,1,8,7,1 -8,17,105,8,9,7,1 -8,18,105,1,8,2,1 -8,19,113,1,9,7,1 -8,20,105,1,9,7,1 -8,21,113,1,7,7,1 -8,22,113,1,9,7,1 -8,23,113,1,7,8,1 -8,24,113,1,9,8,1 -8,25,113,1,0,8,1 -8,26,113,1,9,8,1 -8,27,113,1,0,7,1 -8,28,113,1,8,7,1 -8,29,105,1,8,7,1 -8,30,113,1,8,7,1 -8,31,105,1,9,7,1 -8,32,113,1,8,7,1 -8,33,113,6,9,7,1 -8,34,113,1,8,2,1 -8,35,113,1,7,8,1 -8,36,113,1,7,8,1 -8,37,113,1,7,8,1 +8,4,109,1,0,7,0 +8,5,127,1,8,7,1 +8,6,124,1,7,0,1 +8,7,127,1,7,7,0 +8,8,127,8,9,0,1 +8,9,127,1,1,0,1 +8,10,124,1,7,0,1 +8,11,113,1,7,0,1 +8,12,113,1,7,7,1 +8,13,113,8,5,7,1 +8,14,113,1,5,8,1 +8,15,113,1,5,8,1 +8,16,113,1,5,7,1 +8,17,113,1,5,7,1 +8,18,108,1,5,7,1 +8,19,108,1,5,7,1 +8,20,108,1,5,7,1 +8,21,124,1,5,7,1 +8,22,103,8,5,7,1 +8,23,103,1,5,7,1 +8,24,110,8,5,7,1 +8,25,110,1,5,8,1 +8,26,110,2,5,8,1 +8,27,110,1,5,8,1 +8,28,110,[other],7,0,1 +8,29,127,1,7,7,1 +8,30,108,5,7,0,1 +8,31,127,5,5,0,1 +8,32,102,1,4,0,1 +8,33,103,[other],4,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index 06013440..eebbcfd3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,121,1,8,8,1 -9,9,113,1,0,8,1 -9,10,113,1,8,8,1 -9,11,113,1,0,7,1 -9,12,105,1,8,7,1 -9,13,105,1,8,7,1 -9,14,105,1,7,7,1 -9,15,113,1,7,7,1 -9,16,113,1,7,7,1 -9,17,113,6,7,7,1 -9,18,113,6,5,2,1 -9,19,113,1,0,8,1 -9,20,113,1,0,8,1 -9,21,113,1,0,8,1 -9,22,113,1,0,8,1 -9,23,113,1,0,8,1 -9,24,113,1,0,8,1 -9,25,113,1,0,8,1 -9,26,113,1,0,7,1 -9,27,105,1,8,7,1 -9,28,105,1,8,7,1 -9,29,105,1,9,7,1 -9,30,105,1,7,7,1 -9,31,113,6,7,7,1 -9,32,113,6,7,2,1 -9,33,113,1,7,8,1 -9,34,113,1,7,8,1 -9,35,113,1,9,8,1 -9,36,113,1,0,8,1 -9,37,113,1,0,8,1 +9,3,108,1,8,7,1 +9,4,108,1,[other],7,1 +9,5,108,8,5,7,1 +9,6,108,1,[other],7,1 +9,7,108,8,[other],7,1 +9,8,108,8,[other],7,1 +9,9,124,8,[other],7,1 +9,10,113,8,[other],2,1 +9,11,113,1,[other],8,1 +9,12,113,1,[other],8,1 +9,13,113,1,[other],8,1 +9,14,113,1,[other],0,1 +9,15,113,1,9,2,1 +9,16,113,1,5,7,1 +9,17,105,1,5,7,1 +9,18,105,1,8,7,1 +9,19,103,1,5,7,1 +9,20,105,1,5,7,1 +9,21,113,1,5,7,1 +9,22,113,1,7,7,1 +9,23,113,8,5,7,1 +9,24,113,1,5,8,1 +9,25,113,1,5,8,1 +9,26,113,1,5,7,1 +9,27,108,1,5,7,1 +9,28,108,1,5,7,1 +9,29,108,1,5,7,1 +9,30,108,1,5,7,1 +9,31,124,1,5,7,1 +9,32,103,8,5,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index fd1bb4cf..a90c5af9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,104,7,[mask],[unknown],1 -0,9,104,7,[mask],[unknown],0 -0,10,104,7,1,[unknown],0 -0,11,101,7,1,[unknown],0 -0,12,106,7,1,[unknown],[other] -0,13,112,9,1,[unknown],0 -0,14,129,9,1,5,[unknown] -0,15,112,2,1,1,[other] -0,16,112,7,1,[unknown],2 -0,17,129,2,1,[unknown],2 -0,18,129,7,1,5,2 -0,19,112,7,1,1,2 -0,20,129,7,1,[unknown],2 -0,21,129,7,1,1,[other] -0,22,112,7,1,5,[mask] -0,23,118,7,[mask],[unknown],[mask] -0,24,129,9,1,5,[other] -0,25,112,9,1,5,[mask] -0,26,[other],7,[mask],[unknown],[mask] -0,27,129,9,1,5,[other] -0,28,112,9,1,5,[other] -0,29,129,7,1,[unknown],[mask] -0,30,104,0,1,[unknown],[other] -0,31,112,7,1,[unknown],[other] -0,32,104,7,1,[unknown],2 -0,33,129,7,1,[unknown],[other] -0,34,112,9,1,5,[other] -0,35,112,7,1,[unknown],2 -0,36,108,7,1,[unknown],2 -0,37,129,7,1,5,2 +0,4,104,7,[mask],[unknown],1 +0,5,104,7,9,2,0 +0,6,104,0,9,3,0 +0,7,103,0,[mask],8,0 +0,8,104,7,1,5,0 +0,9,103,5,1,[unknown],0 +0,10,112,0,1,5,0 +0,11,112,7,1,5,0 +0,12,112,5,1,5,0 +0,13,103,0,1,[unknown],0 +0,14,112,7,1,5,0 +0,15,112,0,1,5,0 +0,16,112,7,1,5,0 +0,17,112,7,1,5,0 +0,18,112,7,[mask],5,1 +0,19,119,7,[mask],5,1 +0,20,119,7,[mask],8,0 +0,21,104,0,1,5,1 +0,22,104,7,[mask],8,1 +0,23,104,7,[mask],[unknown],1 +0,24,104,7,[mask],8,1 +0,25,104,7,[mask],8,1 +0,26,108,9,[mask],3,2 +0,27,104,9,1,5,2 +0,28,112,9,[other],1,0 +0,29,111,8,1,4,2 +0,30,112,9,[other],1,2 +0,31,104,9,[other],5,2 +0,32,104,9,[other],1,[mask] +0,33,104,9,[other],8,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index d23a5aeb..61720a4a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,104,7,[mask],1,1 -1,9,104,7,[mask],[unknown],[mask] -1,10,[other],9,1,8,[mask] -1,11,[other],9,1,5,[other] -1,12,104,9,1,1,[other] -1,13,112,9,1,[unknown],[other] -1,14,112,7,1,[unknown],[other] -1,15,112,2,1,5,[other] -1,16,112,2,1,[unknown],[mask] -1,17,129,2,1,[unknown],[mask] -1,18,129,7,1,5,2 -1,19,129,2,1,1,2 -1,20,129,7,1,1,2 -1,21,129,7,1,1,2 -1,22,129,7,1,1,2 -1,23,129,7,1,1,2 -1,24,129,2,1,5,[mask] -1,25,129,2,1,5,[mask] -1,26,129,2,1,5,[mask] -1,27,129,2,1,5,[mask] -1,28,129,2,1,5,[mask] -1,29,112,2,1,5,[mask] -1,30,107,2,1,5,[mask] -1,31,107,2,1,5,1 -1,32,107,2,[mask],[unknown],1 -1,33,107,2,[mask],[unknown],1 -1,34,107,2,[mask],[unknown],1 -1,35,107,7,[mask],[unknown],1 -1,36,107,7,[mask],[unknown],1 -1,37,107,[mask],[mask],[unknown],1 +1,4,104,7,9,1,1 +1,5,104,7,9,8,1 +1,6,104,0,9,8,1 +1,7,104,7,[mask],8,1 +1,8,104,7,9,8,1 +1,9,104,7,9,[unknown],0 +1,10,118,7,9,[unknown],1 +1,11,129,7,9,[unknown],[other] +1,12,112,7,9,[unknown],0 +1,13,108,7,9,[unknown],2 +1,14,104,9,9,5,2 +1,15,129,9,8,8,[other] +1,16,112,9,2,5,0 +1,17,104,9,1,5,[other] +1,18,104,0,1,8,0 +1,19,112,0,1,8,[other] +1,20,112,0,[mask],5,0 +1,21,112,0,1,5,[mask] +1,22,104,7,[mask],5,0 +1,23,129,9,1,8,1 +1,24,104,7,1,8,0 +1,25,112,5,1,5,0 +1,26,112,0,1,5,0 +1,27,112,7,1,5,0 +1,28,112,0,1,5,1 +1,29,112,7,[mask],[unknown],0 +1,30,108,7,1,5,1 +1,31,119,7,[mask],[unknown],0 +1,32,119,0,1,5,1 +1,33,104,7,[mask],5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index cc5b8a64..32aad96e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,112,2,[mask],5,[mask] -2,9,104,7,[mask],[unknown],[mask] -2,10,104,7,1,8,[mask] -2,11,112,7,1,[unknown],[other] -2,12,112,7,1,[unknown],[mask] -2,13,107,7,[mask],[unknown],[mask] -2,14,107,7,[mask],[unknown],[mask] -2,15,[other],7,[mask],[unknown],2 -2,16,129,9,[other],1,[other] -2,17,112,9,[other],1,[mask] -2,18,104,1,[other],5,[mask] -2,19,104,2,[other],[unknown],[other] -2,20,110,9,[mask],[unknown],[other] -2,21,110,2,[mask],[unknown],[mask] -2,22,[other],2,[mask],[unknown],[other] -2,23,110,2,[mask],5,[mask] -2,24,[other],2,[other],7,[mask] -2,25,104,2,[other],8,[mask] -2,26,107,2,[other],1,[mask] -2,27,107,2,[other],1,[mask] -2,28,107,2,[other],8,[mask] -2,29,107,2,1,5,[mask] -2,30,107,2,1,5,[unknown] -2,31,129,2,1,5,[mask] -2,32,129,9,1,5,[other] -2,33,107,2,1,5,[mask] -2,34,107,2,1,5,[mask] -2,35,107,2,1,[unknown],1 -2,36,107,2,[mask],[unknown],1 -2,37,107,7,[mask],[unknown],1 +2,3,112,2,[mask],5,0 +2,4,129,7,1,5,1 +2,5,104,7,[mask],8,0 +2,6,129,7,1,5,1 +2,7,104,7,[mask],8,0 +2,8,112,7,1,5,1 +2,9,107,7,[mask],[unknown],1 +2,10,107,7,[mask],[unknown],1 +2,11,104,7,[mask],[unknown],1 +2,12,108,7,[mask],[unknown],1 +2,13,104,9,1,5,2 +2,14,108,7,[mask],[unknown],0 +2,15,104,9,1,5,2 +2,16,104,7,[mask],[unknown],2 +2,17,104,9,[mask],1,2 +2,18,112,9,[other],1,[mask] +2,19,104,9,[other],5,[mask] +2,20,112,9,8,8,[mask] +2,21,112,9,6,5,[mask] +2,22,112,9,6,8,[mask] +2,23,112,9,6,5,[mask] +2,24,104,9,6,8,[other] +2,25,112,0,8,8,[other] +2,26,112,0,[mask],8,0 +2,27,104,4,1,8,[mask] +2,28,112,0,1,8,[other] +2,29,112,0,[mask],8,0 +2,30,104,1,1,5,2 +2,31,112,0,1,8,0 +2,32,112,1,1,5,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index 2a4d06f3..f0a3eaa7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,104,[mask],[mask],[unknown],[mask] -3,9,104,0,[mask],8,[other] -3,10,104,[mask],[mask],6,[mask] -3,11,104,0,[mask],8,[mask] -3,12,104,0,[mask],8,[mask] -3,13,104,1,[mask],8,[mask] -3,14,[other],2,[mask],[unknown],[mask] -3,15,129,1,[other],6,[mask] -3,16,107,2,[other],1,[mask] -3,17,107,2,[other],6,[mask] -3,18,129,9,[other],6,[mask] -3,19,129,9,[other],5,[mask] -3,20,129,9,[other],5,[mask] -3,21,129,9,[other],5,[mask] -3,22,129,9,[other],5,[other] -3,23,110,9,[other],5,[mask] -3,24,107,2,[other],8,[other] -3,25,107,2,1,5,[other] -3,26,110,9,1,[unknown],[other] -3,27,[other],9,1,[unknown],[other] -3,28,[other],2,1,[unknown],[other] -3,29,[other],2,1,[unknown],[other] -3,30,107,2,1,[unknown],[unknown] -3,31,129,2,1,[unknown],[mask] -3,32,129,2,1,[unknown],2 -3,33,129,2,1,5,2 -3,34,129,2,1,5,2 -3,35,129,2,1,5,2 -3,36,129,2,1,5,2 -3,37,129,2,1,5,2 -4,8,104,9,1,[unknown],[mask] -4,9,[other],7,1,[unknown],[other] -4,10,104,9,1,[unknown],[other] -4,11,[other],9,1,[unknown],[other] -4,12,[other],9,1,[unknown],[other] -4,13,[other],9,1,[unknown],[other] -4,14,129,2,1,5,[unknown] -4,15,129,2,1,1,2 -4,16,129,2,1,1,2 -4,17,129,7,1,5,2 -4,18,129,2,1,1,2 -4,19,129,7,1,5,2 -4,20,129,7,1,1,2 -4,21,129,7,1,1,[mask] -4,22,129,7,1,5,[mask] -4,23,129,2,1,5,[mask] -4,24,112,2,1,5,[mask] -4,25,107,2,[mask],[unknown],[mask] -4,26,129,2,[mask],5,[mask] -4,27,129,9,1,5,[mask] -4,28,129,9,1,5,[mask] -4,29,129,9,1,5,[mask] -4,30,129,9,1,5,[mask] -4,31,129,9,1,5,[mask] -4,32,129,9,1,5,[mask] -4,33,129,9,1,5,[other] -4,34,112,9,1,5,[mask] -4,35,107,7,[mask],[unknown],[mask] -4,36,107,7,[mask],[unknown],[mask] -4,37,104,7,[mask],[unknown],[mask] +3,3,104,0,[mask],8,1 +3,4,104,0,[mask],8,0 +3,5,104,0,[mask],8,1 +3,6,104,0,[mask],8,0 +3,7,104,0,[mask],8,1 +3,8,104,0,[mask],6,0 +3,9,112,0,[mask],5,0 +3,10,112,1,1,5,2 +3,11,108,2,1,5,0 +3,12,129,9,1,5,2 +3,13,112,9,1,5,0 +3,14,129,9,1,5,0 +3,15,112,9,1,5,0 +3,16,129,0,1,5,1 +3,17,112,7,[mask],5,1 +3,18,119,7,[mask],[unknown],1 +3,19,104,7,[mask],5,0 +3,20,104,7,1,5,1 +3,21,104,7,[mask],8,0 +3,22,108,7,1,5,1 +3,23,104,7,[mask],8,0 +3,24,108,7,[mask],5,1 +3,25,104,9,[mask],8,2 +3,26,112,9,1,5,0 +3,27,112,9,1,5,2 +3,28,103,7,1,5,0 +3,29,112,9,1,5,0 +3,30,104,7,1,5,0 +3,31,112,0,1,8,0 +3,32,112,0,[mask],5,0 +4,3,108,9,1,5,1 +4,4,104,7,1,4,0 +4,5,108,0,1,4,0 +4,6,108,0,1,5,0 +4,7,112,7,1,5,0 +4,8,108,7,1,5,0 +4,9,129,0,1,5,2 +4,10,112,7,1,5,2 +4,11,112,7,[mask],5,0 +4,12,112,7,1,5,1 +4,13,107,7,[mask],[unknown],1 +4,14,107,7,[mask],[unknown],1 +4,15,107,7,[mask],[unknown],1 +4,16,107,7,[mask],[unknown],1 +4,17,104,7,[mask],[unknown],1 +4,18,104,7,[mask],[unknown],1 +4,19,104,7,[mask],[unknown],1 +4,20,118,7,[mask],[unknown],1 +4,21,104,9,[mask],[unknown],2 +4,22,104,9,[mask],1,2 +4,23,104,9,[mask],1,2 +4,24,104,9,[other],1,2 +4,25,104,9,[other],1,[mask] +4,26,104,9,[other],[unknown],[mask] +4,27,109,9,[other],[unknown],[mask] +4,28,104,9,6,5,[mask] +4,29,112,9,[other],1,[mask] +4,30,118,2,6,1,[mask] +4,31,110,1,[other],8,[other] +4,32,112,[other],6,[unknown],[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index 529df285..5a908cad 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,102,7,[mask],9,1 -5,9,107,[mask],[mask],[unknown],1 -5,10,107,[mask],[mask],[unknown],1 -5,11,107,[mask],[mask],[unknown],1 -5,12,104,[mask],[mask],[unknown],1 -5,13,104,[mask],[mask],[unknown],1 -5,14,104,[mask],[mask],[unknown],1 -5,15,104,[mask],[mask],3,1 -5,16,104,[mask],[mask],3,[other] -5,17,112,[unknown],[mask],3,[other] -5,18,111,[mask],[mask],3,2 -5,19,104,9,[mask],3,2 -5,20,104,5,[mask],3,2 -5,21,104,5,[mask],3,2 -5,22,104,5,[mask],3,2 -5,23,104,[unknown],[mask],3,2 -5,24,104,9,[mask],3,[unknown] -5,25,104,9,[mask],3,[mask] -5,26,112,[unknown],[mask],3,[mask] -5,27,112,[unknown],[mask],3,[mask] -5,28,112,[mask],[mask],3,[mask] -5,29,104,[mask],[mask],7,[mask] -5,30,107,9,[mask],3,[mask] -5,31,107,2,[mask],3,[mask] -5,32,107,2,[mask],6,[mask] -5,33,104,2,[mask],6,[mask] -5,34,104,9,[mask],6,[mask] -5,35,[other],9,[mask],6,[mask] -5,36,[other],2,[other],6,[mask] -5,37,107,9,[other],6,[mask] +5,3,102,7,9,9,1 +5,4,102,7,9,9,1 +5,5,105,7,9,9,1 +5,6,105,7,9,9,1 +5,7,105,7,9,9,1 +5,8,105,7,9,9,1 +5,9,111,[mask],9,9,1 +5,10,104,7,9,0,1 +5,11,103,7,9,8,0 +5,12,105,7,9,9,1 +5,13,111,7,9,9,0 +5,14,103,7,9,3,1 +5,15,111,[mask],9,0,0 +5,16,104,7,9,8,1 +5,17,104,0,9,8,0 +5,18,103,0,9,8,1 +5,19,104,7,9,8,0 +5,20,103,0,9,8,0 +5,21,104,7,9,5,1 +5,22,104,7,9,8,[other] +5,23,101,0,9,8,0 +5,24,105,7,9,[unknown],0 +5,25,103,7,9,8,1 +5,26,104,7,9,8,0 +5,27,101,0,8,8,0 +5,28,112,7,9,9,1 +5,29,104,7,9,8,[other] +5,30,129,0,1,8,0 +5,31,104,7,[mask],5,1 +5,32,104,7,1,8,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 819defac..58547214 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,129,9,1,5,[other] -6,9,129,9,1,5,[mask] -6,10,129,9,1,5,[other] -6,11,129,9,1,5,[other] -6,12,129,9,1,5,[other] -6,13,129,2,1,5,[mask] -6,14,129,2,1,8,[other] -6,15,112,7,1,[unknown],[unknown] -6,16,107,7,1,[unknown],2 -6,17,108,7,[mask],[unknown],2 -6,18,104,7,1,5,2 -6,19,108,7,1,[unknown],2 -6,20,104,7,1,5,2 -6,21,112,9,[mask],1,[mask] -6,22,129,9,[other],5,[mask] -6,23,104,9,[other],5,[mask] -6,24,112,9,8,1,[mask] -6,25,129,9,[other],5,[mask] -6,26,104,9,[other],1,[mask] -6,27,104,9,[other],1,[other] -6,28,112,7,[other],1,[mask] -6,29,[other],1,[other],8,[other] -6,30,[other],2,[mask],[unknown],[other] -6,31,[other],2,1,[unknown],[other] -6,32,110,2,1,5,[other] -6,33,[other],2,1,[unknown],[other] -6,34,[other],2,1,5,[mask] -6,35,129,2,1,8,[unknown] -6,36,129,2,1,5,[unknown] -6,37,129,2,1,5,2 -7,8,129,2,1,5,[mask] -7,9,129,2,1,5,[mask] -7,10,129,2,1,5,[mask] -7,11,129,2,1,5,[mask] -7,12,129,2,1,5,1 -7,13,107,2,1,5,[mask] -7,14,107,2,1,[unknown],1 -7,15,107,2,[mask],[unknown],1 -7,16,107,2,[mask],[unknown],1 -7,17,107,7,[mask],[unknown],1 -7,18,107,7,[mask],[unknown],1 -7,19,107,7,[mask],[unknown],1 -7,20,107,7,[mask],[unknown],1 -7,21,107,[mask],[mask],[unknown],1 -7,22,104,[mask],[mask],[unknown],2 -7,23,104,9,[mask],1,[other] -7,24,104,9,[mask],3,[mask] -7,25,104,[unknown],[mask],3,[other] -7,26,104,[mask],[mask],3,[mask] -7,27,104,9,[mask],[unknown],[other] -7,28,112,9,[mask],[unknown],[mask] -7,29,104,2,[mask],[unknown],[mask] -7,30,107,2,[other],[unknown],[mask] -7,31,107,2,3,1,[mask] -7,32,107,2,[other],[unknown],[mask] -7,33,107,2,[other],[unknown],[mask] -7,34,107,2,[other],[unknown],[mask] -7,35,107,2,[other],8,[mask] -7,36,[other],2,[other],8,[mask] -7,37,[other],9,[other],5,[other] +6,4,129,9,1,5,2 +6,5,129,9,1,5,0 +6,6,129,9,1,5,1 +6,7,112,7,1,5,0 +6,8,112,7,1,5,1 +6,9,112,7,[mask],[unknown],0 +6,10,129,7,1,5,1 +6,11,104,7,[mask],5,0 +6,12,112,7,[mask],5,1 +6,13,119,7,[mask],[unknown],1 +6,14,104,7,[mask],[unknown],1 +6,15,104,7,[mask],[unknown],1 +6,16,104,7,[mask],[unknown],1 +6,17,104,7,1,8,2 +6,18,108,7,[mask],1,2 +6,19,104,9,[other],1,2 +6,20,104,9,[mask],1,2 +6,21,118,9,[other],1,2 +6,22,112,9,[other],1,[mask] +6,23,118,9,[other],5,[mask] +6,24,112,9,[other],7,[mask] +6,25,104,2,6,8,[mask] +6,26,104,9,6,8,[other] +6,27,112,9,6,8,[mask] +6,28,104,1,6,8,[other] +6,29,112,0,[mask],8,[other] +6,30,112,1,[mask],8,0 +6,31,112,1,[mask],8,[mask] +6,32,104,1,[mask],8,[mask] +6,33,[other],9,[other],8,[mask] +7,3,129,9,1,5,1 +7,4,112,2,1,5,1 +7,5,112,1,1,5,1 +7,6,112,1,[mask],4,1 +7,7,107,1,[mask],5,1 +7,8,107,2,[mask],4,1 +7,9,104,7,[mask],5,1 +7,10,104,7,[mask],0,1 +7,11,108,7,[mask],0,1 +7,12,104,7,[mask],0,1 +7,13,104,7,9,0,1 +7,14,104,0,9,3,1 +7,15,104,0,[mask],3,1 +7,16,104,[mask],[mask],3,1 +7,17,104,5,9,3,0 +7,18,104,0,9,3,0 +7,19,103,0,9,3,0 +7,20,111,6,9,3,1 +7,21,103,6,9,3,0 +7,22,105,6,[mask],[unknown],1 +7,23,105,7,[mask],[unknown],2 +7,24,108,7,9,[unknown],0 +7,25,104,0,9,5,0 +7,26,104,0,9,5,1 +7,27,104,0,[mask],8,0 +7,28,104,0,[mask],5,1 +7,29,104,7,9,8,0 +7,30,112,0,1,5,0 +7,31,112,7,1,5,0 +7,32,112,7,1,5,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index a98e349c..d05f5e62 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,104,2,1,5,[mask] -8,9,129,9,1,5,[mask] -8,10,129,9,1,5,[mask] -8,11,129,9,1,5,[mask] -8,12,129,9,1,5,[mask] -8,13,129,9,1,5,[mask] -8,14,112,9,1,5,[other] -8,15,107,7,[mask],[unknown],[mask] -8,16,107,7,[mask],[unknown],[mask] -8,17,104,7,[mask],[unknown],[mask] -8,18,104,0,1,[unknown],2 -8,19,104,7,[mask],[unknown],[mask] -8,20,104,9,1,8,[mask] -8,21,112,9,1,[unknown],[mask] -8,22,104,9,1,1,[mask] -8,23,129,9,[other],1,[other] -8,24,112,2,[other],1,[mask] -8,25,129,2,[other],5,[mask] -8,26,129,2,[other],1,[mask] -8,27,129,2,[other],1,[other] -8,28,129,2,1,1,[mask] -8,29,129,9,1,5,[other] -8,30,129,2,1,5,[other] -8,31,129,2,1,5,[other] -8,32,129,2,1,5,[other] -8,33,129,2,1,5,[unknown] -8,34,129,2,1,5,2 -8,35,129,2,1,5,2 -8,36,129,2,1,5,2 -8,37,107,2,1,[unknown],2 +8,4,104,7,1,5,1 +8,5,104,7,1,5,1 +8,6,112,7,[mask],[unknown],1 +8,7,107,7,[mask],5,1 +8,8,104,7,[mask],[unknown],1 +8,9,108,7,[mask],[unknown],1 +8,10,104,9,[mask],5,1 +8,11,108,7,[mask],0,1 +8,12,108,7,9,0,2 +8,13,104,7,9,1,2 +8,14,104,7,9,1,1 +8,15,104,7,9,[unknown],0 +8,16,104,9,8,5,2 +8,17,104,9,8,8,[other] +8,18,112,9,[mask],3,[mask] +8,19,104,9,[mask],8,[mask] +8,20,112,9,[other],8,[mask] +8,21,112,1,[mask],5,0 +8,22,112,1,1,[unknown],[mask] +8,23,112,1,1,8,[mask] +8,24,112,2,1,5,[mask] +8,25,104,9,1,8,1 +8,26,104,0,[mask],8,1 +8,27,104,0,[mask],8,1 +8,28,104,0,[mask],8,1 +8,29,104,7,[mask],[unknown],1 +8,30,104,7,9,[unknown],1 +8,31,104,7,9,[unknown],1 +8,32,103,5,9,[unknown],0 +8,33,108,5,9,3,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index 9cd75ca4..e30646b9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,104,7,[mask],[unknown],[other] -9,9,104,7,[mask],[unknown],[other] -9,10,104,7,[mask],[unknown],[other] -9,11,104,0,[mask],[unknown],0 -9,12,104,7,[mask],[unknown],2 -9,13,104,9,[other],[unknown],2 -9,14,104,9,[other],[unknown],[mask] -9,15,[other],9,[other],[unknown],[mask] -9,16,107,2,[other],1,[mask] -9,17,107,2,[other],1,[mask] -9,18,107,2,[other],1,[mask] -9,19,107,2,[other],[unknown],[mask] -9,20,110,9,[other],[unknown],[other] -9,21,110,2,[other],[unknown],[other] -9,22,110,2,3,[unknown],[other] -9,23,110,1,1,[unknown],[other] -9,24,110,2,[mask],[unknown],[other] -9,25,110,2,[mask],7,[mask] -9,26,[other],2,[mask],[unknown],[mask] -9,27,[other],2,[mask],5,[mask] -9,28,129,2,[other],8,[mask] -9,29,129,2,1,5,[mask] -9,30,129,9,1,5,[mask] -9,31,129,9,1,5,[mask] -9,32,129,9,1,5,[unknown] -9,33,129,9,1,5,[mask] -9,34,129,9,1,5,2 -9,35,129,2,1,5,2 -9,36,112,2,1,5,2 -9,37,107,7,[mask],[unknown],[mask] +9,3,104,7,9,0,1 +9,4,104,7,9,8,1 +9,5,104,7,[mask],8,1 +9,6,104,7,9,[unknown],1 +9,7,104,7,9,8,0 +9,8,104,7,9,8,1 +9,9,104,7,9,[unknown],0 +9,10,108,7,9,[unknown],0 +9,11,103,6,1,[unknown],2 +9,12,108,5,1,[unknown],2 +9,13,108,9,1,[unknown],0 +9,14,129,9,1,5,2 +9,15,112,9,1,8,0 +9,16,112,0,1,5,2 +9,17,112,7,1,5,0 +9,18,112,0,1,5,1 +9,19,112,7,[mask],[unknown],0 +9,20,102,4,1,5,1 +9,21,112,7,[mask],[unknown],0 +9,22,119,7,[mask],5,1 +9,23,104,7,[mask],8,1 +9,24,104,7,[mask],[unknown],1 +9,25,104,7,[mask],[unknown],1 +9,26,104,7,[mask],8,1 +9,27,104,9,[mask],1,2 +9,28,104,7,9,1,1 +9,29,104,9,8,1,2 +9,30,118,9,[mask],[unknown],2 +9,31,112,9,[other],1,2 +9,32,104,5,[other],1,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index fd1bb4cf..aa9878ce 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,104,7,[mask],[unknown],1 -0,9,104,7,[mask],[unknown],0 -0,10,104,7,1,[unknown],0 -0,11,101,7,1,[unknown],0 -0,12,106,7,1,[unknown],[other] -0,13,112,9,1,[unknown],0 -0,14,129,9,1,5,[unknown] -0,15,112,2,1,1,[other] -0,16,112,7,1,[unknown],2 -0,17,129,2,1,[unknown],2 -0,18,129,7,1,5,2 -0,19,112,7,1,1,2 -0,20,129,7,1,[unknown],2 -0,21,129,7,1,1,[other] -0,22,112,7,1,5,[mask] -0,23,118,7,[mask],[unknown],[mask] -0,24,129,9,1,5,[other] -0,25,112,9,1,5,[mask] -0,26,[other],7,[mask],[unknown],[mask] -0,27,129,9,1,5,[other] -0,28,112,9,1,5,[other] -0,29,129,7,1,[unknown],[mask] -0,30,104,0,1,[unknown],[other] -0,31,112,7,1,[unknown],[other] -0,32,104,7,1,[unknown],2 -0,33,129,7,1,[unknown],[other] -0,34,112,9,1,5,[other] -0,35,112,7,1,[unknown],2 -0,36,108,7,1,[unknown],2 -0,37,129,7,1,5,2 +0,4,121,1,1,9,1 +0,5,105,0,[other],8,2 +0,6,113,1,[other],[mask],0 +0,7,105,8,[other],1,1 +0,8,113,1,[other],2,[unknown] +0,9,113,3,[other],1,1 +0,10,113,1,[other],8,1 +0,11,113,1,[other],[mask],1 +0,12,105,8,9,1,[other] +0,13,113,1,8,0,1 +0,14,105,0,[other],1,[other] +0,15,113,[other],8,9,1 +0,16,105,0,[other],1,1 +0,17,113,1,8,8,1 +0,18,113,1,[other],7,1 +0,19,105,8,[other],1,[other] +0,20,113,1,8,8,[unknown] +0,21,113,1,[other],[mask],[other] +0,22,113,[mask],[other],8,1 +0,23,113,1,[other],2,1 +0,24,113,[mask],[other],1,1 +0,25,113,1,[other],2,1 +0,26,113,1,[other],1,1 +0,27,113,1,[other],1,1 +0,28,105,1,[other],1,1 +0,29,108,1,8,0,1 +0,30,103,1,0,7,1 +0,31,103,1,[other],7,1 +0,32,108,5,9,0,1 +0,33,105,0,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index d23a5aeb..5e0f7cd5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,104,7,[mask],1,1 -1,9,104,7,[mask],[unknown],[mask] -1,10,[other],9,1,8,[mask] -1,11,[other],9,1,5,[other] -1,12,104,9,1,1,[other] -1,13,112,9,1,[unknown],[other] -1,14,112,7,1,[unknown],[other] -1,15,112,2,1,5,[other] -1,16,112,2,1,[unknown],[mask] -1,17,129,2,1,[unknown],[mask] -1,18,129,7,1,5,2 -1,19,129,2,1,1,2 -1,20,129,7,1,1,2 -1,21,129,7,1,1,2 -1,22,129,7,1,1,2 -1,23,129,7,1,1,2 -1,24,129,2,1,5,[mask] -1,25,129,2,1,5,[mask] -1,26,129,2,1,5,[mask] -1,27,129,2,1,5,[mask] -1,28,129,2,1,5,[mask] -1,29,112,2,1,5,[mask] -1,30,107,2,1,5,[mask] -1,31,107,2,1,5,1 -1,32,107,2,[mask],[unknown],1 -1,33,107,2,[mask],[unknown],1 -1,34,107,2,[mask],[unknown],1 -1,35,107,7,[mask],[unknown],1 -1,36,107,7,[mask],[unknown],1 -1,37,107,[mask],[mask],[unknown],1 +1,4,107,5,[other],[mask],[other] +1,5,121,3,[other],0,[other] +1,6,129,3,[other],8,[other] +1,7,121,[other],[other],8,[other] +1,8,[unknown],5,[other],[mask],[other] +1,9,121,6,3,4,1 +1,10,105,1,[other],8,[unknown] +1,11,121,1,7,[mask],[other] +1,12,105,0,7,1,[other] +1,13,105,[other],7,5,0 +1,14,105,1,1,1,1 +1,15,105,1,7,[other],[other] +1,16,105,0,7,0,1 +1,17,105,1,7,1,1 +1,18,113,1,7,1,1 +1,19,113,1,7,1,1 +1,20,113,1,[other],1,1 +1,21,113,1,1,1,1 +1,22,113,0,[other],1,1 +1,23,113,1,1,0,1 +1,24,108,1,[other],1,1 +1,25,108,0,[other],7,1 +1,26,108,5,[other],0,1 +1,27,113,5,[other],7,1 +1,28,105,8,[other],0,[other] +1,29,113,[other],8,2,[other] +1,30,113,[mask],[other],[unknown],1 +1,31,113,1,[other],2,1 +1,32,113,1,[other],8,1 +1,33,113,1,[other],[mask],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index cc5b8a64..fa4d361a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,112,2,[mask],5,[mask] -2,9,104,7,[mask],[unknown],[mask] -2,10,104,7,1,8,[mask] -2,11,112,7,1,[unknown],[other] -2,12,112,7,1,[unknown],[mask] -2,13,107,7,[mask],[unknown],[mask] -2,14,107,7,[mask],[unknown],[mask] -2,15,[other],7,[mask],[unknown],2 -2,16,129,9,[other],1,[other] -2,17,112,9,[other],1,[mask] -2,18,104,1,[other],5,[mask] -2,19,104,2,[other],[unknown],[other] -2,20,110,9,[mask],[unknown],[other] -2,21,110,2,[mask],[unknown],[mask] -2,22,[other],2,[mask],[unknown],[other] -2,23,110,2,[mask],5,[mask] -2,24,[other],2,[other],7,[mask] -2,25,104,2,[other],8,[mask] -2,26,107,2,[other],1,[mask] -2,27,107,2,[other],1,[mask] -2,28,107,2,[other],8,[mask] -2,29,107,2,1,5,[mask] -2,30,107,2,1,5,[unknown] -2,31,129,2,1,5,[mask] -2,32,129,9,1,5,[other] -2,33,107,2,1,5,[mask] -2,34,107,2,1,5,[mask] -2,35,107,2,1,[unknown],1 -2,36,107,2,[mask],[unknown],1 -2,37,107,7,[mask],[unknown],1 +2,3,128,0,7,[unknown],2 +2,4,113,8,[other],6,2 +2,5,109,1,[other],[mask],1 +2,6,128,1,[other],7,2 +2,7,105,8,[other],6,[other] +2,8,121,8,1,[mask],1 +2,9,114,1,[other],8,2 +2,10,113,1,[other],[mask],1 +2,11,104,1,[other],0,1 +2,12,113,1,7,0,1 +2,13,113,1,[other],1,1 +2,14,113,1,[other],1,1 +2,15,113,1,[other],1,1 +2,16,105,1,[other],1,1 +2,17,113,1,[other],0,1 +2,18,105,0,[other],1,1 +2,19,108,0,5,0,1 +2,20,113,0,[other],0,1 +2,21,108,0,9,2,1 +2,22,113,0,[other],0,1 +2,23,113,8,[other],2,1 +2,24,113,3,[other],8,1 +2,25,113,1,[other],8,1 +2,26,113,1,[other],8,1 +2,27,113,1,[other],0,1 +2,28,113,1,[other],7,1 +2,29,105,8,[other],0,1 +2,30,113,1,[other],2,1 +2,31,113,8,[other],1,1 +2,32,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 2a4d06f3..865dd214 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,104,[mask],[mask],[unknown],[mask] -3,9,104,0,[mask],8,[other] -3,10,104,[mask],[mask],6,[mask] -3,11,104,0,[mask],8,[mask] -3,12,104,0,[mask],8,[mask] -3,13,104,1,[mask],8,[mask] -3,14,[other],2,[mask],[unknown],[mask] -3,15,129,1,[other],6,[mask] -3,16,107,2,[other],1,[mask] -3,17,107,2,[other],6,[mask] -3,18,129,9,[other],6,[mask] -3,19,129,9,[other],5,[mask] -3,20,129,9,[other],5,[mask] -3,21,129,9,[other],5,[mask] -3,22,129,9,[other],5,[other] -3,23,110,9,[other],5,[mask] -3,24,107,2,[other],8,[other] -3,25,107,2,1,5,[other] -3,26,110,9,1,[unknown],[other] -3,27,[other],9,1,[unknown],[other] -3,28,[other],2,1,[unknown],[other] -3,29,[other],2,1,[unknown],[other] -3,30,107,2,1,[unknown],[unknown] -3,31,129,2,1,[unknown],[mask] -3,32,129,2,1,[unknown],2 -3,33,129,2,1,5,2 -3,34,129,2,1,5,2 -3,35,129,2,1,5,2 -3,36,129,2,1,5,2 -3,37,129,2,1,5,2 -4,8,104,9,1,[unknown],[mask] -4,9,[other],7,1,[unknown],[other] -4,10,104,9,1,[unknown],[other] -4,11,[other],9,1,[unknown],[other] -4,12,[other],9,1,[unknown],[other] -4,13,[other],9,1,[unknown],[other] -4,14,129,2,1,5,[unknown] -4,15,129,2,1,1,2 -4,16,129,2,1,1,2 -4,17,129,7,1,5,2 -4,18,129,2,1,1,2 -4,19,129,7,1,5,2 -4,20,129,7,1,1,2 -4,21,129,7,1,1,[mask] -4,22,129,7,1,5,[mask] -4,23,129,2,1,5,[mask] -4,24,112,2,1,5,[mask] -4,25,107,2,[mask],[unknown],[mask] -4,26,129,2,[mask],5,[mask] -4,27,129,9,1,5,[mask] -4,28,129,9,1,5,[mask] -4,29,129,9,1,5,[mask] -4,30,129,9,1,5,[mask] -4,31,129,9,1,5,[mask] -4,32,129,9,1,5,[mask] -4,33,129,9,1,5,[other] -4,34,112,9,1,5,[mask] -4,35,107,7,[mask],[unknown],[mask] -4,36,107,7,[mask],[unknown],[mask] -4,37,104,7,[mask],[unknown],[mask] +3,3,128,5,1,1,2 +3,4,105,2,9,5,[unknown] +3,5,128,1,1,[mask],1 +3,6,105,8,[other],1,2 +3,7,128,1,9,[mask],1 +3,8,128,0,9,1,1 +3,9,119,1,[other],[mask],2 +3,10,104,1,8,[mask],1 +3,11,104,1,9,0,[other] +3,12,113,3,[other],1,[other] +3,13,113,1,[other],[mask],[other] +3,14,113,3,[other],[unknown],[other] +3,15,113,3,[other],[mask],[other] +3,16,105,3,[other],8,[other] +3,17,105,1,7,8,[other] +3,18,113,1,7,1,[other] +3,19,113,1,[other],1,1 +3,20,113,1,[other],1,[other] +3,21,113,1,[other],[mask],1 +3,22,120,1,[other],1,1 +3,23,113,1,7,7,1 +3,24,105,1,7,1,1 +3,25,113,1,7,1,1 +3,26,113,0,1,1,1 +3,27,105,0,[other],1,[other] +3,28,108,0,8,0,1 +3,29,113,0,[other],7,1 +3,30,108,8,[other],2,1 +3,31,113,[mask],[other],7,1 +3,32,124,[mask],[other],2,1 +4,3,102,0,[other],[unknown],[unknown] +4,4,102,8,[other],6,[unknown] +4,5,105,8,[other],6,[mask] +4,6,127,1,[other],2,1 +4,7,127,[mask],7,[unknown],1 +4,8,102,[mask],1,2,1 +4,9,127,[mask],[other],8,[unknown] +4,10,106,[mask],1,0,1 +4,11,113,1,[other],1,1 +4,12,106,8,1,[mask],1 +4,13,105,1,[other],[mask],1 +4,14,106,8,9,0,1 +4,15,113,1,[other],0,1 +4,16,113,1,[other],2,1 +4,17,113,8,[other],1,1 +4,18,113,1,[other],2,1 +4,19,113,3,[other],1,2 +4,20,113,1,[other],[mask],1 +4,21,105,8,[other],1,1 +4,22,113,1,8,[mask],1 +4,23,105,3,[other],1,1 +4,24,113,1,8,0,1 +4,25,105,1,[other],1,1 +4,26,113,1,9,0,1 +4,27,113,1,[other],1,1 +4,28,113,1,[other],1,2 +4,29,113,1,[other],1,[other] +4,30,113,0,[other],1,[other] +4,31,113,0,[other],[mask],[other] +4,32,121,0,[other],2,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index 529df285..67ddc700 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,102,7,[mask],9,1 -5,9,107,[mask],[mask],[unknown],1 -5,10,107,[mask],[mask],[unknown],1 -5,11,107,[mask],[mask],[unknown],1 -5,12,104,[mask],[mask],[unknown],1 -5,13,104,[mask],[mask],[unknown],1 -5,14,104,[mask],[mask],[unknown],1 -5,15,104,[mask],[mask],3,1 -5,16,104,[mask],[mask],3,[other] -5,17,112,[unknown],[mask],3,[other] -5,18,111,[mask],[mask],3,2 -5,19,104,9,[mask],3,2 -5,20,104,5,[mask],3,2 -5,21,104,5,[mask],3,2 -5,22,104,5,[mask],3,2 -5,23,104,[unknown],[mask],3,2 -5,24,104,9,[mask],3,[unknown] -5,25,104,9,[mask],3,[mask] -5,26,112,[unknown],[mask],3,[mask] -5,27,112,[unknown],[mask],3,[mask] -5,28,112,[mask],[mask],3,[mask] -5,29,104,[mask],[mask],7,[mask] -5,30,107,9,[mask],3,[mask] -5,31,107,2,[mask],3,[mask] -5,32,107,2,[mask],6,[mask] -5,33,104,2,[mask],6,[mask] -5,34,104,9,[mask],6,[mask] -5,35,[other],9,[mask],6,[mask] -5,36,[other],2,[other],6,[mask] -5,37,107,9,[other],6,[mask] +5,3,128,3,[other],4,1 +5,4,128,1,[other],6,1 +5,5,105,1,[other],7,1 +5,6,105,1,[other],0,1 +5,7,105,1,[other],0,1 +5,8,105,1,[other],0,1 +5,9,105,1,7,2,[other] +5,10,113,[mask],7,0,1 +5,11,113,1,[other],2,1 +5,12,113,[mask],[other],1,1 +5,13,113,1,[other],2,1 +5,14,113,[mask],[other],1,1 +5,15,113,1,[other],2,1 +5,16,113,1,[other],1,1 +5,17,113,1,1,[mask],1 +5,18,108,1,9,1,1 +5,19,103,1,0,7,1 +5,20,108,1,[other],7,1 +5,21,108,8,[other],7,1 +5,22,108,5,[other],2,1 +5,23,113,[mask],[other],7,1 +5,24,105,8,[other],2,[other] +5,25,113,8,[other],8,1 +5,26,113,1,[other],[mask],1 +5,27,113,8,[other],2,1 +5,28,113,1,[other],8,1 +5,29,113,1,[other],[mask],1 +5,30,113,8,[other],2,1 +5,31,113,1,[other],2,1 +5,32,113,1,[other],7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index 819defac..62b206ad 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,129,9,1,5,[other] -6,9,129,9,1,5,[mask] -6,10,129,9,1,5,[other] -6,11,129,9,1,5,[other] -6,12,129,9,1,5,[other] -6,13,129,2,1,5,[mask] -6,14,129,2,1,8,[other] -6,15,112,7,1,[unknown],[unknown] -6,16,107,7,1,[unknown],2 -6,17,108,7,[mask],[unknown],2 -6,18,104,7,1,5,2 -6,19,108,7,1,[unknown],2 -6,20,104,7,1,5,2 -6,21,112,9,[mask],1,[mask] -6,22,129,9,[other],5,[mask] -6,23,104,9,[other],5,[mask] -6,24,112,9,8,1,[mask] -6,25,129,9,[other],5,[mask] -6,26,104,9,[other],1,[mask] -6,27,104,9,[other],1,[other] -6,28,112,7,[other],1,[mask] -6,29,[other],1,[other],8,[other] -6,30,[other],2,[mask],[unknown],[other] -6,31,[other],2,1,[unknown],[other] -6,32,110,2,1,5,[other] -6,33,[other],2,1,[unknown],[other] -6,34,[other],2,1,5,[mask] -6,35,129,2,1,8,[unknown] -6,36,129,2,1,5,[unknown] -6,37,129,2,1,5,2 -7,8,129,2,1,5,[mask] -7,9,129,2,1,5,[mask] -7,10,129,2,1,5,[mask] -7,11,129,2,1,5,[mask] -7,12,129,2,1,5,1 -7,13,107,2,1,5,[mask] -7,14,107,2,1,[unknown],1 -7,15,107,2,[mask],[unknown],1 -7,16,107,2,[mask],[unknown],1 -7,17,107,7,[mask],[unknown],1 -7,18,107,7,[mask],[unknown],1 -7,19,107,7,[mask],[unknown],1 -7,20,107,7,[mask],[unknown],1 -7,21,107,[mask],[mask],[unknown],1 -7,22,104,[mask],[mask],[unknown],2 -7,23,104,9,[mask],1,[other] -7,24,104,9,[mask],3,[mask] -7,25,104,[unknown],[mask],3,[other] -7,26,104,[mask],[mask],3,[mask] -7,27,104,9,[mask],[unknown],[other] -7,28,112,9,[mask],[unknown],[mask] -7,29,104,2,[mask],[unknown],[mask] -7,30,107,2,[other],[unknown],[mask] -7,31,107,2,3,1,[mask] -7,32,107,2,[other],[unknown],[mask] -7,33,107,2,[other],[unknown],[mask] -7,34,107,2,[other],[unknown],[mask] -7,35,107,2,[other],8,[mask] -7,36,[other],2,[other],8,[mask] -7,37,[other],9,[other],5,[other] +6,4,122,2,[other],8,[unknown] +6,5,113,[mask],[other],8,[other] +6,6,113,1,[other],[unknown],1 +6,7,113,[mask],[other],2,1 +6,8,113,1,[other],2,1 +6,9,113,3,[other],1,1 +6,10,121,1,[other],[mask],1 +6,11,108,0,7,1,1 +6,12,113,1,1,[mask],1 +6,13,108,8,9,1,[other] +6,14,113,0,1,[mask],1 +6,15,108,8,[other],1,[other] +6,16,113,0,[other],7,[other] +6,17,105,8,[other],2,[other] +6,18,113,[mask],[other],8,[other] +6,19,113,1,[other],[mask],1 +6,20,113,1,[other],1,1 +6,21,113,1,[other],[mask],1 +6,22,113,1,[other],[mask],1 +6,23,124,1,[other],2,1 +6,24,113,1,[other],7,[unknown] +6,25,105,8,[other],1,1 +6,26,113,1,[other],2,1 +6,27,113,8,[other],1,1 +6,28,113,1,[other],2,1 +6,29,113,8,[other],1,1 +6,30,113,1,[other],2,1 +6,31,113,[mask],9,1,1 +6,32,113,1,[other],1,1 +6,33,113,1,9,1,1 +7,3,105,0,[other],8,[mask] +7,4,105,0,[other],1,[other] +7,5,105,0,9,6,[unknown] +7,6,105,0,[other],1,[unknown] +7,7,113,[other],[other],1,[other] +7,8,113,0,[other],1,1 +7,9,113,0,[other],1,2 +7,10,113,1,[other],[mask],1 +7,11,113,3,[other],1,1 +7,12,113,1,[other],[mask],1 +7,13,108,3,[other],1,1 +7,14,113,1,[other],[mask],1 +7,15,124,3,9,2,1 +7,16,113,0,8,0,1 +7,17,105,1,[other],[mask],[other] +7,18,108,0,7,0,[other] +7,19,113,5,[other],7,[other] +7,20,105,8,[other],[mask],[other] +7,21,113,[mask],[other],8,[other] +7,22,113,1,[other],[mask],1 +7,23,113,1,[other],8,1 +7,24,113,1,[other],8,1 +7,25,113,1,[other],8,1 +7,26,113,1,[other],[mask],1 +7,27,105,8,[other],2,1 +7,28,113,1,8,2,1 +7,29,113,1,[other],1,1 +7,30,113,8,[other],1,1 +7,31,113,1,[other],2,1 +7,32,113,3,[other],1,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index a98e349c..f7a88c52 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,8,104,2,1,5,[mask] -8,9,129,9,1,5,[mask] -8,10,129,9,1,5,[mask] -8,11,129,9,1,5,[mask] -8,12,129,9,1,5,[mask] -8,13,129,9,1,5,[mask] -8,14,112,9,1,5,[other] -8,15,107,7,[mask],[unknown],[mask] -8,16,107,7,[mask],[unknown],[mask] -8,17,104,7,[mask],[unknown],[mask] -8,18,104,0,1,[unknown],2 -8,19,104,7,[mask],[unknown],[mask] -8,20,104,9,1,8,[mask] -8,21,112,9,1,[unknown],[mask] -8,22,104,9,1,1,[mask] -8,23,129,9,[other],1,[other] -8,24,112,2,[other],1,[mask] -8,25,129,2,[other],5,[mask] -8,26,129,2,[other],1,[mask] -8,27,129,2,[other],1,[other] -8,28,129,2,1,1,[mask] -8,29,129,9,1,5,[other] -8,30,129,2,1,5,[other] -8,31,129,2,1,5,[other] -8,32,129,2,1,5,[other] -8,33,129,2,1,5,[unknown] -8,34,129,2,1,5,2 -8,35,129,2,1,5,2 -8,36,129,2,1,5,2 -8,37,107,2,1,[unknown],2 +8,4,101,1,[other],8,2 +8,5,104,1,[other],[unknown],2 +8,6,104,3,[other],[other],[other] +8,7,103,5,[other],0,1 +8,8,128,1,[other],0,[other] +8,9,105,3,[other],6,[other] +8,10,128,1,7,[mask],[other] +8,11,120,[mask],7,[unknown],[other] +8,12,113,1,[other],[mask],1 +8,13,105,1,[other],2,[other] +8,14,113,1,7,2,1 +8,15,113,1,[other],1,1 +8,16,113,1,[other],[mask],1 +8,17,113,1,[other],2,1 +8,18,113,1,[other],1,1 +8,19,113,1,[other],1,1 +8,20,105,0,[other],1,1 +8,21,105,1,8,9,1 +8,22,103,0,9,1,1 +8,23,113,0,8,0,1 +8,24,113,0,[other],1,1 +8,25,113,0,[other],1,1 +8,26,113,0,[other],1,1 +8,27,113,0,[other],8,1 +8,28,113,1,[other],8,1 +8,29,113,1,[other],8,1 +8,30,113,1,[other],0,1 +8,31,113,1,[other],0,1 +8,32,108,1,[other],1,1 +8,33,113,1,[other],7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index 9cd75ca4..7f5bf564 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,104,7,[mask],[unknown],[other] -9,9,104,7,[mask],[unknown],[other] -9,10,104,7,[mask],[unknown],[other] -9,11,104,0,[mask],[unknown],0 -9,12,104,7,[mask],[unknown],2 -9,13,104,9,[other],[unknown],2 -9,14,104,9,[other],[unknown],[mask] -9,15,[other],9,[other],[unknown],[mask] -9,16,107,2,[other],1,[mask] -9,17,107,2,[other],1,[mask] -9,18,107,2,[other],1,[mask] -9,19,107,2,[other],[unknown],[mask] -9,20,110,9,[other],[unknown],[other] -9,21,110,2,[other],[unknown],[other] -9,22,110,2,3,[unknown],[other] -9,23,110,1,1,[unknown],[other] -9,24,110,2,[mask],[unknown],[other] -9,25,110,2,[mask],7,[mask] -9,26,[other],2,[mask],[unknown],[mask] -9,27,[other],2,[mask],5,[mask] -9,28,129,2,[other],8,[mask] -9,29,129,2,1,5,[mask] -9,30,129,9,1,5,[mask] -9,31,129,9,1,5,[mask] -9,32,129,9,1,5,[unknown] -9,33,129,9,1,5,[mask] -9,34,129,9,1,5,2 -9,35,129,2,1,5,2 -9,36,112,2,1,5,2 -9,37,107,7,[mask],[unknown],[mask] +9,3,108,5,[other],8,2 +9,4,122,5,[other],7,1 +9,5,105,5,[other],7,[other] +9,6,122,5,7,7,[other] +9,7,122,5,[other],7,[other] +9,8,122,5,[other],7,1 +9,9,122,1,[other],2,1 +9,10,113,[mask],7,8,1 +9,11,113,1,[other],2,1 +9,12,113,[mask],7,2,1 +9,13,113,1,[other],2,1 +9,14,113,[mask],[other],2,1 +9,15,113,[mask],1,2,1 +9,16,113,1,[other],7,1 +9,17,108,8,1,7,1 +9,18,108,1,[other],7,1 +9,19,108,1,[other],7,1 +9,20,108,1,[other],7,1 +9,21,108,8,[other],7,1 +9,22,122,1,[other],2,1 +9,23,113,1,[other],2,1 +9,24,113,8,[other],8,1 +9,25,113,1,[other],8,1 +9,26,113,1,[other],0,1 +9,27,113,8,[other],2,1 +9,28,113,1,[other],2,1 +9,29,113,8,[other],1,1 +9,30,113,1,1,2,1 +9,31,113,[mask],[other],1,1 +9,32,113,1,1,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 8cab47cb..8c8e70ba 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,16 +1,20 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,8,102,3,9,5,1 +0,4,102,3,9,5,1 +0,5,102,4,3,0,1 +0,6,102,6,9,2,1 +0,7,102,4,3,0,1 +0,8,112,6,9,2,1 0,9,102,4,3,0,1 -0,10,102,6,9,2,1 +0,10,112,6,9,0,0 0,11,102,4,3,0,1 -0,12,112,6,9,2,1 -0,13,102,4,3,0,1 -0,14,112,6,9,0,0 -0,15,102,4,3,0,1 -0,16,112,6,9,0,0 -0,17,102,4,3,0,2 -0,18,112,6,3,0,0 -0,19,102,4,9,0,0 +0,12,112,6,9,0,0 +0,13,102,4,3,0,2 +0,14,112,6,3,0,0 +0,15,102,4,9,0,0 +0,16,112,4,3,0,0 +0,17,112,4,3,0,0 +0,18,112,4,3,0,0 +0,19,112,4,3,0,0 0,20,112,4,3,0,0 0,21,112,4,3,0,0 0,22,112,4,3,0,0 @@ -25,7 +29,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 0,31,112,4,3,0,0 0,32,112,4,3,0,0 0,33,112,4,3,0,0 -0,34,112,4,3,0,0 -0,35,112,4,3,0,0 -0,36,112,4,3,0,0 -0,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index 5429f965..60c86728 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,19 +1,23 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,8,102,4,0,5,0 -1,9,102,6,0,2,1 -1,10,111,4,2,2,1 -1,11,112,4,9,5,1 -1,12,112,4,9,8,1 -1,13,112,4,9,0,0 -1,14,112,7,9,0,1 +1,4,102,4,0,5,0 +1,5,102,6,0,2,1 +1,6,111,4,2,2,1 +1,7,112,4,9,5,1 +1,8,112,4,9,8,1 +1,9,112,4,9,0,0 +1,10,112,7,9,0,1 +1,11,112,4,3,0,0 +1,12,112,4,9,0,0 +1,13,112,4,9,0,1 +1,14,112,4,9,0,0 1,15,112,4,3,0,0 1,16,112,4,9,0,0 -1,17,112,4,9,0,1 +1,17,112,4,3,0,0 1,18,112,4,9,0,0 1,19,112,4,3,0,0 -1,20,112,4,9,0,0 +1,20,112,4,3,0,0 1,21,112,4,3,0,0 -1,22,112,4,9,0,0 +1,22,112,4,3,0,0 1,23,112,4,3,0,0 1,24,112,4,3,0,0 1,25,112,4,3,0,0 @@ -25,7 +29,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 1,31,112,4,3,0,0 1,32,112,4,3,0,0 1,33,112,4,3,0,0 -1,34,112,4,3,0,0 -1,35,112,4,3,0,0 -1,36,112,4,3,0,0 -1,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index d61975e1..9c10138e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,12 +1,17 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,8,112,4,0,5,1 +2,3,112,4,0,5,1 +2,4,112,4,3,0,0 +2,5,112,4,9,0,1 +2,6,112,4,9,0,0 +2,7,112,4,3,0,0 +2,8,112,4,9,0,0 2,9,112,4,3,0,0 -2,10,112,4,9,0,1 -2,11,112,4,9,0,0 +2,10,112,4,9,0,0 +2,11,112,4,3,0,0 2,12,112,4,3,0,0 -2,13,112,4,9,0,0 +2,13,112,4,3,0,0 2,14,112,4,3,0,0 -2,15,112,4,9,0,0 +2,15,112,4,3,0,0 2,16,112,4,3,0,0 2,17,112,4,3,0,0 2,18,112,4,3,0,0 @@ -24,8 +29,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 2,30,112,4,3,0,0 2,31,112,4,3,0,0 2,32,112,4,3,0,0 -2,33,112,4,3,0,0 -2,34,112,4,3,0,0 -2,35,112,4,3,0,0 -2,36,112,4,3,0,0 -2,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index dae0b6c2..8295c2ce 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,15 +1,20 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,8,112,3,3,5,0 -3,9,102,4,3,5,0 -3,10,112,3,3,0,0 -3,11,112,4,3,5,0 +3,3,112,3,3,5,0 +3,4,102,4,3,5,0 +3,5,112,3,3,0,0 +3,6,112,4,3,5,0 +3,7,112,4,3,0,0 +3,8,112,4,3,0,0 +3,9,112,4,9,0,0 +3,10,112,4,3,0,0 +3,11,112,4,9,0,0 3,12,112,4,3,0,0 -3,13,112,4,3,0,0 -3,14,112,4,9,0,0 +3,13,112,4,9,0,0 +3,14,112,4,3,0,0 3,15,112,4,3,0,0 -3,16,112,4,9,0,0 +3,16,112,4,3,0,0 3,17,112,4,3,0,0 -3,18,112,4,9,0,0 +3,18,112,4,3,0,0 3,19,112,4,3,0,0 3,20,112,4,3,0,0 3,21,112,4,3,0,0 @@ -24,38 +29,33 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 3,30,112,4,3,0,0 3,31,112,4,3,0,0 3,32,112,4,3,0,0 -3,33,112,4,3,0,0 -3,34,112,4,3,0,0 -3,35,112,4,3,0,0 -3,36,112,4,3,0,0 -3,37,112,4,3,0,0 -4,8,113,4,9,5,1 -4,9,112,4,9,8,1 -4,10,118,4,9,8,1 -4,11,102,4,9,0,1 +4,3,113,4,9,5,1 +4,4,112,4,9,8,1 +4,5,118,4,9,8,1 +4,6,102,4,9,0,1 +4,7,112,4,9,0,1 +4,8,112,4,9,0,1 +4,9,112,4,9,0,1 +4,10,112,4,9,0,1 +4,11,112,4,3,0,0 4,12,112,4,9,0,1 -4,13,112,4,9,0,1 -4,14,112,4,9,0,1 -4,15,112,4,9,0,1 +4,13,112,4,3,0,0 +4,14,112,4,3,0,1 +4,15,112,4,9,0,0 4,16,112,4,3,0,0 -4,17,112,4,9,0,1 +4,17,112,4,9,0,0 4,18,112,4,3,0,0 -4,19,112,4,3,0,1 -4,20,112,4,9,0,0 +4,19,112,4,9,0,0 +4,20,112,4,3,0,0 4,21,112,4,3,0,0 4,22,112,4,9,0,0 4,23,112,4,3,0,0 -4,24,112,4,9,0,0 +4,24,112,4,3,0,0 4,25,112,4,3,0,0 4,26,112,4,3,0,0 -4,27,112,4,9,0,0 +4,27,112,4,3,0,0 4,28,112,4,3,0,0 4,29,112,4,3,0,0 4,30,112,4,3,0,0 4,31,112,4,3,0,0 4,32,112,4,3,0,0 -4,33,112,4,3,0,0 -4,34,112,4,3,0,0 -4,35,112,4,3,0,0 -4,36,112,4,3,0,0 -4,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index 83cec41e..cdb9d0fa 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,8,108,4,9,8,1 -5,9,104,4,9,8,1 -5,10,119,4,9,8,1 -5,11,104,4,9,8,1 -5,12,119,4,9,8,1 -5,13,104,4,9,8,0 -5,14,102,4,9,5,1 -5,15,119,4,3,0,0 +5,3,108,4,9,8,1 +5,4,104,4,9,8,1 +5,5,119,4,9,8,1 +5,6,104,4,9,8,1 +5,7,119,4,9,8,1 +5,8,104,4,9,8,0 +5,9,102,4,9,5,1 +5,10,119,4,3,0,0 +5,11,112,4,3,6,0 +5,12,112,4,3,5,0 +5,13,112,4,3,5,0 +5,14,112,4,3,0,0 +5,15,112,4,3,0,0 5,16,112,4,3,6,0 -5,17,112,4,3,5,0 -5,18,112,4,3,5,0 -5,19,112,4,3,0,0 +5,17,112,4,3,0,0 +5,18,112,4,9,0,0 +5,19,112,4,3,6,0 5,20,112,4,3,0,0 -5,21,112,4,3,6,0 +5,21,112,4,9,0,0 5,22,112,4,3,0,0 -5,23,112,4,9,0,0 +5,23,112,4,3,0,0 5,24,112,4,3,6,0 5,25,112,4,3,0,0 -5,26,112,4,9,0,0 -5,27,112,4,3,0,0 +5,26,112,4,3,0,0 +5,27,112,4,3,6,0 5,28,112,4,3,0,0 -5,29,112,4,3,6,0 +5,29,112,4,3,0,0 5,30,112,4,3,0,0 -5,31,112,4,3,0,0 -5,32,112,4,3,6,0 -5,33,112,4,3,0,0 -5,34,112,4,3,0,0 -5,35,112,4,3,0,0 -5,36,112,4,3,6,0 -5,37,112,4,3,0,0 +5,31,112,4,3,6,0 +5,32,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index 2ce84b09..181f8b8a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,19 +1,23 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,8,102,4,9,5,1 -6,9,112,4,3,0,1 -6,10,112,4,9,5,1 -6,11,112,4,3,0,1 -6,12,112,4,9,0,1 +6,4,102,4,9,5,1 +6,5,112,4,3,0,1 +6,6,112,4,9,5,1 +6,7,112,4,3,0,1 +6,8,112,4,9,0,1 +6,9,112,4,3,0,0 +6,10,112,4,9,0,1 +6,11,112,4,3,0,0 +6,12,112,4,9,0,0 6,13,112,4,3,0,0 -6,14,112,4,9,0,1 +6,14,112,4,9,0,0 6,15,112,4,3,0,0 6,16,112,4,9,0,0 6,17,112,4,3,0,0 6,18,112,4,9,0,0 6,19,112,4,3,0,0 -6,20,112,4,9,0,0 +6,20,112,4,3,0,0 6,21,112,4,3,0,0 -6,22,112,4,9,0,0 +6,22,112,4,3,0,0 6,23,112,4,3,0,0 6,24,112,4,3,0,0 6,25,112,4,3,0,0 @@ -25,25 +29,26 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,31,112,4,3,0,0 6,32,112,4,3,0,0 6,33,112,4,3,0,0 -6,34,112,4,3,0,0 -6,35,112,4,3,0,0 -6,36,112,4,3,0,0 -6,37,112,4,3,0,0 -7,8,102,4,0,5,1 -7,9,112,4,0,8,1 -7,10,118,4,9,8,1 -7,11,112,4,9,0,1 +7,3,102,4,0,5,1 +7,4,112,4,0,8,1 +7,5,118,4,9,8,1 +7,6,112,4,9,0,1 +7,7,112,4,9,0,1 +7,8,112,4,9,0,1 +7,9,112,4,9,0,1 +7,10,112,4,9,0,0 +7,11,112,4,3,0,0 7,12,112,4,9,0,1 -7,13,112,4,9,0,1 -7,14,112,4,9,0,1 +7,13,112,4,9,0,0 +7,14,112,4,3,0,0 7,15,112,4,9,0,0 7,16,112,4,3,0,0 -7,17,112,4,9,0,1 -7,18,112,4,9,0,0 +7,17,112,4,9,0,0 +7,18,112,4,3,0,0 7,19,112,4,3,0,0 -7,20,112,4,9,0,0 +7,20,112,4,3,0,0 7,21,112,4,3,0,0 -7,22,112,4,9,0,0 +7,22,112,4,3,0,0 7,23,112,4,3,0,0 7,24,112,4,3,0,0 7,25,112,4,3,0,0 @@ -54,8 +59,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 7,30,112,4,3,0,0 7,31,112,4,3,0,0 7,32,112,4,3,0,0 -7,33,112,4,3,0,0 -7,34,112,4,3,0,0 -7,35,112,4,3,0,0 -7,36,112,4,3,0,0 -7,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index c373d0f8..a4fd8639 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,18 +1,22 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,112,4,9,5,0 +8,5,112,4,0,5,0 +8,6,112,7,8,5,0 +8,7,112,4,9,5,0 8,8,112,4,9,5,0 -8,9,112,4,0,5,0 -8,10,112,7,8,5,0 -8,11,112,4,9,5,0 -8,12,112,4,9,5,0 -8,13,112,4,9,5,1 -8,14,112,4,9,0,0 -8,15,112,4,9,0,0 +8,9,112,4,9,5,1 +8,10,112,4,9,0,0 +8,11,112,4,9,0,0 +8,12,112,4,3,0,0 +8,13,112,4,9,0,0 +8,14,112,4,3,0,0 +8,15,112,4,3,0,0 8,16,112,4,3,0,0 8,17,112,4,9,0,0 8,18,112,4,3,0,0 8,19,112,4,3,0,0 8,20,112,4,3,0,0 -8,21,112,4,9,0,0 +8,21,112,4,3,0,0 8,22,112,4,3,0,0 8,23,112,4,3,0,0 8,24,112,4,3,0,0 @@ -25,7 +29,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 8,31,112,4,3,0,0 8,32,112,4,3,0,0 8,33,112,4,3,0,0 -8,34,112,4,3,0,0 -8,35,112,4,3,0,0 -8,36,112,4,3,0,0 -8,37,112,4,3,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index 3613e328..42cdbf62 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,18 +1,23 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,8,119,4,9,8,1 -9,9,102,4,9,8,1 -9,10,102,4,9,8,1 -9,11,102,4,9,0,1 -9,12,102,4,9,0,1 -9,13,102,6,9,0,1 -9,14,112,4,9,0,1 -9,15,112,4,9,0,0 -9,16,112,4,3,0,0 +9,3,119,4,9,8,1 +9,4,102,4,9,8,1 +9,5,102,4,9,8,1 +9,6,102,4,9,0,1 +9,7,102,4,9,0,1 +9,8,102,6,9,0,1 +9,9,112,4,9,0,1 +9,10,112,4,9,0,0 +9,11,112,4,3,0,0 +9,12,112,4,3,0,0 +9,13,112,4,3,0,0 +9,14,112,4,3,0,0 +9,15,112,4,3,0,0 +9,16,112,4,9,0,0 9,17,112,4,3,0,0 9,18,112,4,3,0,0 9,19,112,4,3,0,0 9,20,112,4,3,0,0 -9,21,112,4,9,0,0 +9,21,112,4,3,0,0 9,22,112,4,3,0,0 9,23,112,4,3,0,0 9,24,112,4,3,0,0 @@ -24,8 +29,3 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 9,30,112,4,3,0,0 9,31,112,4,3,0,0 9,32,112,4,3,0,0 -9,33,112,4,3,0,0 -9,34,112,4,3,0,0 -9,35,112,4,3,0,0 -9,36,112,4,3,0,0 -9,37,112,4,3,0,0 From e34e398b7e592418179601bae7d6f3895701c303 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 15:38:56 +0200 Subject: [PATCH 22/81] Add bert integration tests --- src/sequifier/config/infer_config.py | 3 +- tests/configs/hyperparameter-search-bert.yaml | 76 +++++++++++++++ ...-test-categorical-bert-autoregression.yaml | 26 ++++++ ...infer-test-categorical-bert-embedding.yaml | 25 +++++ .../configs/infer-test-categorical-bert.yaml | 25 +++++ .../configs/train-test-categorical-bert.yaml | 68 ++++++++++++++ tests/configs/train-test-real-bert.yaml | 68 ++++++++++++++ tests/integration-test-log.txt | 7 ++ tests/integration/conftest.py | 92 +++++++++++++++++++ .../integration/test_hyperparameter_search.py | 11 +++ tests/integration/test_inference.py | 77 ++++++++++++++++ tests/integration/test_training.py | 12 +++ 12 files changed, 489 insertions(+), 1 deletion(-) create mode 100644 tests/configs/hyperparameter-search-bert.yaml create mode 100644 tests/configs/infer-test-categorical-bert-autoregression.yaml create mode 100644 tests/configs/infer-test-categorical-bert-embedding.yaml create mode 100644 tests/configs/infer-test-categorical-bert.yaml create mode 100644 tests/configs/train-test-categorical-bert.yaml create mode 100644 tests/configs/train-test-real-bert.yaml diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index d67b04c6..0c1e3915 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -222,7 +222,8 @@ def validate_autoregression(cls, v: bool, info: ValidationInfo): ) if ( - info.data.get("training_objective") is not None + v + and info.data.get("training_objective") is not None and info.data.get("training_objective") == "bert" ): raise ValueError( diff --git a/tests/configs/hyperparameter-search-bert.yaml b/tests/configs/hyperparameter-search-bert.yaml new file mode 100644 index 00000000..84b49cf3 --- /dev/null +++ b/tests/configs/hyperparameter-search-bert.yaml @@ -0,0 +1,76 @@ +project_root: tests/project_folder +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +hp_search_name: test-hp-search-bert +model_config_write_path: configs + +read_format: pt +target_columns: [itemId] +target_column_types: + itemId: categorical +seq_length: [8] +inference_batch_size: 10 + +search_strategy: sample +n_samples: 1 +prune_trials: false + +input_columns: + - [itemId] +export_embedding_model: false +export_generative_model: true +export_onnx: false +export_pt: true +export_with_dropout: false + +model_hyperparameter_sampling: + initial_embedding_dim: [16] + joint_embedding_dim: [null] + feature_embedding_dims: null + dim_model: [16] + n_head: [2] + dim_feedforward: [8] + num_layers: [1] + activation_fn: ["relu"] + normalization: ["layer_norm"] + positional_encoding: ["learned"] + attention_type: ["mha"] + norm_first: [false] + n_kv_heads: [2] + rope_theta: [10000.0] + prediction_length: 8 + +training_hyperparameter_sampling: + training_objective: ["bert"] + bert_spec: + masking_probability: [0.5] + replacement_distribution: + - masked: 0.8 + random: 0.1 + identical: 0.1 + span_masking: + - type: GeometricDistribution + p: 1.0 + device: cpu + torch_compile: none + epochs: [1] + save_interval_epochs: 10 + batch_size: [5] + learning_rate: [0.001] + criterion: + itemId: CrossEntropyLoss + loss_weights: + itemId: 1.0 + accumulation_steps: [1] + dropout: [0.0] + optimizer: + - name: Adam + scheduler: + - name: StepLR + step_size: 1 + gamma: 0.99 + log_interval: 5 + calculate_validation_loss_on_initialization: false + continue_training: false + layer_autocast: false + +override_input: true diff --git a/tests/configs/infer-test-categorical-bert-autoregression.yaml b/tests/configs/infer-test-categorical-bert-autoregression.yaml new file mode 100644 index 00000000..552bb21f --- /dev/null +++ b/tests/configs/infer-test-categorical-bert-autoregression.yaml @@ -0,0 +1,26 @@ +project_root: tests/project_folder +training_config_path: tests/configs/train-test-categorical-bert.yaml +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +model_type: generative +training_objective: bert +model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-1.pt +data_path: tests/project_folder/data/test-data-categorical-1-split2 +read_format: pt +write_format: csv + +input_columns: [itemId] +target_columns: [itemId] +target_column_types: + itemId: categorical + +output_probabilities: false +map_to_id: true +device: cpu +seq_length: 8 +inference_batch_size: 10 +prediction_length: null +enforce_determinism: true + +sample_from_distribution_columns: null +autoregression: true +autoregression_total_steps: 1 diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml new file mode 100644 index 00000000..14e95fea --- /dev/null +++ b/tests/configs/infer-test-categorical-bert-embedding.yaml @@ -0,0 +1,25 @@ +project_root: tests/project_folder +training_config_path: tests/configs/train-test-categorical-bert.yaml +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +model_type: embedding +training_objective: bert +model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-embedding-1.pt +data_path: tests/project_folder/data/test-data-categorical-1-split2 +read_format: pt +write_format: csv + +input_columns: [itemId] +target_columns: [itemId] +target_column_types: + itemId: categorical + +output_probabilities: false +map_to_id: true +device: cpu +seq_length: 8 +inference_batch_size: 10 +prediction_length: null +enforce_determinism: true + +sample_from_distribution_columns: null +autoregression: false diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml new file mode 100644 index 00000000..c6ec607f --- /dev/null +++ b/tests/configs/infer-test-categorical-bert.yaml @@ -0,0 +1,25 @@ +project_root: tests/project_folder +training_config_path: tests/configs/train-test-categorical-bert.yaml +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +model_type: generative +training_objective: bert +model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-1.pt +data_path: tests/project_folder/data/test-data-categorical-1-split2 +read_format: pt +write_format: csv + +input_columns: [itemId] +target_columns: [itemId] +target_column_types: + itemId: categorical + +output_probabilities: true +map_to_id: true +device: cpu +seq_length: 8 +inference_batch_size: 10 +prediction_length: null +enforce_determinism: true + +sample_from_distribution_columns: null +autoregression: false diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml new file mode 100644 index 00000000..12adcc5a --- /dev/null +++ b/tests/configs/train-test-categorical-bert.yaml @@ -0,0 +1,68 @@ +project_root: tests/project_folder +model_name: model-categorical-bert +read_format: pt +metadata_config_path: configs/metadata_configs/test-data-categorical-1.json + +input_columns: [itemId] +target_columns: [itemId] +target_column_types: + itemId: categorical + +seq_length: 8 +inference_batch_size: 10 + +export_generative_model: true +export_embedding_model: true +export_onnx: false +export_pt: true +export_with_dropout: false + +model_spec: + initial_embedding_dim: 16 + dim_model: 16 + n_head: 2 + dim_feedforward: 8 + num_layers: 1 + prediction_length: 8 + activation_fn: relu + normalization: layer_norm + positional_encoding: learned + attention_type: mha + norm_first: false + n_kv_heads: 2 + rope_theta: 10000.0 +training_spec: + training_objective: bert + bert_spec: + masking_probability: 0.5 + replacement_distribution: + masked: 0.8 + random: 0.1 + identical: 0.1 + span_masking: + type: GeometricDistribution + p: 1.0 + device: cpu + torch_compile: none + epochs: 1 + save_interval_epochs: 1 + batch_size: 5 + log_interval: 1 + learning_rate: 0.001 + accumulation_steps: null + dropout: 0.0 + criterion: + itemId: CrossEntropyLoss + loss_weights: + itemId: 1.0 + optimizer: + name: Adam + scheduler: + name: StepLR + step_size: 1.0 + gamma: 0.99 + scheduler_step_on: epoch + calculate_validation_loss_on_initialization: false + continue_training: false + enforce_determinism: true + layer_autocast: false diff --git a/tests/configs/train-test-real-bert.yaml b/tests/configs/train-test-real-bert.yaml new file mode 100644 index 00000000..426a129c --- /dev/null +++ b/tests/configs/train-test-real-bert.yaml @@ -0,0 +1,68 @@ +project_root: tests/project_folder +model_name: model-real-bert +read_format: parquet +metadata_config_path: configs/metadata_configs/test-data-real-1.json + +input_columns: [itemValue] +target_columns: [itemValue] +target_column_types: + itemValue: real + +seq_length: 8 +inference_batch_size: 10 + +export_generative_model: true +export_embedding_model: false +export_onnx: false +export_pt: true +export_with_dropout: false + +model_spec: + initial_embedding_dim: 16 + dim_model: 16 + n_head: 2 + dim_feedforward: 8 + num_layers: 1 + prediction_length: 8 + activation_fn: relu + normalization: layer_norm + positional_encoding: learned + attention_type: mha + norm_first: false + n_kv_heads: 2 + rope_theta: 10000.0 +training_spec: + training_objective: bert + bert_spec: + masking_probability: 0.5 + replacement_distribution: + masked: 0.8 + random: 0.1 + identical: 0.1 + span_masking: + type: GeometricDistribution + p: 1.0 + device: cpu + torch_compile: none + epochs: 1 + save_interval_epochs: 1 + batch_size: 5 + log_interval: 1 + learning_rate: 0.001 + accumulation_steps: null + dropout: 0.0 + criterion: + itemValue: MSELoss + loss_weights: + itemValue: 1.0 + optimizer: + name: Adam + scheduler: + name: StepLR + step_size: 1.0 + gamma: 0.99 + scheduler_step_on: epoch + calculate_validation_loss_on_initialization: false + continue_training: false + enforce_determinism: true + layer_autocast: false diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index ef9fa309..e44783c3 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -13,6 +13,7 @@ sequifier preprocess --config-path tests/configs/preprocess-test-categorical-exa sequifier preprocess --config-path tests/configs/preprocess-test-categorical-exact-pt.yaml sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-grid.yaml sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-sample.yaml +sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-bert.yaml sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-bayesian.yaml sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-custom-eval.yaml sequifier train --config-path tests/configs/train-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-1.json --model-name model-categorical-1 --input-columns itemId @@ -25,6 +26,8 @@ sequifier train --config-path tests/configs/train-test-categorical.yaml --metada sequifier train --config-path tests/configs/train-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-50.json --model-name model-real-50 --input-columns None sequifier train --config-path tests/configs/train-test-categorical-inf-size-1.yaml sequifier train --config-path tests/configs/train-test-categorical-inf-size-3.yaml +sequifier train --config-path tests/configs/train-test-categorical-bert.yaml +sequifier train --config-path tests/configs/train-test-real-bert.yaml sequifier train --config-path tests/configs/train-test-categorical-multitarget.yaml sequifier train --config-path tests/configs/train-test-categorical-multitarget-eager.yaml sequifier train --config-path tests/configs/train-test-distributed.yaml @@ -48,6 +51,8 @@ sequifier infer --config-path tests/configs/infer-test-lazy.yaml sequifier infer --config-path tests/configs/infer-test-categorical-autoregression.yaml --input-columns itemId sequifier infer --config-path tests/configs/infer-test-categorical-embedding.yaml --input-columns itemId sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-bert.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-bert-embedding.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml sequifier train --config-path tests/configs/train-test-resume-epoch.yaml @@ -59,6 +64,7 @@ sequifier visualize-training model-categorical-3-from-mid-epoch-checkpoint --pro sequifier visualize-training model-categorical-3-inf-size --project-root tests/project_folder sequifier visualize-training model-categorical-5 --project-root tests/project_folder sequifier visualize-training model-categorical-50 --project-root tests/project_folder +sequifier visualize-training model-categorical-bert --project-root tests/project_folder sequifier visualize-training model-categorical-distributed --project-root tests/project_folder sequifier visualize-training model-categorical-distributed-lazy-parquet --project-root tests/project_folder sequifier visualize-training model-categorical-lazy --project-root tests/project_folder @@ -69,4 +75,5 @@ sequifier visualize-training model-real-1-from-epoch-checkpoint --project-root t sequifier visualize-training model-real-3 --project-root tests/project_folder sequifier visualize-training model-real-5 --project-root tests/project_folder sequifier visualize-training model-real-50 --project-root tests/project_folder +sequifier visualize-training model-real-bert --project-root tests/project_folder sequifier visualize-training test-hp-search-grid-run-0,test-hp-search-grid-run-1,test-hp-search-grid-run-2,test-hp-search-grid-run-3 --project-root tests/project_folder --log-scale --bucket-training-batches 5 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 9b193a7b..c634ee90 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -133,6 +133,16 @@ def training_config_path_cat_inf_size_3(): return os.path.join("tests", "configs", "train-test-categorical-inf-size-3.yaml") +@pytest.fixture(scope="session") +def training_config_path_cat_bert(): + return os.path.join("tests", "configs", "train-test-categorical-bert.yaml") + + +@pytest.fixture(scope="session") +def training_config_path_real_bert(): + return os.path.join("tests", "configs", "train-test-real-bert.yaml") + + @pytest.fixture(scope="session") def training_config_path_distributed(): return os.path.join("tests", "configs", "train-test-distributed.yaml") @@ -183,6 +193,25 @@ def inference_config_path_cat_inf_size_3(): return os.path.join("tests", "configs", "infer-test-categorical-inf-size-3.yaml") +@pytest.fixture(scope="session") +def inference_config_path_cat_bert(): + return os.path.join("tests", "configs", "infer-test-categorical-bert.yaml") + + +@pytest.fixture(scope="session") +def inference_config_path_cat_bert_embedding(): + return os.path.join( + "tests", "configs", "infer-test-categorical-bert-embedding.yaml" + ) + + +@pytest.fixture(scope="session") +def inference_config_path_cat_bert_autoregression(): + return os.path.join( + "tests", "configs", "infer-test-categorical-bert-autoregression.yaml" + ) + + @pytest.fixture(scope="session") def inference_config_path_real_autoregression(): return os.path.join("tests", "configs", "infer-test-real-autoregression.yaml") @@ -240,6 +269,7 @@ def hp_search_configs(): return { "grid": os.path.join("tests", "configs", "hyperparameter-search-grid.yaml"), "sample": os.path.join("tests", "configs", "hyperparameter-search-sample.yaml"), + "bert": os.path.join("tests", "configs", "hyperparameter-search-bert.yaml"), "bayesian": os.path.join( "tests", "configs", "hyperparameter-search-bayesian.yaml" ), @@ -271,6 +301,8 @@ def format_configs_locally( training_config_path_real, training_config_path_cat_inf_size_1, training_config_path_cat_inf_size_3, + training_config_path_cat_bert, + training_config_path_real_bert, training_config_path_distributed, training_config_path_distributed_lazy_parquet, training_config_path_lazy, @@ -284,6 +316,9 @@ def format_configs_locally( inference_config_path_categorical_autoregression, inference_config_path_cat_inf_size_1, inference_config_path_cat_inf_size_3, + inference_config_path_cat_bert, + inference_config_path_cat_bert_embedding, + inference_config_path_cat_bert_autoregression, inference_config_path_distributed, inference_config_path_distributed_parquet, inference_config_path_lazy, @@ -303,6 +338,8 @@ def format_configs_locally( training_config_path_real, training_config_path_cat_inf_size_1, training_config_path_cat_inf_size_3, + training_config_path_cat_bert, + training_config_path_real_bert, training_config_path_distributed, training_config_path_distributed_lazy_parquet, training_config_path_lazy, @@ -316,11 +353,15 @@ def format_configs_locally( inference_config_path_categorical_autoregression, inference_config_path_cat_inf_size_1, inference_config_path_cat_inf_size_3, + inference_config_path_cat_bert, + inference_config_path_cat_bert_embedding, + inference_config_path_cat_bert_autoregression, inference_config_path_distributed, inference_config_path_distributed_parquet, inference_config_path_lazy, hp_search_configs["grid"], hp_search_configs["sample"], + hp_search_configs["bert"], hp_search_configs["bayesian"], hp_search_configs["custom-eval"], ] @@ -464,6 +505,8 @@ def run_training( training_config_path_real, training_config_path_cat_inf_size_1, training_config_path_cat_inf_size_3, + training_config_path_cat_bert, + training_config_path_real_bert, training_config_path_distributed, training_config_path_distributed_lazy_parquet, training_config_path_lazy, @@ -491,6 +534,10 @@ def run_training( run_and_log(f"sequifier train --config-path {training_config_path_cat_inf_size_3}") + run_and_log(f"sequifier train --config-path {training_config_path_cat_bert}") + + run_and_log(f"sequifier train --config-path {training_config_path_real_bert}") + run_and_log(f"sequifier train --config-path {training_config_path_cat_multitarget}") run_and_log( @@ -559,6 +606,10 @@ def run_hp_search( f"sequifier hyperparameter-search --config-path {hp_search_configs['sample']}" ) + run_and_log( + f"sequifier hyperparameter-search --config-path {hp_search_configs['bert']}" + ) + run_and_log( f"sequifier hyperparameter-search --config-path {hp_search_configs['bayesian']}" ) @@ -594,6 +645,8 @@ def run_inference( inference_config_path_embedding, inference_config_path_cat_inf_size_1, inference_config_path_cat_inf_size_3, + inference_config_path_cat_bert, + inference_config_path_cat_bert_embedding, inference_config_path_distributed, inference_config_path_distributed_parquet, inference_config_path_lazy, @@ -658,6 +711,12 @@ def run_inference( f"sequifier infer --config-path {inference_config_path_cat_inf_size_3_embedding}" ) + run_and_log(f"sequifier infer --config-path {inference_config_path_cat_bert}") + + run_and_log( + f"sequifier infer --config-path {inference_config_path_cat_bert_embedding}" + ) + @pytest.fixture() def model_names_preds(): @@ -813,3 +872,36 @@ def embeddings(run_inference, model_names_embeddings, project_root): embeddings_path, "categorical", "csv" ) return embeds + + +@pytest.fixture() +def bert_predictions(run_inference, project_root): + prediction_path = os.path.join( + project_root, + "outputs", + "predictions", + "sequifier-model-categorical-bert-best-1-predictions", + ) + return read_multi_file_preds(prediction_path, "categorical") + + +@pytest.fixture() +def bert_probabilities(run_inference, project_root): + probabilities_path = os.path.join( + project_root, + "outputs", + "probabilities", + "sequifier-model-categorical-bert-best-1-itemId-probabilities", + ) + return read_multi_file_preds(probabilities_path, "categorical", "csv") + + +@pytest.fixture() +def bert_embeddings(run_inference, project_root): + embeddings_path = os.path.join( + project_root, + "outputs", + "embeddings", + "sequifier-model-categorical-bert-best-embedding-1-embeddings", + ) + return read_multi_file_preds(embeddings_path, "categorical", "csv") diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 00f42d25..187c8312 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -23,6 +23,16 @@ def test_hp_search_sample_outputs(run_hp_search, project_root): ), f"Expected 4 sample configs, found {len(generated_configs)}" +def test_hp_search_bert_outputs(run_hp_search, project_root): + hp_name = "test-hp-search-bert" + config_dir = os.path.join(project_root, "configs") + + generated_configs = glob.glob(os.path.join(config_dir, f"{hp_name}-run-*.yaml")) + assert ( + len(generated_configs) == 1 + ), f"Expected 1 BERT sample config, found {len(generated_configs)}" + + def test_hp_search_bayesian_outputs(run_hp_search, project_root): hp_name = "test-hp-search-bayesian" config_dir = os.path.join(project_root, "configs") @@ -38,6 +48,7 @@ def test_hp_search_state(run_hp_search, project_root): assert os.path.exists(os.path.join(state_dir, "test-hp-search-sample.db")) assert os.path.exists(os.path.join(state_dir, "test-hp-search-grid.db")) + assert os.path.exists(os.path.join(state_dir, "test-hp-search-bert.db")) assert os.path.exists(os.path.join(state_dir, "test-hp-search-bayesian.db")) assert os.path.exists(os.path.join(state_dir, "test-hp-search-custom-eval.db")) diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 52bd0c7c..99f82f61 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -1,7 +1,21 @@ +import json +import os +import subprocess + import numpy as np import polars as pl TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} +BERT_SEQ_LENGTH = 8 +BERT_EMBEDDING_DIM = 16 + + +def _categorical_metadata(project_root): + metadata_path = os.path.join( + project_root, "configs", "metadata_configs", "test-data-categorical-1.json" + ) + with open(metadata_path, "r") as f: + return json.load(f) def test_predictions_real(predictions): @@ -97,6 +111,32 @@ def test_probabilities(probabilities): ) +def test_bert_generative_predictions_default_to_seq_length( + bert_predictions, project_root +): + metadata = _categorical_metadata(project_root) + valid_values = {str(v) for v in metadata["id_maps"]["itemId"].keys()} + + assert bert_predictions.height > 0 + assert set(bert_predictions["itemId"].to_list()).issubset(valid_values) + + rows_per_sequence = bert_predictions.group_by("sequenceId").len() + assert (rows_per_sequence["len"] == BERT_SEQ_LENGTH).all(), rows_per_sequence + + +def test_bert_probabilities(bert_predictions, bert_probabilities, project_root): + metadata = _categorical_metadata(project_root) + expected_class_count = metadata["n_classes"]["itemId"] + + assert bert_probabilities.height == bert_predictions.height + assert bert_probabilities.shape[1] == expected_class_count + np.testing.assert_almost_equal( + bert_probabilities.sum_horizontal(), + np.ones(bert_probabilities.shape[0]), + decimal=5, + ) + + def test_multi_pred(predictions): multitarget_models = [name for name in predictions.keys() if "multitarget" in name] @@ -132,6 +172,43 @@ def test_embeddings(embeddings): assert np.abs(model_embeddings[:, 1:].to_numpy().mean()) < 0.3 +def test_bert_embeddings(bert_predictions, bert_embeddings): + expected_embedding_cols = [str(i) for i in range(BERT_EMBEDDING_DIM)] + expected_columns = ["sequenceId", "subsequenceId", "itemPosition"] + + assert bert_embeddings.height == bert_predictions.height + assert bert_embeddings.shape[1] == len(expected_columns) + BERT_EMBEDDING_DIM + assert all(col in bert_embeddings.columns for col in expected_columns) + assert all(col in bert_embeddings.columns for col in expected_embedding_cols) + + embedding_values = bert_embeddings.select(expected_embedding_cols).to_numpy() + assert np.isfinite(embedding_values).all() + + rows_per_sequence = bert_embeddings.group_by("sequenceId").len() + assert (rows_per_sequence["len"] == BERT_SEQ_LENGTH).all(), rows_per_sequence + + +def test_bert_rejects_autoregression_end_to_end( + run_training, inference_config_path_cat_bert_autoregression +): + result = subprocess.run( + [ + "sequifier", + "infer", + "--config-path", + inference_config_path_cat_bert_autoregression, + ], + capture_output=True, + text=True, + ) + + assert result.returncode != 0 + assert ( + "Autoregressive inference is not possible with BERT-style models." + in result.stdout + result.stderr + ) + + def test_predictions_item_position(predictions): """ Checks if itemPosition increments correctly within each sequenceId. diff --git a/tests/integration/test_training.py b/tests/integration/test_training.py index 1fb9fc51..65128d30 100644 --- a/tests/integration/test_training.py +++ b/tests/integration/test_training.py @@ -33,6 +33,8 @@ def test_checkpoint_files_exists( for j in [1, 3] for i in range(1, 4) ] + + ["model-categorical-bert-epoch-1.pt"] + + ["model-real-bert-epoch-1.pt"] + [f"model-categorical-multitarget-5-epoch-{i}.pt" for i in range(1, 4)] + [ f"model-categorical-multitarget-5-eager-epoch-{i}.pt" @@ -107,6 +109,12 @@ def test_model_files_exists(run_training, run_training_from_checkpoint, project_ "sequifier-model-categorical-3-inf-size-last-3.pt", "sequifier-model-categorical-3-inf-size-best-embedding-3.pt", "sequifier-model-categorical-3-inf-size-last-embedding-3.pt", + "sequifier-model-categorical-bert-best-1.pt", + "sequifier-model-categorical-bert-last-1.pt", + "sequifier-model-categorical-bert-best-embedding-1.pt", + "sequifier-model-categorical-bert-last-embedding-1.pt", + "sequifier-model-real-bert-best-1.pt", + "sequifier-model-real-bert-last-1.pt", "sequifier-model-categorical-distributed-best-3.pt", "sequifier-model-categorical-distributed-best-3.onnx", "sequifier-model-categorical-distributed-last-3.pt", @@ -125,6 +133,10 @@ def test_model_files_exists(run_training, run_training_from_checkpoint, project_ for i in range(4) for suffix in ["best", "last"] ] + + [ + f"sequifier-test-hp-search-bert-run-0-{suffix}-1.pt" + for suffix in ["best", "last"] + ] + [ f"sequifier-test-hp-search-grid-run-{i}-{suffix}-2.pt" for i in range(4) From c2ff935cb589b84fed8979f353885f8a2acb7c0a Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 16:39:13 +0200 Subject: [PATCH 23/81] WIP --- src/sequifier/config/infer_config.py | 21 +++- src/sequifier/config/train_config.py | 30 +++-- src/sequifier/infer.py | 157 +++++++++++++++++++++++++-- src/sequifier/preprocess.py | 102 +++++++++++++++-- src/sequifier/train.py | 19 +++- tests/unit/test_infer.py | 111 +++++++++++++++++++ tests/unit/test_preprocess.py | 66 +++++++++++ tests/unit/test_train.py | 73 ++++++++++++- 8 files changed, 538 insertions(+), 41 deletions(-) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 0c1e3915..668252b2 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -5,7 +5,14 @@ import numpy as np import yaml from beartype import beartype -from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator +from pydantic import ( + BaseModel, + ConfigDict, + Field, + ValidationInfo, + field_validator, + model_validator, +) from sequifier.helpers import normalize_path, try_catch_excess_keys @@ -138,6 +145,18 @@ class InfererModel(BaseModel): autoregression: bool = Field(default=False) autoregression_total_steps: Optional[int] = Field(default=None) + @model_validator(mode="after") + def validate_bert_prediction_length_matches_seq_length(self): + if self.training_objective == "bert": + if self.prediction_length is None: + self.prediction_length = self.seq_length + elif self.prediction_length != self.seq_length: + raise ValueError( + "For BERT inference, prediction_length must be equal to seq_length " + f"(got prediction_length={self.prediction_length}, seq_length={self.seq_length})." + ) + return self + @field_validator("training_objective") @classmethod def validate_training_objective(cls, v): diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 92117551..477a602c 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -119,9 +119,9 @@ def __setstate__(self, state): class ReplacementDistribution(BaseModel): - masked: float = Field(..., gt=0.0, le=1.0) - random: float = Field(..., gt=0.0, le=1.0) - identical: float = Field(..., gt=0.0, le=1.0) + masked: float = Field(..., ge=0.0, le=1.0) + random: float = Field(..., ge=0.0, le=1.0) + identical: float = Field(..., ge=0.0, le=1.0) @model_validator(mode="after") def validate_sum(self): @@ -341,19 +341,17 @@ def validate_training_objective(cls, v): raise ValueError(f"Only 'causal' and 'bert' are allowed, found {v}") return v - @field_validator("bert_spec") - @classmethod - def validate_bert_spec(cls, v, info): - training_objective = info.data.get("training_objective") - if v and not training_objective == "bert": + @model_validator(mode="after") + def validate_bert_spec_matches_objective(self): + if self.bert_spec is not None and self.training_objective != "bert": raise ValueError( "The BERT hyperparameters should only be configured if the training objective is 'bert'" ) - if not v and training_objective == "bert": + if self.bert_spec is None and self.training_objective == "bert": raise ValueError( "If the training_objective is 'bert', the BERT hyperparameters must be set" ) - return v + return self @field_validator("sampling_strategy") @classmethod @@ -568,6 +566,18 @@ class TrainModel(BaseModel): model_spec: ModelSpecModel training_spec: TrainingSpecModel + @model_validator(mode="after") + def validate_bert_prediction_length_matches_seq_length(self): + if ( + self.training_spec.training_objective == "bert" + and self.model_spec.prediction_length != self.seq_length + ): + raise ValueError( + "For BERT training, model_spec.prediction_length must be equal to seq_length " + f"(got prediction_length={self.model_spec.prediction_length}, seq_length={self.seq_length})." + ) + return self + @field_validator("model_name") @classmethod def validate_model_name(cls, v): diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 1777cc4a..24b250ea 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -18,6 +18,7 @@ configure_determinism, construct_index_maps, generate_padding_masks, + get_left_pad_lengths_from_preprocessed_data, normalize_path, numpy_to_pytorch, subset_to_input_columns, @@ -296,6 +297,74 @@ def calculate_item_positions( return repeated_bases + tiled_offsets +def _flatten_prediction_valid_mask( + metadata: Optional[dict[str, Any]], prediction_length: int +) -> Optional[np.ndarray]: + if metadata is None or "target_valid_mask" not in metadata: + return None + + mask = metadata["target_valid_mask"] + mask_np = mask.cpu().numpy() if isinstance(mask, torch.Tensor) else np.asarray(mask) + return mask_np[:, -prediction_length:].reshape(-1).astype(bool) + + +def _prediction_valid_mask_from_frame( + config: "InfererModel", data: pl.DataFrame, prediction_length: int +) -> Optional[np.ndarray]: + if config.training_objective != "bert": + return None + + left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) + if left_pad_lengths is None: + return None + + metadata = generate_padding_masks( + left_pad_lengths, + config.seq_length, + data_offset=1, + target_offset=1, + ) + return _flatten_prediction_valid_mask(metadata, prediction_length) + + +def _filter_outputs_to_valid_targets( + prediction_valid_mask: Optional[np.ndarray], + sequence_ids_for_preds: np.ndarray, + item_positions_for_preds: np.ndarray, + preds: dict[str, np.ndarray], + probs: Optional[dict[str, np.ndarray]], +) -> tuple[ + np.ndarray, np.ndarray, dict[str, np.ndarray], Optional[dict[str, np.ndarray]] +]: + if prediction_valid_mask is None: + return sequence_ids_for_preds, item_positions_for_preds, preds, probs + + if prediction_valid_mask.shape[0] != len(sequence_ids_for_preds): + raise ValueError( + "target_valid_mask length does not match prediction metadata length " + f"({prediction_valid_mask.shape[0]} != {len(sequence_ids_for_preds)})." + ) + + filtered_preds = { + target_column: np.asarray(values)[prediction_valid_mask] + for target_column, values in preds.items() + } + filtered_probs = ( + { + target_column: np.asarray(values)[prediction_valid_mask] + for target_column, values in probs.items() + } + if probs is not None + else None + ) + return ( + np.asarray(sequence_ids_for_preds)[prediction_valid_mask], + np.asarray(item_positions_for_preds)[prediction_valid_mask], + filtered_preds, + filtered_probs, + ) + + @beartype def infer_embedding( config: "InfererModel", @@ -502,6 +571,7 @@ def infer_generative( is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) ) + prediction_valid_mask = None if config.read_format in ["parquet", "csv"] and not is_folder_input: if config.input_columns is not None: @@ -521,6 +591,9 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length + prediction_valid_mask = _prediction_valid_mask_from_frame( + config, data, prediction_length + ) # Expand IDs to match model output shape sequence_ids_for_preds = np.repeat( @@ -570,6 +643,9 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length + prediction_valid_mask = _prediction_valid_mask_from_frame( + config, data, prediction_length + ) sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length @@ -637,6 +713,9 @@ def infer_generative( sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length ) + prediction_valid_mask = _flatten_prediction_valid_mask( + metadata, prediction_length + ) # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( @@ -674,6 +753,16 @@ def infer_generative( predictions, target_column ) + sequence_ids_for_preds, item_positions_for_preds, preds, probs = ( + _filter_outputs_to_valid_targets( + prediction_valid_mask, + sequence_ids_for_preds, + item_positions_for_preds, + preds, + probs, + ) + ) + os.makedirs( os.path.join(config.project_root, "outputs", "predictions"), exist_ok=True, @@ -1417,8 +1506,14 @@ def adjust_and_infer_embedding( if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) + metadata_adjusted = ( + self.prepare_inference_batches(metadata, pad_to_batch_size=True) + if metadata + else [None] * len(x_adjusted) + ) inference_batch_embeddings = [ - self.infer_pure(x_sub)[0] for x_sub in x_adjusted + self.infer_pure(x_sub, metadata_sub)[0] + for x_sub, metadata_sub in zip(x_adjusted, metadata_adjusted) ] embeddings = np.concatenate(inference_batch_embeddings, axis=0)[:size] elif self.inference_model_type == "pt": @@ -1466,9 +1561,14 @@ def adjust_and_infer_generative( if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) + metadata_adjusted = ( + self.prepare_inference_batches(metadata, pad_to_batch_size=True) + if metadata + else [None] * len(x_adjusted) + ) out_subs = [ - dict(zip(self.target_columns, self.infer_pure(x_sub))) - for x_sub in x_adjusted + dict(zip(self.target_columns, self.infer_pure(x_sub, metadata_sub))) + for x_sub, metadata_sub in zip(x_adjusted, metadata_adjusted) ] outs = { target_column: np.concatenate( @@ -1544,7 +1644,11 @@ def prepare_inference_batches( return xs @beartype - def infer_pure(self, x: dict[str, np.ndarray]) -> list[np.ndarray]: + def infer_pure( + self, + x: dict[str, np.ndarray], + metadata: Optional[dict[str, np.ndarray]] = None, + ) -> list[np.ndarray]: """Performs a single inference pass using the ONNX session. This function assumes `x` is already a single, correctly-sized @@ -1559,13 +1663,44 @@ def infer_pure(self, x: dict[str, np.ndarray]) -> list[np.ndarray]: A list of NumPy arrays, representing the raw outputs from the ONNX model. """ - ort_inputs = { - session_input.name: self.expand_to_batch_size(x[col]) - for session_input, col in zip( - self.ort_session.get_inputs(), - self.categorical_columns + self.real_columns, - ) - } + metadata = metadata or {} + fallback_columns = sorted(x.keys()) + used_feature_columns = set() + reference_shape = next(iter(x.values())).shape + ort_inputs = {} + for session_input in self.ort_session.get_inputs(): + input_name = session_input.name + if input_name == "attention_valid_mask": + value = metadata.get(input_name) + if value is None: + value = np.ones(reference_shape[:2], dtype=np.bool_) + elif input_name in metadata: + value = metadata[input_name] + elif input_name.endswith("_in") and input_name[:-3] in x: + feature_column = input_name[:-3] + value = x[feature_column] + used_feature_columns.add(feature_column) + elif input_name in x: + value = x[input_name] + used_feature_columns.add(input_name) + else: + fallback_column = next( + ( + column + for column in fallback_columns + if column not in used_feature_columns + ), + None, + ) + if fallback_column is None: + raise ValueError( + f"Could not map ONNX input '{input_name}' to a feature or metadata array." + ) + value = x[fallback_column] + used_feature_columns.add(fallback_column) + + ort_inputs[input_name] = self.expand_to_batch_size(value) + ort_outs = self.ort_session.run(None, ort_inputs) return [ oo.transpose(1, 0, 2).reshape(oo.shape[0] * oo.shape[1], oo.shape[2]) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index a9401479..5888ada4 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -26,6 +26,8 @@ INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") CATEGORICAL_MASK_ID = 2 REAL_MASK_VALUE = 0.0 +RESERVED_ID_KEYS = {"[unknown]", "[other]", "[mask]"} +RESERVED_ID_VALUES = {0, 1, 2} @beartype @@ -815,7 +817,10 @@ def _export_metadata( for split_path in self.split_paths ], "column_types": col_types, - "selected_columns_statistics": selected_columns_statistics, + "selected_columns_statistics": { + col: {"mean": stats["mean"], "std": stats["std"]} + for col, stats in selected_columns_statistics.items() + }, } os.makedirs( os.path.join(self.project_root, "configs", "metadata_configs"), @@ -1048,6 +1053,17 @@ def _apply_column_statistics( if col_types is None: col_types = {col: str(data.schema[col]) for col in data_columns} + missing_columns = [ + col + for col in data_columns + if col not in id_maps and col not in selected_columns_statistics + ] + if missing_columns: + raise ValueError( + "No unmasked examples found for columns: " + f"{missing_columns}. Check the mask column or provide precomputed metadata." + ) + for col in data_columns: if col in id_maps: data = data.with_columns(pl.col(col).replace(id_maps[col], default=1)) @@ -1103,11 +1119,53 @@ def load_precomputed_id_maps( if not len(m) > 0: raise ValueError(f"map in {file} does not contain any values") - min_val = min(m.values()) + for reserved_key, expected_value in { + "[unknown]": 0, + "[other]": 1, + "[mask]": 2, + }.items(): + if reserved_key in m and m[reserved_key] != expected_value: + raise ValueError( + f"{reserved_key} in map {file} must map to {expected_value}" + ) + + user_values = [ + value for key, value in m.items() if key not in RESERVED_ID_KEYS + ] + if not user_values: + raise ValueError( + f"map in {file} does not contain any non-reserved values" + ) + + min_val = min(user_values) + if min_val == 2: + warnings.warn( + f"Precomputed map {file} uses legacy user IDs starting at 2; shifting user IDs by 1 to reserve the BERT mask ID.", + stacklevel=2, + ) + m = { + key: value + 1 + if key not in RESERVED_ID_KEYS and value >= 2 + else value + for key, value in m.items() + } + user_values = [ + value + for key, value in m.items() + if key not in RESERVED_ID_KEYS + ] + min_val = min(user_values) + if min_val != 3: raise ValueError( - f"minimum value in map {file} is {min_val}, must be 3." + f"minimum non-reserved value in map {file} is {min_val}, must be 3." + ) + if any(value in RESERVED_ID_VALUES for value in user_values): + raise ValueError( + f"non-reserved values in map {file} must not use reserved IDs {RESERVED_ID_VALUES}" ) + if len(set(m.values())) != len(m.values()): + raise ValueError(f"map in {file} contains duplicate IDs") custom_maps[col_name] = m if required_maps: missing_maps = [col for col in required_maps if col not in custom_maps] @@ -1169,6 +1227,9 @@ def _get_column_statistics( mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) data = data.filter(~mask_expr) + if data.is_empty(): + return id_maps, selected_columns_statistics + for data_col in data_columns: dtype = data.schema[data_col] if isinstance( @@ -1197,18 +1258,29 @@ def _get_column_statistics( f"Column {data_col} is not categorical, precomputed map is invalid." ) - combined_mean, combined_std = get_combined_statistics( - data.shape[0], - data.get_column(data_col).mean(), - data.get_column(data_col).std(), - n_rows_running_count, - selected_columns_statistics.get(data_col, {"mean": 0.0})["mean"], - selected_columns_statistics.get(data_col, {"std": 0.0})["std"], - ) + chunk_mean = data.get_column(data_col).mean() + chunk_std = data.get_column(data_col).std() or 0.0 + previous_stats = selected_columns_statistics.get(data_col) + + if previous_stats is None: + combined_mean, combined_std = chunk_mean, chunk_std + combined_count = data.shape[0] + else: + previous_count = int(previous_stats.get("count", n_rows_running_count)) + combined_mean, combined_std = get_combined_statistics( + data.shape[0], + chunk_mean, + chunk_std, + previous_count, + previous_stats["mean"], + previous_stats["std"], + ) + combined_count = previous_count + data.shape[0] selected_columns_statistics[data_col] = { "std": combined_std, "mean": combined_mean, + "count": float(combined_count), } else: raise ValueError(f"Column {data_col} has unsupported dtype: {dtype}") @@ -1577,9 +1649,17 @@ def get_combined_statistics( A tuple `(combined_mean, combined_std)` containing the combined mean and standard deviation of the two subsets. """ + if n1 == 0: + return mean2, std2 + if n2 == 0: + return mean1, std1 + # Step 1: Calculate the combined mean. combined_mean = (n1 * mean1 + n2 * mean2) / (n1 + n2) + if n1 + n2 <= 1: + return combined_mean, 0.0 + # Step 2: Calculate the pooled sum of squared differences. # This includes the internal variance of each subset and the variance # between the subset mean and the combined mean. diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 29e8121c..b6230c98 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -2099,14 +2099,21 @@ def _export_model( } input_dict = {**x_cat, **x_real} + metadata_dict = { + "attention_valid_mask": torch.ones( + self.inference_batch_size, + self.seq_length, + dtype=torch.bool, + device=export_device, + ) + } - # Wrap in a tuple with an empty dict to prevent PyTorch from treating input_dict as kwargs - x = (input_dict, {}) + # Wrap in a tuple to prevent PyTorch from treating dictionaries as kwargs. + x = (input_dict, metadata_dict) - # PyTree flattening sorts dictionary keys automatically, so we sort names to match - input_names = [ - f"{col}_in" if col in sorted(list(input_dict.keys())) else col - for col in sorted(self.target_columns) + # PyTree flattening sorts dictionary keys automatically, so names must match that order. + input_names = [f"{col}_in" for col in sorted(input_dict.keys())] + [ + "attention_valid_mask" ] # Determine output names based on the model type diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 998dbab8..7069cbb7 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -7,6 +7,7 @@ from sequifier.config.infer_config import InfererModel from sequifier.infer import ( Inferer, + _filter_outputs_to_valid_targets, get_probs_preds_from_dict, normalize, sample_with_cumsum, @@ -150,6 +151,116 @@ def test_inferer_prepare_inference_batches_split(mock_inferer): np.testing.assert_array_equal(batches[2]["cat_col"], [[5]]) +def test_infer_config_defaults_bert_prediction_length_to_seq_length(): + config = InfererModel( + project_root=".", + metadata_config_path="dummy.json", + model_path="dummy.onnx", + model_type="generative", + training_objective="bert", + data_path="tests/unit/data/empty.parquet", + input_columns=["target_col"], + categorical_columns=[], + real_columns=["target_col"], + target_columns=["target_col"], + column_types={"target_col": "float64"}, + target_column_types={"target_col": "real"}, + seed=42, + device="cpu", + prediction_length=None, + seq_length=3, + inference_batch_size=2, + output_probabilities=False, + map_to_id=False, + autoregression=False, + ) + + assert config.prediction_length == config.seq_length + + +def test_infer_config_rejects_bert_prediction_length_mismatch(): + with pytest.raises(ValueError, match="prediction_length must be equal"): + InfererModel( + project_root=".", + metadata_config_path="dummy.json", + model_path="dummy.onnx", + model_type="generative", + training_objective="bert", + data_path="tests/unit/data/empty.parquet", + input_columns=["target_col"], + categorical_columns=[], + real_columns=["target_col"], + target_columns=["target_col"], + column_types={"target_col": "float64"}, + target_column_types={"target_col": "real"}, + seed=42, + device="cpu", + prediction_length=1, + seq_length=3, + inference_batch_size=2, + output_probabilities=False, + map_to_id=False, + autoregression=False, + ) + + +def test_infer_pure_passes_attention_valid_mask_to_onnx(mock_inferer): + class Input: + def __init__(self, name): + self.name = name + + class Session: + def __init__(self): + self.ort_inputs = None + + def get_inputs(self): + return [ + Input("cat_col_in"), + Input("real_col_in"), + Input("attention_valid_mask"), + ] + + def run(self, _, ort_inputs): + self.ort_inputs = ort_inputs + return [np.zeros((1, 2, 3), dtype=np.float32)] + + session = Session() + mock_inferer.ort_session = session + mock_inferer.inference_batch_size = 2 + + x = { + "cat_col": np.array([[1, 2], [3, 4]], dtype=np.int64), + "real_col": np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32), + } + metadata = { + "attention_valid_mask": np.array([[False, True], [True, True]], dtype=np.bool_) + } + + mock_inferer.infer_pure(x, metadata) + assert session.ort_inputs is not None + np.testing.assert_array_equal( + session.ort_inputs["attention_valid_mask"], + metadata["attention_valid_mask"], + ) + + +def test_filter_outputs_to_valid_targets_filters_predictions_and_probabilities(): + mask = np.array([False, True, True, False]) + sequence_ids, positions, preds, probs = _filter_outputs_to_valid_targets( + mask, + np.array([10, 10, 11, 11]), + np.array([0, 1, 0, 1]), + {"target_col": np.array([1, 2, 3, 4])}, + {"target_col": np.array([[0.7, 0.3], [0.2, 0.8], [0.4, 0.6], [0.9, 0.1]])}, + ) + + assert probs is not None + np.testing.assert_array_equal(sequence_ids, [10, 11]) + np.testing.assert_array_equal(positions, [1, 0]) + np.testing.assert_array_equal(preds["target_col"], [2, 3]) + np.testing.assert_array_equal(probs["target_col"], [[0.2, 0.8], [0.4, 0.6]]) + + # ========================================== # Test Autoregressive Tensor Inference # ========================================== diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index f478c3a8..c7c736a7 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -9,6 +9,7 @@ from sequifier.config.preprocess_config import PreprocessorModel from sequifier.preprocess import ( Preprocessor, + _apply_column_statistics, _apply_mask_column, _get_column_statistics, _get_data_columns, @@ -17,6 +18,7 @@ extract_subsequences, get_batch_limits, get_combined_statistics, + load_precomputed_id_maps, process_and_write_data_pt, ) @@ -490,6 +492,36 @@ def test_get_column_statistics_state_accumulation(): np.testing.assert_almost_equal(stats["num_col"]["std"], expected_std) +def test_get_column_statistics_skips_all_masked_chunks(): + data = pl.DataFrame( + { + "cat_col": ["a", "b"], + "num_col": [1.0, 2.0], + RESERVED_MASK_COLUMN: [1, 1], + } + ) + + id_maps, stats = _get_column_statistics( + data, + ["cat_col", "num_col"], + {}, + {}, + 0, + {}, + mask_column=RESERVED_MASK_COLUMN, + ) + + assert id_maps == {} + assert stats == {} + + +def test_apply_column_statistics_errors_when_all_rows_masked(): + data = pl.DataFrame({"cat_col": ["a"], "num_col": [1.0]}) + + with pytest.raises(ValueError, match="No unmasked examples"): + _apply_column_statistics(data, ["cat_col", "num_col"], {}, {}) + + def test_create_id_map(): """Tests basic ID mapping creation.""" df = pl.DataFrame({"A": ["z", "x", "y", "x"]}) @@ -499,3 +531,37 @@ def test_create_id_map(): assert mapping["x"] == 3 assert mapping["y"] == 4 assert mapping["z"] == 5 + + +def test_load_precomputed_id_maps_allows_reserved_entries(tmp_path): + project_root = tmp_path / "project" + id_map_dir = project_root / "configs" / "id_maps" + id_map_dir.mkdir(parents=True) + (id_map_dir / "itemId.json").write_text( + json.dumps( + { + "[unknown]": 0, + "[other]": 1, + "[mask]": 2, + "a": 3, + "b": 4, + } + ) + ) + + id_maps = load_precomputed_id_maps(str(project_root), ["itemId"]) + + assert id_maps["itemId"]["[mask]"] == 2 + assert id_maps["itemId"]["a"] == 3 + + +def test_load_precomputed_id_maps_migrates_legacy_user_ids(tmp_path): + project_root = tmp_path / "project" + id_map_dir = project_root / "configs" / "id_maps" + id_map_dir.mkdir(parents=True) + (id_map_dir / "itemId.json").write_text(json.dumps({"a": 2, "b": 3})) + + with pytest.warns(UserWarning, match="legacy user IDs"): + id_maps = load_precomputed_id_maps(str(project_root), ["itemId"]) + + assert id_maps["itemId"] == {"a": 3, "b": 4} diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index f581b40b..ee5ae7ab 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -2,12 +2,69 @@ import pytest import torch - -from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel +from pydantic import ValidationError + +from sequifier.config.train_config import ( + BERTSpecModel, + ModelSpecModel, + ReplacementDistribution, + TrainingSpecModel, + TrainModel, +) from sequifier.helpers import infer_valid_mask_from_data from sequifier.train import TransformerModel +def _training_spec_kwargs(**overrides): + values = { + "training_objective": "causal", + "device": "cpu", + "epochs": 1, + "save_interval_epochs": 1, + "batch_size": 4, + "learning_rate": 0.001, + "criterion": {"cat_col": "CrossEntropyLoss", "real_col": "MSELoss"}, + "optimizer": {"name": "Adam"}, + "scheduler": {"name": "StepLR", "step_size": 1, "gamma": 0.1}, + "loss_weights": {"cat_col": 1.0, "real_col": 1.0}, + } + values.update(overrides) + return values + + +def _bert_spec(): + return BERTSpecModel( + masking_probability=0.5, + replacement_distribution={ + "masked": 1.0, + "random": 0.0, + "identical": 0.0, + }, + span_masking={"type": "GeometricDistribution", "p": 1.0}, + ) + + +def test_replacement_distribution_allows_zero_probabilities(): + distribution = ReplacementDistribution(masked=1.0, random=0.0, identical=0.0) + + assert distribution.masked == 1.0 + assert distribution.random == 0.0 + assert distribution.identical == 0.0 + + +def test_training_spec_model_requires_bert_spec_for_bert_objective(): + with pytest.raises(ValidationError, match="BERT hyperparameters must be set"): + TrainingSpecModel(**_training_spec_kwargs(training_objective="bert")) + + +def test_training_spec_model_rejects_bert_spec_for_causal_objective(): + with pytest.raises( + ValidationError, + match="BERT hyperparameters should only be configured", + ): + TrainingSpecModel(**_training_spec_kwargs(bert_spec=_bert_spec())) + + @pytest.fixture def model_config(tmp_path): """Creates a valid TrainModel configuration for testing.""" @@ -113,6 +170,18 @@ def test_transformer_model_initialization(model, model_config): assert "real_col" in model.encoder +def test_train_model_requires_bert_prediction_length_to_equal_seq_length(model_config): + config_values = model_config.model_dump() + config_values["model_spec"]["prediction_length"] = model_config.seq_length - 1 + config_values["training_spec"] = _training_spec_kwargs( + training_objective="bert", + bert_spec=_bert_spec(), + ) + + with pytest.raises(ValidationError, match="prediction_length must be equal"): + TrainModel(**config_values) + + def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size From 8eaf770d57b3ffb973ee2b77657a6212af274f87 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 16:51:26 +0200 Subject: [PATCH 24/81] WIP --- src/sequifier/infer.py | 33 ++++----- tests/integration-test-log.txt | 14 ---- tests/integration/test_onnx_export.py | 102 ++++++++++++++++++++++++++ tests/unit/test_infer.py | 63 ++++++++++++++++ 4 files changed, 180 insertions(+), 32 deletions(-) create mode 100644 tests/integration/test_onnx_export.py diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 24b250ea..465103f0 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -316,7 +316,10 @@ def _prediction_valid_mask_from_frame( left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) if left_pad_lengths is None: - return None + raise ValueError( + "BERT inference with full-sequence prediction requires leftPadLength metadata " + "so padded target positions can be filtered." + ) metadata = generate_padding_masks( left_pad_lengths, @@ -706,6 +709,15 @@ def infer_generative( prediction_length = inferer.prediction_length # Get prediction_length if total_steps == 1: + if ( + config.training_objective == "bert" + and "target_valid_mask" not in metadata + ): + raise ValueError( + "BERT inference with full-sequence prediction requires target_valid_mask metadata " + "so padded target positions can be filtered." + ) + # Non-autoregressive path: Apply prediction_length logic sequence_ids_for_preds_base = sequence_ids_tensor.numpy() item_positions_base_raw = start_positions_tensor.numpy() @@ -1664,8 +1676,6 @@ def infer_pure( ONNX model. """ metadata = metadata or {} - fallback_columns = sorted(x.keys()) - used_feature_columns = set() reference_shape = next(iter(x.values())).shape ort_inputs = {} for session_input in self.ort_session.get_inputs(): @@ -1679,25 +1689,12 @@ def infer_pure( elif input_name.endswith("_in") and input_name[:-3] in x: feature_column = input_name[:-3] value = x[feature_column] - used_feature_columns.add(feature_column) elif input_name in x: value = x[input_name] - used_feature_columns.add(input_name) else: - fallback_column = next( - ( - column - for column in fallback_columns - if column not in used_feature_columns - ), - None, + raise ValueError( + f"Could not map ONNX input '{input_name}' to a feature or metadata array." ) - if fallback_column is None: - raise ValueError( - f"Could not map ONNX input '{input_name}' to a feature or metadata array." - ) - value = x[fallback_column] - used_feature_columns.add(fallback_column) ort_inputs[input_name] = self.expand_to_batch_size(value) diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index e44783c3..4b0c9730 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -39,20 +39,6 @@ sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metada sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-3.json --model-path models/sequifier-model-real-3-best-3.pt --data-path data/test-data-real-3-split1.parquet --input-columns None sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-5.json --model-path models/sequifier-model-categorical-5-best-3.onnx --data-path data/test-data-categorical-5-split2 --input-columns itemId supCat1 supCat2 supCat4 sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-5.json --model-path models/sequifier-model-real-5-best-3.pt --data-path data/test-data-real-5-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-50.json --model-path models/sequifier-model-categorical-50-best-3.onnx --data-path data/test-data-categorical-50-split2 --input-columns itemId supCat1 supCat2 supCat3 supCat4 supCat5 supCat6 supCat7 supCat8 supCat9 supCat10 supCat11 supCat12 supCat13 supCat14 supCat15 supCat16 supCat17 supCat18 supCat19 supCat20 supCat21 supCat22 supCat23 supCat24 supCat25 supCat26 supCat27 supCat28 supCat29 supCat30 supCat31 supCat32 supCat33 supCat34 supCat35 supCat36 supCat37 supCat38 supCat39 supCat40 supCat41 supCat42 supCat43 supCat44 supCat45 supCat46 supCat47 supCat48 supCat49 -sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-50.json --model-path models/sequifier-model-real-50-best-3.pt --data-path data/test-data-real-50-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical-multitarget.yaml -sequifier infer --config-path tests/configs/infer-test-real-autoregression.yaml --input-columns itemValue --randomize -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-1.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3.yaml -sequifier infer --config-path tests/configs/infer-test-distributed.yaml -sequifier infer --config-path tests/configs/infer-test-distributed-parquet.yaml -sequifier infer --config-path tests/configs/infer-test-lazy.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-autoregression.yaml --input-columns itemId -sequifier infer --config-path tests/configs/infer-test-categorical-embedding.yaml --input-columns itemId -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3-embedding.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-bert.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-bert-embedding.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml sequifier train --config-path tests/configs/train-test-resume-epoch.yaml diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py new file mode 100644 index 00000000..f4c5a736 --- /dev/null +++ b/tests/integration/test_onnx_export.py @@ -0,0 +1,102 @@ +import os + +import numpy as np +import onnxruntime + +from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel +from sequifier.train import TransformerModel + + +def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): + project_root = str(tmp_path) + (tmp_path / "logs").mkdir() + + seq_length = 4 + inference_batch_size = 2 + config = TrainModel( + project_root=project_root, + model_name="bert-onnx-mask", + metadata_config_path="metadata.json", + training_data_path="data/train.pt", + validation_data_path="data/val.pt", + input_columns=["cat_col", "real_col"], + target_columns=["cat_col", "real_col"], + target_column_types={"cat_col": "categorical", "real_col": "real"}, + column_types={"cat_col": "int64", "real_col": "float64"}, + categorical_columns=["cat_col"], + real_columns=["real_col"], + id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, + n_classes={"cat_col": 6}, + seq_length=seq_length, + inference_batch_size=inference_batch_size, + seed=42, + export_generative_model=True, + export_embedding_model=False, + export_onnx=True, + export_pt=False, + model_spec=ModelSpecModel( + initial_embedding_dim=8, + dim_model=8, + n_head=2, + dim_feedforward=8, + num_layers=1, + prediction_length=seq_length, + feature_embedding_dims={"cat_col": 7, "real_col": 1}, + activation_fn="relu", + normalization="layer_norm", + positional_encoding="learned", + attention_type="mha", + norm_first=False, + n_kv_heads=2, + ), + training_spec=TrainingSpecModel( + training_objective="bert", + bert_spec={ + "masking_probability": 0.5, + "replacement_distribution": { + "masked": 1.0, + "random": 0.0, + "identical": 0.0, + }, + "span_masking": {"type": "GeometricDistribution", "p": 1.0}, + }, + device="cpu", + epochs=1, + save_interval_epochs=1, + batch_size=2, + learning_rate=0.001, + criterion={"cat_col": "CrossEntropyLoss", "real_col": "MSELoss"}, + optimizer={"name": "Adam"}, + scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, + loss_weights={"cat_col": 1.0, "real_col": 1.0}, + torch_compile="none", + layer_autocast=False, + ), + ) + model = TransformerModel(config) + + model._export_model(model, "best", 1) + export_path = os.path.join( + project_root, "models", "sequifier-bert-onnx-mask-best-1.onnx" + ) + + session = onnxruntime.InferenceSession( + export_path, providers=["CPUExecutionProvider"] + ) + input_names = [session_input.name for session_input in session.get_inputs()] + + assert "attention_valid_mask" in input_names + + ort_inputs = { + "cat_col_in": np.array([[3, 4, 5, 3], [0, 0, 3, 4]], dtype=np.int64), + "real_col_in": np.array( + [[0.1, 0.2, 0.3, 0.4], [0.0, 0.0, 0.5, 0.6]], dtype=np.float32 + ), + "attention_valid_mask": np.array( + [[True, True, True, True], [False, False, True, True]], dtype=np.bool_ + ), + } + outputs = session.run(None, ort_inputs) + + assert len(outputs) == 2 + assert outputs[0].shape[1] == inference_batch_size diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 7069cbb7..b349d073 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -1,6 +1,7 @@ from unittest.mock import patch import numpy as np +import polars as pl import pytest import torch @@ -8,6 +9,7 @@ from sequifier.infer import ( Inferer, _filter_outputs_to_valid_targets, + _prediction_valid_mask_from_frame, get_probs_preds_from_dict, normalize, sample_with_cumsum, @@ -244,6 +246,67 @@ def run(self, _, ort_inputs): ) +def test_infer_pure_rejects_unknown_onnx_input(mock_inferer): + class Input: + def __init__(self, name): + self.name = name + + class Session: + def get_inputs(self): + return [Input("unexpected_input")] + + mock_inferer.ort_session = Session() + + with pytest.raises(ValueError, match="Could not map ONNX input"): + mock_inferer.infer_pure( + { + "cat_col": np.array([[1, 2]], dtype=np.int64), + "real_col": np.array([[1.0, 2.0]], dtype=np.float32), + } + ) + + +def test_prediction_valid_mask_from_frame_requires_left_pad_length_for_bert(): + config = InfererModel( + project_root=".", + metadata_config_path="dummy.json", + model_path="dummy.onnx", + model_type="generative", + training_objective="bert", + data_path="tests/unit/data/empty.parquet", + input_columns=["target_col"], + categorical_columns=[], + real_columns=["target_col"], + target_columns=["target_col"], + column_types={"target_col": "float64"}, + target_column_types={"target_col": "real"}, + seed=42, + device="cpu", + prediction_length=None, + seq_length=3, + inference_batch_size=2, + output_probabilities=False, + map_to_id=False, + autoregression=False, + ) + data = pl.DataFrame( + { + "sequenceId": [0], + "subsequenceId": [0], + "startItemPosition": [0], + "inputCol": ["target_col"], + "3": [0.0], + "2": [0.0], + "1": [1.0], + "0": [2.0], + } + ) + + assert config.prediction_length is not None + with pytest.raises(ValueError, match="leftPadLength"): + _prediction_valid_mask_from_frame(config, data, config.prediction_length) + + def test_filter_outputs_to_valid_targets_filters_predictions_and_probabilities(): mask = np.array([False, True, True, False]) sequence_ids, positions, preds, probs = _filter_outputs_to_valid_targets( From 6e287a0c20919ec6ba4bdd18572f54929b92208a Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 17:10:58 +0200 Subject: [PATCH 25/81] WIP --- src/sequifier/config/train_config.py | 5 ++ src/sequifier/train.py | 45 ++++++++++---- tests/integration-test-log.txt | 14 +++++ tests/integration/test_onnx_export.py | 88 +++++++++++++++++++++++++++ 4 files changed, 139 insertions(+), 13 deletions(-) diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 477a602c..2b1666f0 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -16,6 +16,7 @@ ConfigDict, Field, computed_field, + field_serializer, field_validator, model_validator, ) @@ -233,6 +234,10 @@ def __init__(self, **kwargs): self.validate_scheduler_config(kwargs["scheduler"], kwargs) self.scheduler = DotDict(kwargs["scheduler"]) + @field_serializer("optimizer", "scheduler") + def serialize_dotdict(self, value: DotDict) -> dict[str, Any]: + return dict(value) + @computed_field @property def data_offset(self) -> int: diff --git a/src/sequifier/train.py b/src/sequifier/train.py index b6230c98..900fb027 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -533,6 +533,22 @@ def forward( return self.transformer_model.forward_embed(src, metadata=metadata) +class _OnnxExportWrapper(nn.Module): + def __init__( + self, + model: Union["TransformerModel", TransformerEmbeddingModel], + feature_columns: list[str], + ): + super().__init__() + self.model = model + self.feature_columns = feature_columns + + def forward(self, *inputs: Tensor): + features = dict(zip(self.feature_columns, inputs[:-1])) + metadata = {"attention_valid_mask": inputs[-1]} + return self.model(features, metadata=metadata) + + class TransformerModel(nn.Module): """The main Transformer model for the sequifier. @@ -2067,6 +2083,8 @@ def _export_model( suffix: A string suffix for the filename (e.g., "best", "last-embedding"). epoch: The current epoch number, included in the filename. """ + os.makedirs(os.path.join(self.project_root, "models"), exist_ok=True) + if self.export_onnx: is_different_type = any( p.dtype in [torch.float16, torch.bfloat16, torch.float64] @@ -2099,20 +2117,21 @@ def _export_model( } input_dict = {**x_cat, **x_real} - metadata_dict = { - "attention_valid_mask": torch.ones( - self.inference_batch_size, - self.seq_length, - dtype=torch.bool, - device=export_device, - ) - } + attention_valid_mask = torch.ones( + self.inference_batch_size, + self.seq_length, + dtype=torch.bool, + device=export_device, + ) + attention_valid_mask[0, 0] = False - # Wrap in a tuple to prevent PyTorch from treating dictionaries as kwargs. - x = (input_dict, metadata_dict) + feature_columns = list(input_dict.keys()) + x = tuple(input_dict[col] for col in feature_columns) + ( + attention_valid_mask, + ) + export_wrapper = _OnnxExportWrapper(model_to_export, feature_columns) - # PyTree flattening sorts dictionary keys automatically, so names must match that order. - input_names = [f"{col}_in" for col in sorted(input_dict.keys())] + [ + input_names = [f"{col}_in" for col in input_dict.keys()] + [ "attention_valid_mask" ] @@ -2158,7 +2177,7 @@ def _export_model( warnings.filterwarnings("ignore", category=FutureWarning) torch.onnx.export( - model_to_export, + export_wrapper, x, export_path, export_params=True, diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index 4b0c9730..e44783c3 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -39,6 +39,20 @@ sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metada sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-3.json --model-path models/sequifier-model-real-3-best-3.pt --data-path data/test-data-real-3-split1.parquet --input-columns None sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-5.json --model-path models/sequifier-model-categorical-5-best-3.onnx --data-path data/test-data-categorical-5-split2 --input-columns itemId supCat1 supCat2 supCat4 sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-5.json --model-path models/sequifier-model-real-5-best-3.pt --data-path data/test-data-real-5-split1.parquet --input-columns None +sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-50.json --model-path models/sequifier-model-categorical-50-best-3.onnx --data-path data/test-data-categorical-50-split2 --input-columns itemId supCat1 supCat2 supCat3 supCat4 supCat5 supCat6 supCat7 supCat8 supCat9 supCat10 supCat11 supCat12 supCat13 supCat14 supCat15 supCat16 supCat17 supCat18 supCat19 supCat20 supCat21 supCat22 supCat23 supCat24 supCat25 supCat26 supCat27 supCat28 supCat29 supCat30 supCat31 supCat32 supCat33 supCat34 supCat35 supCat36 supCat37 supCat38 supCat39 supCat40 supCat41 supCat42 supCat43 supCat44 supCat45 supCat46 supCat47 supCat48 supCat49 +sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-50.json --model-path models/sequifier-model-real-50-best-3.pt --data-path data/test-data-real-50-split1.parquet --input-columns None +sequifier infer --config-path tests/configs/infer-test-categorical-multitarget.yaml +sequifier infer --config-path tests/configs/infer-test-real-autoregression.yaml --input-columns itemValue --randomize +sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-1.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3.yaml +sequifier infer --config-path tests/configs/infer-test-distributed.yaml +sequifier infer --config-path tests/configs/infer-test-distributed-parquet.yaml +sequifier infer --config-path tests/configs/infer-test-lazy.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-autoregression.yaml --input-columns itemId +sequifier infer --config-path tests/configs/infer-test-categorical-embedding.yaml --input-columns itemId +sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-bert.yaml +sequifier infer --config-path tests/configs/infer-test-categorical-bert-embedding.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml sequifier train --config-path tests/configs/train-test-resume-epoch.yaml diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index f4c5a736..e26d3d8e 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -100,3 +100,91 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): assert len(outputs) == 2 assert outputs[0].shape[1] == inference_batch_size + + +def test_onnx_export_preserves_feature_name_order(tmp_path): + project_root = str(tmp_path) + (tmp_path / "logs").mkdir() + + seq_length = 4 + inference_batch_size = 2 + config = TrainModel( + project_root=project_root, + model_name="onnx-feature-order", + metadata_config_path="metadata.json", + training_data_path="data/train.pt", + validation_data_path="data/val.pt", + input_columns=["cat2", "cat10"], + target_columns=["cat2"], + target_column_types={"cat2": "categorical"}, + column_types={"cat2": "int64", "cat10": "int64"}, + categorical_columns=["cat2", "cat10"], + real_columns=[], + id_maps={ + "cat2": {"a": 3, "b": 4, "c": 5, "d": 6}, + "cat10": {"x": 3, "y": 4, "z": 5}, + }, + n_classes={"cat2": 7, "cat10": 6}, + seq_length=seq_length, + inference_batch_size=inference_batch_size, + seed=42, + export_generative_model=True, + export_embedding_model=False, + export_onnx=True, + export_pt=False, + model_spec=ModelSpecModel( + initial_embedding_dim=8, + dim_model=8, + n_head=2, + dim_feedforward=8, + num_layers=1, + prediction_length=1, + feature_embedding_dims={"cat2": 4, "cat10": 4}, + activation_fn="relu", + normalization="layer_norm", + positional_encoding="learned", + attention_type="mha", + norm_first=False, + n_kv_heads=2, + ), + training_spec=TrainingSpecModel( + training_objective="causal", + device="cpu", + epochs=1, + save_interval_epochs=1, + batch_size=2, + learning_rate=0.001, + criterion={"cat2": "CrossEntropyLoss"}, + optimizer={"name": "Adam"}, + scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, + loss_weights={"cat2": 1.0}, + torch_compile="none", + layer_autocast=False, + ), + ) + model = TransformerModel(config) + + model._export_model(model, "best", 1) + export_path = os.path.join( + project_root, "models", "sequifier-onnx-feature-order-best-1.onnx" + ) + + session = onnxruntime.InferenceSession( + export_path, providers=["CPUExecutionProvider"] + ) + input_names = [session_input.name for session_input in session.get_inputs()] + + assert input_names == ["cat2_in", "cat10_in", "attention_valid_mask"] + + outputs = session.run( + None, + { + "cat2_in": np.array([[3, 4, 5, 6], [6, 5, 4, 3]], dtype=np.int64), + "cat10_in": np.array([[3, 4, 5, 3], [5, 4, 3, 5]], dtype=np.int64), + "attention_valid_mask": np.ones( + (inference_batch_size, seq_length), dtype=np.bool_ + ), + }, + ) + + assert outputs[0].shape == (1, inference_batch_size, config.n_classes["cat2"]) From 34a3e7f416e1f262fafdc3b3e7f833a5f1978182 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 10 Jun 2026 17:41:06 +0200 Subject: [PATCH 26/81] Clean up for tests --- src/sequifier/infer.py | 101 --------------------------------------- tests/unit/test_infer.py | 66 ++++++------------------- 2 files changed, 14 insertions(+), 153 deletions(-) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 465103f0..b89002b6 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -18,7 +18,6 @@ configure_determinism, construct_index_maps, generate_padding_masks, - get_left_pad_lengths_from_preprocessed_data, normalize_path, numpy_to_pytorch, subset_to_input_columns, @@ -297,77 +296,6 @@ def calculate_item_positions( return repeated_bases + tiled_offsets -def _flatten_prediction_valid_mask( - metadata: Optional[dict[str, Any]], prediction_length: int -) -> Optional[np.ndarray]: - if metadata is None or "target_valid_mask" not in metadata: - return None - - mask = metadata["target_valid_mask"] - mask_np = mask.cpu().numpy() if isinstance(mask, torch.Tensor) else np.asarray(mask) - return mask_np[:, -prediction_length:].reshape(-1).astype(bool) - - -def _prediction_valid_mask_from_frame( - config: "InfererModel", data: pl.DataFrame, prediction_length: int -) -> Optional[np.ndarray]: - if config.training_objective != "bert": - return None - - left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) - if left_pad_lengths is None: - raise ValueError( - "BERT inference with full-sequence prediction requires leftPadLength metadata " - "so padded target positions can be filtered." - ) - - metadata = generate_padding_masks( - left_pad_lengths, - config.seq_length, - data_offset=1, - target_offset=1, - ) - return _flatten_prediction_valid_mask(metadata, prediction_length) - - -def _filter_outputs_to_valid_targets( - prediction_valid_mask: Optional[np.ndarray], - sequence_ids_for_preds: np.ndarray, - item_positions_for_preds: np.ndarray, - preds: dict[str, np.ndarray], - probs: Optional[dict[str, np.ndarray]], -) -> tuple[ - np.ndarray, np.ndarray, dict[str, np.ndarray], Optional[dict[str, np.ndarray]] -]: - if prediction_valid_mask is None: - return sequence_ids_for_preds, item_positions_for_preds, preds, probs - - if prediction_valid_mask.shape[0] != len(sequence_ids_for_preds): - raise ValueError( - "target_valid_mask length does not match prediction metadata length " - f"({prediction_valid_mask.shape[0]} != {len(sequence_ids_for_preds)})." - ) - - filtered_preds = { - target_column: np.asarray(values)[prediction_valid_mask] - for target_column, values in preds.items() - } - filtered_probs = ( - { - target_column: np.asarray(values)[prediction_valid_mask] - for target_column, values in probs.items() - } - if probs is not None - else None - ) - return ( - np.asarray(sequence_ids_for_preds)[prediction_valid_mask], - np.asarray(item_positions_for_preds)[prediction_valid_mask], - filtered_preds, - filtered_probs, - ) - - @beartype def infer_embedding( config: "InfererModel", @@ -574,7 +502,6 @@ def infer_generative( is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) ) - prediction_valid_mask = None if config.read_format in ["parquet", "csv"] and not is_folder_input: if config.input_columns is not None: @@ -594,9 +521,6 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length - prediction_valid_mask = _prediction_valid_mask_from_frame( - config, data, prediction_length - ) # Expand IDs to match model output shape sequence_ids_for_preds = np.repeat( @@ -646,9 +570,6 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length - prediction_valid_mask = _prediction_valid_mask_from_frame( - config, data, prediction_length - ) sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length @@ -709,15 +630,6 @@ def infer_generative( prediction_length = inferer.prediction_length # Get prediction_length if total_steps == 1: - if ( - config.training_objective == "bert" - and "target_valid_mask" not in metadata - ): - raise ValueError( - "BERT inference with full-sequence prediction requires target_valid_mask metadata " - "so padded target positions can be filtered." - ) - # Non-autoregressive path: Apply prediction_length logic sequence_ids_for_preds_base = sequence_ids_tensor.numpy() item_positions_base_raw = start_positions_tensor.numpy() @@ -725,9 +637,6 @@ def infer_generative( sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length ) - prediction_valid_mask = _flatten_prediction_valid_mask( - metadata, prediction_length - ) # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( @@ -765,16 +674,6 @@ def infer_generative( predictions, target_column ) - sequence_ids_for_preds, item_positions_for_preds, preds, probs = ( - _filter_outputs_to_valid_targets( - prediction_valid_mask, - sequence_ids_for_preds, - item_positions_for_preds, - preds, - probs, - ) - ) - os.makedirs( os.path.join(config.project_root, "outputs", "predictions"), exist_ok=True, diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index b349d073..6642ba9e 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -1,15 +1,13 @@ from unittest.mock import patch import numpy as np -import polars as pl import pytest import torch from sequifier.config.infer_config import InfererModel from sequifier.infer import ( Inferer, - _filter_outputs_to_valid_targets, - _prediction_valid_mask_from_frame, + calculate_item_positions, get_probs_preds_from_dict, normalize, sample_with_cumsum, @@ -266,62 +264,26 @@ def get_inputs(self): ) -def test_prediction_valid_mask_from_frame_requires_left_pad_length_for_bert(): - config = InfererModel( - project_root=".", - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type="generative", +def test_calculate_item_positions_bert_uses_full_input_window(): + positions = calculate_item_positions( + np.array([10, 20]), + seq_length=4, + prediction_length=4, training_objective="bert", - data_path="tests/unit/data/empty.parquet", - input_columns=["target_col"], - categorical_columns=[], - real_columns=["target_col"], - target_columns=["target_col"], - column_types={"target_col": "float64"}, - target_column_types={"target_col": "real"}, - seed=42, - device="cpu", - prediction_length=None, - seq_length=3, - inference_batch_size=2, - output_probabilities=False, - map_to_id=False, - autoregression=False, - ) - data = pl.DataFrame( - { - "sequenceId": [0], - "subsequenceId": [0], - "startItemPosition": [0], - "inputCol": ["target_col"], - "3": [0.0], - "2": [0.0], - "1": [1.0], - "0": [2.0], - } ) - assert config.prediction_length is not None - with pytest.raises(ValueError, match="leftPadLength"): - _prediction_valid_mask_from_frame(config, data, config.prediction_length) + np.testing.assert_array_equal(positions, [10, 11, 12, 13, 20, 21, 22, 23]) -def test_filter_outputs_to_valid_targets_filters_predictions_and_probabilities(): - mask = np.array([False, True, True, False]) - sequence_ids, positions, preds, probs = _filter_outputs_to_valid_targets( - mask, - np.array([10, 10, 11, 11]), - np.array([0, 1, 0, 1]), - {"target_col": np.array([1, 2, 3, 4])}, - {"target_col": np.array([[0.7, 0.3], [0.2, 0.8], [0.4, 0.6], [0.9, 0.1]])}, +def test_calculate_item_positions_causal_uses_future_window_tail(): + positions = calculate_item_positions( + np.array([10, 20]), + seq_length=4, + prediction_length=2, + training_objective="causal", ) - assert probs is not None - np.testing.assert_array_equal(sequence_ids, [10, 11]) - np.testing.assert_array_equal(positions, [1, 0]) - np.testing.assert_array_equal(preds["target_col"], [2, 3]) - np.testing.assert_array_equal(probs["target_col"], [[0.2, 0.8], [0.4, 0.6]]) + np.testing.assert_array_equal(positions, [13, 14, 23, 24]) # ========================================== From cc87def73e5075d6f981bf5618ca58d4b6604ad0 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 15:48:08 +0200 Subject: [PATCH 27/81] Address BERT shortcomings --- src/sequifier/config/infer_config.py | 10 +- src/sequifier/config/probabilities.py | 2 +- src/sequifier/config/train_config.py | 3 - src/sequifier/infer.py | 130 +++++++++++++++++++++ src/sequifier/preprocess.py | 7 +- src/sequifier/train.py | 7 +- tests/integration/test_inference.py | 80 ++++++++++++- tests/unit/test_infer.py | 160 ++++++++++++++++++++++++++ tests/unit/test_preprocess.py | 42 +++++++ tests/unit/test_train.py | 56 ++++++++- 10 files changed, 480 insertions(+), 17 deletions(-) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 668252b2..b89b54fb 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -146,11 +146,13 @@ class InfererModel(BaseModel): autoregression_total_steps: Optional[int] = Field(default=None) @model_validator(mode="after") - def validate_bert_prediction_length_matches_seq_length(self): + def normalize_prediction_length(self): + if self.prediction_length is None: + self.prediction_length = ( + self.seq_length if self.training_objective == "bert" else 1 + ) if self.training_objective == "bert": - if self.prediction_length is None: - self.prediction_length = self.seq_length - elif self.prediction_length != self.seq_length: + if self.prediction_length != self.seq_length: raise ValueError( "For BERT inference, prediction_length must be equal to seq_length " f"(got prediction_length={self.prediction_length}, seq_length={self.seq_length})." diff --git a/src/sequifier/config/probabilities.py b/src/sequifier/config/probabilities.py index d18a8de4..a7656f1e 100644 --- a/src/sequifier/config/probabilities.py +++ b/src/sequifier/config/probabilities.py @@ -67,7 +67,7 @@ class PoissonDistributionFloor(BaseModel, ProbabilityDistributionBaseClass): def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: m = torch.distributions.Poisson(rate=torch.tensor([self.rate], device=device)) - return m.sample(shape).squeeze(-1).long() + return m.sample(shape).squeeze(-1).long() + 1 ProbabilityDistribution = Annotated[ diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 2b1666f0..fd0dfa22 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -15,7 +15,6 @@ BaseModel, ConfigDict, Field, - computed_field, field_serializer, field_validator, model_validator, @@ -238,12 +237,10 @@ def __init__(self, **kwargs): def serialize_dotdict(self, value: DotDict) -> dict[str, Any]: return dict(value) - @computed_field @property def data_offset(self) -> int: return 1 - @computed_field @property def target_offset(self) -> int: return 0 if self.training_objective == "causal" else 1 diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index b89002b6..16a6c176 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -18,6 +18,7 @@ configure_determinism, construct_index_maps, generate_padding_masks, + get_left_pad_lengths_from_preprocessed_data, normalize_path, numpy_to_pytorch, subset_to_input_columns, @@ -296,6 +297,88 @@ def calculate_item_positions( return repeated_bases + tiled_offsets +@beartype +def _flatten_bert_target_valid_mask( + config: InfererModel, + metadata: Optional[dict[str, Any]], + prediction_length: int, +) -> Optional[np.ndarray]: + if config.training_objective != "bert" or not metadata: + return None + if "target_valid_mask" not in metadata: + return None + + valid_mask = metadata["target_valid_mask"] + if isinstance(valid_mask, torch.Tensor): + valid_mask = valid_mask.detach().cpu().numpy() + valid_mask = np.asarray(valid_mask, dtype=bool) + + if valid_mask.ndim != 2: + raise ValueError(f"target_valid_mask must be 2D, got shape {valid_mask.shape}.") + if valid_mask.shape[1] != prediction_length: + raise ValueError( + "target_valid_mask width must match prediction_length " + f"(got {valid_mask.shape[1]} and {prediction_length})." + ) + + return valid_mask.reshape(-1) + + +@beartype +def _bert_target_valid_mask_from_preprocessed_data( + config: InfererModel, + data: pl.DataFrame, + prediction_length: int, +) -> Optional[np.ndarray]: + if config.training_objective != "bert": + return None + + left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) + if left_pad_lengths is None: + return None + + metadata = generate_padding_masks( + left_pad_lengths, + config.seq_length, + data_offset=1, + target_offset=1, + ) + return _flatten_bert_target_valid_mask(config, metadata, prediction_length) + + +@beartype +def _apply_valid_prediction_mask( + values: np.ndarray, + valid_prediction_mask: Optional[np.ndarray], + label: str, +) -> np.ndarray: + values = np.asarray(values) + if valid_prediction_mask is None: + return values + if values.shape[0] != valid_prediction_mask.shape[0]: + raise ValueError( + f"{label} has {values.shape[0]} rows, but target_valid_mask has " + f"{valid_prediction_mask.shape[0]} rows." + ) + return values[valid_prediction_mask] + + +@beartype +def _apply_valid_prediction_mask_to_dict( + values: Optional[dict[str, np.ndarray]], + valid_prediction_mask: Optional[np.ndarray], + label: str, +) -> Optional[dict[str, np.ndarray]]: + if values is None: + return None + return { + key: _apply_valid_prediction_mask( + value, valid_prediction_mask, f"{label}.{key}" + ) + for key, value in values.items() + } + + @beartype def infer_embedding( config: "InfererModel", @@ -326,6 +409,7 @@ def infer_embedding( """ for data_id, data in enumerate(dataset): prediction_length = inferer.prediction_length + valid_prediction_mask = None # Step 1: Get embeddings and base position/ID data is_folder_input = os.path.isdir( @@ -343,6 +427,9 @@ def infer_embedding( mask = pl.arange(0, data.height, eager=True) % n_input_cols == 0 embeddings = get_embeddings(config, inferer, data, column_types) + valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + config, data, prediction_length + ) sequence_ids_for_preds = data.get_column("sequenceId").filter(mask) subsequence_ids_for_preds = data.get_column("subsequenceId").filter(mask) @@ -358,6 +445,9 @@ def infer_embedding( mask = pl.arange(0, data.height, eager=True) % n_input_cols == 0 embeddings = get_embeddings(config, inferer, data, column_types) + valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + config, data, prediction_length + ) sequence_ids_for_preds = ( data.get_column("sequenceId").filter(mask).to_numpy() @@ -389,6 +479,9 @@ def infer_embedding( embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata ) + valid_prediction_mask = _flatten_bert_target_valid_mask( + config, metadata, prediction_length + ) sequence_ids_for_preds = sequence_ids_tensor.numpy() subsequence_ids_for_preds = subsequence_ids_tensor.numpy() @@ -420,6 +513,18 @@ def infer_embedding( subsequence_ids_repeated = np.repeat( subsequence_ids_for_preds, prediction_length ) + embeddings = _apply_valid_prediction_mask( + embeddings, valid_prediction_mask, "embeddings" + ) + final_positions = _apply_valid_prediction_mask( + final_positions, valid_prediction_mask, "itemPosition" + ) + sequence_ids_repeated = _apply_valid_prediction_mask( + sequence_ids_repeated, valid_prediction_mask, "sequenceId" + ) + subsequence_ids_repeated = _apply_valid_prediction_mask( + subsequence_ids_repeated, valid_prediction_mask, "subsequenceId" + ) # Step 3: Build the final DataFrame embeddings_df = pl.DataFrame( @@ -498,6 +603,8 @@ def infer_generative( `torch.dtype`. """ for data_id, data in enumerate(dataset): + valid_prediction_mask = None + # Step 1: Adapt Data Subsetting (now works on Polars DF) is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) @@ -521,6 +628,9 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length + valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + config, data, prediction_length + ) # Expand IDs to match model output shape sequence_ids_for_preds = np.repeat( @@ -570,6 +680,9 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length + valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + config, data, prediction_length + ) sequence_ids_for_preds = np.repeat( sequence_ids_for_preds_base, prediction_length @@ -628,6 +741,9 @@ def infer_generative( ) prediction_length = inferer.prediction_length # Get prediction_length + valid_prediction_mask = _flatten_bert_target_valid_mask( + config, metadata, prediction_length + ) if total_steps == 1: # Non-autoregressive path: Apply prediction_length logic @@ -674,6 +790,19 @@ def infer_generative( predictions, target_column ) + sequence_ids_for_preds = _apply_valid_prediction_mask( + sequence_ids_for_preds, valid_prediction_mask, "sequenceId" + ) + item_positions_for_preds = _apply_valid_prediction_mask( + item_positions_for_preds, valid_prediction_mask, "itemPosition" + ) + preds = _apply_valid_prediction_mask_to_dict( + preds, valid_prediction_mask, "preds" + ) + probs = _apply_valid_prediction_mask_to_dict( + probs, valid_prediction_mask, "probs" + ) + os.makedirs( os.path.join(config.project_root, "outputs", "predictions"), exist_ok=True, @@ -723,6 +852,7 @@ def infer_generative( n_input_cols = len(config.input_columns) + assert preds is not None predictions = pl.DataFrame( { "sequenceId": sequence_ids_for_preds, diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 5888ada4..bfe486a1 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -936,12 +936,15 @@ def _selected_columns_with_optional_mask( selected_columns: Optional[list[str]], mask_column: Optional[str] = None, ) -> Optional[list[str]]: - if selected_columns is None or read_format != "parquet" or mask_column is None: + if selected_columns is None or mask_column is None: return selected_columns + if read_format != "parquet": + return _deduplicate_columns(selected_columns + [mask_column]) + schema_columns = pq.read_schema(data_path).names if mask_column in schema_columns: - return selected_columns + [mask_column] + return _deduplicate_columns(selected_columns + [mask_column]) return selected_columns diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 900fb027..c24a0ea7 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1712,8 +1712,13 @@ def _calculate_loss( if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") + categorical_target_columns = [ + target_name + for target_name in target_names + if self.target_column_types[target_name] == "categorical" + ] valid_mask = infer_valid_mask_from_data( - targets, self.categorical_columns, "target_valid_mask", metadata + targets, categorical_target_columns, "target_valid_mask", metadata ) if metadata is not None and "bert_mask" in metadata: diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 99f82f61..e668b1b5 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -4,6 +4,7 @@ import numpy as np import polars as pl +import torch TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} BERT_SEQ_LENGTH = 8 @@ -18,6 +19,63 @@ def _categorical_metadata(project_root): return json.load(f) +def _bert_inference_metadata(project_root): + data_path = os.path.join(project_root, "data", "test-data-categorical-1-split2") + contents = [] + for root, _, files in os.walk(data_path): + for file in sorted(files): + if not file.endswith(".pt"): + continue + + loaded = torch.load(os.path.join(root, file), weights_only=False) + if len(loaded) == 5: + _, sequence_ids, subsequence_ids, _, left_pad_lengths = loaded + else: + _, sequence_ids, subsequence_ids, _ = loaded + left_pad_lengths = None + + if left_pad_lengths is None: + left_pad_lengths = torch.zeros_like(sequence_ids) + + valid_counts = torch.clamp( + BERT_SEQ_LENGTH - left_pad_lengths, min=0, max=BERT_SEQ_LENGTH + ) + contents.append( + pl.DataFrame( + { + "sequenceId": sequence_ids.detach().cpu().numpy(), + "subsequenceId": subsequence_ids.detach().cpu().numpy(), + "valid_count": valid_counts.detach().cpu().numpy(), + } + ) + ) + + assert len(contents) > 0, f"no files found for {data_path}" + return pl.concat(contents, how="vertical") + + +def _expected_bert_valid_counts(project_root, group_columns): + metadata = _bert_inference_metadata(project_root) + + return ( + metadata.group_by(group_columns) + .agg(pl.col("valid_count").sum().alias("expected_len")) + .filter(pl.col("expected_len") > 0) + ) + + +def _assert_counts_match_expected(actual, expected, group_columns): + actual_keys = set(actual.select(group_columns).iter_rows()) + expected_keys = set(expected.select(group_columns).iter_rows()) + + assert actual_keys == expected_keys + + comparison = actual.join(expected, on=group_columns) + assert comparison.select( + (pl.col("len") == pl.col("expected_len")).all() + ).item(), comparison + + def test_predictions_real(predictions): for model_name, model_predictions in predictions.items(): if "categorical" not in model_name or "multitarget" in model_name: @@ -121,7 +179,12 @@ def test_bert_generative_predictions_default_to_seq_length( assert set(bert_predictions["itemId"].to_list()).issubset(valid_values) rows_per_sequence = bert_predictions.group_by("sequenceId").len() - assert (rows_per_sequence["len"] == BERT_SEQ_LENGTH).all(), rows_per_sequence + expected_rows_per_sequence = _expected_bert_valid_counts( + project_root, ["sequenceId"] + ) + _assert_counts_match_expected( + rows_per_sequence, expected_rows_per_sequence, ["sequenceId"] + ) def test_bert_probabilities(bert_predictions, bert_probabilities, project_root): @@ -172,7 +235,7 @@ def test_embeddings(embeddings): assert np.abs(model_embeddings[:, 1:].to_numpy().mean()) < 0.3 -def test_bert_embeddings(bert_predictions, bert_embeddings): +def test_bert_embeddings(bert_predictions, bert_embeddings, project_root): expected_embedding_cols = [str(i) for i in range(BERT_EMBEDDING_DIM)] expected_columns = ["sequenceId", "subsequenceId", "itemPosition"] @@ -184,8 +247,17 @@ def test_bert_embeddings(bert_predictions, bert_embeddings): embedding_values = bert_embeddings.select(expected_embedding_cols).to_numpy() assert np.isfinite(embedding_values).all() - rows_per_sequence = bert_embeddings.group_by("sequenceId").len() - assert (rows_per_sequence["len"] == BERT_SEQ_LENGTH).all(), rows_per_sequence + rows_per_subsequence = bert_embeddings.group_by( + ["sequenceId", "subsequenceId"] + ).len() + expected_rows_per_subsequence = _expected_bert_valid_counts( + project_root, ["sequenceId", "subsequenceId"] + ) + _assert_counts_match_expected( + rows_per_subsequence, + expected_rows_per_subsequence, + ["sequenceId", "subsequenceId"], + ) def test_bert_rejects_autoregression_end_to_end( diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 6642ba9e..1d370b26 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -1,6 +1,7 @@ from unittest.mock import patch import numpy as np +import polars as pl import pytest import torch @@ -9,6 +10,8 @@ Inferer, calculate_item_positions, get_probs_preds_from_dict, + infer_embedding, + infer_generative, normalize, sample_with_cumsum, ) @@ -178,6 +181,33 @@ def test_infer_config_defaults_bert_prediction_length_to_seq_length(): assert config.prediction_length == config.seq_length +def test_infer_config_defaults_causal_prediction_length_to_one(): + config = InfererModel( + project_root=".", + metadata_config_path="dummy.json", + model_path="dummy.onnx", + model_type="generative", + training_objective="causal", + data_path="tests/unit/data/empty.parquet", + input_columns=["target_col"], + categorical_columns=[], + real_columns=["target_col"], + target_columns=["target_col"], + column_types={"target_col": "float64"}, + target_column_types={"target_col": "real"}, + seed=42, + device="cpu", + prediction_length=None, + seq_length=3, + inference_batch_size=2, + output_probabilities=False, + map_to_id=False, + autoregression=False, + ) + + assert config.prediction_length == 1 + + def test_infer_config_rejects_bert_prediction_length_mismatch(): with pytest.raises(ValueError, match="prediction_length must be equal"): InfererModel( @@ -286,6 +316,136 @@ def test_calculate_item_positions_causal_uses_future_window_tail(): np.testing.assert_array_equal(positions, [13, 14, 23, 24]) +def _bert_inference_config(tmp_path, model_type="generative"): + data_path = tmp_path / "data.parquet" + data_path.touch() + + return InfererModel( + project_root=str(tmp_path), + metadata_config_path="dummy.json", + model_path="dummy.onnx", + model_type=model_type, + training_objective="bert", + data_path=str(data_path), + input_columns=["target_col"], + categorical_columns=["target_col"], + real_columns=[], + target_columns=["target_col"], + column_types={"target_col": "int64"}, + target_column_types={"target_col": "categorical"}, + seed=42, + device="cpu", + prediction_length=None, + seq_length=3, + inference_batch_size=4, + output_probabilities=False, + map_to_id=True, + autoregression=False, + ) + + +def _bert_preprocessed_frame(): + return pl.DataFrame( + { + "sequenceId": [7], + "subsequenceId": [0], + "startItemPosition": [100], + "leftPadLength": [2], + "inputCol": ["target_col"], + "3": [0], + "2": [0], + "1": [3], + "0": [4], + } + ) + + +def _mock_bert_inferer(config): + return Inferer( + model_type=config.model_type, + model_path=config.model_path, + project_root=config.project_root, + id_maps={"target_col": {"A": 3, "B": 4}}, + selected_columns_statistics={}, + map_to_id=config.map_to_id, + categorical_columns=config.categorical_columns, + real_columns=config.real_columns, + input_columns=config.input_columns, + target_columns=config.target_columns, + target_column_types=config.target_column_types, + sample_from_distribution_columns=config.sample_from_distribution_columns, + infer_with_dropout=config.infer_with_dropout, + prediction_length=config.prediction_length, + inference_batch_size=config.inference_batch_size, + device=config.device, + args_config={}, + training_config_path=config.training_config_path, + ) + + +def test_bert_generative_inference_filters_left_padded_positions(tmp_path): + config = _bert_inference_config(tmp_path) + config.output_probabilities = True + data = _bert_preprocessed_frame() + written = [] + + with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( + "sequifier.infer.load_inference_model" + ): + inferer = _mock_bert_inferer(config) + + def capture_write(dataframe, path, write_format): + written.append((path, dataframe, write_format)) + + probs = {"target_col": np.full((3, 5), 0.2)} + preds = {"target_col": np.array([3, 4, 3])} + with patch( + "sequifier.infer.get_probs_preds_from_df", return_value=(probs, preds) + ), patch("sequifier.infer.write_data", side_effect=capture_write): + infer_generative( + config, inferer, "bert-model", [data], {"target_col": torch.int64} + ) + + predictions = next(frame for path, frame, _ in written if "predictions" in path) + probabilities = next(frame for path, frame, _ in written if "probabilities" in path) + + assert predictions.height == 1 + assert predictions.get_column("sequenceId").to_list() == [7] + assert predictions.get_column("itemPosition").to_list() == [102] + assert predictions.get_column("target_col").to_list() == ["A"] + assert probabilities.height == 1 + + +def test_bert_embedding_inference_filters_left_padded_positions(tmp_path): + config = _bert_inference_config(tmp_path, model_type="embedding") + data = _bert_preprocessed_frame() + written = [] + + with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( + "sequifier.infer.load_inference_model" + ): + inferer = _mock_bert_inferer(config) + + def capture_write(dataframe, path, write_format): + written.append((path, dataframe, write_format)) + + embeddings = np.array([[0.1, 1.1], [0.2, 1.2], [0.3, 1.3]]) + with patch("sequifier.infer.get_embeddings", return_value=embeddings), patch( + "sequifier.infer.write_data", side_effect=capture_write + ): + infer_embedding( + config, inferer, "bert-model", [data], {"target_col": torch.int64} + ) + + embeddings_df = next(frame for _, frame, _ in written) + + assert embeddings_df.height == 1 + assert embeddings_df.get_column("sequenceId").to_list() == [7] + assert embeddings_df.get_column("subsequenceId").to_list() == [0] + assert embeddings_df.get_column("itemPosition").to_list() == [102] + assert embeddings_df.select(["0", "1"]).row(0) == (0.3, 1.3) + + # ========================================== # Test Autoregressive Tensor Inference # ========================================== diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index c7c736a7..a592e758 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -13,6 +13,7 @@ _apply_mask_column, _get_column_statistics, _get_data_columns, + _load_and_preprocess_data, create_id_map, extract_sequences, extract_subsequences, @@ -251,6 +252,47 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] +def test_load_and_preprocess_data_requests_mask_column_for_csv_projection(tmp_path): + data_path = tmp_path / "masked-input.csv" + captured_columns = None + + def projected_read_data(path, read_format, columns=None): + nonlocal captured_columns + captured_columns = columns + assert path == str(data_path) + assert read_format == "csv" + assert columns is not None + assert RESERVED_MASK_COLUMN in columns + return pl.DataFrame( + { + "sequenceId": [0], + "itemPosition": [0], + "itemId": ["a"], + "itemValue": [1.0], + RESERVED_MASK_COLUMN: [1], + } + ) + + with pytest.MonkeyPatch.context() as monkeypatch: + monkeypatch.setattr("sequifier.preprocess.read_data", projected_read_data) + data = _load_and_preprocess_data( + str(data_path), + "csv", + ["itemId", "itemValue"], + None, + RESERVED_MASK_COLUMN, + ) + + assert captured_columns == ["itemId", "itemValue", RESERVED_MASK_COLUMN] + assert data.columns == [ + "sequenceId", + "itemPosition", + "itemId", + "itemValue", + RESERVED_MASK_COLUMN, + ] + + def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): project_root = tmp_path / "project" project_root.mkdir() diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index ee5ae7ab..67d642f9 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -4,6 +4,7 @@ import torch from pydantic import ValidationError +from sequifier.config.probabilities import PoissonDistributionFloor from sequifier.config.train_config import ( BERTSpecModel, ModelSpecModel, @@ -65,6 +66,24 @@ def test_training_spec_model_rejects_bert_spec_for_causal_objective(): TrainingSpecModel(**_training_spec_kwargs(bert_spec=_bert_spec())) +def test_training_spec_model_dump_excludes_runtime_offsets(): + training_spec = TrainingSpecModel(**_training_spec_kwargs()) + + dumped = training_spec.model_dump() + + assert "data_offset" not in dumped + assert "target_offset" not in dumped + assert TrainingSpecModel(**dumped).target_offset == 0 + + +def test_poisson_span_masking_samples_at_least_one_token(): + distribution = PoissonDistributionFloor(rate=0.1) + + samples = distribution.sample((1000,), device=torch.device("cpu")) + + assert samples.min().item() >= 1 + + @pytest.fixture def model_config(tmp_path): """Creates a valid TrainModel configuration for testing.""" @@ -138,8 +157,13 @@ def causal_model(model_config): @pytest.fixture def bert_model(model_config): - config = copy.deepcopy(model_config) - config.training_spec.training_objective = "bert" + config_values = model_config.model_dump() + config_values["model_spec"]["prediction_length"] = model_config.seq_length + config_values["training_spec"] = _training_spec_kwargs( + training_objective="bert", + bert_spec=_bert_spec(), + ) + config = TrainModel(**config_values) return TransformerModel(config) @@ -302,6 +326,34 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): assert torch.isclose(component_losses["real_col"], torch.tensor(2.0)) +def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): + model = TransformerModel.__new__(TransformerModel) + model.target_column_types = {"real_target": "real"} + model.criterion = {"real_target": torch.nn.MSELoss(reduction="none")} + model.loss_weights = None + model.categorical_columns = ["context_cat"] + outputs = { + "real_target": torch.tensor( + [ + [[10.0]], + [[20.0]], + [[3.0]], + ] + ) + } + targets = { + "real_target": torch.tensor([[0.0, 0.0, 2.0]]), + } + + with pytest.warns(UserWarning): + total_loss, component_losses = TransformerModel._calculate_loss( + model, outputs, targets + ) + + assert torch.isclose(total_loss, torch.tensor(1.0)) + assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) + + def test_infer_valid_mask_from_data(): model = TransformerModel.__new__(TransformerModel) model.categorical_columns = [] From c9f0514606b7668fe439e0d220245c3fd362a3df Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 16:17:52 +0200 Subject: [PATCH 28/81] infer bert valid column --- src/sequifier/infer.py | 108 +++++++++++++++++++++++++++++++++++---- tests/unit/test_infer.py | 73 ++++++++++++++++++++++++++ 2 files changed, 171 insertions(+), 10 deletions(-) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 16a6c176..6cd28bc3 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -18,7 +18,6 @@ configure_determinism, construct_index_maps, generate_padding_masks, - get_left_pad_lengths_from_preprocessed_data, normalize_path, numpy_to_pytorch, subset_to_input_columns, @@ -324,6 +323,70 @@ def _flatten_bert_target_valid_mask( return valid_mask.reshape(-1) +@beartype +def _is_categorical_column(config: InfererModel, column_name: str) -> bool: + column_type = str(config.column_types.get(column_name, "")).lower() + return ( + column_name in config.categorical_columns + or config.target_column_types.get(column_name) == "categorical" + or column_type.startswith("int") + ) + + +@beartype +def _infer_bert_valid_mask_from_values( + config: InfererModel, + column_name: str, + values: np.ndarray, + prediction_length: int, +) -> Optional[np.ndarray]: + if _is_categorical_column(config, column_name): + valid_mask = values != 0 + else: + valid_mask = np.cumsum(values != 0.0, axis=1) > 0 + + return _flatten_bert_target_valid_mask( + config, {"target_valid_mask": valid_mask}, prediction_length + ) + + +@beartype +def _bert_reference_column(config: InfererModel, data_columns: set[str]) -> str: + preferred_columns = ( + [col for col in config.target_columns if col in config.categorical_columns] + + [col for col in config.input_columns if col in config.categorical_columns] + + [col for col in config.target_columns if col in data_columns] + + [col for col in config.input_columns if col in data_columns] + ) + for column_name in preferred_columns: + if column_name in data_columns: + return column_name + + raise ValueError("Could not find a reference column for BERT valid-mask inference.") + + +@beartype +def _flatten_legacy_bert_target_valid_mask_from_sequences( + config: InfererModel, + sequences: dict[str, Union[torch.Tensor, np.ndarray]], + prediction_length: int, +) -> Optional[np.ndarray]: + if config.training_objective != "bert": + return None + + column_name = _bert_reference_column(config, set(sequences.keys())) + values = sequences[column_name] + if isinstance(values, torch.Tensor): + values = values.detach().cpu().numpy() # type: ignore + values = np.asarray(values) + if values.ndim == 2 and values.shape[1] > prediction_length: + values = values[:, :prediction_length] + + return _infer_bert_valid_mask_from_values( + config, column_name, values, prediction_length + ) + + @beartype def _bert_target_valid_mask_from_preprocessed_data( config: InfererModel, @@ -333,17 +396,30 @@ def _bert_target_valid_mask_from_preprocessed_data( if config.training_objective != "bert": return None - left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) - if left_pad_lengths is None: - return None + data_columns = set(data.get_column("inputCol").unique()) + column_name = _bert_reference_column(config, data_columns) + reference_rows = data.filter(pl.col("inputCol") == column_name) - metadata = generate_padding_masks( - left_pad_lengths, - config.seq_length, - data_offset=1, - target_offset=1, + if "leftPadLength" in reference_rows.columns: + left_pad_lengths = torch.tensor( + reference_rows.get_column("leftPadLength").to_numpy(), dtype=torch.int64 + ) + metadata = generate_padding_masks( + left_pad_lengths, + config.seq_length, + data_offset=1, + target_offset=1, + ) + return _flatten_bert_target_valid_mask(config, metadata, prediction_length) + + target_seq_cols = [ + str(c) + for c in range(config.seq_length, config.seq_length - prediction_length, -1) + ] + values = reference_rows.select(target_seq_cols).to_numpy() + return _infer_bert_valid_mask_from_values( + config, column_name, values, prediction_length ) - return _flatten_bert_target_valid_mask(config, metadata, prediction_length) @beartype @@ -482,6 +558,12 @@ def infer_embedding( valid_prediction_mask = _flatten_bert_target_valid_mask( config, metadata, prediction_length ) + if valid_prediction_mask is None: + valid_prediction_mask = ( + _flatten_legacy_bert_target_valid_mask_from_sequences( + config, sequences_dict, prediction_length + ) + ) sequence_ids_for_preds = sequence_ids_tensor.numpy() subsequence_ids_for_preds = subsequence_ids_tensor.numpy() @@ -744,6 +826,12 @@ def infer_generative( valid_prediction_mask = _flatten_bert_target_valid_mask( config, metadata, prediction_length ) + if valid_prediction_mask is None: + valid_prediction_mask = ( + _flatten_legacy_bert_target_valid_mask_from_sequences( + config, sequences_dict, prediction_length + ) + ) if total_steps == 1: # Non-autoregressive path: Apply prediction_length logic diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 1d370b26..d858fbe5 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -360,6 +360,22 @@ def _bert_preprocessed_frame(): ) +def _bert_preprocessed_frame_out_of_order(): + return pl.DataFrame( + { + "sequenceId": [2, 1], + "subsequenceId": [0, 0], + "startItemPosition": [200, 100], + "leftPadLength": [1, 2], + "inputCol": ["target_col", "target_col"], + "3": [0, 0], + "2": [3, 0], + "1": [4, 3], + "0": [3, 4], + } + ) + + def _mock_bert_inferer(config): return Inferer( model_type=config.model_type, @@ -416,6 +432,63 @@ def capture_write(dataframe, path, write_format): assert probabilities.height == 1 +def test_bert_generative_inference_uses_dataframe_order_for_padding_masks(tmp_path): + config = _bert_inference_config(tmp_path) + data = _bert_preprocessed_frame_out_of_order() + written = [] + + with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( + "sequifier.infer.load_inference_model" + ): + inferer = _mock_bert_inferer(config) + + def capture_write(dataframe, path, write_format): + written.append((path, dataframe, write_format)) + + preds = {"target_col": np.array([3, 4, 3, 4, 3, 4])} + with patch( + "sequifier.infer.get_probs_preds_from_df", return_value=(None, preds) + ), patch("sequifier.infer.write_data", side_effect=capture_write): + infer_generative( + config, inferer, "bert-model", [data], {"target_col": torch.int64} + ) + + predictions = next(frame for path, frame, _ in written if "predictions" in path) + + assert predictions.get_column("sequenceId").to_list() == [2, 2, 1] + assert predictions.get_column("itemPosition").to_list() == [201, 202, 102] + assert predictions.get_column("target_col").to_list() == ["B", "A", "B"] + + +def test_bert_generative_inference_filters_legacy_data_without_left_pad(tmp_path): + config = _bert_inference_config(tmp_path) + data = _bert_preprocessed_frame().drop("leftPadLength") + written = [] + + with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( + "sequifier.infer.load_inference_model" + ): + inferer = _mock_bert_inferer(config) + + def capture_write(dataframe, path, write_format): + written.append((path, dataframe, write_format)) + + preds = {"target_col": np.array([3, 4, 3])} + with patch( + "sequifier.infer.get_probs_preds_from_df", return_value=(None, preds) + ), patch("sequifier.infer.write_data", side_effect=capture_write): + infer_generative( + config, inferer, "bert-model", [data], {"target_col": torch.int64} + ) + + predictions = next(frame for path, frame, _ in written if "predictions" in path) + + assert predictions.height == 1 + assert predictions.get_column("sequenceId").to_list() == [7] + assert predictions.get_column("itemPosition").to_list() == [102] + assert predictions.get_column("target_col").to_list() == ["A"] + + def test_bert_embedding_inference_filters_left_padded_positions(tmp_path): config = _bert_inference_config(tmp_path, model_type="embedding") data = _bert_preprocessed_frame() From 6c593f566dbdf1b6d2265a88f7d7acbd8cc53efc Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 16:42:55 +0200 Subject: [PATCH 29/81] Small fixes --- src/sequifier/helpers.py | 2 +- src/sequifier/preprocess.py | 20 +++----------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 85f46d41..3bff44fe 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -93,7 +93,7 @@ def construct_index_maps( A special mapping for these indices are added: - If original IDs are strings, 0 maps to "[unknown]". - If original IDs are strings, 1 maps to "[other]". - - If original IDs are strings, 2 maps to "[unknown]". + - If original IDs are strings, 2 maps to "[mask]". - If original IDs are integers, 0 maps to (minimum original ID) - 3. - If original IDs are integers, 1 maps to (minimum original ID) - 2. - If original IDs are integers, 2 maps to (minimum original ID) - 1. diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index bfe486a1..bb5de7c0 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -952,27 +952,13 @@ def _selected_columns_with_optional_mask( def _mask_column_expr(mask_dtype: Any, mask_column: str) -> pl.Expr: mask_col = pl.col(mask_column) - if isinstance(mask_dtype, pl.Boolean): + if mask_dtype == pl.Boolean: return mask_col - if isinstance( - mask_dtype, - ( - pl.Int8, - pl.Int16, - pl.Int32, - pl.Int64, - pl.UInt8, - pl.UInt16, - pl.UInt32, - pl.UInt64, - pl.Float32, - pl.Float64, - ), - ): + if mask_dtype.is_numeric(): return mask_col == 1 - if isinstance(mask_dtype, (pl.String, pl.Utf8)): + if mask_dtype in (pl.String, pl.Utf8): return mask_col.str.to_lowercase().is_in(["1"]) raise ValueError( From 2e8c2a423f66f8b413defcaebd020b6a3d631376 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 18:02:28 +0200 Subject: [PATCH 30/81] Clean up internal abstractions --- src/sequifier/config/probabilities.py | 8 +- src/sequifier/config/train_config.py | 7 + src/sequifier/helpers.py | 33 +- src/sequifier/io/batch.py | 21 + .../io/sequifier_dataset_from_file.py | 27 +- .../sequifier_dataset_from_folder_parquet.py | 19 +- ...uifier_dataset_from_folder_parquet_lazy.py | 31 +- .../io/sequifier_dataset_from_folder_pt.py | 19 +- .../sequifier_dataset_from_folder_pt_lazy.py | 31 +- src/sequifier/preprocess.py | 95 +++-- src/sequifier/special_tokens.py | 29 ++ src/sequifier/train.py | 44 +- tests/integration/test_preprocessing.py | 6 + ...est-data-categorical-precomputed-stats.csv | 402 +++++++++--------- tests/unit/test_helpers.py | 10 +- tests/unit/test_preprocess.py | 35 ++ 16 files changed, 473 insertions(+), 344 deletions(-) create mode 100644 src/sequifier/io/batch.py create mode 100644 src/sequifier/special_tokens.py diff --git a/src/sequifier/config/probabilities.py b/src/sequifier/config/probabilities.py index a7656f1e..231dd6a1 100644 --- a/src/sequifier/config/probabilities.py +++ b/src/sequifier/config/probabilities.py @@ -43,11 +43,11 @@ def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: return torch.clamp(torch.round(val), min=0).long() + 1 -class LogNormalDistributionDistcretizedFloor( +class LogNormalDistributionDiscretizedFloor( BaseModel, ProbabilityDistributionBaseClass ): - type: Literal["LogNormalDistributionDistcretizedFloor"] = ( - "LogNormalDistributionDistcretizedFloor" + type: Literal["LogNormalDistributionDiscretizedFloor",] = ( + "LogNormalDistributionDiscretizedFloor" ) mean: float standard_deviation: float = Field(..., gt=0.0) @@ -74,7 +74,7 @@ def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: Union[ GeometricDistribution, NormalDistributionDiscretizedFloor, - LogNormalDistributionDistcretizedFloor, + LogNormalDistributionDiscretizedFloor, PoissonDistributionFloor, ], Field(discriminator="type"), diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index fd0dfa22..1a7f8078 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -23,6 +23,7 @@ import sequifier from sequifier.config.probabilities import ProbabilityDistribution from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.special_tokens import SPECIAL_TOKEN_IDS AnyType = str | int | float @@ -97,6 +98,9 @@ def load_train_config( ) config_values["id_maps"] = metadata_config["id_maps"] + config_values["special_token_ids"] = metadata_config.get( + "special_token_ids", SPECIAL_TOKEN_IDS.ids_by_label + ) return try_catch_excess_keys(config_path, TrainModel, config_values) @@ -553,6 +557,9 @@ class TrainModel(BaseModel): target_columns: list[str] target_column_types: dict[str, str] id_maps: dict[str, dict[str | int, int]] + special_token_ids: dict[str, int] = Field( + default_factory=lambda: SPECIAL_TOKEN_IDS.ids_by_label + ) seq_length: int n_classes: dict[str, int] diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 3bff44fe..3f463757 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -15,6 +15,8 @@ from pydantic import ValidationError from torch import Tensor +from sequifier.special_tokens import SPECIAL_TOKEN_IDS + PANDAS_TO_TORCH_TYPES = { "Float64": torch.float32, "float64": torch.float32, @@ -90,13 +92,8 @@ def construct_index_maps( the original string or integer identifiers. It only performs this operation if `map_to_id` is True and `id_maps` is provided. - A special mapping for these indices are added: - - If original IDs are strings, 0 maps to "[unknown]". - - If original IDs are strings, 1 maps to "[other]". - - If original IDs are strings, 2 maps to "[mask]". - - If original IDs are integers, 0 maps to (minimum original ID) - 3. - - If original IDs are integers, 1 maps to (minimum original ID) - 2. - - If original IDs are integers, 2 maps to (minimum original ID) - 1. + Special reserved IDs are always decoded as their sentinel labels: + 0 maps to "[unknown]", 1 maps to "[other]", and 2 maps to "[mask]". Args: id_maps: A nested dictionary mapping column names to their @@ -126,17 +123,11 @@ def construct_index_maps( for target_column in target_columns_index_map: map_ = {v: k for k, v in id_maps[target_column].items()} val = next(iter(map_.values())) - if isinstance(val, str): - map_[0] = "[unknown]" - map_[1] = "[other]" - map_[2] = "[mask]" - else: - if not isinstance(val, int): - raise TypeError(f"Expected integer ID in map, got {type(val)}") - min_id = int(min(map_.values())) - map_[0] = min_id - 3 # type: ignore - map_[1] = min_id - 2 # type: ignore - map_[2] = min_id - 1 # type: ignore + if not isinstance(val, (str, int)): + raise TypeError( + f"Expected string or integer ID in map, got {type(val)}" + ) + map_.update(SPECIAL_TOKEN_IDS.labels_by_id) index_map[target_column] = map_ return index_map @@ -738,17 +729,15 @@ def apply_bert_masking( # 5. Apply corruption to data_batch for col, tensor in data_batch.items(): if col in config.categorical_columns: - mask_id = 2 - random_tokens = torch.randint( - low=3, + low=SPECIAL_TOKEN_IDS.user_start, high=config.n_classes[col], size=(batch_size, seq_len), device=device, dtype=tensor.dtype, ) - tensor[mask_token_mask] = mask_id + tensor[mask_token_mask] = SPECIAL_TOKEN_IDS.mask tensor[random_token_mask] = random_tokens[random_token_mask] elif col in config.real_columns: diff --git a/src/sequifier/io/batch.py b/src/sequifier/io/batch.py new file mode 100644 index 00000000..ba2d7330 --- /dev/null +++ b/src/sequifier/io/batch.py @@ -0,0 +1,21 @@ +from dataclasses import dataclass +from typing import Iterator, Optional + +import torch + + +@dataclass(frozen=True) +class SequifierBatch: + inputs: dict[str, torch.Tensor] + targets: dict[str, torch.Tensor] + metadata: dict[str, torch.Tensor] + sequence_ids: Optional[torch.Tensor] = None + subsequence_ids: Optional[torch.Tensor] = None + start_positions: Optional[torch.Tensor] = None + + def __iter__(self) -> Iterator[object]: + yield self.inputs + yield self.targets + yield self.metadata + yield self.sequence_ids + yield self.subsequence_ids diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index ffc7d2aa..87203d2e 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -1,5 +1,5 @@ import math -from typing import Dict, Iterator, Tuple +from typing import Iterator import torch import torch.distributed as dist @@ -8,6 +8,7 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import PANDAS_TO_TORCH_TYPES, numpy_to_pytorch, read_data +from sequifier.io.batch import SequifierBatch class SequifierDatasetFromFile(IterableDataset): @@ -84,28 +85,14 @@ def __len__(self) -> int: def __iter__( self, - ) -> Iterator[ - Tuple[ - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - None, - None, - ] - ]: + ) -> Iterator[SequifierBatch]: """Yields batches of data. Handles shuffling (if enabled) and slicing data based on distributed rank and worker ID. Yields: - Iterator[Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]]: - An iterator where each item is a tuple containing: - - data_batch (dict): Dictionary of feature tensors for the batch. - - targets_batch (dict): Dictionary of target tensors for the batch. - - metadata_batch (dict): Dictionary of metadata tensors for the batch. - - None: Placeholder for sequence_id (not used in this dataset type). - - None: Placeholder for subsequence_id (not used in this dataset type). + An iterator where each item is a SequifierBatch. """ worker_info = torch.utils.data.get_worker_info() world_size = dist.get_world_size() if dist.is_initialized() else 1 @@ -150,4 +137,8 @@ def __iter__( for key, tensor in self.metadata_tensors.items() } - yield data_batch, targets_batch, metadata_batch, None, None + yield SequifierBatch( + inputs=data_batch, + targets=targets_batch, + metadata=metadata_batch, + ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 99e58efc..2d2cae63 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -1,7 +1,7 @@ import json import math import os -from typing import Dict, Iterator, Tuple +from typing import Dict, Iterator import polars as pl import torch @@ -16,6 +16,7 @@ get_left_pad_lengths_from_preprocessed_data, normalize_path, ) +from sequifier.io.batch import SequifierBatch class SequifierDatasetFromFolderParquet(IterableDataset): @@ -182,15 +183,7 @@ def __len__(self) -> int: def __iter__( self, - ) -> Iterator[ - Tuple[ - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - None, - None, - ] - ]: + ) -> Iterator[SequifierBatch]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -243,4 +236,8 @@ def __iter__( self.config.training_spec.target_offset, ) - yield data_batch, targets_batch, metadata_batch, None, None + yield SequifierBatch( + inputs=data_batch, + targets=targets_batch, + metadata=metadata_batch, + ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index f4120cc3..c922d88c 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -1,7 +1,7 @@ import json import math import os -from typing import Dict, Iterator, Tuple +from typing import Dict, Iterator import numpy as np import polars as pl @@ -17,6 +17,7 @@ get_left_pad_lengths_from_preprocessed_data, normalize_path, ) +from sequifier.io.batch import SequifierBatch class SequifierDatasetFromFolderParquetLazy(IterableDataset): @@ -34,9 +35,9 @@ class SequifierDatasetFromFolderParquetLazy(IterableDataset): sample indices per epoch. Defaults to True. Yields: - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]: - A batch tuple containing sequence dictionaries, target dictionaries, - metadata dictionaries, and two `None` placeholders (for API compatibility). + SequifierBatch: + A named batch containing sequence dictionaries, target dictionaries, + metadata dictionaries, and optional identifiers. Raises: FileNotFoundError: If `metadata.json` is missing. @@ -155,15 +156,7 @@ def __len__(self) -> int: def __iter__( self, - ) -> Iterator[ - Tuple[ - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - None, - None, - ] - ]: + ) -> Iterator[SequifierBatch]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -366,7 +359,11 @@ def __iter__( batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, batch_meta, None, None + yield SequifierBatch( + inputs=batch_seq, + targets=batch_tgt, + metadata=batch_meta, + ) yielded_samples += self.batch_size # Keep the remainder in the buffer for the next loop/file @@ -384,4 +381,8 @@ def __iter__( batch_tgt = {k: v[:final_yield_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[:final_yield_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, batch_meta, None, None + yield SequifierBatch( + inputs=batch_seq, + targets=batch_tgt, + metadata=batch_meta, + ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 85a5d258..f689ac73 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -1,7 +1,7 @@ import json import math import os -from typing import Dict, Iterator, Tuple +from typing import Dict, Iterator import torch import torch.distributed as dist @@ -14,6 +14,7 @@ normalize_path, unpack_preprocessed_pt_tuple, ) +from sequifier.io.batch import SequifierBatch class SequifierDatasetFromFolderPt(IterableDataset): @@ -132,15 +133,7 @@ def __len__(self) -> int: def __iter__( self, - ) -> Iterator[ - Tuple[ - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - None, - None, - ] - ]: + ) -> Iterator[SequifierBatch]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -208,4 +201,8 @@ def __iter__( target_offset, ) - yield data_batch, targets_batch, metadata_batch, None, None + yield SequifierBatch( + inputs=data_batch, + targets=targets_batch, + metadata=metadata_batch, + ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 41d5f115..37d7940f 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -1,7 +1,7 @@ import json import math import os -from typing import Dict, Iterator, Tuple +from typing import Dict, Iterator import numpy as np import torch @@ -15,6 +15,7 @@ normalize_path, unpack_preprocessed_pt_tuple, ) +from sequifier.io.batch import SequifierBatch class SequifierDatasetFromFolderPtLazy(IterableDataset): @@ -32,9 +33,9 @@ class SequifierDatasetFromFolderPtLazy(IterableDataset): sample indices per epoch. Defaults to True. Yields: - Tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor], None, None]: - A batch tuple containing sequence dictionaries, target dictionaries, - metadata dictionaries, and two `None` placeholders (for API compatibility). + SequifierBatch: + A named batch containing sequence dictionaries, target dictionaries, + metadata dictionaries, and optional identifiers. Raises: FileNotFoundError: If `metadata.json` is missing. @@ -148,15 +149,7 @@ def __len__(self) -> int: def __iter__( self, - ) -> Iterator[ - Tuple[ - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - Dict[str, torch.Tensor], - None, - None, - ] - ]: + ) -> Iterator[SequifierBatch]: world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -331,7 +324,11 @@ def __iter__( batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, batch_meta, None, None + yield SequifierBatch( + inputs=batch_seq, + targets=batch_tgt, + metadata=batch_meta, + ) yielded_samples += self.batch_size # Keep the remainder in the buffer for the next loop/file @@ -349,4 +346,8 @@ def __iter__( batch_tgt = {k: v[:final_yield_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[:final_yield_size] for k, v in meta_buffer.items()} - yield batch_seq, batch_tgt, batch_meta, None, None + yield SequifierBatch( + inputs=batch_seq, + targets=batch_tgt, + metadata=batch_meta, + ) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index bb5de7c0..46747d4a 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -22,12 +22,14 @@ unpack_preprocessed_pt_tuple, write_data, ) +from sequifier.special_tokens import ( + SPECIAL_TOKEN_ID_VALUES, + SPECIAL_TOKEN_IDS, + SPECIAL_TOKEN_LABELS, +) INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") -CATEGORICAL_MASK_ID = 2 REAL_MASK_VALUE = 0.0 -RESERVED_ID_KEYS = {"[unknown]", "[other]", "[mask]"} -RESERVED_ID_VALUES = {0, 1, 2} @beartype @@ -812,6 +814,7 @@ def _export_metadata( data_driven_config = { "n_classes": n_classes, "id_maps": id_maps, + "special_token_ids": SPECIAL_TOKEN_IDS.ids_by_label, "split_paths": [ os.path.splitext(split_path)[0] if not self.merge_output else split_path for split_path in self.split_paths @@ -945,7 +948,7 @@ def _selected_columns_with_optional_mask( schema_columns = pq.read_schema(data_path).names if mask_column in schema_columns: return _deduplicate_columns(selected_columns + [mask_column]) - return selected_columns + raise ValueError(f"mask_column '{mask_column}' not found in {data_path}") @beartype @@ -973,14 +976,16 @@ def _apply_mask_column( col_types: dict[str, str], mask_column: Optional[str] = None, ) -> pl.DataFrame: - if mask_column is None or mask_column not in data.columns: + if mask_column is None: return data + if mask_column not in data.columns: + raise ValueError(f"mask_column '{mask_column}' not found in input data") mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) updates = [] for col in data_columns: mask_value = ( - CATEGORICAL_MASK_ID if col_types[col] == "Int64" else REAL_MASK_VALUE + SPECIAL_TOKEN_IDS.mask if col_types[col] == "Int64" else REAL_MASK_VALUE ) updates.append( pl.when(mask_expr) @@ -1108,18 +1113,19 @@ def load_precomputed_id_maps( if not len(m) > 0: raise ValueError(f"map in {file} does not contain any values") - for reserved_key, expected_value in { - "[unknown]": 0, - "[other]": 1, - "[mask]": 2, - }.items(): + for ( + reserved_key, + expected_value, + ) in SPECIAL_TOKEN_IDS.ids_by_label.items(): if reserved_key in m and m[reserved_key] != expected_value: raise ValueError( f"{reserved_key} in map {file} must map to {expected_value}" ) user_values = [ - value for key, value in m.items() if key not in RESERVED_ID_KEYS + value + for key, value in m.items() + if key not in SPECIAL_TOKEN_LABELS ] if not user_values: raise ValueError( @@ -1134,24 +1140,25 @@ def load_precomputed_id_maps( ) m = { key: value + 1 - if key not in RESERVED_ID_KEYS and value >= 2 + if key not in SPECIAL_TOKEN_LABELS + and value >= SPECIAL_TOKEN_IDS.mask else value for key, value in m.items() } user_values = [ value for key, value in m.items() - if key not in RESERVED_ID_KEYS + if key not in SPECIAL_TOKEN_LABELS ] min_val = min(user_values) - if min_val != 3: + if min_val != SPECIAL_TOKEN_IDS.user_start: raise ValueError( - f"minimum non-reserved value in map {file} is {min_val}, must be 3." + f"minimum non-reserved value in map {file} is {min_val}, must be {SPECIAL_TOKEN_IDS.user_start}." ) - if any(value in RESERVED_ID_VALUES for value in user_values): + if any(value in SPECIAL_TOKEN_ID_VALUES for value in user_values): raise ValueError( - f"non-reserved values in map {file} must not use reserved IDs {RESERVED_ID_VALUES}" + f"non-reserved values in map {file} must not use reserved IDs {SPECIAL_TOKEN_ID_VALUES}" ) if len(set(m.values())) != len(m.values()): raise ValueError(f"map in {file} contains duplicate IDs") @@ -1311,6 +1318,9 @@ def _load_and_preprocess_data( ) data = read_data(data_path, read_format, columns=columns_to_read) + if mask_column is not None and mask_column not in data.columns: + raise ValueError(f"mask_column '{mask_column}' not found in {data_path}") + if data.null_count().sum().sum_horizontal().item() != 0: raise ValueError(f"NaN or null values not accepted: {data.null_count()}") @@ -1682,20 +1692,37 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] ) # type: ignore if isinstance(ids[0], str): - if "[mask]" in ids: - raise ValueError(f"Found value '[mask]' in {column}, this is invalid") + if SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.mask] in ids: + raise ValueError( + f"Found value '{SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.mask]}' in {column}, this is invalid" + ) - for special_val in ["[unknown]", "[other]"]: + for special_val in [ + SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.unknown], + SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.other], + ]: if special_val in ids: warnings.warn( f"Found special value {special_val} in {column}, these will be combined with the sequifier-internal special value {special_val}" ) - ids = [id_ for id_ in ids if id_ not in ["[unknown]", "[other]"]] - id_map = {id_: i + 3 for i, id_ in enumerate(ids)} - id_map["[unknown]"] = 0 - id_map["[other]"] = 1 + ids = [ + id_ + for id_ in ids + if id_ + not in [ + SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.unknown], + SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.other], + ] + ] + id_map = {id_: i + SPECIAL_TOKEN_IDS.user_start for i, id_ in enumerate(ids)} + id_map[SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.unknown]] = ( + SPECIAL_TOKEN_IDS.unknown + ) + id_map[SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.other]] = ( + SPECIAL_TOKEN_IDS.other + ) else: - id_map = {id_: i + 3 for i, id_ in enumerate(ids)} + id_map = {id_: i + SPECIAL_TOKEN_IDS.user_start for i, id_ in enumerate(ids)} return dict(id_map) @@ -1762,16 +1789,22 @@ def combine_maps( Returns: A new, combined, and re-indexed ID map. """ - keys1 = {k for k in map1.keys() if k not in ["[unknown]", "[other]", "[mask]"]} - keys2 = {k for k in map2.keys() if k not in ["[unknown]", "[other]", "[mask]"]} + keys1 = {k for k in map1.keys() if k not in SPECIAL_TOKEN_LABELS} + keys2 = {k for k in map2.keys() if k not in SPECIAL_TOKEN_LABELS} combined_keys = sorted(list(keys1.union(keys2))) - id_map = {id_: i + 3 for i, id_ in enumerate(combined_keys)} + id_map = { + id_: i + SPECIAL_TOKEN_IDS.user_start for i, id_ in enumerate(combined_keys) + } # Re-apply special mapping rules if these are string keys if combined_keys and isinstance(combined_keys[0], str): - id_map["[unknown]"] = 0 - id_map["[other]"] = 1 + id_map[SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.unknown]] = ( + SPECIAL_TOKEN_IDS.unknown + ) + id_map[SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.other]] = ( + SPECIAL_TOKEN_IDS.other + ) return id_map diff --git a/src/sequifier/special_tokens.py b/src/sequifier/special_tokens.py new file mode 100644 index 00000000..9f1cd4ba --- /dev/null +++ b/src/sequifier/special_tokens.py @@ -0,0 +1,29 @@ +from dataclasses import asdict, dataclass + + +@dataclass(frozen=True) +class SpecialTokenIds: + unknown: int = 0 + other: int = 1 + mask: int = 2 + + @property + def user_start(self) -> int: + return max(asdict(self).values()) + 1 + + @property + def labels_by_id(self) -> dict[int, str]: + return { + self.unknown: "[unknown]", + self.other: "[other]", + self.mask: "[mask]", + } + + @property + def ids_by_label(self) -> dict[str, int]: + return {label: id_ for id_, label in self.labels_by_id.items()} + + +SPECIAL_TOKEN_IDS = SpecialTokenIds() +SPECIAL_TOKEN_LABELS = frozenset(SPECIAL_TOKEN_IDS.ids_by_label.keys()) +SPECIAL_TOKEN_ID_VALUES = frozenset(SPECIAL_TOKEN_IDS.labels_by_id.keys()) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index c24a0ea7..b3f0b284 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -64,6 +64,7 @@ infer_valid_mask_from_data, normalize_path, ) +from sequifier.io.batch import SequifierBatch # noqa: E402 from sequifier.io.sequifier_dataset_from_file import ( # noqa: E402 SequifierDatasetFromFile, ) @@ -83,6 +84,20 @@ from sequifier.optimizers.optimizers import get_optimizer_class # noqa: E402 +def _as_sequifier_batch(batch: Any) -> SequifierBatch: + if isinstance(batch, SequifierBatch): + return batch + + data, targets, metadata, sequence_ids, subsequence_ids = batch + return SequifierBatch( + inputs=data, + targets=targets, + metadata=metadata or {}, + sequence_ids=sequence_ids, + subsequence_ids=subsequence_ids, + ) + + def cleanup(): """Cleans up the distributed training environment.""" dist.destroy_process_group() @@ -1496,9 +1511,7 @@ def _train_epoch( Iterates through the training DataLoader, computes loss, performs backpropagation, and updates model parameters. The DataLoader is expected - to yield tuples of - (sequences_dict, targets_dict, metadata_dict, sequence_ids, subsequence_ids). - The IDs are currently unused in this training loop. + to yield SequifierBatch objects. IDs are currently unused in this loop. Args: train_loader: DataLoader for the training dataset. @@ -1516,8 +1529,12 @@ def _train_epoch( model_to_call.train() - for batch_count, (data, targets, metadata, _, _) in enumerate(train_loader): + for batch_count, raw_batch in enumerate(train_loader): + batch = _as_sequifier_batch(raw_batch) if batch_count >= start_batch: + data = batch.inputs + targets = batch.targets + metadata = batch.metadata data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() @@ -1828,10 +1845,9 @@ def _evaluate( Iterates through the validation data, calculates the total loss, and aggregates results across all processes if in distributed mode. - Also calculates a one-time baseline loss on the first call. - The DataLoader is expected to yield tuples of - (sequences_dict, targets_dict, metadata_dict, sequence_ids, subsequence_ids). - The IDs are currently unused during evaluation. + Also calculates a one-time baseline loss on the first call. The + DataLoader is expected to yield SequifierBatch objects. IDs are + currently unused during evaluation. Args: valid_loader: DataLoader for the validation dataset. @@ -1854,7 +1870,11 @@ def _evaluate( model_to_call.eval() with torch.no_grad(): - for data, targets, metadata, _, _ in valid_loader: + for raw_batch in valid_loader: + batch = _as_sequifier_batch(raw_batch) + data = batch.inputs + targets = batch.targets + metadata = batch.metadata # Move data to the current process's assigned GPU data = { k: v.to(self.device, non_blocking=True) @@ -1954,7 +1974,11 @@ def _evaluate( baseline_losses_local_collect = {col: [] for col in self.target_columns} # Iterate over the sharded validation loader - for data, targets, metadata, _, _ in valid_loader: + for raw_batch in valid_loader: + batch = _as_sequifier_batch(raw_batch) + data = batch.inputs + targets = batch.targets + metadata = batch.metadata data = { k: v.to(self.device, non_blocking=True) for k, v in data.items() diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index cdd42c52..95061cf3 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -32,12 +32,18 @@ def test_metadata_config(metadata_configs): [ "n_classes", "id_maps", + "special_token_ids", "split_paths", "column_types", "selected_columns_statistics", ] ) ), list(metadata_config.keys()) + assert metadata_config["special_token_ids"] == { + "[unknown]": 0, + "[other]": 1, + "[mask]": 2, + } assert metadata_config["split_paths"][0].endswith( "split0.parquet" diff --git a/tests/resources/source_data/test-data-categorical-precomputed-stats.csv b/tests/resources/source_data/test-data-categorical-precomputed-stats.csv index 02a630c2..734bd449 100644 --- a/tests/resources/source_data/test-data-categorical-precomputed-stats.csv +++ b/tests/resources/source_data/test-data-categorical-precomputed-stats.csv @@ -1,201 +1,201 @@ -sequenceId,itemPosition,itemId,supCat1,supReal2,supReal3,supCat4 -0,0,113,3,0.23756075956718,-1.1640173812934225,3 -0,1,105,9,-0.5630867234310606,-1.8178494433325032,1 -0,2,129,7,-0.6081001558815576,-1.0308743424505562,1 -0,3,121,9,-0.7466738515871298,-1.759307333132087,1 -0,4,109,3,-0.4835408143281817,-0.1893670050382644,3 -0,5,111,7,0.14757929805884176,1.146907612603052,1 -0,6,121,9,-0.4128405939888088,-1.3452711173264285,1 -0,7,109,3,-0.13133273866941814,1.4676755703847157,1 -0,8,127,5,0.6564099027980262,0.8247687731058516,1 -0,9,113,3,-0.08622570845242584,2.0005516149382276,3 -0,10,105,5,0.4992279385752224,-3.358606755136373,1 -0,11,103,9,0.4120884761752859,1.0384301395677145,1 -0,12,119,3,0.5762410188436872,-0.1369896760325402,3 -0,13,103,1,-0.22661438614011545,-2.025340358480932,1 -0,14,105,7,0.37034788642948163,0.9196011438572373,3 -0,15,121,7,-0.1523339501381893,4.457098431914344,1 -0,16,107,1,-0.0490514356525169,3.161523505159044,3 -0,17,129,5,-0.1693437999308125,2.054921627292583,1 -0,18,129,7,-0.2963164638064198,1.4211553800634344,3 -0,19,117,9,-0.43418074401427853,1.4000470430791148,1 -0,20,107,3,-0.11119720264051855,-0.2842816816898542,3 -0,21,103,9,0.1119258339375208,1.5342499637561926,1 -0,22,119,7,-0.2397209205593547,0.568539328380014,1 -0,23,105,9,-0.1043511841935035,1.073596528818807,1 -0,24,101,5,0.0636689964273863,1.8286076605291732,1 -1,25,113,9,-0.13283334035174255,0.9612448513077018,1 -1,26,117,1,-0.4877130507537292,0.5881920065149198,1 -1,27,105,5,-1.0319853596529749,2.4266792951807745,1 -1,28,113,7,0.36599244564499156,-0.8458755927714368,1 -1,29,109,1,-0.04541393204777325,1.1332991030875792,3 -1,30,119,5,0.14270870818902634,1.2019717678164248,1 -1,31,103,3,0.1007341413628698,3.4185328489051545,1 -1,32,103,1,0.0726528173264286,0.6798517808089142,1 -1,33,121,7,0.4047583876998109,-0.215857840126759,1 -1,34,105,3,0.7950212886366006,1.258841265676203,3 -1,35,111,1,-0.40894101251224185,2.9266389229634195,1 -1,36,111,7,-0.5905624213594342,1.1007581452294355,1 -1,37,103,5,-0.27605549137493063,0.4576222503937258,3 -1,38,103,7,0.19748743112184536,3.089575720800873,1 -1,39,121,1,-0.3231988066797896,0.3260653118807056,3 -1,40,109,7,-0.6402978908699791,-2.3652965225104947,1 -1,41,101,9,0.2754450193286252,-0.3343460991871334,1 -1,42,111,1,0.04265434446667645,-0.0265267517674288,1 -1,43,127,3,-0.1093848556929905,-1.4039708736281316,3 -1,44,105,1,-0.3098861853313818,4.277223053793332,1 -1,45,115,7,-0.5623720760818156,-0.9282928823756458,3 -1,46,105,5,-0.0362778238543955,-0.785870762785741,1 -2,47,113,3,0.6699513286275102,3.756180727360066,1 -2,48,125,5,-0.0121909350376935,1.0632670323412912,1 -2,49,121,1,-0.4985428652715131,-2.767024017505266,3 -2,50,125,9,-0.41674804550372435,-1.8232361265594708,1 -2,51,129,7,0.1922800647827131,0.3614326479800766,1 -2,52,103,3,-0.1147113810473422,0.6955419567131546,1 -2,53,119,7,0.5084886555692772,-1.182177344128451,1 -2,54,119,5,0.1681706731512443,-2.0002345186543655,1 -2,55,111,1,0.00489090849851505,-1.2119677670104652,1 -2,56,103,3,0.2950952608133617,0.7392696815922633,1 -2,57,121,9,-0.1664963816784592,-4.3184593675736345,1 -2,58,109,5,0.2734968675602151,0.2317458237066366,1 -2,59,101,7,0.7193973857758358,1.020369498449154,3 -2,60,103,5,-0.7964210408690493,-2.0363883178208826,1 -2,61,111,9,0.2072449425144576,-4.202452168223529,3 -2,62,107,9,0.4813276271478582,-0.5282806781620062,1 -2,63,103,5,0.29694766144249257,2.252849978564028,1 -2,64,111,5,-0.34264442506928156,-0.5576317791480824,1 -2,65,109,5,-0.901152134284954,-0.7768569166101674,1 -2,66,115,3,-0.00647098093573455,-1.939123138639253,1 -3,67,123,9,0.3640480787779695,3.15721060624824,1 -3,68,129,5,0.3578139552426438,-0.9705160338846076,1 -3,69,101,1,0.6773419994294364,2.623083513295643,1 -3,70,117,3,-0.6161806906782396,-1.8750394780263255,1 -3,71,121,1,-0.02179363892395065,-2.986785300875957,1 -3,72,127,9,0.2742262667237867,3.33396269826164,1 -3,73,123,5,0.653923817402728,0.8431916125568506,1 -3,74,113,5,-1.309266107419916,3.2749345537056085,3 -3,75,127,7,-0.4248256569891429,0.5290052043252962,1 -3,76,115,9,-0.3760627852144511,1.5052140738898157,1 -3,77,117,1,-1.063352767838854,0.4364134544435038,1 -3,78,103,5,0.43763228075223376,0.5460770179634292,3 -3,79,121,7,0.17808332843594354,-2.3590410762810787,3 -3,80,109,7,-0.2604307066744918,-0.600994152922156,1 -3,81,127,9,0.06496062311791385,-1.6810104306763307,3 -3,82,117,7,-0.1523655063137391,1.4713636745100194,3 -3,83,103,5,0.9557698802026362,-0.4777913312818128,1 -3,84,121,1,-0.4283939310570219,3.286310865387594,3 -3,85,119,9,0.4683163969196768,1.0639713340534525,1 -3,86,105,5,0.05918350344033825,-4.265334468962421,1 -4,87,113,5,-0.07365771506054584,-3.2085100052938498,1 -4,88,127,3,-0.6528270195518846,-1.199488174092495,1 -4,89,105,7,1.5137471671937042,-0.1041592978187344,1 -4,90,105,9,0.18086471642780114,-0.176760115308051,1 -4,91,107,9,-0.22268250180214355,-1.6668522895897546,1 -4,92,119,1,0.31414268525117434,2.700642938436344,3 -4,93,113,1,0.4821281052755843,-1.9984526206862492,1 -4,94,123,1,-0.41654505373555256,-1.5270811322998106,3 -4,95,105,1,0.3990717968896191,-1.3333943830007091,3 -4,96,121,7,0.39975842804009404,-7.460240076256136,3 -4,97,119,9,-0.2389382834262071,-3.6036268736043153,1 -4,98,127,1,0.8865821752236414,-5.933173903688966,1 -4,99,121,9,0.6200500637175907,1.9526039321781257,1 -4,100,103,7,-0.3086399573460153,-3.868319973856011,1 -4,101,117,1,0.3763432482016413,0.0230803370202396,1 -4,102,115,7,-0.19610200435266445,-3.5946735502342606,1 -5,103,121,5,0.6582222235652958,-1.1565601648186674,1 -5,104,123,5,0.210010355223184,-0.3700868001061204,1 -5,105,127,1,0.44609895345157075,-0.466451727035951,1 -5,106,105,5,0.21395314818454306,-3.079000434320467,1 -5,107,113,7,-0.09045776647608085,-2.21295241292887,1 -5,108,109,5,0.26679432858260427,-4.258487041288806,1 -5,109,123,9,-0.3912608511206187,0.9536287033277712,1 -5,110,109,7,-0.6648528537220284,-0.3446684601197502,1 -5,111,129,9,-0.4949563299989164,-1.2691154528617874,3 -5,112,123,1,-0.6120796408055832,-2.7176268721322505,1 -5,113,117,7,-0.8040575605720383,-2.230618406212464,1 -5,114,123,3,0.34466826874757156,3.320167025422368,1 -5,115,109,3,0.6592255898925946,1.1963021486138496,1 -5,116,113,1,0.1265463872076663,0.3524305338372076,3 -5,117,127,9,-0.36090671060617907,0.1991192313196762,1 -5,118,121,9,-0.00346023525880035,-0.269946254030518,3 -6,119,127,1,-0.2069274087283918,-1.4983857095036925,1 -6,120,119,9,-0.4608668090772096,4.141066849383603,3 -6,121,127,5,-0.543241871075917,-1.429667411117142,1 -6,122,103,3,0.7371442736167835,0.3262826938556598,1 -6,123,113,7,0.7937790994016082,2.054537435734958,1 -6,124,119,5,-0.9494328754610578,3.7617736489864257,3 -6,125,103,3,-0.2025407208280338,0.8874555973490652,3 -6,126,127,1,0.4363248490262944,0.2481060743864992,1 -6,127,129,5,0.9112368560642352,0.8419542731986736,3 -6,128,113,5,0.1646877914705859,1.2879311306352885,1 -6,129,111,7,0.5676868132357109,-0.1265805632469282,1 -6,130,117,9,-1.044462070351678,1.5747984413324092,3 -6,131,125,9,0.5888200685806166,0.3311529110566518,3 -6,132,101,3,0.1550655289088061,-1.087772015925998,1 -6,133,119,5,0.02448451869814495,-2.7168204655897465,1 -6,134,117,5,-0.5612827926145505,-0.3608931971219676,1 -6,135,103,7,-0.06895955594486534,2.0089156749900283,1 -6,136,111,5,0.2386687846790385,1.5074623202579414,3 -6,137,109,7,-0.0103767345335778,1.1682437308875186,1 -6,138,125,5,0.4674416024517608,-1.4452965786865868,1 -6,139,107,9,-0.402113804564477,-1.1143202352937496,1 -7,140,111,9,0.07159698573628046,0.0845048113931306,3 -7,141,113,3,-0.23027849149205426,-0.8651366428920254,1 -7,142,113,7,-0.5276752352570413,1.6931263448599303,1 -7,143,113,1,0.36030134407682074,0.5742417223803036,3 -7,144,113,9,-0.8591185434489855,-1.573618378735019,1 -7,145,121,1,0.2637783382546025,-3.863689604625783,1 -7,146,101,5,0.7364946010807949,1.6783637541403809,1 -7,147,129,7,-0.5029781169022207,0.0039304229456184,1 -7,148,101,5,0.8152784745739302,2.1903743861120266,1 -7,149,125,7,1.2736852756936394,-2.0417356426375637,1 -7,150,119,9,1.016662275589319,-0.2309438830049552,1 -7,151,121,7,0.2021641470325514,-1.7414085189195898,3 -7,152,127,9,0.2095640210815988,0.1915711997670132,1 -7,153,121,1,-0.7793534531754494,0.3583296644699246,1 -7,154,129,1,-0.39154291689852044,0.1297020398076264,1 -7,155,113,9,0.0685599894350678,0.4323507757122852,1 -7,156,111,3,0.7749898540861211,2.0689152027698867,1 -8,157,101,7,0.909287892921888,-3.989987895098015,3 -8,158,119,5,0.0591576225354796,-2.0688934315523086,1 -8,159,103,5,0.38263311649619963,-2.003805618784399,1 -8,160,113,7,0.7843252853779198,-1.1533873434116515,3 -8,161,105,7,0.06279078494571524,-1.8773457835545853,3 -8,162,111,9,0.2169085162118607,-2.033257200716173,1 -8,163,125,7,0.724906768076498,2.5248601944100124,1 -8,164,109,9,0.43106360552415107,-1.0569306831210186,1 -8,165,119,5,0.1617027306762413,2.323383376870655,1 -8,166,125,3,0.25320441824075834,-0.930273413013715,1 -8,167,109,1,0.7456736036850744,0.598252461847501,1 -8,168,121,9,0.5118838476588286,-0.110896649044434,1 -8,169,111,5,-0.7218907289288162,1.198758968337366,1 -8,170,121,5,-0.6157395896817728,0.7802693999604342,1 -8,171,115,5,0.38369214592817863,1.4790116390747352,3 -8,172,107,9,0.8423963059206273,-0.5237249538681794,3 -8,173,101,3,0.22574490676417786,-0.8904664351067142,1 -8,174,111,7,0.7851195032274458,1.5226194800279191,1 -8,175,107,9,-0.7116886776940682,-4.5883589812374606,3 -8,176,109,5,-0.41740781716411335,0.6369119820796147,1 -8,177,115,1,0.82150802012012,-1.6210202504559137,1 -8,178,103,7,0.29659052088695614,-0.8867954709909982,3 -8,179,127,3,0.1466956467187299,-0.4310364763509028,1 -8,180,115,3,0.5223660767025526,3.348885082673797,3 -9,181,129,1,0.3090525876709156,-2.7416777723376646,1 -9,182,121,1,-0.21520439985795284,0.6307442663117814,1 -9,183,103,5,0.21220901158898275,-1.8188459028762447,3 -9,184,117,5,-0.02897385433854525,-1.440215891320799,1 -9,185,123,7,0.19749026974006945,-0.779497479448969,1 -9,186,101,7,-0.8052615487503672,-1.4344762234821997,1 -9,187,129,1,-1.121699959433816,0.4896249408465866,1 -9,188,103,7,0.4649808838118618,-0.198806681337086,1 -9,189,123,7,-0.7073291167356331,-3.043576509789646,1 -9,190,111,5,-0.3740773149679098,0.8608798093746408,1 -9,191,123,7,0.4989177413451416,1.6835410358613347,1 -9,192,107,5,-0.6634732155934616,-0.3061356639836578,3 -9,193,123,3,-0.7887391302965693,-1.3438864368895593,3 -9,194,103,9,-0.04733828356775615,3.656344892439264,1 -9,195,129,9,-0.5213560739887506,-2.4135537875363897,1 -9,196,107,7,-0.43137296420290955,-2.2356462270857462,1 -9,197,109,3,0.04976548623382745,1.2900131060668418,1 -9,198,119,5,-0.285600783170167,5.764139626487539,1 -9,199,129,5,-0.5218301693993399,-1.1335640211899563,1 +sequenceId,itemPosition,itemId,supCat1,supReal2,supReal3,supCat4,[mask] +0,0,113,3,0.23756075956718,-1.1640173812934225,3,0 +0,1,105,9,-0.5630867234310606,-1.8178494433325032,1,0 +0,2,129,7,-0.6081001558815576,-1.0308743424505562,1,0 +0,3,121,9,-0.7466738515871298,-1.759307333132087,1,0 +0,4,109,3,-0.4835408143281817,-0.1893670050382644,3,0 +0,5,111,7,0.1475792980588417,1.146907612603052,1,0 +0,6,121,9,-0.4128405939888088,-1.3452711173264285,1,0 +0,7,109,3,-0.1313327386694181,1.4676755703847155,1,0 +0,8,127,5,0.6564099027980262,0.8247687731058516,1,0 +0,9,113,3,-0.0862257084524258,2.0005516149382276,3,0 +0,10,105,5,0.4992279385752224,-3.358606755136373,1,0 +0,11,103,9,0.4120884761752859,1.0384301395677145,1,0 +0,12,119,3,0.5762410188436872,-0.1369896760325402,3,0 +0,13,103,1,-0.2266143861401154,-2.025340358480932,1,0 +0,14,105,7,0.3703478864294816,0.9196011438572372,3,0 +0,15,121,7,-0.1523339501381893,4.457098431914344,1,0 +0,16,107,1,-0.0490514356525169,3.161523505159044,3,0 +0,17,129,5,-0.1693437999308125,2.054921627292583,1,0 +0,18,129,7,-0.2963164638064198,1.4211553800634344,3,0 +0,19,117,9,-0.4341807440142785,1.4000470430791148,1,0 +0,20,107,3,-0.1111972026405185,-0.2842816816898542,3,0 +0,21,103,9,0.1119258339375208,1.5342499637561926,1,0 +0,22,119,7,-0.2397209205593547,0.568539328380014,1,0 +0,23,105,9,-0.1043511841935035,1.073596528818807,1,0 +0,24,101,5,0.0636689964273863,1.8286076605291732,1,0 +1,25,113,9,-0.1328333403517425,0.9612448513077018,1,0 +1,26,117,1,-0.4877130507537292,0.5881920065149198,1,0 +1,27,105,5,-1.0319853596529749,2.4266792951807745,1,0 +1,28,113,7,0.3659924456449915,-0.8458755927714368,1,0 +1,29,109,1,-0.0454139320477732,1.1332991030875792,3,0 +1,30,119,5,0.1427087081890263,1.2019717678164248,1,0 +1,31,103,3,0.1007341413628698,3.4185328489051545,1,0 +1,32,103,1,0.0726528173264286,0.6798517808089142,1,0 +1,33,121,7,0.4047583876998109,-0.215857840126759,1,0 +1,34,105,3,0.7950212886366006,1.258841265676203,3,0 +1,35,111,1,-0.4089410125122418,2.9266389229634195,1,0 +1,36,111,7,-0.5905624213594342,1.1007581452294355,1,0 +1,37,103,5,-0.2760554913749306,0.4576222503937258,3,0 +1,38,103,7,0.1974874311218453,3.089575720800873,1,0 +1,39,121,1,-0.3231988066797896,0.3260653118807056,3,0 +1,40,109,7,-0.6402978908699791,-2.3652965225104947,1,0 +1,41,101,9,0.2754450193286252,-0.3343460991871334,1,0 +1,42,111,1,0.0426543444666764,-0.0265267517674288,1,0 +1,43,127,3,-0.1093848556929905,-1.4039708736281316,3,0 +1,44,105,1,-0.3098861853313818,4.277223053793332,1,0 +1,45,115,7,-0.5623720760818156,-0.9282928823756458,3,0 +1,46,105,5,-0.0362778238543955,-0.785870762785741,1,0 +2,47,113,3,0.6699513286275102,3.756180727360066,1,0 +2,48,125,5,-0.0121909350376935,1.0632670323412912,1,0 +2,49,121,1,-0.4985428652715131,-2.767024017505266,3,0 +2,50,125,9,-0.4167480455037243,-1.8232361265594708,1,0 +2,51,129,7,0.1922800647827131,0.3614326479800766,1,0 +2,52,103,3,-0.1147113810473422,0.6955419567131546,1,0 +2,53,119,7,0.5084886555692772,-1.182177344128451,1,0 +2,54,119,5,0.1681706731512443,-2.0002345186543655,1,0 +2,55,111,1,0.004890908498515,-1.2119677670104652,1,0 +2,56,103,3,0.2950952608133617,0.7392696815922633,1,0 +2,57,121,9,-0.1664963816784592,-4.3184593675736345,1,0 +2,58,109,5,0.2734968675602151,0.2317458237066366,1,0 +2,59,101,7,0.7193973857758358,1.020369498449154,3,0 +2,60,103,5,-0.7964210408690493,-2.0363883178208826,1,0 +2,61,111,9,0.2072449425144576,-4.202452168223529,3,0 +2,62,107,9,0.4813276271478582,-0.5282806781620062,1,0 +2,63,103,5,0.2969476614424925,2.252849978564028,1,0 +2,64,111,5,-0.3426444250692815,-0.5576317791480824,1,0 +2,65,109,5,-0.901152134284954,-0.7768569166101674,1,0 +2,66,115,3,-0.0064709809357345,-1.939123138639253,1,0 +3,67,123,9,0.3640480787779695,3.15721060624824,1,0 +3,68,129,5,0.3578139552426438,-0.9705160338846076,1,0 +3,69,101,1,0.6773419994294364,2.623083513295643,1,0 +3,70,117,3,-0.6161806906782396,-1.8750394780263255,1,0 +3,71,121,1,-0.0217936389239506,-2.986785300875957,1,0 +3,72,127,9,0.2742262667237867,3.33396269826164,1,0 +3,73,123,5,0.653923817402728,0.8431916125568506,1,0 +3,74,113,5,-1.309266107419916,3.2749345537056085,3,0 +3,75,127,7,-0.4248256569891429,0.5290052043252962,1,0 +3,76,115,9,-0.3760627852144511,1.5052140738898157,1,0 +3,77,117,1,-1.063352767838854,0.4364134544435038,1,0 +3,78,103,5,0.4376322807522337,0.5460770179634292,3,0 +3,79,121,7,0.1780833284359435,-2.3590410762810787,3,0 +3,80,109,7,-0.2604307066744918,-0.600994152922156,1,0 +3,81,127,9,0.0649606231179138,-1.6810104306763307,3,0 +3,82,117,7,-0.1523655063137391,1.4713636745100194,3,0 +3,83,103,5,0.9557698802026362,-0.4777913312818128,1,0 +3,84,121,1,-0.4283939310570219,3.286310865387594,3,0 +3,85,119,9,0.4683163969196768,1.0639713340534525,1,0 +3,86,105,5,0.0591835034403382,-4.265334468962421,1,0 +4,87,113,5,-0.0736577150605458,-3.2085100052938498,1,0 +4,88,127,3,-0.6528270195518846,-1.199488174092495,1,0 +4,89,105,7,1.5137471671937042,-0.1041592978187344,1,0 +4,90,105,9,0.1808647164278011,-0.176760115308051,1,0 +4,91,107,9,-0.2226825018021435,-1.6668522895897546,1,0 +4,92,119,1,0.3141426852511743,2.700642938436344,3,0 +4,93,113,1,0.4821281052755843,-1.9984526206862492,1,0 +4,94,123,1,-0.4165450537355525,-1.5270811322998106,3,0 +4,95,105,1,0.3990717968896191,-1.3333943830007091,3,0 +4,96,121,7,0.399758428040094,-7.460240076256136,3,0 +4,97,119,9,-0.2389382834262071,-3.6036268736043153,1,0 +4,98,127,1,0.8865821752236414,-5.933173903688966,1,0 +4,99,121,9,0.6200500637175907,1.9526039321781257,1,0 +4,100,103,7,-0.3086399573460153,-3.868319973856011,1,0 +4,101,117,1,0.3763432482016413,0.0230803370202396,1,0 +4,102,115,7,-0.1961020043526644,-3.5946735502342606,1,0 +5,103,121,5,0.6582222235652958,-1.1565601648186674,1,0 +5,104,123,5,0.210010355223184,-0.3700868001061204,1,0 +5,105,127,1,0.4460989534515707,-0.466451727035951,1,0 +5,106,105,5,0.213953148184543,-3.079000434320467,1,0 +5,107,113,7,-0.0904577664760808,-2.21295241292887,1,0 +5,108,109,5,0.2667943285826042,-4.258487041288806,1,0 +5,109,123,9,-0.3912608511206187,0.9536287033277712,1,0 +5,110,109,7,-0.6648528537220284,-0.3446684601197502,1,0 +5,111,129,9,-0.4949563299989164,-1.2691154528617874,3,0 +5,112,123,1,-0.6120796408055832,-2.7176268721322505,1,0 +5,113,117,7,-0.8040575605720383,-2.230618406212464,1,0 +5,114,123,3,0.3446682687475715,3.320167025422368,1,0 +5,115,109,3,0.6592255898925946,1.1963021486138496,1,0 +5,116,113,1,0.1265463872076663,0.3524305338372076,3,0 +5,117,127,9,-0.360906710606179,0.1991192313196762,1,0 +5,118,121,9,-0.0034602352588003,-0.269946254030518,3,0 +6,119,127,1,-0.2069274087283918,-1.4983857095036923,1,0 +6,120,119,9,-0.4608668090772096,4.141066849383603,3,0 +6,121,127,5,-0.543241871075917,-1.429667411117142,1,0 +6,122,103,3,0.7371442736167835,0.3262826938556598,1,0 +6,123,113,7,0.7937790994016082,2.054537435734958,1,0 +6,124,119,5,-0.9494328754610578,3.7617736489864257,3,0 +6,125,103,3,-0.2025407208280338,0.8874555973490652,3,0 +6,126,127,1,0.4363248490262944,0.2481060743864992,1,0 +6,127,129,5,0.9112368560642352,0.8419542731986736,3,0 +6,128,113,5,0.1646877914705859,1.2879311306352883,1,0 +6,129,111,7,0.5676868132357109,-0.1265805632469282,1,0 +6,130,117,9,-1.044462070351678,1.5747984413324092,3,0 +6,131,125,9,0.5888200685806166,0.3311529110566518,3,0 +6,132,101,3,0.1550655289088061,-1.087772015925998,1,0 +6,133,119,5,0.0244845186981449,-2.7168204655897465,1,0 +6,134,117,5,-0.5612827926145505,-0.3608931971219676,1,0 +6,135,103,7,-0.0689595559448653,2.0089156749900283,1,0 +6,136,111,5,0.2386687846790385,1.5074623202579414,3,0 +6,137,109,7,-0.0103767345335778,1.1682437308875186,1,0 +6,138,125,5,0.4674416024517608,-1.4452965786865868,1,0 +6,139,107,9,-0.402113804564477,-1.1143202352937496,1,0 +7,140,111,9,0.0715969857362804,0.0845048113931306,3,0 +7,141,113,3,-0.2302784914920542,-0.8651366428920254,1,0 +7,142,113,7,-0.5276752352570413,1.6931263448599303,1,0 +7,143,113,1,0.3603013440768207,0.5742417223803036,3,0 +7,144,113,9,-0.8591185434489855,-1.573618378735019,1,0 +7,145,121,1,0.2637783382546025,-3.863689604625783,1,0 +7,146,101,5,0.7364946010807949,1.6783637541403809,1,0 +7,147,129,7,-0.5029781169022207,0.0039304229456184,1,0 +7,148,101,5,0.8152784745739302,2.1903743861120266,1,0 +7,149,125,7,1.2736852756936394,-2.0417356426375637,1,0 +7,150,119,9,1.016662275589319,-0.2309438830049552,1,0 +7,151,121,7,0.2021641470325514,-1.7414085189195898,3,0 +7,152,127,9,0.2095640210815988,0.1915711997670132,1,0 +7,153,121,1,-0.7793534531754494,0.3583296644699246,1,0 +7,154,129,1,-0.3915429168985204,0.1297020398076264,1,0 +7,155,113,9,0.0685599894350678,0.4323507757122852,1,0 +7,156,111,3,0.7749898540861211,2.0689152027698867,1,0 +8,157,101,7,0.909287892921888,-3.989987895098015,3,0 +8,158,119,5,0.0591576225354796,-2.0688934315523086,1,0 +8,159,103,5,0.3826331164961996,-2.003805618784399,1,0 +8,160,113,7,0.7843252853779198,-1.1533873434116515,3,0 +8,161,105,7,0.0627907849457152,-1.8773457835545853,3,0 +8,162,111,9,0.2169085162118607,-2.033257200716173,1,0 +8,163,125,7,0.724906768076498,2.5248601944100124,1,0 +8,164,109,9,0.431063605524151,-1.0569306831210186,1,0 +8,165,119,5,0.1617027306762413,2.323383376870655,1,0 +8,166,125,3,0.2532044182407583,-0.930273413013715,1,0 +8,167,109,1,0.7456736036850744,0.598252461847501,1,0 +8,168,121,9,0.5118838476588286,-0.110896649044434,1,0 +8,169,111,5,-0.7218907289288162,1.198758968337366,1,0 +8,170,121,5,-0.6157395896817728,0.7802693999604342,1,0 +8,171,115,5,0.3836921459281786,1.4790116390747352,3,0 +8,172,107,9,0.8423963059206273,-0.5237249538681794,3,0 +8,173,101,3,0.2257449067641778,-0.8904664351067142,1,0 +8,174,111,7,0.7851195032274458,1.5226194800279191,1,0 +8,175,107,9,-0.7116886776940682,-4.5883589812374606,3,0 +8,176,109,5,-0.4174078171641133,0.6369119820796147,1,0 +8,177,115,1,0.82150802012012,-1.6210202504559137,1,0 +8,178,103,7,0.2965905208869561,-0.8867954709909982,3,0 +8,179,127,3,0.1466956467187299,-0.4310364763509028,1,0 +8,180,115,3,0.5223660767025526,3.348885082673797,3,0 +9,181,129,1,0.3090525876709156,-2.7416777723376646,1,0 +9,182,121,1,-0.2152043998579528,0.6307442663117814,1,0 +9,183,103,5,0.2122090115889827,-1.8188459028762447,3,0 +9,184,117,5,-0.0289738543385452,-1.440215891320799,1,0 +9,185,123,7,0.1974902697400694,-0.779497479448969,1,0 +9,186,101,7,-0.8052615487503672,-1.4344762234821995,1,0 +9,187,129,1,-1.121699959433816,0.4896249408465866,1,0 +9,188,103,7,0.4649808838118618,-0.198806681337086,1,0 +9,189,123,7,-0.7073291167356331,-3.043576509789646,1,0 +9,190,111,5,-0.3740773149679098,0.8608798093746408,1,0 +9,191,123,7,0.4989177413451416,1.6835410358613347,1,0 +9,192,107,5,-0.6634732155934616,-0.3061356639836578,3,0 +9,193,123,3,-0.7887391302965693,-1.343886436889559,3,0 +9,194,103,9,-0.0473382835677561,3.656344892439264,1,0 +9,195,129,9,-0.5213560739887506,-2.4135537875363897,1,0 +9,196,107,7,-0.4313729642029095,-2.2356462270857462,1,0 +9,197,109,3,0.0497654862338274,1.2900131060668418,1,0 +9,198,119,5,-0.285600783170167,5.764139626487539,1,0 +9,199,129,5,-0.5218301693993399,-1.1335640211899565,1,0 diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index f046e9e5..dd1a23c4 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -33,7 +33,7 @@ def test_construct_index_maps_string(): def test_construct_index_maps_integer(): - """Tests reversing an int-to-int map, ensuring 0 maps to min_id - 1.""" + """Tests reversing an int-to-int map with special IDs as sentinels.""" id_maps: dict[str, dict[str | int, int]] = {"storeId": {100: 3, 101: 4}} target_cols = ["storeId"] @@ -42,11 +42,9 @@ def test_construct_index_maps_integer(): assert result["storeId"][3] == 100 assert result["storeId"][4] == 101 - # Check the special 0 index for integers (min value - 2) - # Min value is 100, so 2 -> 98, 1 -> 99 - assert result["storeId"][0] == 97 - assert result["storeId"][1] == 98 - assert result["storeId"][2] == 99 + assert result["storeId"][0] == "[unknown]" + assert result["storeId"][1] == "[other]" + assert result["storeId"][2] == "[mask]" def test_construct_index_maps_flag_false(): diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index a592e758..416d13d9 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -250,6 +250,11 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): assert RESERVED_MASK_COLUMN not in metadata["column_types"] assert RESERVED_MASK_COLUMN not in metadata["id_maps"] assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] + assert metadata["special_token_ids"] == { + "[unknown]": 0, + "[other]": 1, + "[mask]": 2, + } def test_load_and_preprocess_data_requests_mask_column_for_csv_projection(tmp_path): @@ -293,6 +298,36 @@ def projected_read_data(path, read_format, columns=None): ] +def test_load_and_preprocess_data_fails_when_mask_column_is_missing(tmp_path): + csv_path = tmp_path / "input.csv" + pl.DataFrame({"sequenceId": [0], "itemPosition": [0], "itemId": ["a"]}).write_csv( + csv_path + ) + + with pytest.raises(ValueError, match="mask_column '.+' not found"): + _load_and_preprocess_data( + str(csv_path), + "csv", + None, + None, + RESERVED_MASK_COLUMN, + ) + + parquet_path = tmp_path / "input.parquet" + pl.DataFrame( + {"sequenceId": [0], "itemPosition": [0], "itemId": ["a"]} + ).write_parquet(parquet_path) + + with pytest.raises(ValueError, match="mask_column '.+' not found"): + _load_and_preprocess_data( + str(parquet_path), + "parquet", + ["itemId"], + None, + RESERVED_MASK_COLUMN, + ) + + def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): project_root = tmp_path / "project" project_root.mkdir() From f739c0aa9b178da0c09f431a1caf2334dfe145f0 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 18:19:33 +0200 Subject: [PATCH 31/81] Remove backward compatibility for missing mask tensors --- src/sequifier/infer.py | 72 ++-------------------------------------- tests/unit/test_infer.py | 10 +++--- 2 files changed, 7 insertions(+), 75 deletions(-) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 6cd28bc3..41b491cb 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -323,33 +323,6 @@ def _flatten_bert_target_valid_mask( return valid_mask.reshape(-1) -@beartype -def _is_categorical_column(config: InfererModel, column_name: str) -> bool: - column_type = str(config.column_types.get(column_name, "")).lower() - return ( - column_name in config.categorical_columns - or config.target_column_types.get(column_name) == "categorical" - or column_type.startswith("int") - ) - - -@beartype -def _infer_bert_valid_mask_from_values( - config: InfererModel, - column_name: str, - values: np.ndarray, - prediction_length: int, -) -> Optional[np.ndarray]: - if _is_categorical_column(config, column_name): - valid_mask = values != 0 - else: - valid_mask = np.cumsum(values != 0.0, axis=1) > 0 - - return _flatten_bert_target_valid_mask( - config, {"target_valid_mask": valid_mask}, prediction_length - ) - - @beartype def _bert_reference_column(config: InfererModel, data_columns: set[str]) -> str: preferred_columns = ( @@ -362,29 +335,7 @@ def _bert_reference_column(config: InfererModel, data_columns: set[str]) -> str: if column_name in data_columns: return column_name - raise ValueError("Could not find a reference column for BERT valid-mask inference.") - - -@beartype -def _flatten_legacy_bert_target_valid_mask_from_sequences( - config: InfererModel, - sequences: dict[str, Union[torch.Tensor, np.ndarray]], - prediction_length: int, -) -> Optional[np.ndarray]: - if config.training_objective != "bert": - return None - - column_name = _bert_reference_column(config, set(sequences.keys())) - values = sequences[column_name] - if isinstance(values, torch.Tensor): - values = values.detach().cpu().numpy() # type: ignore - values = np.asarray(values) - if values.ndim == 2 and values.shape[1] > prediction_length: - values = values[:, :prediction_length] - - return _infer_bert_valid_mask_from_values( - config, column_name, values, prediction_length - ) + raise ValueError("Could not find a reference column for BERT padding metadata.") @beartype @@ -412,14 +363,7 @@ def _bert_target_valid_mask_from_preprocessed_data( ) return _flatten_bert_target_valid_mask(config, metadata, prediction_length) - target_seq_cols = [ - str(c) - for c in range(config.seq_length, config.seq_length - prediction_length, -1) - ] - values = reference_rows.select(target_seq_cols).to_numpy() - return _infer_bert_valid_mask_from_values( - config, column_name, values, prediction_length - ) + return None @beartype @@ -558,12 +502,6 @@ def infer_embedding( valid_prediction_mask = _flatten_bert_target_valid_mask( config, metadata, prediction_length ) - if valid_prediction_mask is None: - valid_prediction_mask = ( - _flatten_legacy_bert_target_valid_mask_from_sequences( - config, sequences_dict, prediction_length - ) - ) sequence_ids_for_preds = sequence_ids_tensor.numpy() subsequence_ids_for_preds = subsequence_ids_tensor.numpy() @@ -826,12 +764,6 @@ def infer_generative( valid_prediction_mask = _flatten_bert_target_valid_mask( config, metadata, prediction_length ) - if valid_prediction_mask is None: - valid_prediction_mask = ( - _flatten_legacy_bert_target_valid_mask_from_sequences( - config, sequences_dict, prediction_length - ) - ) if total_steps == 1: # Non-autoregressive path: Apply prediction_length logic diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index d858fbe5..5416dc41 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -460,7 +460,7 @@ def capture_write(dataframe, path, write_format): assert predictions.get_column("target_col").to_list() == ["B", "A", "B"] -def test_bert_generative_inference_filters_legacy_data_without_left_pad(tmp_path): +def test_bert_generative_inference_keeps_data_without_left_pad(tmp_path): config = _bert_inference_config(tmp_path) data = _bert_preprocessed_frame().drop("leftPadLength") written = [] @@ -483,10 +483,10 @@ def capture_write(dataframe, path, write_format): predictions = next(frame for path, frame, _ in written if "predictions" in path) - assert predictions.height == 1 - assert predictions.get_column("sequenceId").to_list() == [7] - assert predictions.get_column("itemPosition").to_list() == [102] - assert predictions.get_column("target_col").to_list() == ["A"] + assert predictions.height == 3 + assert predictions.get_column("sequenceId").to_list() == [7, 7, 7] + assert predictions.get_column("itemPosition").to_list() == [100, 101, 102] + assert predictions.get_column("target_col").to_list() == ["A", "B", "A"] def test_bert_embedding_inference_filters_left_padded_positions(tmp_path): From 9ad5a018c5e8b57a11ce392e43cd9a6c98136cbe Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 18:56:05 +0200 Subject: [PATCH 32/81] remove default value for training_objective --- src/sequifier/config/infer_config.py | 2 +- src/sequifier/config/train_config.py | 2 +- tests/configs/hyperparameter-search-bayesian.yaml | 1 + tests/configs/hyperparameter-search-custom-eval-inference.yaml | 1 + tests/configs/hyperparameter-search-custom-eval.yaml | 1 + tests/configs/hyperparameter-search-grid.yaml | 1 + tests/configs/hyperparameter-search-sample.yaml | 1 + tests/configs/infer-test-categorical-autoregression.yaml | 1 + tests/configs/infer-test-categorical-embedding.yaml | 1 + tests/configs/infer-test-categorical-inf-size-1.yaml | 1 + tests/configs/infer-test-categorical-inf-size-3-embedding.yaml | 1 + tests/configs/infer-test-categorical-inf-size-3.yaml | 1 + tests/configs/infer-test-categorical-multitarget.yaml | 1 + tests/configs/infer-test-categorical.yaml | 1 + tests/configs/infer-test-distributed-parquet.yaml | 1 + tests/configs/infer-test-distributed.yaml | 1 + tests/configs/infer-test-lazy.yaml | 1 + tests/configs/infer-test-real-autoregression.yaml | 1 + tests/configs/infer-test-real.yaml | 1 + tests/configs/train-test-categorical-inf-size-1.yaml | 1 + tests/configs/train-test-categorical-inf-size-3.yaml | 1 + tests/configs/train-test-categorical-multitarget-eager.yaml | 1 + tests/configs/train-test-categorical-multitarget.yaml | 1 + tests/configs/train-test-categorical.yaml | 1 + tests/configs/train-test-distributed-lazy-parquet.yaml | 1 + tests/configs/train-test-distributed.yaml | 1 + tests/configs/train-test-lazy.yaml | 1 + tests/configs/train-test-real.yaml | 1 + tests/configs/train-test-resume-epoch.yaml | 1 + tests/configs/train-test-resume-mid-epoch.yaml | 1 + 30 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index b89b54fb..62277c76 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -118,7 +118,7 @@ class InfererModel(BaseModel): metadata_config_path: str model_path: Union[str, list[str]] model_type: str - training_objective: str = "causal" + training_objective: str data_path: str training_config_path: str = Field(default="configs/train.yaml") read_format: str = Field(default="parquet") diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 1a7f8078..d387e7cd 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -183,7 +183,7 @@ class TrainingSpecModel(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") - training_objective: str = "causal" + training_objective: str device: str device_max_concat_length: int = 12 epochs: int diff --git a/tests/configs/hyperparameter-search-bayesian.yaml b/tests/configs/hyperparameter-search-bayesian.yaml index 990869c7..e15a2b84 100644 --- a/tests/configs/hyperparameter-search-bayesian.yaml +++ b/tests/configs/hyperparameter-search-bayesian.yaml @@ -43,6 +43,7 @@ model_hyperparameter_sampling: # Training Hyperparameter Search Space training_hyperparameter_sampling: + training_objective: ["causal"] device: cpu epochs: [1, 1] save_interval_epochs: 10 diff --git a/tests/configs/hyperparameter-search-custom-eval-inference.yaml b/tests/configs/hyperparameter-search-custom-eval-inference.yaml index 7c11e091..ef23b3a0 100644 --- a/tests/configs/hyperparameter-search-custom-eval-inference.yaml +++ b/tests/configs/hyperparameter-search-custom-eval-inference.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder metadata_config_path: configs/metadata_configs/test-data-categorical-5.json model_type: generative +training_objective: causal model_path: models/sequifier-test-hp-search-custom-eval-run-0-best-1.pt data_path: data/test-data-categorical-5-split2 diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml index be3403d4..6d870395 100644 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ b/tests/configs/hyperparameter-search-custom-eval.yaml @@ -52,6 +52,7 @@ model_hyperparameter_sampling: # Training Hyperparameter Search Space training_hyperparameter_sampling: + training_objective: ["causal"] device: cpu epochs: [1, 1] save_interval_epochs: 10 diff --git a/tests/configs/hyperparameter-search-grid.yaml b/tests/configs/hyperparameter-search-grid.yaml index 625d2538..df79f038 100644 --- a/tests/configs/hyperparameter-search-grid.yaml +++ b/tests/configs/hyperparameter-search-grid.yaml @@ -43,6 +43,7 @@ model_hyperparameter_sampling: # Training Hyperparameter Search Space training_hyperparameter_sampling: + training_objective: ["causal"] device: cpu epochs: [2] save_interval_epochs: 10 diff --git a/tests/configs/hyperparameter-search-sample.yaml b/tests/configs/hyperparameter-search-sample.yaml index 87bf2db6..5a0085ba 100644 --- a/tests/configs/hyperparameter-search-sample.yaml +++ b/tests/configs/hyperparameter-search-sample.yaml @@ -53,6 +53,7 @@ model_hyperparameter_sampling: # Training Hyperparameter Search Space using Distributions training_hyperparameter_sampling: + training_objective: ["causal"] device: cpu epochs: [1] save_interval_epochs: 10 diff --git a/tests/configs/infer-test-categorical-autoregression.yaml b/tests/configs/infer-test-categorical-autoregression.yaml index 59db37ad..76d9d06b 100644 --- a/tests/configs/infer-test-categorical-autoregression.yaml +++ b/tests/configs/infer-test-categorical-autoregression.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-1-best-3-autoregression.onnx data_path: tests/project_folder/data/test-data-categorical-1-split2 read_format: pt diff --git a/tests/configs/infer-test-categorical-embedding.yaml b/tests/configs/infer-test-categorical-embedding.yaml index a302b6e3..9ea82e5a 100644 --- a/tests/configs/infer-test-categorical-embedding.yaml +++ b/tests/configs/infer-test-categorical-embedding.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json model_type: embedding +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-1-best-embedding-3.pt data_path: tests/project_folder/data/test-data-categorical-1-split2 read_format: pt diff --git a/tests/configs/infer-test-categorical-inf-size-1.yaml b/tests/configs/infer-test-categorical-inf-size-1.yaml index 724226ea..37280c9c 100644 --- a/tests/configs/infer-test-categorical-inf-size-1.yaml +++ b/tests/configs/infer-test-categorical-inf-size-1.yaml @@ -1,6 +1,7 @@ project_root: tests/project_folder metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-1-inf-size-best-3.onnx data_path: tests/project_folder/data/test-data-categorical-1-split2 read_format: pt diff --git a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml index d26322e3..6f0e3085 100644 --- a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical-inf-size-3.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-3.json model_type: embedding +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-3-inf-size-best-embedding-3.pt data_path: tests/project_folder/data/test-data-categorical-3-split2 read_format: pt diff --git a/tests/configs/infer-test-categorical-inf-size-3.yaml b/tests/configs/infer-test-categorical-inf-size-3.yaml index 8cf3c83d..2a99c2be 100644 --- a/tests/configs/infer-test-categorical-inf-size-3.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical-inf-size-3.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-3.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-3-inf-size-best-3.pt data_path: tests/project_folder/data/test-data-categorical-3-split2 read_format: pt diff --git a/tests/configs/infer-test-categorical-multitarget.yaml b/tests/configs/infer-test-categorical-multitarget.yaml index d65fd107..29c4d8d8 100644 --- a/tests/configs/infer-test-categorical-multitarget.yaml +++ b/tests/configs/infer-test-categorical-multitarget.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical-multitarget.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-multitarget-5.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-multitarget-5-best-3.onnx data_path: tests/project_folder/data/test-data-categorical-multitarget-5-split2 read_format: parquet diff --git a/tests/configs/infer-test-categorical.yaml b/tests/configs/infer-test-categorical.yaml index 7f89e1e4..eeca3e19 100644 --- a/tests/configs/infer-test-categorical.yaml +++ b/tests/configs/infer-test-categorical.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-5-best-3.pt data_path: tests/project_folder/data/test-data-categorical5-split2 read_format: pt diff --git a/tests/configs/infer-test-distributed-parquet.yaml b/tests/configs/infer-test-distributed-parquet.yaml index 67935b4a..6e01ac6a 100644 --- a/tests/configs/infer-test-distributed-parquet.yaml +++ b/tests/configs/infer-test-distributed-parquet.yaml @@ -1,6 +1,7 @@ project_root: tests/project_folder metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-multitarget-5.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-categorical-multitarget-5-last-3.onnx data_path: tests/project_folder/data/test-data-categorical-multitarget-5-split2 read_format: parquet diff --git a/tests/configs/infer-test-distributed.yaml b/tests/configs/infer-test-distributed.yaml index 3a7f7faa..2e468055 100644 --- a/tests/configs/infer-test-distributed.yaml +++ b/tests/configs/infer-test-distributed.yaml @@ -4,6 +4,7 @@ metadata_config_path: configs/metadata_configs/test-data-categorical-3.json # Point to the model generated by the distributed training test model_path: models/sequifier-model-categorical-distributed-best-3.onnx model_type: generative +training_objective: causal # Use the split2 data generated by preprocessing data_path: data/test-data-categorical-3-split2 diff --git a/tests/configs/infer-test-lazy.yaml b/tests/configs/infer-test-lazy.yaml index 1c8f4137..472b1dfa 100644 --- a/tests/configs/infer-test-lazy.yaml +++ b/tests/configs/infer-test-lazy.yaml @@ -3,6 +3,7 @@ metadata_config_path: configs/metadata_configs/test-data-categorical-3.json model_path: models/sequifier-model-categorical-lazy-best-3.onnx model_type: generative +training_objective: causal data_path: data/test-data-categorical-3-split2 read_format: pt diff --git a/tests/configs/infer-test-real-autoregression.yaml b/tests/configs/infer-test-real-autoregression.yaml index c965b6f5..72c4128e 100644 --- a/tests/configs/infer-test-real-autoregression.yaml +++ b/tests/configs/infer-test-real-autoregression.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-real.yaml metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-real-1.json model_type: generative +training_objective: causal model_path: tests/project_folder/models/sequifier-model-real-1-best-3-autoregression.pt data_path: tests/project_folder/data/test-data-real-1-split1-autoregression.csv read_format: csv diff --git a/tests/configs/infer-test-real.yaml b/tests/configs/infer-test-real.yaml index 0fac3579..009823e0 100644 --- a/tests/configs/infer-test-real.yaml +++ b/tests/configs/infer-test-real.yaml @@ -2,6 +2,7 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-real.yaml metadata_config_path: configs/metadata_configs/test-data-real-5.json model_type: generative +training_objective: causal model_path: models/sequifier-model-real-5-best-3.pt data_path: data/test-data-real5-split2.csv diff --git a/tests/configs/train-test-categorical-inf-size-1.yaml b/tests/configs/train-test-categorical-inf-size-1.yaml index 540dc963..92cae64c 100644 --- a/tests/configs/train-test-categorical-inf-size-1.yaml +++ b/tests/configs/train-test-categorical-inf-size-1.yaml @@ -31,6 +31,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: + training_objective: causal device: cpu epochs: 3 save_interval_epochs: 1 diff --git a/tests/configs/train-test-categorical-inf-size-3.yaml b/tests/configs/train-test-categorical-inf-size-3.yaml index 8a8575a0..c20d9ac0 100644 --- a/tests/configs/train-test-categorical-inf-size-3.yaml +++ b/tests/configs/train-test-categorical-inf-size-3.yaml @@ -38,6 +38,7 @@ model_spec: n_kv_heads: 1 rope_theta: 10000.0 training_spec: + training_objective: causal device: cpu epochs: 3 save_interval_epochs: 1 diff --git a/tests/configs/train-test-categorical-multitarget-eager.yaml b/tests/configs/train-test-categorical-multitarget-eager.yaml index 65e93add..55d55d83 100644 --- a/tests/configs/train-test-categorical-multitarget-eager.yaml +++ b/tests/configs/train-test-categorical-multitarget-eager.yaml @@ -38,6 +38,7 @@ model_spec: rope_theta: 10000.0 training_spec: + training_objective: causal device: cpu epochs: 3 save_interval_epochs: 1 diff --git a/tests/configs/train-test-categorical-multitarget.yaml b/tests/configs/train-test-categorical-multitarget.yaml index 395fb71b..6066730a 100644 --- a/tests/configs/train-test-categorical-multitarget.yaml +++ b/tests/configs/train-test-categorical-multitarget.yaml @@ -39,6 +39,7 @@ model_spec: rope_theta: 10000.0 training_spec: + training_objective: causal device: cpu epochs: 3 save_interval_epochs: 1 diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml index 468aab70..eafdbd8d 100644 --- a/tests/configs/train-test-categorical.yaml +++ b/tests/configs/train-test-categorical.yaml @@ -32,6 +32,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: + training_objective: causal device: cpu torch_compile: "outer" epochs: 3 diff --git a/tests/configs/train-test-distributed-lazy-parquet.yaml b/tests/configs/train-test-distributed-lazy-parquet.yaml index 3ac5fa17..871fa0c1 100644 --- a/tests/configs/train-test-distributed-lazy-parquet.yaml +++ b/tests/configs/train-test-distributed-lazy-parquet.yaml @@ -25,6 +25,7 @@ model_spec: prediction_length: 1 training_spec: + training_objective: causal device: cpu epochs: 3 log_interval: 1 diff --git a/tests/configs/train-test-distributed.yaml b/tests/configs/train-test-distributed.yaml index 1cd9872e..23e92988 100644 --- a/tests/configs/train-test-distributed.yaml +++ b/tests/configs/train-test-distributed.yaml @@ -27,6 +27,7 @@ model_spec: prediction_length: 1 training_spec: + training_objective: causal device: cpu epochs: 3 log_interval: 1 diff --git a/tests/configs/train-test-lazy.yaml b/tests/configs/train-test-lazy.yaml index c771a614..e53b9e2f 100644 --- a/tests/configs/train-test-lazy.yaml +++ b/tests/configs/train-test-lazy.yaml @@ -27,6 +27,7 @@ model_spec: prediction_length: 1 training_spec: + training_objective: causal device: cpu epochs: 3 log_interval: 1 diff --git a/tests/configs/train-test-real.yaml b/tests/configs/train-test-real.yaml index fd1a4e00..0b02444a 100644 --- a/tests/configs/train-test-real.yaml +++ b/tests/configs/train-test-real.yaml @@ -32,6 +32,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: + training_objective: causal device: cpu torch_compile: "inner" epochs: 3 diff --git a/tests/configs/train-test-resume-epoch.yaml b/tests/configs/train-test-resume-epoch.yaml index dbaef582..ce93f148 100644 --- a/tests/configs/train-test-resume-epoch.yaml +++ b/tests/configs/train-test-resume-epoch.yaml @@ -32,6 +32,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: + training_objective: causal device: cpu epochs: 3 save_interval_epochs: 1 diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml index b0449d91..6398cb81 100644 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ b/tests/configs/train-test-resume-mid-epoch.yaml @@ -32,6 +32,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: + training_objective: causal device: cpu torch_compile: "outer" epochs: 3 From c0cd86eb9b5e517d14e4baef1aad3e3e93aa5bf9 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 18:57:02 +0200 Subject: [PATCH 33/81] remove negative int test --- ...-test-categorical-bert-autoregression.yaml | 26 ------------------- tests/integration/conftest.py | 9 ------- tests/integration/test_inference.py | 22 ---------------- 3 files changed, 57 deletions(-) delete mode 100644 tests/configs/infer-test-categorical-bert-autoregression.yaml diff --git a/tests/configs/infer-test-categorical-bert-autoregression.yaml b/tests/configs/infer-test-categorical-bert-autoregression.yaml deleted file mode 100644 index 552bb21f..00000000 --- a/tests/configs/infer-test-categorical-bert-autoregression.yaml +++ /dev/null @@ -1,26 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-bert.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json -model_type: generative -training_objective: bert -model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-1.pt -data_path: tests/project_folder/data/test-data-categorical-1-split2 -read_format: pt -write_format: csv - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -seq_length: 8 -inference_batch_size: 10 -prediction_length: null -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: true -autoregression_total_steps: 1 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index c634ee90..83208921 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -205,13 +205,6 @@ def inference_config_path_cat_bert_embedding(): ) -@pytest.fixture(scope="session") -def inference_config_path_cat_bert_autoregression(): - return os.path.join( - "tests", "configs", "infer-test-categorical-bert-autoregression.yaml" - ) - - @pytest.fixture(scope="session") def inference_config_path_real_autoregression(): return os.path.join("tests", "configs", "infer-test-real-autoregression.yaml") @@ -318,7 +311,6 @@ def format_configs_locally( inference_config_path_cat_inf_size_3, inference_config_path_cat_bert, inference_config_path_cat_bert_embedding, - inference_config_path_cat_bert_autoregression, inference_config_path_distributed, inference_config_path_distributed_parquet, inference_config_path_lazy, @@ -355,7 +347,6 @@ def format_configs_locally( inference_config_path_cat_inf_size_3, inference_config_path_cat_bert, inference_config_path_cat_bert_embedding, - inference_config_path_cat_bert_autoregression, inference_config_path_distributed, inference_config_path_distributed_parquet, inference_config_path_lazy, diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index e668b1b5..36d5bbdd 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -1,6 +1,5 @@ import json import os -import subprocess import numpy as np import polars as pl @@ -260,27 +259,6 @@ def test_bert_embeddings(bert_predictions, bert_embeddings, project_root): ) -def test_bert_rejects_autoregression_end_to_end( - run_training, inference_config_path_cat_bert_autoregression -): - result = subprocess.run( - [ - "sequifier", - "infer", - "--config-path", - inference_config_path_cat_bert_autoregression, - ], - capture_output=True, - text=True, - ) - - assert result.returncode != 0 - assert ( - "Autoregressive inference is not possible with BERT-style models." - in result.stdout + result.stderr - ) - - def test_predictions_item_position(predictions): """ Checks if itemPosition increments correctly within each sequenceId. From bd077080f157f708bd12661a3742067f2eb9c50c Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 19:07:31 +0200 Subject: [PATCH 34/81] remove padding inference again --- src/sequifier/helpers.py | 27 +------------- src/sequifier/train.py | 26 ++++---------- tests/unit/test_train.py | 76 +++++++++++++++++++++++++--------------- 3 files changed, 55 insertions(+), 74 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 3f463757..4641a18c 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -3,7 +3,6 @@ import random import re import sys -import warnings from datetime import datetime from typing import Any, Dict, Optional, Union @@ -607,24 +606,6 @@ def get_last_training_batch_timedelta( return (t2 - t1).total_seconds() -def infer_valid_mask_from_data( - data_batch: Dict[str, torch.Tensor], - categorical_columns: list[str], - default_key: str, - metadata: Optional[dict[str, Tensor]] = None, -): - if metadata is not None and default_key in metadata: - return metadata[default_key].bool() - - if len(categorical_columns): - ref_col = categorical_columns[0] - return data_batch[ref_col] != 0 - else: - warnings.warn(EXPLICIT_PADDING_MASK_FALLBACK_WARNING, stacklevel=2) - ref_col = list(data_batch.keys())[0] - return (data_batch[ref_col] != 0.0).long().cumsum(dim=1) > 0 - - def apply_bert_masking( data_batch: Dict[str, torch.Tensor], targets_batch: Dict[str, torch.Tensor], @@ -643,13 +624,7 @@ def apply_bert_masking( else {} ) - # 1. Identify valid tokens (Renamed from padding_mask to valid_mask for clarity) - if "attention_valid_mask" in metadata_batch: - valid_mask = metadata_batch["attention_valid_mask"].bool() - else: - valid_mask = infer_valid_mask_from_data( - data_batch, config.categorical_columns, "attention_valid_mask" - ) + valid_mask = metadata_batch["attention_valid_mask"].bool() batch_size, seq_len = valid_mask.shape device = valid_mask.device diff --git a/src/sequifier/train.py b/src/sequifier/train.py index b3f0b284..ea39e6e5 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -61,7 +61,6 @@ configure_logger, construct_index_maps, get_torch_dtype, - infer_valid_mask_from_data, normalize_path, ) from sequifier.io.batch import SequifierBatch # noqa: E402 @@ -534,9 +533,7 @@ def _copy_model(self): return model_copy @conditional_beartype - def forward( - self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None - ): + def forward(self, src: dict[str, Tensor], metadata: dict[str, Tensor]): """Forward pass for the embedding model. Args: @@ -1052,7 +1049,7 @@ def _zero_padding_positions(self, x: Tensor, valid_mask: Tensor) -> Tensor: @conditional_beartype def forward_inner( - self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> Tensor: """The inner forward pass of the model. @@ -1122,9 +1119,7 @@ def forward_inner( if self.joint_embedding_layer is not None: src2 = self.joint_embedding_layer(src2) - valid_mask = infer_valid_mask_from_data( - src, self.hparams.categorical_columns, "attention_valid_mask", metadata - ).to(device=src2.device) + valid_mask = metadata["attention_valid_mask"].bool() # type: ignore if valid_mask.shape != src2.shape[:2]: raise ValueError( f"Invalid attention mask shape: got {tuple(valid_mask.shape)}, " @@ -1146,7 +1141,7 @@ def forward_inner( @conditional_beartype def forward_embed( - self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> Tensor: """Forward pass for the embedding model. @@ -1164,7 +1159,7 @@ def forward_embed( @conditional_beartype def forward_train( - self, src: dict[str, Tensor], metadata: Optional[dict[str, Tensor]] = None + self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> dict[str, Tensor]: """Forward pass for training. @@ -1231,7 +1226,7 @@ def apply_softmax(self, target_column: str, output: Tensor) -> Tensor: def forward( self, src: dict[str, Tensor], - metadata: Optional[dict[str, Tensor]] = None, + metadata: dict[str, Tensor], return_logits: Union[bool, Tensor] = False, ) -> dict[str, Tensor]: """The main forward pass of the model. @@ -1729,14 +1724,7 @@ def _calculate_loss( if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") - categorical_target_columns = [ - target_name - for target_name in target_names - if self.target_column_types[target_name] == "categorical" - ] - valid_mask = infer_valid_mask_from_data( - targets, categorical_target_columns, "target_valid_mask", metadata - ) + valid_mask = metadata["attention_valid_mask"].bool() # type: ignore if metadata is not None and "bert_mask" in metadata: valid_mask = valid_mask & metadata["bert_mask"].bool() diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 67d642f9..fb451533 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -12,7 +12,6 @@ TrainingSpecModel, TrainModel, ) -from sequifier.helpers import infer_valid_mask_from_data from sequifier.train import TransformerModel @@ -167,6 +166,19 @@ def bert_model(model_config): return TransformerModel(config) +def _all_valid_metadata(batch_size, seq_len, device=None): + valid_mask = torch.ones( + batch_size, + seq_len, + dtype=torch.bool, + device=device, + ) + return { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + def test_transformer_model_initialization(model, model_config): """Tests that the model initializes with the correct layers.""" # Check if encoder dicts were created @@ -218,9 +230,10 @@ def test_forward_train_shapes(model, model_config): x_real = torch.randn(batch_size, seq_len) src = {"cat_col": x_cat, "real_col": x_real} + metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) # forward_train returns a dict of tensors - outputs = model.forward_train(src) + outputs = model.forward_train(src, metadata) assert "cat_col" in outputs assert "real_col" in outputs @@ -245,10 +258,11 @@ def test_forward_inference_shapes(model, model_config): x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) x_real = torch.randn(batch_size, seq_len) src = {"cat_col": x_cat, "real_col": x_real} + metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) # forward returns predictions for the *last* prediction_length tokens # And applies softmax to categorical outputs - outputs = model.forward(src) + outputs = model.forward(src, metadata) # Expected shape: (prediction_length, batch_size, n_classes_or_1) # If prediction_length is 1, dim 0 is size 1. @@ -282,12 +296,13 @@ def test_calculate_loss(model, model_config): y_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) y_real = torch.randn(batch_size, seq_len) targets = {"cat_col": y_cat, "real_col": y_real} + metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) # Run forward pass - outputs = model.forward_train(src) + outputs = model.forward_train(src, metadata) # Calculate loss - total_loss, component_losses = model._calculate_loss(outputs, targets) + total_loss, component_losses = model._calculate_loss(outputs, targets, metadata) # Assertions assert total_loss.dim() == 0 # Scalar @@ -315,6 +330,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): "real_col": torch.tensor([[0.0, 0.0, 2.0]]), } metadata = { + "attention_valid_mask": torch.tensor([[True, True, True]]), "target_valid_mask": torch.tensor([[True, True, True]]), } @@ -344,33 +360,17 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): targets = { "real_target": torch.tensor([[0.0, 0.0, 2.0]]), } - - with pytest.warns(UserWarning): - total_loss, component_losses = TransformerModel._calculate_loss( - model, outputs, targets - ) - - assert torch.isclose(total_loss, torch.tensor(1.0)) - assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) - - -def test_infer_valid_mask_from_data(): - model = TransformerModel.__new__(TransformerModel) - model.categorical_columns = [] - model.input_columns = ["real_col"] - - src = { - "real_col": torch.tensor([[0.0, 0.0, 1.0]]), - } metadata = { - "attention_valid_mask": torch.tensor([[True, True, True]]), + "attention_valid_mask": torch.tensor([[False, False, True]]), + "target_valid_mask": torch.tensor([[False, False, True]]), } - mask = infer_valid_mask_from_data( - src, model.categorical_columns, "attention_valid_mask", metadata + total_loss, component_losses = TransformerModel._calculate_loss( + model, outputs, targets, metadata ) - assert torch.equal(mask, torch.tensor([[True, True, True]])) + assert torch.isclose(total_loss, torch.tensor(1.0)) + assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) def test_padding_keys_are_masked(bert_model): @@ -458,8 +458,26 @@ def batch(model): } -def test_forward_no_nan_with_padding(model, batch): - out = model.forward_train(batch) +@pytest.fixture +def batch_metadata(model): + seq_len = model.seq_length + valid_mask = torch.ones( + 2, + seq_len, + dtype=torch.bool, + device=model.src_mask.device, + ) + valid_mask[0, :2] = False + valid_mask[1, :1] = False + + return { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + +def test_forward_no_nan_with_padding(model, batch, batch_metadata): + out = model.forward_train(batch, batch_metadata) for tensor in out.values(): assert torch.isfinite(tensor).all() From 6113f548ecfc4cd2ecc69051f12f123da83bd349 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 19:57:21 +0200 Subject: [PATCH 35/81] Make metadata mandatory --- src/sequifier/helpers.py | 11 +++++ src/sequifier/io/batch.py | 1 - src/sequifier/train.py | 41 +++++++++++++++---- ...test-data-real-1-split1-autoregression.csv | 40 +++++++++--------- 4 files changed, 65 insertions(+), 28 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 4641a18c..fd3fdb90 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -611,6 +611,7 @@ def apply_bert_masking( targets_batch: Dict[str, torch.Tensor], metadata_batch: Optional[Dict[str, torch.Tensor]], config: Any, # TrainConfig + eval_seed: Optional[int] = None, ) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: """ Applies BERT-style span corruption to the input data using custom distributions. @@ -629,6 +630,12 @@ def apply_bert_masking( batch_size, seq_len = valid_mask.shape device = valid_mask.device + if eval_seed is not None: + cpu_rng_state = torch.get_rng_state() + if device.type == "cuda": + gpu_rng_state = torch.cuda.get_rng_state(device) + torch.manual_seed(eval_seed) + # Calculate exact number of tokens to mask per sequence based on valid length masking_prob = config.training_spec.bert_spec.masking_probability budgets = (valid_mask.sum(dim=1) * masking_prob).long() @@ -728,4 +735,8 @@ def apply_bert_masking( metadata_batch["bert_mask"] = bert_mask metadata_batch["attention_valid_mask"] = valid_mask.detach() + if eval_seed is not None: + torch.set_rng_state(cpu_rng_state) # type: ignore + if device.type == "cuda": + torch.cuda.set_rng_state(gpu_rng_state, device) # type: ignore return data_batch, targets_batch, metadata_batch diff --git a/src/sequifier/io/batch.py b/src/sequifier/io/batch.py index ba2d7330..36906103 100644 --- a/src/sequifier/io/batch.py +++ b/src/sequifier/io/batch.py @@ -11,7 +11,6 @@ class SequifierBatch: metadata: dict[str, torch.Tensor] sequence_ids: Optional[torch.Tensor] = None subsequence_ids: Optional[torch.Tensor] = None - start_positions: Optional[torch.Tensor] = None def __iter__(self) -> Iterator[object]: yield self.inputs diff --git a/src/sequifier/train.py b/src/sequifier/train.py index ea39e6e5..c05be463 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -81,6 +81,7 @@ ) from sequifier.model.layers import RMSNorm, SequifierEncoderLayer # noqa: E402 from sequifier.optimizers.optimizers import get_optimizer_class # noqa: E402 +from sequifier.special_tokens import SPECIAL_TOKEN_IDS # noqa: E402 def _as_sequifier_batch(batch: Any) -> SequifierBatch: @@ -1858,7 +1859,7 @@ def _evaluate( model_to_call.eval() with torch.no_grad(): - for raw_batch in valid_loader: + for batch_idx, raw_batch in enumerate(valid_loader): batch = _as_sequifier_batch(raw_batch) data = batch.inputs targets = batch.targets @@ -1880,7 +1881,11 @@ def _evaluate( } if self.hparams.training_spec.training_objective == "bert": data, targets, metadata = apply_bert_masking( - data, targets, metadata, self.hparams + data, + targets, + metadata, + self.hparams, + eval_seed=self.hparams.seed + batch_idx, ) if ( @@ -1962,7 +1967,7 @@ def _evaluate( baseline_losses_local_collect = {col: [] for col in self.target_columns} # Iterate over the sharded validation loader - for raw_batch in valid_loader: + for batch_idx, raw_batch in enumerate(valid_loader): batch = _as_sequifier_batch(raw_batch) data = batch.inputs targets = batch.targets @@ -1982,13 +1987,35 @@ def _evaluate( for k, v in (metadata or {}).items() } + if self.hparams.training_spec.training_objective == "bert": + _, _, metadata = apply_bert_masking( + data, + targets, + metadata, + self.hparams, + eval_seed=self.hparams.seed + batch_idx, + ) + pseudo_output = {} targets_for_baseline = {} for col in self.target_columns: - if col in data: - pseudo_output[col] = self._transform_val( - col, data[col].transpose(0, 1) - ) + if col in targets: + if self.hparams.training_spec.training_objective == "causal": + pseudo_output[col] = self._transform_val( + col, data[col].transpose(0, 1) + ) + elif self.hparams.training_spec.training_objective == "bert": + shifted_targets = torch.roll(targets[col], shifts=1, dims=1) + + if self.target_column_types[col] == "categorical": + shifted_targets[:, 0] = SPECIAL_TOKEN_IDS.unknown + else: + shifted_targets[:, 0] = 0.0 + pseudo_output[col] = self._transform_val( + col, shifted_targets.transpose(0, 1) + ) + else: + raise ValueError("Impossible") targets_for_baseline[col] = targets[col] if len(pseudo_output) > 0: diff --git a/tests/resources/source_data/test-data-real-1-split1-autoregression.csv b/tests/resources/source_data/test-data-real-1-split1-autoregression.csv index 841267f4..5174b6ba 100644 --- a/tests/resources/source_data/test-data-real-1-split1-autoregression.csv +++ b/tests/resources/source_data/test-data-real-1-split1-autoregression.csv @@ -1,20 +1,20 @@ -sequenceId,subsequenceId,startItemPosition,inputCol,8,7,6,5,4,3,2,1,0 -0,13,13,itemValue,-1.2113837237467866,1.1957454087349089,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-0.5880064200454953 -0,14,14,itemValue,1.1957454087349089,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-inf,-1.6146336831548016 -0,15,15,itemValue,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-inf,-inf,-0.5557687212758077 -1,11,11,itemValue,-0.3979099218270587,0.1472006972746456,1.0744329431771849,2.098645946368935,-1.3233038228636609,0.3701880711691477,1.6509216329279448,0.695362468181269,-0.3227447762317759 -1,12,12,itemValue,0.1472006972746456,1.0744329431771849,2.098645946368935,-1.3233038228636609,0.3701880711691477,1.6509216329279448,0.695362468181269,-inf,-2.737064338735829 -2,9,9,itemValue,-1.9364972938429672,0.381774018107753,0.7895053840838986,0.071840823669383,-0.3274088457533277,0.8707377962958142,1.4490373682705944,1.0572550888530108,0.0765690379670138 -2,10,10,itemValue,0.381774018107753,0.7895053840838986,0.071840823669383,-0.3274088457533277,0.8707377962958142,1.4490373682705944,1.0572550888530108,-inf,0.476280644045447 -3,9,9,itemValue,-0.1291893885530777,-0.8243404591242441,-1.6194781231152326,0.1530304968195626,-0.4118502341991996,-0.7016026835022849,0.2909377683444284,1.9914944653082405,0.2070996307773291 -3,10,10,itemValue,-0.8243404591242441,-1.6194781231152326,0.1530304968195626,-0.4118502341991996,-0.7016026835022849,0.2909377683444284,1.9914944653082405,-inf,-0.0923048918846115 -4,6,6,itemValue,-0.3473441905826143,-0.9526372634835768,0.3152110308127366,1.0910573998928226,0.4164594405061328,0.142507586519504,1.0387354362777137,0.4461925335963277,1.6935115804711565 -5,6,6,itemValue,0.607763764789741,-2.458568025269152,-0.8214502614252478,-1.5396443182660882,-0.3113729142601391,-1.7463565527326972,0.441061415952748,-0.7445626882829559,-0.4361008211094133 -6,10,10,itemValue,1.5641135703291782,0.8372376866758972,-0.927489932456818,1.1789898362189837,-1.7300169078644538,-0.0513293403405074,0.013139305117334,0.6322625662411738,-1.0028799371032169 -6,11,11,itemValue,0.8372376866758972,-0.927489932456818,1.1789898362189837,-1.7300169078644538,-0.0513293403405074,0.013139305117334,0.6322625662411738,-inf,0.1685537328210896 -7,7,7,itemValue,-1.7680402671702622,-1.1479572969796248,0.366441270630024,0.9519780800395158,0.3286902962731986,1.3789080143759465,0.3820587792655491,1.5380644602548283,0.4910444675915603 -8,12,12,itemValue,-0.7095652049712206,0.116749400524584,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,1.2543512347210088 -8,13,13,itemValue,0.116749400524584,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,-inf,-0.6162672551654905 -8,14,14,itemValue,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,-inf,-inf,1.0886264665030447 -9,8,8,itemValue,0.2102757881460243,-0.756823800221343,1.0186924371356785,0.618472230767961,0.2340549739792952,-0.2583133906283459,-1.781087365783252,0.5179010995396939,-0.2841126785745299 -9,9,9,itemValue,-0.756823800221343,1.0186924371356785,0.618472230767961,0.2340549739792952,-0.2583133906283459,-1.781087365783252,0.5179010995396939,-inf,1.2530292363758264 +sequenceId,subsequenceId,startItemPosition,leftPadLength,inputCol,8,7,6,5,4,3,2,1,0 +0,13,13,0,itemValue,-1.2113837237467866,1.1957454087349089,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-0.5880064200454953 +0,14,14,0,itemValue,1.1957454087349089,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-inf,-1.6146336831548016 +0,15,15,0,itemValue,-1.3864879826232943,-1.4489901585552898,0.7671059681713814,2.217195960015043,0.8077394764090938,-1.1685193385087969,-inf,-inf,-0.5557687212758077 +1,11,11,0,itemValue,-0.3979099218270587,0.1472006972746456,1.0744329431771849,2.098645946368935,-1.3233038228636609,0.3701880711691477,1.6509216329279448,0.695362468181269,-0.3227447762317759 +1,12,12,0,itemValue,0.1472006972746456,1.0744329431771849,2.098645946368935,-1.3233038228636609,0.3701880711691477,1.6509216329279448,0.695362468181269,-inf,-2.737064338735829 +2,9,9,0,itemValue,-1.9364972938429672,0.381774018107753,0.7895053840838986,0.071840823669383,-0.3274088457533277,0.8707377962958142,1.4490373682705944,1.0572550888530108,0.0765690379670138 +2,10,10,0,itemValue,0.381774018107753,0.7895053840838986,0.071840823669383,-0.3274088457533277,0.8707377962958142,1.4490373682705944,1.0572550888530108,-inf,0.476280644045447 +3,9,9,0,itemValue,-0.1291893885530777,-0.8243404591242441,-1.6194781231152326,0.1530304968195626,-0.4118502341991996,-0.7016026835022849,0.2909377683444284,1.9914944653082405,0.2070996307773291 +3,10,10,0,itemValue,-0.8243404591242441,-1.6194781231152326,0.1530304968195626,-0.4118502341991996,-0.7016026835022849,0.2909377683444284,1.9914944653082405,-inf,-0.0923048918846115 +4,6,6,0,itemValue,-0.3473441905826143,-0.9526372634835768,0.3152110308127366,1.0910573998928226,0.4164594405061328,0.142507586519504,1.0387354362777137,0.4461925335963277,1.6935115804711565 +5,6,6,0,itemValue,0.607763764789741,-2.458568025269152,-0.8214502614252478,-1.5396443182660882,-0.3113729142601391,-1.7463565527326972,0.441061415952748,-0.7445626882829559,-0.4361008211094133 +6,10,10,0,itemValue,1.5641135703291782,0.8372376866758972,-0.927489932456818,1.1789898362189837,-1.7300169078644538,-0.0513293403405074,0.013139305117334,0.6322625662411738,-1.0028799371032169 +6,11,11,0,itemValue,0.8372376866758972,-0.927489932456818,1.1789898362189837,-1.7300169078644538,-0.0513293403405074,0.013139305117334,0.6322625662411738,-inf,0.1685537328210896 +7,7,7,0,itemValue,-1.7680402671702622,-1.1479572969796248,0.366441270630024,0.9519780800395158,0.3286902962731986,1.3789080143759465,0.3820587792655491,1.5380644602548283,0.4910444675915603 +8,12,12,0,itemValue,-0.7095652049712206,0.116749400524584,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,1.2543512347210088 +8,13,13,0,itemValue,0.116749400524584,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,-inf,-0.6162672551654905 +8,14,14,0,itemValue,-0.2458275472980247,1.105017102819967,0.4151322337650286,0.6678888872763786,-0.390515971944902,0.6056203083985299,-inf,-inf,1.0886264665030447 +9,8,8,0,itemValue,0.2102757881460243,-0.756823800221343,1.0186924371356785,0.618472230767961,0.2340549739792952,-0.2583133906283459,-1.781087365783252,0.5179010995396939,-0.2841126785745299 +9,9,9,0,itemValue,-0.756823800221343,1.0186924371356785,0.618472230767961,0.2340549739792952,-0.2583133906283459,-1.781087365783252,0.5179010995396939,-inf,1.2530292363758264 From d15cb58752b95ba1c0bc2a6b881191d1d67cf697 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Thu, 11 Jun 2026 19:58:26 +0200 Subject: [PATCH 36/81] Update outputs --- ...cal-bert-best-embedding-1-0-embeddings.csv | 5 + ...cal-bert-best-embedding-1-1-embeddings.csv | 5 + ...cal-bert-best-embedding-1-2-embeddings.csv | 4 + ...cal-bert-best-embedding-1-3-embeddings.csv | 7 + ...cal-bert-best-embedding-1-4-embeddings.csv | 4 + ...cal-bert-best-embedding-1-5-embeddings.csv | 8 + ...cal-bert-best-embedding-1-6-embeddings.csv | 5 + ...cal-bert-best-embedding-1-7-embeddings.csv | 4 + ...-categorical-bert-best-1-0-predictions.csv | 5 + ...-categorical-bert-best-1-1-predictions.csv | 5 + ...-categorical-bert-best-1-2-predictions.csv | 4 + ...-categorical-bert-best-1-3-predictions.csv | 7 + ...-categorical-bert-best-1-4-predictions.csv | 4 + ...-categorical-bert-best-1-5-predictions.csv | 8 + ...-categorical-bert-best-1-6-predictions.csv | 5 + ...-categorical-bert-best-1-7-predictions.csv | 4 + ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 48 +-- ...uifier-model-real-3-best-3-predictions.csv | 48 +-- ...uifier-model-real-5-best-3-predictions.csv | 48 +-- ...ifier-model-real-50-best-3-predictions.csv | 48 +-- ...custom-eval-run-0-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-0-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-0-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-2-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-7-predictions.csv | 60 +-- ...ategorical-bert-best-1-0-probabilities.csv | 5 + ...ategorical-bert-best-1-1-probabilities.csv | 5 + ...ategorical-bert-best-1-2-probabilities.csv | 4 + ...ategorical-bert-best-1-3-probabilities.csv | 7 + ...ategorical-bert-best-1-4-probabilities.csv | 4 + ...ategorical-bert-best-1-5-probabilities.csv | 8 + ...ategorical-bert-best-1-6-probabilities.csv | 5 + ...ategorical-bert-best-1-7-probabilities.csv | 4 + 53 files changed, 1322 insertions(+), 1196 deletions(-) create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv create mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv create mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv new file mode 100644 index 00000000..79067fd4 --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv @@ -0,0 +1,5 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +0,0,0,-0.46009058,0.45777348,-0.22698353,-0.25634044,0.05071858,-0.7203443,-0.5872563,-0.7930882,1.2241583,-0.81149936,-0.7057305,0.83234805,1.888106,-0.4073704,2.095673,-1.5786989 +0,0,1,1.2350427,-0.07666658,1.6687232,-0.10760293,-0.34233996,-0.6405651,-0.34899667,1.3310788,-1.7401463,0.48453188,-0.39308575,-0.38906077,0.09585311,0.9867051,0.3474074,-2.1432836 +0,0,2,-0.04062133,-1.1088247,-1.103962,-0.7512283,-0.3894962,0.40089244,1.3842655,-0.45180556,1.6632154,0.7094805,-1.2707394,1.2500856,-1.5106493,1.293199,0.25951874,-0.33003083 +0,0,3,0.95941216,0.026796307,0.18043526,-0.27425033,-0.8116876,0.59967464,0.15953179,0.6978008,0.6560124,-2.234662,-0.5438349,-1.4812955,-0.07771553,2.3249497,0.22156315,-0.4244198 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv new file mode 100644 index 00000000..f1ad3c83 --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv @@ -0,0 +1,5 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +1,0,0,0.5496252,-0.29538283,1.4190812,1.0952207,-1.0380151,-0.95464176,0.25532782,2.3793674,0.15770668,-0.4943242,-0.23793282,-0.93078727,-0.4377435,0.48551127,-1.7345339,-0.24836543 +1,0,1,1.1703843,-1.293456,-0.009221493,1.1512711,-1.2613713,-0.14320165,0.21250723,1.3096029,-0.19192691,-1.8777579,1.3773452,0.84090453,0.026053404,0.5442735,-1.1615742,-0.7001723 +1,0,2,1.3515635,0.47997367,-0.15122601,0.20858693,-0.96445537,0.32341665,-0.17822078,0.5217958,0.63256186,-1.831718,-0.63131493,-1.3727977,0.07998669,2.4652927,-0.28591567,-0.66949725 +1,0,3,1.2581677,-1.3701472,1.279228,0.34158385,-0.1695098,-0.12549305,-0.9352961,-0.7049133,0.7994457,-0.7667792,0.9320275,1.0522128,-1.8637831,-0.15688421,-0.91187423,1.3544698 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv new file mode 100644 index 00000000..d9c4ea92 --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv @@ -0,0 +1,4 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +2,0,0,-0.7215402,-0.9107281,-1.3260528,-1.056419,0.45294917,-1.4000003,1.2015996,0.9110033,0.082641706,1.9949383,0.7476521,-0.21124426,1.3691758,-0.049398102,-0.21682854,-0.8714193 +2,0,1,1.7914528,0.28032902,1.0305467,0.54616165,-1.1185598,-0.72510433,-0.10695522,-0.7386186,-0.97949564,1.8118858,-0.005990093,-0.68710846,-0.26387492,0.34162205,-1.9024037,0.6979735 +2,0,2,-0.30499086,-0.8624588,-0.21858704,0.46042088,1.684188,-0.8045112,0.051364895,0.14763248,-0.15275371,-0.62137896,0.52078897,-2.5685115,1.6713971,0.9936811,0.5037575,-0.5022072 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv new file mode 100644 index 00000000..41d3d3c6 --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv @@ -0,0 +1,7 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +3,0,0,-0.7998329,-1.009516,-1.2457482,-0.76004726,0.5837586,-1.667505,0.9730014,0.9463384,0.092550665,2.0262837,0.91990626,-0.16828287,1.2223057,-0.15285197,-0.15041813,-0.8101929 +3,0,1,-0.44488773,-0.768482,-0.96725094,-1.0061802,-1.1290205,0.5468874,1.4315809,-0.18544558,0.2409695,-0.26420698,0.2942724,2.9089172,0.037383337,0.20568404,0.09013668,-0.9878235 +3,0,2,0.9197474,-0.54972196,0.19757852,-1.6962574,-1.6389741,0.1349557,1.9117059,-0.8651552,0.5093372,-1.4415438,0.5049666,0.5232043,0.6729788,0.5089508,0.9317495,-0.64518726 +4,0,0,1.0214102,-0.8599426,1.1313342,-0.9132186,-1.1094761,0.36796033,-0.3840757,0.69376415,0.1755591,-0.18347333,-2.1679997,-0.50493,-0.43210468,2.0920951,0.5312533,0.5269235 +4,0,1,1.975615,0.48146883,1.191331,0.069339134,-0.15332681,-0.8564395,0.082964964,0.59752154,-1.4309397,0.55613095,-0.887867,-0.40480894,0.031874895,1.017457,-0.07405214,-2.231385 +4,0,2,0.24375618,-1.9693801,-0.9987763,-1.4291574,0.28681424,0.22939153,0.74847555,1.6184663,0.56282,0.12442069,0.036241677,-1.4214271,-0.19361049,0.4269336,-0.029789643,1.7619773 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv new file mode 100644 index 00000000..bc0d81ae --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv @@ -0,0 +1,4 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +5,0,0,0.050885476,-0.68763536,-0.32008207,1.0336747,1.0007741,-0.9633068,-0.68598473,0.54518497,-0.34585357,-0.47822043,0.52911806,-2.0803304,1.9946527,1.3150282,0.1371507,-1.0467436 +5,0,1,1.5032598,0.98465127,-0.9370364,0.1338618,-0.023070391,-0.055669162,-0.92458737,0.0777592,-0.114300214,0.7075389,0.89388293,-1.1466067,0.17746806,1.8015935,-1.9533355,-1.140061 +5,0,2,0.92082304,-0.24809152,-0.097492896,-0.5940675,-1.1684945,0.82807684,-0.26342613,0.24813169,-0.61301243,-0.017792376,1.3554065,1.2064362,0.016166179,-0.95746326,1.6580712,-2.2975802 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv new file mode 100644 index 00000000..32b2488a --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv @@ -0,0 +1,8 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +6,0,0,1.4568412,-0.14638022,1.5296284,-0.23393637,0.47851744,-0.61866605,-0.3450205,0.9253853,-1.4923376,1.1160238,-0.5999185,-0.7552432,-0.13930646,0.5775359,0.43673426,-2.2207265 +6,0,1,1.5268029,-0.8329019,1.6105913,0.68216175,-1.6239593,-0.7086337,-1.3626277,-0.081963986,-1.1570084,1.6663798,0.41809285,0.0707222,-0.10685151,0.3952702,-0.6428383,0.13019788 +6,0,2,1.0811658,0.20269495,-0.8124527,-0.00006336486,-1.4045546,0.38837618,-0.56309855,0.12770331,1.2022637,0.8725209,0.38372105,-2.5436192,0.303661,-0.14655858,1.5541319,-0.6847054 +6,0,3,0.03786793,-1.276104,1.9573607,0.4641471,-0.90920424,-0.64407074,0.8226515,1.1558217,-0.020683609,-0.8913047,-0.7226361,-0.8886756,-0.007999741,-0.83854043,-0.30502415,2.0437944 +7,0,0,-0.4584146,-1.3955376,-0.52467126,-0.618622,-1.2942654,0.7003769,0.48657182,0.09509239,-0.07182534,-0.2584199,0.48787862,2.825618,0.3362462,0.20020695,0.8225655,-1.3267877 +7,0,1,1.4503253,-0.6273112,-0.99216473,1.4233189,1.0060959,0.67193794,-1.6410915,-0.6428859,-0.934798,1.4429418,0.1590132,-1.4877084,0.1463788,0.6280047,-0.5242633,-0.079930626 +7,0,2,1.1836636,-0.09071134,-0.14702518,1.2998279,-1.8555058,0.77598166,-0.72920847,0.43935195,0.4997686,1.223445,0.761577,-2.2151723,-0.3662264,0.030556075,0.093911,-0.94706964 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv new file mode 100644 index 00000000..c949fdbf --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv @@ -0,0 +1,5 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +8,0,0,-0.15959328,-0.6185797,-0.4608494,0.8537297,1.7962078,-1.1127523,-0.532915,0.41857973,-0.025692305,-0.11058396,0.43107894,-2.3876948,1.7336528,0.75202924,0.051930904,-0.62754744 +8,0,1,-0.0847378,-0.80747044,0.54135734,0.21987116,-0.27892733,-0.6947288,-1.0170838,-0.3269096,1.2616061,1.8441427,2.0002346,0.7380944,-0.06132242,-0.8849537,-1.2508907,-1.1942315 +8,0,2,-0.060736626,-0.2758699,-1.7476931,-0.90112156,0.66965175,-1.3700024,1.6178493,0.32909736,0.27642158,1.9732589,0.37533468,-0.48581138,1.1548799,0.011515356,-0.70278364,-0.87338156 +8,0,3,0.7022285,-0.33732405,-0.057168916,-0.8344231,-0.868286,0.98070174,-0.23612636,0.26457375,-0.65804225,0.08511807,1.3956434,1.1746727,-0.08018996,-1.348229,1.8052337,-2.011606 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv new file mode 100644 index 00000000..13a6a356 --- /dev/null +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv @@ -0,0 +1,4 @@ +sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +9,0,0,-0.5791086,0.37848184,-0.3573193,-0.2355006,-0.14353162,-0.3610847,-0.8467316,-0.7029914,0.79546255,-0.9406641,-0.41330278,1.1095508,1.7990614,-0.31147677,2.3270056,-1.514815 +9,0,1,0.80497956,0.5582172,-0.92235243,0.12620161,-1.2371104,0.36691037,-0.58676964,0.394082,1.040764,0.61476994,0.54693735,-2.5416214,-0.021673568,-0.45668596,1.8399619,-0.5678765 +9,0,2,-0.72852725,-1.68056,-0.4684366,-1.2692064,0.31585234,0.8645183,1.0582336,-0.34532753,1.2095294,0.25657162,-0.7247522,1.3270385,-1.5651994,0.36106008,1.513459,-0.11602255 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv new file mode 100644 index 00000000..a6555801 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv @@ -0,0 +1,5 @@ +sequenceId,itemPosition,itemId +0,0,116 +0,1,125 +0,2,111 +0,3,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv new file mode 100644 index 00000000..63cca8be --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv @@ -0,0 +1,5 @@ +sequenceId,itemPosition,itemId +1,0,100 +1,1,120 +1,2,102 +1,3,104 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv new file mode 100644 index 00000000..78e69770 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv @@ -0,0 +1,4 @@ +sequenceId,itemPosition,itemId +2,0,103 +2,1,115 +2,2,125 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv new file mode 100644 index 00000000..aa1d014b --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv @@ -0,0 +1,7 @@ +sequenceId,itemPosition,itemId +3,0,103 +3,1,119 +3,2,119 +4,0,122 +4,1,125 +4,2,118 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv new file mode 100644 index 00000000..d0661d18 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv @@ -0,0 +1,4 @@ +sequenceId,itemPosition,itemId +5,0,125 +5,1,123 +5,2,117 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv new file mode 100644 index 00000000..9b747406 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv @@ -0,0 +1,8 @@ +sequenceId,itemPosition,itemId +6,0,125 +6,1,115 +6,2,109 +6,3,106 +7,0,117 +7,1,125 +7,2,109 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv new file mode 100644 index 00000000..69194925 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv @@ -0,0 +1,5 @@ +sequenceId,itemPosition,itemId +8,0,125 +8,1,126 +8,2,123 +8,3,117 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv new file mode 100644 index 00000000..5be21105 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv @@ -0,0 +1,4 @@ +sequenceId,itemPosition,itemId +9,0,116 +9,1,128 +9,2,114 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index d1af2939..05a3e9a6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.25203884 -0,22,0.07592129 -0,23,0.29406223 -0,24,0.2411493 -0,25,0.21718875 -0,26,0.29605892 -0,27,0.13432515 -0,28,0.20121504 -0,29,-0.016863476 -0,30,-0.21210459 -0,31,-0.022416836 -0,32,0.042226754 -0,33,0.08740239 -0,34,0.2900688 -0,35,-0.06784207 -0,36,-0.09479769 -0,37,0.01564551 -0,38,-0.12325086 -0,39,-0.25403556 -0,40,-0.032525197 -1,19,0.25113288 -1,20,0.16227913 -1,21,0.07142868 -1,22,0.27209836 -1,23,0.27209836 -1,24,-0.11975661 -1,25,0.1148572 -1,26,-0.029405331 -1,27,-0.008003062 -1,28,-0.02528711 -1,29,-0.089306735 -1,30,0.21020025 -1,31,0.07192786 -1,32,0.07642046 -1,33,0.11385884 -1,34,0.062443476 -1,35,0.20021668 -1,36,0.08340896 -1,37,0.18224627 -1,38,-0.05960562 -2,17,0.054456625 -2,18,0.001980504 -2,19,-0.08032152 -2,20,-0.015865121 -2,21,-0.05710973 -2,22,-0.11027222 -2,23,0.11186212 -2,24,-0.09030509 -2,25,0.029123325 -2,26,0.034239903 -2,27,0.035987027 -2,28,0.0001475836 -2,29,-0.021792863 -2,30,0.07642046 -2,31,-0.17217033 -2,32,0.16227913 -2,33,-0.14421634 -2,34,-0.102784544 -2,35,-0.09180263 -2,36,-0.22308652 -3,17,0.23116574 -3,18,0.20421012 -3,19,0.42384857 -3,20,0.16727091 -3,21,0.24713944 -3,22,0.11136295 -3,23,0.008781808 -3,24,0.088899925 -3,25,-0.07982235 -3,26,0.11136295 -3,27,-0.1522032 -3,28,-0.085313305 -3,29,0.029248118 -3,30,0.035987027 -3,31,0.012463248 -3,32,-0.101287015 -3,33,-0.101287015 -3,34,0.10886706 -3,35,-0.0046804063 -3,36,-0.043382324 -4,14,0.2900688 -4,15,0.17425941 -4,16,0.007783452 -4,17,-0.08181906 -4,18,0.016643867 -4,19,-0.04487986 -4,20,0.2780885 -4,21,-0.00597515 -4,22,-0.015677929 -4,23,-0.11726072 -4,24,-0.021044096 -4,25,0.054955803 -4,26,-0.14122127 -4,27,-0.11726072 -4,28,-0.10428208 -4,29,-0.10178619 -4,30,-0.14122127 -4,31,-0.028781358 -4,32,-0.21709637 -4,33,-0.15719499 -5,14,0.05520539 -5,15,0.33199978 -5,16,0.27209836 -5,17,0.2231789 -5,18,0.11735309 -5,19,0.11335966 -5,20,0.051461555 -5,21,0.2391526 -5,22,-0.03364835 -5,23,-0.20411775 -5,24,0.16427584 -5,25,-0.19213746 -5,26,0.037234973 -5,27,-0.09579605 -5,28,0.056702927 -5,29,0.045471415 -5,30,0.20421012 -5,31,-0.006349534 -5,32,0.100880206 -5,33,0.030246476 -6,18,0.29605892 -6,19,0.29605892 -6,20,0.1792512 -6,21,0.17425941 -6,22,0.19821997 -6,23,0.0434747 -6,24,0.0016997161 -6,25,-0.07483056 -6,26,-0.065845355 -6,27,0.015146332 -6,28,-0.026160672 -6,29,0.021136472 -6,30,-0.09629523 -6,31,-0.16318512 -6,32,-0.22907665 -6,33,0.090896636 -6,34,-0.06509659 -6,35,-0.07982235 -6,36,0.015271126 -6,37,-0.08481413 -7,15,0.072926216 -7,16,0.014896743 -7,17,-0.029654922 -7,18,-0.043631915 -7,19,-0.05261712 -7,20,0.2740951 -7,21,-0.11626236 -7,22,0.023881953 -7,23,-0.0000942059 -7,24,-0.064597405 -7,25,0.2780885 -7,26,0.0055371495 -7,27,0.054706212 -7,28,0.032991957 -7,29,0.078916356 -7,30,0.24514273 -7,31,0.090397455 -7,32,0.041977167 -7,33,-0.047874928 -7,34,-0.05910644 -8,20,-0.08281741 -8,21,0.21918546 -8,22,0.14131364 -8,23,0.04996402 -8,24,0.21119861 -8,25,0.07242704 -8,26,0.0065355063 -8,27,-0.018922588 -8,28,-0.051618766 -8,29,-0.18315226 -8,30,-0.22408487 -8,31,0.055704568 -8,32,-0.10178619 -8,33,-0.14022292 -8,34,0.13732022 -8,35,-0.048873287 -8,36,0.16327749 -8,37,0.004351601 -8,38,0.08690321 -8,39,-0.024538344 -9,16,0.3958946 -9,17,0.37193403 -9,18,0.082909785 -9,19,0.018765375 -9,20,0.34398004 -9,21,0.17425941 -9,22,0.084407315 -9,23,0.09938267 -9,24,0.017143045 -9,25,-0.1751654 -9,26,-0.107277155 -9,27,0.10886706 -9,28,0.26211482 -9,29,-0.026784645 -9,30,-0.05261712 -9,31,-0.14721142 -9,32,-0.11376647 -9,33,0.03149442 -9,34,0.019264553 -9,35,0.04671936 +0,21,-0.24294445 +0,22,0.2182963 +0,23,0.24425358 +0,24,0.276201 +0,25,0.0940009 +0,26,0.51380986 +0,27,0.13742942 +0,28,0.19333738 +0,29,0.14042449 +0,30,-0.110163026 +0,31,-0.12064577 +0,32,-0.17106278 +0,33,-0.007956264 +0,34,0.05157075 +0,35,-0.14410715 +0,36,-0.038530935 +0,37,0.07652966 +0,38,-0.1730595 +0,39,-0.068232045 +0,40,-0.04052765 +1,19,0.2532388 +1,20,0.2412585 +1,21,0.1653834 +1,22,0.23926179 +1,23,0.33210897 +1,24,0.11496639 +1,25,-0.025427505 +1,26,-0.054255053 +1,27,-0.20999868 +1,28,-0.045269843 +1,29,-0.11365727 +1,30,-0.116153166 +1,31,0.18535054 +1,32,0.15639819 +1,33,0.025363889 +1,34,0.17836204 +1,35,-0.06773287 +1,36,-0.096186034 +1,37,-0.16507263 +1,38,0.009327785 +2,17,0.40199393 +2,18,-0.024678737 +2,19,0.033101153 +2,20,0.15040804 +2,21,0.23327164 +2,22,0.08850994 +2,23,0.16138998 +2,24,0.013258814 +2,25,0.0075182635 +2,26,-0.09369014 +2,27,0.04258554 +2,28,-0.0762189 +2,29,-0.10716796 +2,30,-0.14510551 +2,31,0.12744585 +2,32,-0.072724655 +2,33,0.016253883 +2,34,-0.086202465 +2,35,0.018500187 +2,36,0.13643105 +3,17,0.0030256584 +3,18,0.49384275 +3,19,0.3081484 +3,20,0.16238832 +3,21,0.117462285 +3,22,0.11546557 +3,23,0.045830198 +3,24,0.01562991 +3,25,0.09699597 +3,26,0.033849917 +3,27,-0.032291207 +3,28,0.12744585 +3,29,-0.122143306 +3,30,-0.0832074 +3,31,-0.11515481 +3,32,-0.021808462 +3,33,-0.12314166 +3,34,0.06355102 +3,35,-0.020810105 +3,36,-0.17605457 +4,14,0.0077678524 +4,15,0.050821982 +4,16,0.0075182635 +4,17,-0.116153166 +4,18,0.24325521 +4,19,0.13942613 +4,20,0.12594831 +4,21,0.0665461 +4,22,-0.04252436 +4,23,0.06754445 +4,24,-0.021059694 +4,25,0.13243763 +4,26,0.07652966 +4,27,-0.24993296 +4,28,-0.1361203 +4,29,0.06030637 +4,30,0.070040345 +4,31,-0.002878685 +4,32,-0.06573616 +4,33,-0.16107921 +5,14,0.26821414 +5,15,0.25623387 +5,16,0.36405638 +5,17,0.22129136 +5,18,0.3061517 +5,19,0.077528015 +5,20,0.07503212 +5,21,0.09499926 +5,22,-0.08121069 +5,23,-0.18404141 +5,24,-0.08270822 +5,25,-0.10117782 +5,26,-0.10117782 +5,27,-0.018064626 +5,28,-0.1910299 +5,29,0.33210897 +5,30,-0.16207758 +5,31,0.025987862 +5,32,-0.035535865 +5,33,-0.049762446 +6,18,0.20631602 +6,19,0.27420428 +6,20,0.082020625 +6,21,0.28219113 +6,22,0.3940071 +6,23,0.16638176 +6,24,-0.08370657 +6,25,-0.12613674 +6,26,0.14641462 +6,27,-0.012511266 +6,28,-0.08520411 +6,29,-0.15708579 +6,30,-0.044521075 +6,31,0.069541164 +6,32,-0.0036664505 +6,33,-0.09269179 +6,34,-0.13711865 +6,35,-0.027549013 +6,36,-0.15309235 +6,37,0.07403377 +7,15,0.19832917 +7,16,0.28019443 +7,17,0.052569106 +7,18,-0.13412358 +7,19,-0.039279703 +7,20,0.06704527 +7,21,0.10049022 +7,22,0.055564176 +7,23,0.024365531 +7,24,0.018375391 +7,25,-0.11365727 +7,26,0.003056857 +7,27,0.027360601 +7,28,0.08401734 +7,29,0.07253624 +7,30,-0.12763427 +7,31,-0.1910299 +7,32,-0.012760855 +7,33,0.058559246 +7,34,0.026611833 +8,20,0.34808266 +8,21,-0.02392997 +8,22,-0.16806771 +8,23,0.09499926 +8,24,0.3361024 +8,25,0.017127445 +8,26,-0.15608743 +8,27,-0.10067864 +8,28,-0.12414002 +8,29,-0.013821609 +8,30,0.17137355 +8,31,-0.114156455 +8,32,0.03859211 +8,33,-0.009578593 +8,34,0.06454938 +8,35,-0.11116138 +8,36,0.05132116 +8,37,-0.12713508 +8,38,0.06305185 +8,39,-0.033539154 +9,16,0.19134067 +9,17,0.32811555 +9,18,0.09000748 +9,19,0.09000748 +9,20,-0.13212687 +9,21,0.055564176 +9,22,0.0665461 +9,23,-0.23395924 +9,24,0.15240477 +9,25,-0.021683667 +9,26,-0.090195894 +9,27,-0.06299067 +9,28,0.009639772 +9,29,-0.061992317 +9,30,-0.27688858 +9,31,0.118959814 +9,32,0.18934396 +9,33,-0.066734515 +9,34,0.06704527 +9,35,0.13742942 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 1cf52011..8cc53618 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,0.2900688 -0,9,-0.17616376 -0,10,0.3799209 -0,11,0.26411152 -0,12,-0.3009583 -1,8,0.28208193 -1,9,-0.0039628376 -1,10,0.33798993 -2,8,-0.14820977 -2,9,0.11735309 -3,8,0.36993733 -3,9,0.29805565 -4,7,-0.13523114 -5,7,0.14131364 -6,8,0.3359932 -6,9,0.26810494 -6,10,0.31402937 -7,8,-0.15419991 -8,8,0.16826928 -8,9,-0.25703064 -8,10,0.41586173 -8,11,0.40787488 -9,8,0.31402937 -9,9,0.25812137 +0,8,0.30016157 +0,9,-0.1820447 +0,10,0.39201036 +0,11,0.27420428 +0,12,-0.30883598 +1,8,0.290178 +1,9,-0.1890332 +1,10,0.3500794 +2,8,-0.15508908 +2,9,0.12445078 +3,8,0.3800301 +3,9,0.3061517 +4,7,-0.14011373 +5,7,0.14641462 +6,8,0.34808266 +6,9,-0.13911536 +6,10,0.3221254 +7,8,-0.16307592 +8,8,0.1743686 +8,9,-0.13711865 +8,10,0.43593806 +8,11,0.4259545 +9,8,0.33011225 +9,9,-0.12813345 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index 68074514..405ee2f4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.19088916 -0,9,-0.078307025 -0,10,0.020881303 -0,11,0.13500652 -0,12,0.30980512 -1,8,0.0876035 -1,9,-0.026953768 -1,10,-0.2353295 -2,8,0.046619654 -2,9,-0.18891405 -3,8,0.08957863 -3,9,0.17450903 -4,7,0.37695938 -5,7,-0.18002598 -6,8,0.2999295 -6,9,0.33745688 -6,10,0.007867463 -7,8,0.66730285 -8,8,0.20117323 -8,9,0.19031003 -8,10,-0.03213847 -8,11,-0.012880999 -9,8,0.0023336397 -9,9,-0.2531056 +0,8,-0.19243994 +0,9,-0.010234638 +0,10,0.020318083 +0,11,0.18382144 +0,12,0.47416487 +1,8,0.09296566 +1,9,-0.059118994 +1,10,-0.2941589 +2,8,0.047784667 +2,9,-0.19342752 +3,8,0.09247188 +3,9,0.17888363 +4,7,0.37935886 +5,7,-0.14503694 +6,8,0.30035383 +6,9,0.33393097 +6,10,0.00545835 +7,8,0.6716774 +8,8,0.21542345 +8,9,0.19073437 +8,10,-0.041836645 +8,11,-0.02529497 +9,8,0.0025419537 +9,9,-0.2546564 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index 7c11814b..5e697aea 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.07564883 -0,9,-0.34528795 -0,10,-0.06342901 -0,11,-0.22871205 -0,12,-0.23238373 -1,8,-0.2268762 -1,9,-0.10984136 -1,10,-0.016901925 -2,8,-0.3618105 -2,9,-0.29939193 -3,8,-0.1360021 -3,9,0.23850942 -4,7,0.104493044 -5,7,-0.3471238 -6,8,0.09990344 -6,9,-0.11305408 -6,10,0.15406075 -7,8,0.12652314 -8,8,-0.17822644 -8,9,-0.11075929 -8,10,-0.29755607 -8,11,-0.29204854 -9,8,-0.14472234 -9,9,-0.019196726 +0,8,-0.083931625 +0,9,-0.35219386 +0,10,-0.061499946 +0,11,-0.23102838 +0,12,-0.24387926 +1,8,-0.27600646 +1,9,-0.108486 +1,10,-0.01715292 +2,8,-0.36320892 +2,9,-0.30262616 +3,8,-0.13740048 +3,9,0.2316035 +4,7,0.106766336 +5,7,-0.35219386 +6,8,0.06591888 +6,9,-0.11628832 +6,10,0.15358028 +7,8,0.11869929 +8,8,-0.17595315 +8,9,-0.14336696 +8,10,-0.3081337 +8,11,-0.3007903 +9,8,-0.1419901 +9,9,-0.01715292 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index 22ba483f..d6da3019 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.08269817 -0,9,-0.22038624 -0,10,-0.060151752 -0,11,-0.066634566 -0,12,-0.0973849 -1,8,-0.055131875 -1,9,-0.02945879 -1,10,-0.12446355 -2,8,-0.25710306 -2,9,-0.24058047 -3,8,0.01506035 -3,9,0.37075448 -4,7,0.3579036 -5,7,-0.12813523 -6,8,0.3395452 -6,9,0.2771266 -6,10,0.31567925 -7,8,0.35423192 -8,8,-0.039154325 -8,9,-0.015919466 -8,10,-0.053353403 -8,11,-0.12629938 -9,8,-0.0007737763 -9,9,0.19084209 +0,8,-0.08198105 +0,9,-0.215309 +0,10,-0.075096644 +0,11,-0.0692449 +0,12,-0.101486854 +1,8,-0.049674552 +1,9,-0.034134448 +1,10,-0.122140065 +2,8,-0.2749738 +2,9,-0.2575333 +3,8,-0.0012040511 +3,9,0.36940628 +4,7,0.35104787 +5,7,-0.06190154 +6,8,0.34003285 +6,9,0.2757784 +6,10,0.33085364 +7,8,0.35471958 +8,8,0.011417352 +8,9,0.100455634 +8,10,-0.057369307 +8,11,-0.12718862 +9,8,-0.0424531 +9,9,0.18031469 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv index 9a24e80c..4e65dc53 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,127,1,1,2,1 -0,5,127,1,8,8,1 -0,6,113,1,1,7,0 -0,7,105,8,9,7,1 -0,8,127,1,1,0,1 -0,9,113,1,7,7,1 -0,10,113,8,9,1,1 -0,11,113,1,1,7,1 -0,12,105,8,5,7,1 -0,13,113,1,5,8,1 -0,14,113,1,[other],8,1 -0,15,113,1,5,7,1 -0,16,105,1,5,7,1 -0,17,108,1,8,7,1 -0,18,108,1,5,7,1 -0,19,124,1,5,7,1 -0,20,124,1,5,7,1 -0,21,105,8,5,7,1 -0,22,105,1,5,7,1 -0,23,110,1,5,7,1 -0,24,110,1,5,8,1 -0,25,110,1,7,8,1 -0,26,110,[other],7,7,1 -0,27,110,5,7,7,1 -0,28,103,5,7,0,1 -0,29,102,1,5,0,1 -0,30,103,1,7,7,1 -0,31,102,5,5,0,1 -0,32,103,1,7,0,1 -0,33,102,[mask],7,0,1 +0,4,104,4,9,7,0 +0,5,112,4,9,7,0 +0,6,104,9,9,7,0 +0,7,112,4,9,5,0 +0,8,112,9,9,5,0 +0,9,112,9,9,5,0 +0,10,112,9,9,5,0 +0,11,112,9,9,5,0 +0,12,112,9,9,5,0 +0,13,112,9,9,5,0 +0,14,112,9,9,5,0 +0,15,112,9,9,2,0 +0,16,112,9,9,7,0 +0,17,112,9,9,7,0 +0,18,112,9,9,7,0 +0,19,112,9,9,7,0 +0,20,112,9,9,7,0 +0,21,112,9,9,7,0 +0,22,112,9,9,7,0 +0,23,112,9,9,7,0 +0,24,112,9,9,7,0 +0,25,112,9,9,7,0 +0,26,112,9,9,7,0 +0,27,112,9,9,7,0 +0,28,112,9,9,7,0 +0,29,112,9,9,7,0 +0,30,112,9,9,7,0 +0,31,112,9,9,7,0 +0,32,112,9,9,7,0 +0,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv index 12e2155a..bf364d0d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,121,1,0,7,0 -1,5,108,3,0,8,1 -1,6,103,1,0,7,0 -1,7,103,8,0,7,1 -1,8,108,1,0,2,1 -1,9,113,1,0,7,1 -1,10,108,8,7,7,1 -1,11,124,8,7,7,1 -1,12,105,8,7,7,1 -1,13,113,8,5,7,1 -1,14,113,1,[other],8,1 -1,15,113,1,[other],8,1 -1,16,113,1,[other],7,1 -1,17,108,1,5,7,1 -1,18,124,1,[other],7,1 -1,19,108,1,5,7,1 -1,20,124,1,5,7,1 -1,21,124,1,5,7,1 -1,22,105,8,5,7,1 -1,23,105,1,5,7,1 -1,24,124,8,5,7,1 -1,25,110,8,5,7,1 -1,26,110,1,5,8,1 -1,27,110,1,7,8,1 -1,28,110,6,7,7,1 -1,29,110,1,7,0,1 -1,30,113,1,7,0,1 -1,31,113,1,7,0,1 -1,32,113,1,7,0,1 -1,33,113,[mask],5,0,1 +1,4,111,4,9,7,1 +1,5,111,4,9,7,1 +1,6,111,4,9,7,1 +1,7,111,4,9,7,1 +1,8,111,4,9,7,1 +1,9,111,4,9,7,1 +1,10,111,4,9,7,1 +1,11,111,4,9,7,1 +1,12,102,4,9,7,1 +1,13,102,4,9,7,1 +1,14,102,4,9,7,1 +1,15,102,4,9,7,1 +1,16,122,4,9,5,1 +1,17,122,9,9,2,0 +1,18,121,9,9,5,0 +1,19,121,9,9,5,0 +1,20,112,9,9,2,0 +1,21,112,9,9,2,0 +1,22,112,9,9,2,0 +1,23,112,9,9,2,0 +1,24,112,9,9,7,0 +1,25,112,9,9,7,0 +1,26,112,9,9,7,0 +1,27,112,9,9,7,0 +1,28,112,9,9,7,0 +1,29,112,9,9,7,0 +1,30,112,9,9,7,0 +1,31,112,9,9,7,0 +1,32,112,9,9,7,0 +1,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv index 5cf7bea0..ab10690c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,128,1,8,6,0 -2,4,105,0,8,7,2 -2,5,105,1,8,2,1 -2,6,113,1,8,7,2 -2,7,105,1,9,7,1 -2,8,105,1,7,7,1 -2,9,113,1,7,7,1 -2,10,113,1,5,7,1 -2,11,113,1,[other],8,1 -2,12,113,1,[other],7,1 -2,13,113,8,5,7,1 -2,14,113,1,[other],8,1 -2,15,113,1,5,7,1 -2,16,113,1,5,7,1 -2,17,105,1,5,7,1 -2,18,108,1,5,7,1 -2,19,108,1,5,7,1 -2,20,108,1,5,7,1 -2,21,124,1,5,7,1 -2,22,105,8,5,7,1 -2,23,110,1,5,7,1 -2,24,110,8,5,8,1 -2,25,110,1,5,8,1 -2,26,110,[other],5,8,1 -2,27,127,1,7,8,1 -2,28,103,5,7,0,1 -2,29,103,1,5,7,1 -2,30,103,1,5,0,1 -2,31,103,[other],4,0,1 -2,32,127,1,4,7,1 +2,3,112,9,9,7,0 +2,4,112,9,9,2,0 +2,5,112,9,9,2,0 +2,6,112,9,9,2,0 +2,7,112,9,9,2,0 +2,8,112,9,9,2,0 +2,9,112,9,9,7,0 +2,10,112,9,9,7,0 +2,11,112,9,9,7,0 +2,12,112,9,9,7,0 +2,13,112,9,9,7,0 +2,14,112,9,9,7,0 +2,15,112,9,9,7,0 +2,16,112,9,9,7,0 +2,17,112,9,9,7,0 +2,18,112,9,9,7,0 +2,19,112,9,9,7,0 +2,20,112,9,9,7,0 +2,21,112,9,9,7,0 +2,22,112,9,9,7,0 +2,23,112,9,9,7,0 +2,24,112,9,9,7,0 +2,25,112,9,9,7,0 +2,26,112,9,9,7,0 +2,27,112,9,9,7,0 +2,28,112,9,9,7,0 +2,29,112,9,9,7,0 +2,30,112,9,9,7,0 +2,31,112,9,9,7,0 +2,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv index 4e1d63dd..c3e044e5 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,127,5,0,2,0 -3,4,127,4,0,8,0 -3,5,127,4,0,8,0 -3,6,127,4,0,8,0 -3,7,127,4,0,8,0 -3,8,127,4,0,8,1 -3,9,108,1,0,8,1 -3,10,103,1,7,7,1 -3,11,103,8,9,7,1 -3,12,103,1,7,7,1 -3,13,113,8,7,7,1 -3,14,113,8,5,7,1 -3,15,113,1,5,7,1 -3,16,113,1,5,7,1 -3,17,113,1,5,7,1 -3,18,113,1,[other],8,1 -3,19,113,1,[other],7,1 -3,20,108,8,5,7,1 -3,21,108,1,2,7,1 -3,22,108,1,5,7,1 -3,23,108,1,5,7,1 -3,24,124,1,5,7,1 -3,25,124,1,5,7,1 -3,26,124,8,5,7,1 -3,27,124,1,5,7,1 -3,28,124,8,5,7,1 -3,29,110,8,5,7,1 -3,30,110,1,5,8,1 -3,31,110,1,7,8,1 -3,32,110,[other],7,7,1 -4,3,127,0,9,[unknown],1 -4,4,127,0,1,8,1 -4,5,102,0,1,8,1 -4,6,127,1,4,8,0 -4,7,127,0,1,7,1 -4,8,127,0,4,0,1 -4,9,127,1,1,7,1 -4,10,124,1,9,0,1 -4,11,113,1,7,7,1 -4,12,113,8,5,0,1 -4,13,113,1,5,8,1 -4,14,113,1,7,8,1 -4,15,113,1,5,7,1 -4,16,113,1,5,7,1 -4,17,113,1,5,7,1 -4,18,113,1,5,7,1 -4,19,108,1,5,7,1 -4,20,108,1,5,7,1 -4,21,103,1,5,7,1 -4,22,103,1,5,7,1 -4,23,110,1,5,7,1 -4,24,110,1,5,8,1 -4,25,110,1,5,8,1 -4,26,110,1,5,0,1 -4,27,110,0,5,7,1 -4,28,110,[other],5,0,1 -4,29,127,0,4,7,1 -4,30,103,0,5,0,1 -4,31,103,[other],4,0,1 -4,32,127,1,4,7,1 +3,3,112,9,9,5,0 +3,4,112,9,9,2,0 +3,5,112,9,9,2,0 +3,6,112,9,9,2,0 +3,7,112,9,9,2,0 +3,8,112,9,9,2,0 +3,9,112,9,9,2,0 +3,10,112,9,9,7,0 +3,11,112,9,9,7,0 +3,12,112,9,9,7,0 +3,13,112,9,9,7,0 +3,14,112,9,9,7,0 +3,15,112,9,9,7,0 +3,16,112,9,9,7,0 +3,17,112,9,9,7,0 +3,18,112,9,9,7,0 +3,19,112,9,9,7,0 +3,20,112,9,9,7,0 +3,21,112,9,9,7,0 +3,22,112,9,9,7,0 +3,23,112,9,9,7,0 +3,24,112,9,9,7,0 +3,25,112,9,9,7,0 +3,26,112,9,9,7,0 +3,27,112,9,9,7,0 +3,28,112,9,9,7,0 +3,29,112,9,9,7,0 +3,30,112,9,9,7,0 +3,31,112,9,9,7,0 +3,32,112,9,9,7,0 +4,3,112,9,9,7,0 +4,4,112,9,9,7,0 +4,5,112,9,9,7,0 +4,6,112,9,9,7,0 +4,7,112,9,9,7,0 +4,8,112,9,9,7,0 +4,9,112,9,9,5,0 +4,10,112,9,9,5,0 +4,11,112,9,9,5,0 +4,12,112,9,9,5,0 +4,13,112,9,9,5,0 +4,14,112,9,9,5,0 +4,15,112,9,9,7,0 +4,16,112,9,9,7,0 +4,17,112,9,9,7,0 +4,18,112,9,9,7,0 +4,19,112,9,9,7,0 +4,20,112,9,9,7,0 +4,21,112,9,9,7,0 +4,22,112,9,9,7,0 +4,23,112,9,9,7,0 +4,24,112,9,9,7,0 +4,25,112,9,9,7,0 +4,26,112,9,9,7,0 +4,27,112,9,9,7,0 +4,28,112,9,9,7,0 +4,29,112,9,9,7,0 +4,30,112,9,9,7,0 +4,31,112,9,9,7,0 +4,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv index 4f5b8222..c38b58c0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,128,1,5,4,1 -5,4,128,1,5,6,1 -5,5,105,1,5,6,1 -5,6,128,1,5,0,1 -5,7,105,1,5,7,1 -5,8,105,1,5,0,1 -5,9,113,1,7,7,1 -5,10,105,1,9,7,1 -5,11,103,1,9,7,1 -5,12,108,1,9,7,1 -5,13,113,1,5,7,1 -5,14,113,1,5,8,1 -5,15,113,1,5,8,1 -5,16,113,1,5,8,1 -5,17,113,1,5,7,1 -5,18,105,1,5,7,1 -5,19,105,1,5,7,1 -5,20,103,1,5,7,1 -5,21,103,1,5,7,1 -5,22,103,1,5,7,1 -5,23,103,1,5,7,1 -5,24,108,1,5,7,1 -5,25,124,8,5,7,1 -5,26,110,8,5,7,1 -5,27,110,1,5,8,1 -5,28,110,2,7,8,1 -5,29,110,2,5,0,1 -5,30,110,1,5,7,1 -5,31,124,[other],5,0,1 -5,32,127,1,8,0,1 +5,3,111,3,2,2,0 +5,4,111,4,9,8,1 +5,5,111,4,9,7,1 +5,6,111,4,9,7,1 +5,7,111,4,9,7,1 +5,8,111,4,9,7,1 +5,9,111,4,9,7,1 +5,10,102,4,9,7,1 +5,11,102,4,9,7,1 +5,12,102,4,9,7,1 +5,13,102,4,9,7,1 +5,14,122,4,9,5,1 +5,15,122,9,9,2,0 +5,16,121,9,9,5,0 +5,17,121,9,9,5,0 +5,18,112,9,9,2,0 +5,19,112,9,9,2,0 +5,20,112,9,9,2,0 +5,21,112,9,9,2,0 +5,22,112,9,9,7,0 +5,23,112,9,9,7,0 +5,24,112,9,9,7,0 +5,25,112,9,9,7,0 +5,26,112,9,9,7,0 +5,27,112,9,9,7,0 +5,28,112,9,9,7,0 +5,29,112,9,9,7,0 +5,30,112,9,9,7,0 +5,31,112,9,9,7,0 +5,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv index 929f2c8c..d8447e35 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,109,4,8,8,1 -6,5,113,1,0,7,0 -6,6,113,1,7,7,1 -6,7,113,1,7,7,1 -6,8,113,1,7,7,1 -6,9,102,8,7,7,1 -6,10,102,5,7,7,1 -6,11,102,1,7,7,1 -6,12,113,1,7,7,1 -6,13,113,8,5,0,1 -6,14,102,1,5,2,1 -6,15,113,1,7,8,1 -6,16,113,1,1,0,1 -6,17,113,1,5,7,1 -6,18,105,1,5,7,1 -6,19,105,1,5,7,1 -6,20,108,1,7,7,1 -6,21,108,8,7,7,1 -6,22,105,5,5,7,1 -6,23,113,1,5,7,1 -6,24,113,1,5,8,1 -6,25,113,1,5,8,1 -6,26,113,1,5,8,1 -6,27,113,1,5,7,1 -6,28,108,1,5,7,1 -6,29,108,1,5,7,1 -6,30,103,1,5,7,1 -6,31,103,1,5,7,1 -6,32,103,1,5,7,1 -6,33,103,8,5,7,1 -7,3,105,0,9,8,0 -7,4,127,0,1,7,0 -7,5,105,0,9,8,1 -7,6,127,0,1,7,0 -7,7,105,0,9,8,1 -7,8,113,0,1,0,0 -7,9,113,1,9,8,1 -7,10,113,1,1,8,1 -7,11,113,1,9,8,1 -7,12,113,1,1,7,1 -7,13,113,1,9,7,1 -7,14,113,1,9,7,1 -7,15,105,1,5,7,1 -7,16,113,1,9,8,1 -7,17,113,1,5,7,1 -7,18,105,1,5,7,1 -7,19,105,1,5,7,1 -7,20,113,1,5,7,1 -7,21,113,1,5,7,1 -7,22,113,1,5,7,1 -7,23,113,1,5,7,1 -7,24,113,1,5,7,1 -7,25,113,1,5,7,1 -7,26,113,1,5,7,1 -7,27,113,1,5,7,1 -7,28,113,1,5,7,1 -7,29,113,1,5,7,1 -7,30,113,1,5,7,1 -7,31,113,1,5,7,1 -7,32,113,1,5,7,1 +6,4,111,4,9,7,1 +6,5,111,4,9,7,1 +6,6,111,4,9,7,1 +6,7,111,4,9,7,1 +6,8,111,4,9,7,1 +6,9,111,4,9,7,1 +6,10,102,4,9,7,1 +6,11,102,4,9,7,1 +6,12,102,4,9,7,1 +6,13,102,4,9,7,1 +6,14,122,4,9,5,1 +6,15,122,9,9,2,0 +6,16,121,9,9,5,0 +6,17,121,9,9,5,0 +6,18,112,9,9,2,0 +6,19,112,9,9,2,0 +6,20,112,9,9,2,0 +6,21,112,9,9,2,0 +6,22,112,9,9,7,0 +6,23,112,9,9,7,0 +6,24,112,9,9,7,0 +6,25,112,9,9,7,0 +6,26,112,9,9,7,0 +6,27,112,9,9,7,0 +6,28,112,9,9,7,0 +6,29,112,9,9,7,0 +6,30,112,9,9,7,0 +6,31,112,9,9,7,0 +6,32,112,9,9,7,0 +6,33,112,9,9,7,0 +7,3,104,4,9,7,1 +7,4,102,4,9,7,1 +7,5,104,4,9,7,0 +7,6,121,4,9,5,1 +7,7,111,6,9,5,0 +7,8,121,4,9,5,1 +7,9,111,6,9,5,0 +7,10,122,4,9,5,1 +7,11,111,9,9,7,1 +7,12,111,9,9,7,1 +7,13,111,9,9,7,1 +7,14,111,3,9,7,1 +7,15,111,4,9,7,1 +7,16,111,4,9,7,1 +7,17,102,4,9,7,1 +7,18,102,4,9,7,1 +7,19,102,4,9,7,1 +7,20,102,4,9,7,1 +7,21,102,4,9,5,0 +7,22,121,4,9,5,0 +7,23,121,9,9,5,0 +7,24,121,9,9,5,0 +7,25,112,9,9,2,0 +7,26,112,9,9,2,0 +7,27,112,9,9,2,0 +7,28,112,9,9,2,0 +7,29,112,9,9,2,0 +7,30,112,9,9,7,0 +7,31,112,9,9,7,0 +7,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv index 83cccde4..2ed29b99 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,109,1,0,7,0 -8,5,127,1,8,7,1 -8,6,124,1,7,0,1 -8,7,127,1,7,7,0 -8,8,127,8,9,0,1 -8,9,127,1,1,0,1 -8,10,124,1,7,0,1 -8,11,113,1,7,0,1 -8,12,113,1,7,7,1 -8,13,113,8,5,7,1 -8,14,113,1,5,8,1 -8,15,113,1,5,8,1 -8,16,113,1,5,7,1 -8,17,113,1,5,7,1 -8,18,108,1,5,7,1 -8,19,108,1,5,7,1 -8,20,108,1,5,7,1 -8,21,124,1,5,7,1 -8,22,103,8,5,7,1 -8,23,103,1,5,7,1 -8,24,110,8,5,7,1 -8,25,110,1,5,8,1 -8,26,110,2,5,8,1 -8,27,110,1,5,8,1 -8,28,110,[other],7,0,1 -8,29,127,1,7,7,1 -8,30,108,5,7,0,1 -8,31,127,5,5,0,1 -8,32,102,1,4,0,1 -8,33,103,[other],4,0,1 +8,4,111,9,9,7,1 +8,5,111,4,9,7,1 +8,6,111,4,9,7,1 +8,7,111,4,9,7,1 +8,8,111,4,9,7,1 +8,9,111,4,9,7,1 +8,10,111,4,9,7,1 +8,11,111,4,9,7,1 +8,12,102,4,9,7,1 +8,13,102,4,9,7,1 +8,14,102,4,9,7,1 +8,15,102,4,9,7,1 +8,16,122,4,9,5,1 +8,17,122,9,9,2,0 +8,18,121,9,9,5,0 +8,19,121,9,9,5,0 +8,20,112,9,9,2,0 +8,21,112,9,9,2,0 +8,22,112,9,9,2,0 +8,23,112,9,9,2,0 +8,24,112,9,9,7,0 +8,25,112,9,9,7,0 +8,26,112,9,9,7,0 +8,27,112,9,9,7,0 +8,28,112,9,9,7,0 +8,29,112,9,9,7,0 +8,30,112,9,9,7,0 +8,31,112,9,9,7,0 +8,32,112,9,9,7,0 +8,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv index eebbcfd3..bdde68a7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,108,1,8,7,1 -9,4,108,1,[other],7,1 -9,5,108,8,5,7,1 -9,6,108,1,[other],7,1 -9,7,108,8,[other],7,1 -9,8,108,8,[other],7,1 -9,9,124,8,[other],7,1 -9,10,113,8,[other],2,1 -9,11,113,1,[other],8,1 -9,12,113,1,[other],8,1 -9,13,113,1,[other],8,1 -9,14,113,1,[other],0,1 -9,15,113,1,9,2,1 -9,16,113,1,5,7,1 -9,17,105,1,5,7,1 -9,18,105,1,8,7,1 -9,19,103,1,5,7,1 -9,20,105,1,5,7,1 -9,21,113,1,5,7,1 -9,22,113,1,7,7,1 -9,23,113,8,5,7,1 -9,24,113,1,5,8,1 -9,25,113,1,5,8,1 -9,26,113,1,5,7,1 -9,27,108,1,5,7,1 -9,28,108,1,5,7,1 -9,29,108,1,5,7,1 -9,30,108,1,5,7,1 -9,31,124,1,5,7,1 -9,32,103,8,5,7,1 +9,3,113,4,2,7,1 +9,4,113,4,9,7,1 +9,5,113,4,9,7,1 +9,6,113,4,9,7,1 +9,7,111,4,9,7,1 +9,8,102,4,9,7,1 +9,9,102,4,9,7,0 +9,10,113,4,9,7,1 +9,11,113,4,9,7,1 +9,12,113,4,9,7,1 +9,13,113,9,9,7,1 +9,14,111,9,9,7,1 +9,15,111,9,9,7,1 +9,16,111,9,9,7,1 +9,17,111,4,9,7,1 +9,18,102,4,9,7,1 +9,19,102,4,9,7,1 +9,20,102,4,9,7,1 +9,21,102,4,9,7,1 +9,22,102,4,9,7,1 +9,23,104,6,9,5,0 +9,24,121,9,9,5,1 +9,25,122,9,9,2,0 +9,26,112,9,9,2,0 +9,27,112,9,9,2,0 +9,28,112,9,9,2,0 +9,29,112,9,9,2,0 +9,30,112,9,9,7,0 +9,31,112,9,9,7,0 +9,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index a90c5af9..9a24e80c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,104,7,[mask],[unknown],1 -0,5,104,7,9,2,0 -0,6,104,0,9,3,0 -0,7,103,0,[mask],8,0 -0,8,104,7,1,5,0 -0,9,103,5,1,[unknown],0 -0,10,112,0,1,5,0 -0,11,112,7,1,5,0 -0,12,112,5,1,5,0 -0,13,103,0,1,[unknown],0 -0,14,112,7,1,5,0 -0,15,112,0,1,5,0 -0,16,112,7,1,5,0 -0,17,112,7,1,5,0 -0,18,112,7,[mask],5,1 -0,19,119,7,[mask],5,1 -0,20,119,7,[mask],8,0 -0,21,104,0,1,5,1 -0,22,104,7,[mask],8,1 -0,23,104,7,[mask],[unknown],1 -0,24,104,7,[mask],8,1 -0,25,104,7,[mask],8,1 -0,26,108,9,[mask],3,2 -0,27,104,9,1,5,2 -0,28,112,9,[other],1,0 -0,29,111,8,1,4,2 -0,30,112,9,[other],1,2 -0,31,104,9,[other],5,2 -0,32,104,9,[other],1,[mask] -0,33,104,9,[other],8,[mask] +0,4,127,1,1,2,1 +0,5,127,1,8,8,1 +0,6,113,1,1,7,0 +0,7,105,8,9,7,1 +0,8,127,1,1,0,1 +0,9,113,1,7,7,1 +0,10,113,8,9,1,1 +0,11,113,1,1,7,1 +0,12,105,8,5,7,1 +0,13,113,1,5,8,1 +0,14,113,1,[other],8,1 +0,15,113,1,5,7,1 +0,16,105,1,5,7,1 +0,17,108,1,8,7,1 +0,18,108,1,5,7,1 +0,19,124,1,5,7,1 +0,20,124,1,5,7,1 +0,21,105,8,5,7,1 +0,22,105,1,5,7,1 +0,23,110,1,5,7,1 +0,24,110,1,5,8,1 +0,25,110,1,7,8,1 +0,26,110,[other],7,7,1 +0,27,110,5,7,7,1 +0,28,103,5,7,0,1 +0,29,102,1,5,0,1 +0,30,103,1,7,7,1 +0,31,102,5,5,0,1 +0,32,103,1,7,0,1 +0,33,102,[mask],7,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index 61720a4a..12e2155a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,104,7,9,1,1 -1,5,104,7,9,8,1 -1,6,104,0,9,8,1 -1,7,104,7,[mask],8,1 -1,8,104,7,9,8,1 -1,9,104,7,9,[unknown],0 -1,10,118,7,9,[unknown],1 -1,11,129,7,9,[unknown],[other] -1,12,112,7,9,[unknown],0 -1,13,108,7,9,[unknown],2 -1,14,104,9,9,5,2 -1,15,129,9,8,8,[other] -1,16,112,9,2,5,0 -1,17,104,9,1,5,[other] -1,18,104,0,1,8,0 -1,19,112,0,1,8,[other] -1,20,112,0,[mask],5,0 -1,21,112,0,1,5,[mask] -1,22,104,7,[mask],5,0 -1,23,129,9,1,8,1 -1,24,104,7,1,8,0 -1,25,112,5,1,5,0 -1,26,112,0,1,5,0 -1,27,112,7,1,5,0 -1,28,112,0,1,5,1 -1,29,112,7,[mask],[unknown],0 -1,30,108,7,1,5,1 -1,31,119,7,[mask],[unknown],0 -1,32,119,0,1,5,1 -1,33,104,7,[mask],5,1 +1,4,121,1,0,7,0 +1,5,108,3,0,8,1 +1,6,103,1,0,7,0 +1,7,103,8,0,7,1 +1,8,108,1,0,2,1 +1,9,113,1,0,7,1 +1,10,108,8,7,7,1 +1,11,124,8,7,7,1 +1,12,105,8,7,7,1 +1,13,113,8,5,7,1 +1,14,113,1,[other],8,1 +1,15,113,1,[other],8,1 +1,16,113,1,[other],7,1 +1,17,108,1,5,7,1 +1,18,124,1,[other],7,1 +1,19,108,1,5,7,1 +1,20,124,1,5,7,1 +1,21,124,1,5,7,1 +1,22,105,8,5,7,1 +1,23,105,1,5,7,1 +1,24,124,8,5,7,1 +1,25,110,8,5,7,1 +1,26,110,1,5,8,1 +1,27,110,1,7,8,1 +1,28,110,6,7,7,1 +1,29,110,1,7,0,1 +1,30,113,1,7,0,1 +1,31,113,1,7,0,1 +1,32,113,1,7,0,1 +1,33,113,[mask],5,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index 32aad96e..5cf7bea0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,112,2,[mask],5,0 -2,4,129,7,1,5,1 -2,5,104,7,[mask],8,0 -2,6,129,7,1,5,1 -2,7,104,7,[mask],8,0 -2,8,112,7,1,5,1 -2,9,107,7,[mask],[unknown],1 -2,10,107,7,[mask],[unknown],1 -2,11,104,7,[mask],[unknown],1 -2,12,108,7,[mask],[unknown],1 -2,13,104,9,1,5,2 -2,14,108,7,[mask],[unknown],0 -2,15,104,9,1,5,2 -2,16,104,7,[mask],[unknown],2 -2,17,104,9,[mask],1,2 -2,18,112,9,[other],1,[mask] -2,19,104,9,[other],5,[mask] -2,20,112,9,8,8,[mask] -2,21,112,9,6,5,[mask] -2,22,112,9,6,8,[mask] -2,23,112,9,6,5,[mask] -2,24,104,9,6,8,[other] -2,25,112,0,8,8,[other] -2,26,112,0,[mask],8,0 -2,27,104,4,1,8,[mask] -2,28,112,0,1,8,[other] -2,29,112,0,[mask],8,0 -2,30,104,1,1,5,2 -2,31,112,0,1,8,0 -2,32,112,1,1,5,2 +2,3,128,1,8,6,0 +2,4,105,0,8,7,2 +2,5,105,1,8,2,1 +2,6,113,1,8,7,2 +2,7,105,1,9,7,1 +2,8,105,1,7,7,1 +2,9,113,1,7,7,1 +2,10,113,1,5,7,1 +2,11,113,1,[other],8,1 +2,12,113,1,[other],7,1 +2,13,113,8,5,7,1 +2,14,113,1,[other],8,1 +2,15,113,1,5,7,1 +2,16,113,1,5,7,1 +2,17,105,1,5,7,1 +2,18,108,1,5,7,1 +2,19,108,1,5,7,1 +2,20,108,1,5,7,1 +2,21,124,1,5,7,1 +2,22,105,8,5,7,1 +2,23,110,1,5,7,1 +2,24,110,8,5,8,1 +2,25,110,1,5,8,1 +2,26,110,[other],5,8,1 +2,27,127,1,7,8,1 +2,28,103,5,7,0,1 +2,29,103,1,5,7,1 +2,30,103,1,5,0,1 +2,31,103,[other],4,0,1 +2,32,127,1,4,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index f0a3eaa7..4e1d63dd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,104,0,[mask],8,1 -3,4,104,0,[mask],8,0 -3,5,104,0,[mask],8,1 -3,6,104,0,[mask],8,0 -3,7,104,0,[mask],8,1 -3,8,104,0,[mask],6,0 -3,9,112,0,[mask],5,0 -3,10,112,1,1,5,2 -3,11,108,2,1,5,0 -3,12,129,9,1,5,2 -3,13,112,9,1,5,0 -3,14,129,9,1,5,0 -3,15,112,9,1,5,0 -3,16,129,0,1,5,1 -3,17,112,7,[mask],5,1 -3,18,119,7,[mask],[unknown],1 -3,19,104,7,[mask],5,0 -3,20,104,7,1,5,1 -3,21,104,7,[mask],8,0 -3,22,108,7,1,5,1 -3,23,104,7,[mask],8,0 -3,24,108,7,[mask],5,1 -3,25,104,9,[mask],8,2 -3,26,112,9,1,5,0 -3,27,112,9,1,5,2 -3,28,103,7,1,5,0 -3,29,112,9,1,5,0 -3,30,104,7,1,5,0 -3,31,112,0,1,8,0 -3,32,112,0,[mask],5,0 -4,3,108,9,1,5,1 -4,4,104,7,1,4,0 -4,5,108,0,1,4,0 -4,6,108,0,1,5,0 -4,7,112,7,1,5,0 -4,8,108,7,1,5,0 -4,9,129,0,1,5,2 -4,10,112,7,1,5,2 -4,11,112,7,[mask],5,0 -4,12,112,7,1,5,1 -4,13,107,7,[mask],[unknown],1 -4,14,107,7,[mask],[unknown],1 -4,15,107,7,[mask],[unknown],1 -4,16,107,7,[mask],[unknown],1 -4,17,104,7,[mask],[unknown],1 -4,18,104,7,[mask],[unknown],1 -4,19,104,7,[mask],[unknown],1 -4,20,118,7,[mask],[unknown],1 -4,21,104,9,[mask],[unknown],2 -4,22,104,9,[mask],1,2 -4,23,104,9,[mask],1,2 -4,24,104,9,[other],1,2 -4,25,104,9,[other],1,[mask] -4,26,104,9,[other],[unknown],[mask] -4,27,109,9,[other],[unknown],[mask] -4,28,104,9,6,5,[mask] -4,29,112,9,[other],1,[mask] -4,30,118,2,6,1,[mask] -4,31,110,1,[other],8,[other] -4,32,112,[other],6,[unknown],[mask] +3,3,127,5,0,2,0 +3,4,127,4,0,8,0 +3,5,127,4,0,8,0 +3,6,127,4,0,8,0 +3,7,127,4,0,8,0 +3,8,127,4,0,8,1 +3,9,108,1,0,8,1 +3,10,103,1,7,7,1 +3,11,103,8,9,7,1 +3,12,103,1,7,7,1 +3,13,113,8,7,7,1 +3,14,113,8,5,7,1 +3,15,113,1,5,7,1 +3,16,113,1,5,7,1 +3,17,113,1,5,7,1 +3,18,113,1,[other],8,1 +3,19,113,1,[other],7,1 +3,20,108,8,5,7,1 +3,21,108,1,2,7,1 +3,22,108,1,5,7,1 +3,23,108,1,5,7,1 +3,24,124,1,5,7,1 +3,25,124,1,5,7,1 +3,26,124,8,5,7,1 +3,27,124,1,5,7,1 +3,28,124,8,5,7,1 +3,29,110,8,5,7,1 +3,30,110,1,5,8,1 +3,31,110,1,7,8,1 +3,32,110,[other],7,7,1 +4,3,127,0,9,[unknown],1 +4,4,127,0,1,8,1 +4,5,102,0,1,8,1 +4,6,127,1,4,8,0 +4,7,127,0,1,7,1 +4,8,127,0,4,0,1 +4,9,127,1,1,7,1 +4,10,124,1,9,0,1 +4,11,113,1,7,7,1 +4,12,113,8,5,0,1 +4,13,113,1,5,8,1 +4,14,113,1,7,8,1 +4,15,113,1,5,7,1 +4,16,113,1,5,7,1 +4,17,113,1,5,7,1 +4,18,113,1,5,7,1 +4,19,108,1,5,7,1 +4,20,108,1,5,7,1 +4,21,103,1,5,7,1 +4,22,103,1,5,7,1 +4,23,110,1,5,7,1 +4,24,110,1,5,8,1 +4,25,110,1,5,8,1 +4,26,110,1,5,0,1 +4,27,110,0,5,7,1 +4,28,110,[other],5,0,1 +4,29,127,0,4,7,1 +4,30,103,0,5,0,1 +4,31,103,[other],4,0,1 +4,32,127,1,4,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index 5a908cad..4f5b8222 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,102,7,9,9,1 -5,4,102,7,9,9,1 -5,5,105,7,9,9,1 -5,6,105,7,9,9,1 -5,7,105,7,9,9,1 -5,8,105,7,9,9,1 -5,9,111,[mask],9,9,1 -5,10,104,7,9,0,1 -5,11,103,7,9,8,0 -5,12,105,7,9,9,1 -5,13,111,7,9,9,0 -5,14,103,7,9,3,1 -5,15,111,[mask],9,0,0 -5,16,104,7,9,8,1 -5,17,104,0,9,8,0 -5,18,103,0,9,8,1 -5,19,104,7,9,8,0 -5,20,103,0,9,8,0 -5,21,104,7,9,5,1 -5,22,104,7,9,8,[other] -5,23,101,0,9,8,0 -5,24,105,7,9,[unknown],0 -5,25,103,7,9,8,1 -5,26,104,7,9,8,0 -5,27,101,0,8,8,0 -5,28,112,7,9,9,1 -5,29,104,7,9,8,[other] -5,30,129,0,1,8,0 -5,31,104,7,[mask],5,1 -5,32,104,7,1,8,[other] +5,3,128,1,5,4,1 +5,4,128,1,5,6,1 +5,5,105,1,5,6,1 +5,6,128,1,5,0,1 +5,7,105,1,5,7,1 +5,8,105,1,5,0,1 +5,9,113,1,7,7,1 +5,10,105,1,9,7,1 +5,11,103,1,9,7,1 +5,12,108,1,9,7,1 +5,13,113,1,5,7,1 +5,14,113,1,5,8,1 +5,15,113,1,5,8,1 +5,16,113,1,5,8,1 +5,17,113,1,5,7,1 +5,18,105,1,5,7,1 +5,19,105,1,5,7,1 +5,20,103,1,5,7,1 +5,21,103,1,5,7,1 +5,22,103,1,5,7,1 +5,23,103,1,5,7,1 +5,24,108,1,5,7,1 +5,25,124,8,5,7,1 +5,26,110,8,5,7,1 +5,27,110,1,5,8,1 +5,28,110,2,7,8,1 +5,29,110,2,5,0,1 +5,30,110,1,5,7,1 +5,31,124,[other],5,0,1 +5,32,127,1,8,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 58547214..929f2c8c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,129,9,1,5,2 -6,5,129,9,1,5,0 -6,6,129,9,1,5,1 -6,7,112,7,1,5,0 -6,8,112,7,1,5,1 -6,9,112,7,[mask],[unknown],0 -6,10,129,7,1,5,1 -6,11,104,7,[mask],5,0 -6,12,112,7,[mask],5,1 -6,13,119,7,[mask],[unknown],1 -6,14,104,7,[mask],[unknown],1 -6,15,104,7,[mask],[unknown],1 -6,16,104,7,[mask],[unknown],1 -6,17,104,7,1,8,2 -6,18,108,7,[mask],1,2 -6,19,104,9,[other],1,2 -6,20,104,9,[mask],1,2 -6,21,118,9,[other],1,2 -6,22,112,9,[other],1,[mask] -6,23,118,9,[other],5,[mask] -6,24,112,9,[other],7,[mask] -6,25,104,2,6,8,[mask] -6,26,104,9,6,8,[other] -6,27,112,9,6,8,[mask] -6,28,104,1,6,8,[other] -6,29,112,0,[mask],8,[other] -6,30,112,1,[mask],8,0 -6,31,112,1,[mask],8,[mask] -6,32,104,1,[mask],8,[mask] -6,33,[other],9,[other],8,[mask] -7,3,129,9,1,5,1 -7,4,112,2,1,5,1 -7,5,112,1,1,5,1 -7,6,112,1,[mask],4,1 -7,7,107,1,[mask],5,1 -7,8,107,2,[mask],4,1 -7,9,104,7,[mask],5,1 -7,10,104,7,[mask],0,1 -7,11,108,7,[mask],0,1 -7,12,104,7,[mask],0,1 -7,13,104,7,9,0,1 -7,14,104,0,9,3,1 -7,15,104,0,[mask],3,1 -7,16,104,[mask],[mask],3,1 -7,17,104,5,9,3,0 -7,18,104,0,9,3,0 -7,19,103,0,9,3,0 -7,20,111,6,9,3,1 -7,21,103,6,9,3,0 -7,22,105,6,[mask],[unknown],1 -7,23,105,7,[mask],[unknown],2 -7,24,108,7,9,[unknown],0 -7,25,104,0,9,5,0 -7,26,104,0,9,5,1 -7,27,104,0,[mask],8,0 -7,28,104,0,[mask],5,1 -7,29,104,7,9,8,0 -7,30,112,0,1,5,0 -7,31,112,7,1,5,0 -7,32,112,7,1,5,0 +6,4,109,4,8,8,1 +6,5,113,1,0,7,0 +6,6,113,1,7,7,1 +6,7,113,1,7,7,1 +6,8,113,1,7,7,1 +6,9,102,8,7,7,1 +6,10,102,5,7,7,1 +6,11,102,1,7,7,1 +6,12,113,1,7,7,1 +6,13,113,8,5,0,1 +6,14,102,1,5,2,1 +6,15,113,1,7,8,1 +6,16,113,1,1,0,1 +6,17,113,1,5,7,1 +6,18,105,1,5,7,1 +6,19,105,1,5,7,1 +6,20,108,1,7,7,1 +6,21,108,8,7,7,1 +6,22,105,5,5,7,1 +6,23,113,1,5,7,1 +6,24,113,1,5,8,1 +6,25,113,1,5,8,1 +6,26,113,1,5,8,1 +6,27,113,1,5,7,1 +6,28,108,1,5,7,1 +6,29,108,1,5,7,1 +6,30,103,1,5,7,1 +6,31,103,1,5,7,1 +6,32,103,1,5,7,1 +6,33,103,8,5,7,1 +7,3,105,0,9,8,0 +7,4,127,0,1,7,0 +7,5,105,0,9,8,1 +7,6,127,0,1,7,0 +7,7,105,0,9,8,1 +7,8,113,0,1,0,0 +7,9,113,1,9,8,1 +7,10,113,1,1,8,1 +7,11,113,1,9,8,1 +7,12,113,1,1,7,1 +7,13,113,1,9,7,1 +7,14,113,1,9,7,1 +7,15,105,1,5,7,1 +7,16,113,1,9,8,1 +7,17,113,1,5,7,1 +7,18,105,1,5,7,1 +7,19,105,1,5,7,1 +7,20,113,1,5,7,1 +7,21,113,1,5,7,1 +7,22,113,1,5,7,1 +7,23,113,1,5,7,1 +7,24,113,1,5,7,1 +7,25,113,1,5,7,1 +7,26,113,1,5,7,1 +7,27,113,1,5,7,1 +7,28,113,1,5,7,1 +7,29,113,1,5,7,1 +7,30,113,1,5,7,1 +7,31,113,1,5,7,1 +7,32,113,1,5,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index d05f5e62..83cccde4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,104,7,1,5,1 -8,5,104,7,1,5,1 -8,6,112,7,[mask],[unknown],1 -8,7,107,7,[mask],5,1 -8,8,104,7,[mask],[unknown],1 -8,9,108,7,[mask],[unknown],1 -8,10,104,9,[mask],5,1 -8,11,108,7,[mask],0,1 -8,12,108,7,9,0,2 -8,13,104,7,9,1,2 -8,14,104,7,9,1,1 -8,15,104,7,9,[unknown],0 -8,16,104,9,8,5,2 -8,17,104,9,8,8,[other] -8,18,112,9,[mask],3,[mask] -8,19,104,9,[mask],8,[mask] -8,20,112,9,[other],8,[mask] -8,21,112,1,[mask],5,0 -8,22,112,1,1,[unknown],[mask] -8,23,112,1,1,8,[mask] -8,24,112,2,1,5,[mask] -8,25,104,9,1,8,1 -8,26,104,0,[mask],8,1 -8,27,104,0,[mask],8,1 -8,28,104,0,[mask],8,1 -8,29,104,7,[mask],[unknown],1 -8,30,104,7,9,[unknown],1 -8,31,104,7,9,[unknown],1 -8,32,103,5,9,[unknown],0 -8,33,108,5,9,3,2 +8,4,109,1,0,7,0 +8,5,127,1,8,7,1 +8,6,124,1,7,0,1 +8,7,127,1,7,7,0 +8,8,127,8,9,0,1 +8,9,127,1,1,0,1 +8,10,124,1,7,0,1 +8,11,113,1,7,0,1 +8,12,113,1,7,7,1 +8,13,113,8,5,7,1 +8,14,113,1,5,8,1 +8,15,113,1,5,8,1 +8,16,113,1,5,7,1 +8,17,113,1,5,7,1 +8,18,108,1,5,7,1 +8,19,108,1,5,7,1 +8,20,108,1,5,7,1 +8,21,124,1,5,7,1 +8,22,103,8,5,7,1 +8,23,103,1,5,7,1 +8,24,110,8,5,7,1 +8,25,110,1,5,8,1 +8,26,110,2,5,8,1 +8,27,110,1,5,8,1 +8,28,110,[other],7,0,1 +8,29,127,1,7,7,1 +8,30,108,5,7,0,1 +8,31,127,5,5,0,1 +8,32,102,1,4,0,1 +8,33,103,[other],4,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index e30646b9..eebbcfd3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,104,7,9,0,1 -9,4,104,7,9,8,1 -9,5,104,7,[mask],8,1 -9,6,104,7,9,[unknown],1 -9,7,104,7,9,8,0 -9,8,104,7,9,8,1 -9,9,104,7,9,[unknown],0 -9,10,108,7,9,[unknown],0 -9,11,103,6,1,[unknown],2 -9,12,108,5,1,[unknown],2 -9,13,108,9,1,[unknown],0 -9,14,129,9,1,5,2 -9,15,112,9,1,8,0 -9,16,112,0,1,5,2 -9,17,112,7,1,5,0 -9,18,112,0,1,5,1 -9,19,112,7,[mask],[unknown],0 -9,20,102,4,1,5,1 -9,21,112,7,[mask],[unknown],0 -9,22,119,7,[mask],5,1 -9,23,104,7,[mask],8,1 -9,24,104,7,[mask],[unknown],1 -9,25,104,7,[mask],[unknown],1 -9,26,104,7,[mask],8,1 -9,27,104,9,[mask],1,2 -9,28,104,7,9,1,1 -9,29,104,9,8,1,2 -9,30,118,9,[mask],[unknown],2 -9,31,112,9,[other],1,2 -9,32,104,5,[other],1,[mask] +9,3,108,1,8,7,1 +9,4,108,1,[other],7,1 +9,5,108,8,5,7,1 +9,6,108,1,[other],7,1 +9,7,108,8,[other],7,1 +9,8,108,8,[other],7,1 +9,9,124,8,[other],7,1 +9,10,113,8,[other],2,1 +9,11,113,1,[other],8,1 +9,12,113,1,[other],8,1 +9,13,113,1,[other],8,1 +9,14,113,1,[other],0,1 +9,15,113,1,9,2,1 +9,16,113,1,5,7,1 +9,17,105,1,5,7,1 +9,18,105,1,8,7,1 +9,19,103,1,5,7,1 +9,20,105,1,5,7,1 +9,21,113,1,5,7,1 +9,22,113,1,7,7,1 +9,23,113,8,5,7,1 +9,24,113,1,5,8,1 +9,25,113,1,5,8,1 +9,26,113,1,5,7,1 +9,27,108,1,5,7,1 +9,28,108,1,5,7,1 +9,29,108,1,5,7,1 +9,30,108,1,5,7,1 +9,31,124,1,5,7,1 +9,32,103,8,5,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index aa9878ce..fd49670a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,121,1,1,9,1 -0,5,105,0,[other],8,2 -0,6,113,1,[other],[mask],0 -0,7,105,8,[other],1,1 -0,8,113,1,[other],2,[unknown] -0,9,113,3,[other],1,1 -0,10,113,1,[other],8,1 -0,11,113,1,[other],[mask],1 -0,12,105,8,9,1,[other] -0,13,113,1,8,0,1 -0,14,105,0,[other],1,[other] -0,15,113,[other],8,9,1 -0,16,105,0,[other],1,1 -0,17,113,1,8,8,1 -0,18,113,1,[other],7,1 -0,19,105,8,[other],1,[other] -0,20,113,1,8,8,[unknown] -0,21,113,1,[other],[mask],[other] -0,22,113,[mask],[other],8,1 -0,23,113,1,[other],2,1 -0,24,113,[mask],[other],1,1 -0,25,113,1,[other],2,1 -0,26,113,1,[other],1,1 -0,27,113,1,[other],1,1 -0,28,105,1,[other],1,1 -0,29,108,1,8,0,1 -0,30,103,1,0,7,1 -0,31,103,1,[other],7,1 -0,32,108,5,9,0,1 -0,33,105,0,7,7,1 +0,4,119,9,2,7,[other] +0,5,111,9,2,7,[other] +0,6,111,9,2,7,[other] +0,7,111,9,9,7,[other] +0,8,111,9,9,7,[other] +0,9,107,1,9,7,[other] +0,10,104,1,9,7,[other] +0,11,102,1,9,7,[other] +0,12,104,6,9,7,[other] +0,13,104,1,9,7,[other] +0,14,104,1,9,[unknown],[other] +0,15,104,6,9,[unknown],[other] +0,16,104,6,9,[unknown],[other] +0,17,104,6,9,7,[other] +0,18,104,6,9,7,[other] +0,19,104,6,9,7,[other] +0,20,104,6,9,7,[other] +0,21,104,6,9,7,[other] +0,22,104,6,9,7,[other] +0,23,104,6,9,7,[other] +0,24,104,6,9,7,[other] +0,25,104,6,9,7,[other] +0,26,104,6,9,7,[other] +0,27,104,6,9,7,[other] +0,28,104,6,9,7,[other] +0,29,104,6,9,7,[other] +0,30,104,6,9,7,[other] +0,31,104,6,9,7,[other] +0,32,104,6,9,7,[other] +0,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index 5e0f7cd5..c47a6367 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,107,5,[other],[mask],[other] -1,5,121,3,[other],0,[other] -1,6,129,3,[other],8,[other] -1,7,121,[other],[other],8,[other] -1,8,[unknown],5,[other],[mask],[other] -1,9,121,6,3,4,1 -1,10,105,1,[other],8,[unknown] -1,11,121,1,7,[mask],[other] -1,12,105,0,7,1,[other] -1,13,105,[other],7,5,0 -1,14,105,1,1,1,1 -1,15,105,1,7,[other],[other] -1,16,105,0,7,0,1 -1,17,105,1,7,1,1 -1,18,113,1,7,1,1 -1,19,113,1,7,1,1 -1,20,113,1,[other],1,1 -1,21,113,1,1,1,1 -1,22,113,0,[other],1,1 -1,23,113,1,1,0,1 -1,24,108,1,[other],1,1 -1,25,108,0,[other],7,1 -1,26,108,5,[other],0,1 -1,27,113,5,[other],7,1 -1,28,105,8,[other],0,[other] -1,29,113,[other],8,2,[other] -1,30,113,[mask],[other],[unknown],1 -1,31,113,1,[other],2,1 -1,32,113,1,[other],8,1 -1,33,113,1,[other],[mask],1 +1,4,111,9,2,7,[other] +1,5,111,1,9,7,[other] +1,6,111,1,9,7,[other] +1,7,111,1,9,7,[other] +1,8,111,1,9,7,[other] +1,9,111,1,9,7,[other] +1,10,102,1,9,7,[other] +1,11,129,1,9,[unknown],[other] +1,12,102,1,9,[unknown],[other] +1,13,104,6,9,[unknown],[other] +1,14,104,6,9,[unknown],[other] +1,15,104,6,9,[unknown],[other] +1,16,104,6,9,[unknown],[other] +1,17,104,6,9,7,[other] +1,18,104,9,9,7,[other] +1,19,104,6,9,7,[other] +1,20,104,6,9,7,[other] +1,21,104,6,9,7,[other] +1,22,104,6,9,7,[other] +1,23,104,6,9,7,[other] +1,24,104,6,9,7,[other] +1,25,104,6,9,7,[other] +1,26,104,6,9,7,[other] +1,27,104,6,9,7,[other] +1,28,104,6,9,7,[other] +1,29,104,6,9,7,[other] +1,30,104,6,9,7,[other] +1,31,104,6,9,7,[other] +1,32,104,6,9,7,[other] +1,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index fa4d361a..d60f3445 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,128,0,7,[unknown],2 -2,4,113,8,[other],6,2 -2,5,109,1,[other],[mask],1 -2,6,128,1,[other],7,2 -2,7,105,8,[other],6,[other] -2,8,121,8,1,[mask],1 -2,9,114,1,[other],8,2 -2,10,113,1,[other],[mask],1 -2,11,104,1,[other],0,1 -2,12,113,1,7,0,1 -2,13,113,1,[other],1,1 -2,14,113,1,[other],1,1 -2,15,113,1,[other],1,1 -2,16,105,1,[other],1,1 -2,17,113,1,[other],0,1 -2,18,105,0,[other],1,1 -2,19,108,0,5,0,1 -2,20,113,0,[other],0,1 -2,21,108,0,9,2,1 -2,22,113,0,[other],0,1 -2,23,113,8,[other],2,1 -2,24,113,3,[other],8,1 -2,25,113,1,[other],8,1 -2,26,113,1,[other],8,1 -2,27,113,1,[other],0,1 -2,28,113,1,[other],7,1 -2,29,105,8,[other],0,1 -2,30,113,1,[other],2,1 -2,31,113,8,[other],1,1 -2,32,113,1,[other],2,1 +2,3,115,9,2,2,[unknown] +2,4,118,9,2,[mask],[mask] +2,5,115,9,9,7,[mask] +2,6,115,9,9,7,[mask] +2,7,115,9,9,7,[mask] +2,8,119,9,9,7,[mask] +2,9,104,9,9,7,[other] +2,10,104,1,9,7,[other] +2,11,104,6,9,7,[other] +2,12,104,6,9,7,[other] +2,13,104,6,9,7,[other] +2,14,104,6,9,7,[other] +2,15,104,6,9,7,[other] +2,16,104,6,9,7,[other] +2,17,104,6,9,7,[other] +2,18,104,6,9,7,[other] +2,19,104,6,9,7,[other] +2,20,104,6,9,7,[other] +2,21,104,6,9,7,[other] +2,22,104,6,9,7,[other] +2,23,104,6,9,7,[other] +2,24,104,6,9,7,[other] +2,25,104,6,9,7,[other] +2,26,104,6,9,7,[other] +2,27,104,6,9,7,[other] +2,28,104,6,9,7,[other] +2,29,104,6,9,7,[other] +2,30,104,6,9,7,[other] +2,31,104,6,9,7,[other] +2,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 865dd214..1923a1cb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,128,5,1,1,2 -3,4,105,2,9,5,[unknown] -3,5,128,1,1,[mask],1 -3,6,105,8,[other],1,2 -3,7,128,1,9,[mask],1 -3,8,128,0,9,1,1 -3,9,119,1,[other],[mask],2 -3,10,104,1,8,[mask],1 -3,11,104,1,9,0,[other] -3,12,113,3,[other],1,[other] -3,13,113,1,[other],[mask],[other] -3,14,113,3,[other],[unknown],[other] -3,15,113,3,[other],[mask],[other] -3,16,105,3,[other],8,[other] -3,17,105,1,7,8,[other] -3,18,113,1,7,1,[other] -3,19,113,1,[other],1,1 -3,20,113,1,[other],1,[other] -3,21,113,1,[other],[mask],1 -3,22,120,1,[other],1,1 -3,23,113,1,7,7,1 -3,24,105,1,7,1,1 -3,25,113,1,7,1,1 -3,26,113,0,1,1,1 -3,27,105,0,[other],1,[other] -3,28,108,0,8,0,1 -3,29,113,0,[other],7,1 -3,30,108,8,[other],2,1 -3,31,113,[mask],[other],7,1 -3,32,124,[mask],[other],2,1 -4,3,102,0,[other],[unknown],[unknown] -4,4,102,8,[other],6,[unknown] -4,5,105,8,[other],6,[mask] -4,6,127,1,[other],2,1 -4,7,127,[mask],7,[unknown],1 -4,8,102,[mask],1,2,1 -4,9,127,[mask],[other],8,[unknown] -4,10,106,[mask],1,0,1 -4,11,113,1,[other],1,1 -4,12,106,8,1,[mask],1 -4,13,105,1,[other],[mask],1 -4,14,106,8,9,0,1 -4,15,113,1,[other],0,1 -4,16,113,1,[other],2,1 -4,17,113,8,[other],1,1 -4,18,113,1,[other],2,1 -4,19,113,3,[other],1,2 -4,20,113,1,[other],[mask],1 -4,21,105,8,[other],1,1 -4,22,113,1,8,[mask],1 -4,23,105,3,[other],1,1 -4,24,113,1,8,0,1 -4,25,105,1,[other],1,1 -4,26,113,1,9,0,1 -4,27,113,1,[other],1,1 -4,28,113,1,[other],1,2 -4,29,113,1,[other],1,[other] -4,30,113,0,[other],1,[other] -4,31,113,0,[other],[mask],[other] -4,32,121,0,[other],2,[other] +3,3,112,9,2,[mask],[mask] +3,4,115,9,2,9,[other] +3,5,112,9,2,2,[mask] +3,6,112,9,2,2,[mask] +3,7,112,9,2,2,[mask] +3,8,112,9,9,2,[other] +3,9,112,9,2,2,[other] +3,10,112,9,9,7,[other] +3,11,112,9,9,7,[other] +3,12,112,9,9,7,[other] +3,13,112,9,9,7,[other] +3,14,112,9,9,7,[other] +3,15,112,9,9,7,[other] +3,16,112,9,9,7,[other] +3,17,112,9,9,7,[other] +3,18,112,9,9,7,[other] +3,19,112,9,9,7,[other] +3,20,112,9,9,7,[other] +3,21,112,9,9,7,[other] +3,22,112,9,9,7,[other] +3,23,112,9,9,7,[other] +3,24,112,9,9,7,[other] +3,25,112,9,9,7,[other] +3,26,112,9,9,7,[other] +3,27,112,9,9,7,[other] +3,28,112,9,9,7,[other] +3,29,112,9,9,7,[other] +3,30,112,9,9,7,[other] +3,31,112,9,9,7,[other] +3,32,112,9,9,7,[other] +4,3,107,9,2,7,[other] +4,4,107,9,9,7,[other] +4,5,107,9,9,7,[other] +4,6,107,9,9,7,[other] +4,7,107,9,9,7,[other] +4,8,104,6,9,7,[other] +4,9,104,6,9,7,[other] +4,10,104,6,9,7,[other] +4,11,104,6,9,7,[other] +4,12,104,6,9,7,[other] +4,13,104,6,9,7,[other] +4,14,104,6,9,7,[other] +4,15,104,6,9,7,[other] +4,16,104,6,9,7,[other] +4,17,104,6,9,7,[other] +4,18,104,6,9,7,[other] +4,19,104,6,9,7,[other] +4,20,104,6,9,7,[other] +4,21,104,6,9,7,[other] +4,22,104,6,9,7,[other] +4,23,104,6,9,7,[other] +4,24,104,6,9,7,[other] +4,25,104,6,9,7,[other] +4,26,104,6,9,7,[other] +4,27,104,6,9,7,[other] +4,28,104,6,9,7,[other] +4,29,104,6,9,7,[other] +4,30,104,6,9,7,[other] +4,31,104,6,9,7,[other] +4,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index 67ddc700..fe484f33 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,128,3,[other],4,1 -5,4,128,1,[other],6,1 -5,5,105,1,[other],7,1 -5,6,105,1,[other],0,1 -5,7,105,1,[other],0,1 -5,8,105,1,[other],0,1 -5,9,105,1,7,2,[other] -5,10,113,[mask],7,0,1 -5,11,113,1,[other],2,1 -5,12,113,[mask],[other],1,1 -5,13,113,1,[other],2,1 -5,14,113,[mask],[other],1,1 -5,15,113,1,[other],2,1 -5,16,113,1,[other],1,1 -5,17,113,1,1,[mask],1 -5,18,108,1,9,1,1 -5,19,103,1,0,7,1 -5,20,108,1,[other],7,1 -5,21,108,8,[other],7,1 -5,22,108,5,[other],2,1 -5,23,113,[mask],[other],7,1 -5,24,105,8,[other],2,[other] -5,25,113,8,[other],8,1 -5,26,113,1,[other],[mask],1 -5,27,113,8,[other],2,1 -5,28,113,1,[other],8,1 -5,29,113,1,[other],[mask],1 -5,30,113,8,[other],2,1 -5,31,113,1,[other],2,1 -5,32,113,1,[other],7,1 +5,3,111,3,2,2,[other] +5,4,111,3,2,8,[other] +5,5,111,1,2,7,[other] +5,6,111,1,9,7,[other] +5,7,111,1,9,7,[other] +5,8,111,1,9,7,[other] +5,9,102,1,9,7,[other] +5,10,129,1,9,[unknown],[other] +5,11,102,1,9,[unknown],[other] +5,12,102,6,9,[unknown],[other] +5,13,104,6,9,[unknown],[other] +5,14,104,6,9,[unknown],[other] +5,15,104,6,9,7,[other] +5,16,104,6,9,7,[other] +5,17,104,9,9,7,[other] +5,18,104,9,9,7,[other] +5,19,104,6,9,7,[other] +5,20,104,6,9,7,[other] +5,21,104,6,9,7,[other] +5,22,104,6,9,7,[other] +5,23,104,6,9,7,[other] +5,24,104,6,9,7,[other] +5,25,104,6,9,7,[other] +5,26,104,6,9,7,[other] +5,27,104,6,9,7,[other] +5,28,104,6,9,7,[other] +5,29,104,6,9,7,[other] +5,30,104,6,9,7,[other] +5,31,104,6,9,7,[other] +5,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index 62b206ad..22da0edc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,122,2,[other],8,[unknown] -6,5,113,[mask],[other],8,[other] -6,6,113,1,[other],[unknown],1 -6,7,113,[mask],[other],2,1 -6,8,113,1,[other],2,1 -6,9,113,3,[other],1,1 -6,10,121,1,[other],[mask],1 -6,11,108,0,7,1,1 -6,12,113,1,1,[mask],1 -6,13,108,8,9,1,[other] -6,14,113,0,1,[mask],1 -6,15,108,8,[other],1,[other] -6,16,113,0,[other],7,[other] -6,17,105,8,[other],2,[other] -6,18,113,[mask],[other],8,[other] -6,19,113,1,[other],[mask],1 -6,20,113,1,[other],1,1 -6,21,113,1,[other],[mask],1 -6,22,113,1,[other],[mask],1 -6,23,124,1,[other],2,1 -6,24,113,1,[other],7,[unknown] -6,25,105,8,[other],1,1 -6,26,113,1,[other],2,1 -6,27,113,8,[other],1,1 -6,28,113,1,[other],2,1 -6,29,113,8,[other],1,1 -6,30,113,1,[other],2,1 -6,31,113,[mask],9,1,1 -6,32,113,1,[other],1,1 -6,33,113,1,9,1,1 -7,3,105,0,[other],8,[mask] -7,4,105,0,[other],1,[other] -7,5,105,0,9,6,[unknown] -7,6,105,0,[other],1,[unknown] -7,7,113,[other],[other],1,[other] -7,8,113,0,[other],1,1 -7,9,113,0,[other],1,2 -7,10,113,1,[other],[mask],1 -7,11,113,3,[other],1,1 -7,12,113,1,[other],[mask],1 -7,13,108,3,[other],1,1 -7,14,113,1,[other],[mask],1 -7,15,124,3,9,2,1 -7,16,113,0,8,0,1 -7,17,105,1,[other],[mask],[other] -7,18,108,0,7,0,[other] -7,19,113,5,[other],7,[other] -7,20,105,8,[other],[mask],[other] -7,21,113,[mask],[other],8,[other] -7,22,113,1,[other],[mask],1 -7,23,113,1,[other],8,1 -7,24,113,1,[other],8,1 -7,25,113,1,[other],8,1 -7,26,113,1,[other],[mask],1 -7,27,105,8,[other],2,1 -7,28,113,1,8,2,1 -7,29,113,1,[other],1,1 -7,30,113,8,[other],1,1 -7,31,113,1,[other],2,1 -7,32,113,3,[other],1,1 +6,4,111,9,2,7,[other] +6,5,[unknown],9,2,7,[other] +6,6,111,9,9,7,[other] +6,7,111,1,9,7,[other] +6,8,111,1,9,7,[other] +6,9,102,1,9,7,[other] +6,10,129,1,9,[unknown],[other] +6,11,129,1,9,[unknown],[other] +6,12,129,1,9,[unknown],[other] +6,13,104,1,9,[unknown],[other] +6,14,104,6,9,[unknown],[other] +6,15,104,6,9,[unknown],[other] +6,16,104,6,9,[unknown],[other] +6,17,104,6,9,7,[other] +6,18,104,6,9,7,[other] +6,19,104,6,9,7,[other] +6,20,104,6,9,7,[other] +6,21,104,6,9,7,[other] +6,22,104,6,9,7,[other] +6,23,104,6,9,7,[other] +6,24,104,6,9,7,[other] +6,25,104,6,9,7,[other] +6,26,104,6,9,7,[other] +6,27,104,6,9,7,[other] +6,28,104,6,9,7,[other] +6,29,104,6,9,7,[other] +6,30,104,6,9,7,[other] +6,31,104,6,9,7,[other] +6,32,104,6,9,7,[other] +6,33,104,6,9,7,[other] +7,3,117,2,9,7,[other] +7,4,129,6,9,7,[other] +7,5,104,9,9,7,[other] +7,6,129,9,9,7,[other] +7,7,129,9,9,7,[other] +7,8,129,9,9,7,[other] +7,9,129,6,9,2,[other] +7,10,104,9,9,7,[other] +7,11,112,9,9,7,[other] +7,12,112,9,9,7,[other] +7,13,112,[mask],9,7,[other] +7,14,112,[mask],9,8,[other] +7,15,112,[mask],9,7,[other] +7,16,112,[mask],9,7,[other] +7,17,112,9,9,7,[other] +7,18,112,[mask],9,7,[other] +7,19,112,[mask],9,7,[other] +7,20,112,[mask],9,7,[other] +7,21,129,1,9,7,[other] +7,22,129,1,9,7,[other] +7,23,129,9,9,7,[other] +7,24,112,9,9,7,[other] +7,25,112,9,9,7,[other] +7,26,112,9,9,7,[other] +7,27,112,9,9,7,[other] +7,28,112,9,9,7,[other] +7,29,112,9,9,8,[other] +7,30,112,9,9,7,[other] +7,31,112,[mask],9,7,[unknown] +7,32,112,[mask],9,8,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index f7a88c52..caac944b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,101,1,[other],8,2 -8,5,104,1,[other],[unknown],2 -8,6,104,3,[other],[other],[other] -8,7,103,5,[other],0,1 -8,8,128,1,[other],0,[other] -8,9,105,3,[other],6,[other] -8,10,128,1,7,[mask],[other] -8,11,120,[mask],7,[unknown],[other] -8,12,113,1,[other],[mask],1 -8,13,105,1,[other],2,[other] -8,14,113,1,7,2,1 -8,15,113,1,[other],1,1 -8,16,113,1,[other],[mask],1 -8,17,113,1,[other],2,1 -8,18,113,1,[other],1,1 -8,19,113,1,[other],1,1 -8,20,105,0,[other],1,1 -8,21,105,1,8,9,1 -8,22,103,0,9,1,1 -8,23,113,0,8,0,1 -8,24,113,0,[other],1,1 -8,25,113,0,[other],1,1 -8,26,113,0,[other],1,1 -8,27,113,0,[other],8,1 -8,28,113,1,[other],8,1 -8,29,113,1,[other],8,1 -8,30,113,1,[other],0,1 -8,31,113,1,[other],0,1 -8,32,108,1,[other],1,1 -8,33,113,1,[other],7,1 +8,4,111,9,9,7,[other] +8,5,111,9,9,7,[other] +8,6,111,9,9,7,[other] +8,7,111,1,9,7,[other] +8,8,111,1,9,7,[other] +8,9,111,1,9,7,[other] +8,10,102,1,9,7,[other] +8,11,129,1,9,[unknown],[other] +8,12,102,1,9,[unknown],[other] +8,13,104,6,9,[unknown],[other] +8,14,104,1,9,[unknown],[other] +8,15,104,6,9,[unknown],[other] +8,16,104,6,9,[unknown],[other] +8,17,104,6,9,7,[other] +8,18,104,6,9,7,[other] +8,19,104,6,9,7,[other] +8,20,104,6,9,7,[other] +8,21,104,6,9,7,[other] +8,22,104,6,9,7,[other] +8,23,104,6,9,7,[other] +8,24,104,6,9,7,[other] +8,25,104,6,9,7,[other] +8,26,104,6,9,7,[other] +8,27,104,6,9,7,[other] +8,28,104,6,9,7,[other] +8,29,104,6,9,7,[other] +8,30,104,6,9,7,[other] +8,31,104,6,9,7,[other] +8,32,104,6,9,7,[other] +8,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index 7f5bf564..3f1d5fac 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,108,5,[other],8,2 -9,4,122,5,[other],7,1 -9,5,105,5,[other],7,[other] -9,6,122,5,7,7,[other] -9,7,122,5,[other],7,[other] -9,8,122,5,[other],7,1 -9,9,122,1,[other],2,1 -9,10,113,[mask],7,8,1 -9,11,113,1,[other],2,1 -9,12,113,[mask],7,2,1 -9,13,113,1,[other],2,1 -9,14,113,[mask],[other],2,1 -9,15,113,[mask],1,2,1 -9,16,113,1,[other],7,1 -9,17,108,8,1,7,1 -9,18,108,1,[other],7,1 -9,19,108,1,[other],7,1 -9,20,108,1,[other],7,1 -9,21,108,8,[other],7,1 -9,22,122,1,[other],2,1 -9,23,113,1,[other],2,1 -9,24,113,8,[other],8,1 -9,25,113,1,[other],8,1 -9,26,113,1,[other],0,1 -9,27,113,8,[other],2,1 -9,28,113,1,[other],2,1 -9,29,113,8,[other],1,1 -9,30,113,1,1,2,1 -9,31,113,[mask],[other],1,1 -9,32,113,1,1,2,1 +9,3,113,3,2,[other],[other] +9,4,119,9,2,7,[mask] +9,5,129,9,9,[other],[other] +9,6,119,9,9,7,[mask] +9,7,104,9,9,7,[other] +9,8,119,9,9,7,[other] +9,9,129,9,9,7,[other] +9,10,112,9,9,7,[other] +9,11,112,9,9,7,[unknown] +9,12,112,[mask],9,7,[other] +9,13,112,[mask],9,7,[other] +9,14,112,[mask],9,7,[other] +9,15,112,[mask],9,7,[other] +9,16,112,[mask],9,7,[other] +9,17,112,[mask],9,8,[other] +9,18,112,[mask],9,7,[other] +9,19,129,1,9,7,[other] +9,20,129,1,9,7,[other] +9,21,129,1,9,7,[other] +9,22,104,1,9,7,[other] +9,23,104,6,9,7,[other] +9,24,104,6,9,7,[other] +9,25,104,6,9,7,[other] +9,26,104,6,9,7,[other] +9,27,104,6,9,7,[other] +9,28,104,6,9,7,[other] +9,29,104,6,9,7,[other] +9,30,104,6,9,7,[other] +9,31,104,6,9,7,[other] +9,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv new file mode 100644 index 00000000..91865281 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv @@ -0,0 +1,5 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.03451868,0.031921398,0.029532596,0.027744867,0.02760109,0.030242559,0.033749565,0.027132228,0.033893008,0.030211333,0.027323615,0.0273727,0.027940668,0.02913617,0.03199635,0.030564532,0.02930324,0.031335846,0.02836081,0.035665363,0.032468908,0.031003729,0.033122327,0.030269567,0.03076924,0.030623542,0.02832116,0.03149027,0.02777426,0.029747033,0.030456595,0.027495332,0.030911474 +0.027516257,0.028654557,0.032131042,0.031892225,0.024753015,0.034306064,0.031358637,0.02987722,0.03253693,0.030763064,0.027757306,0.029624237,0.029635688,0.028321382,0.029743204,0.027194707,0.02963858,0.02781912,0.030843636,0.029608745,0.027764315,0.02745214,0.029405791,0.029906224,0.033089224,0.034630504,0.02899261,0.03382853,0.038423352,0.030570587,0.031674568,0.03056725,0.029719174 +0.030222073,0.031830907,0.028284168,0.028407857,0.027115861,0.03235872,0.029203441,0.02976575,0.026956126,0.027495082,0.03189054,0.028712502,0.03204519,0.030992731,0.03524834,0.032565366,0.027216628,0.034662586,0.02938502,0.033734377,0.028660439,0.033143435,0.03173607,0.03174802,0.031067362,0.03277405,0.029025575,0.031590212,0.025999047,0.02817474,0.026592813,0.028226981,0.033168018 +0.025530642,0.026080305,0.02652737,0.03402691,0.027508548,0.038157314,0.027138228,0.031741947,0.03190737,0.030657675,0.026315706,0.030096767,0.028837977,0.03074533,0.031430572,0.033588294,0.028155396,0.029817235,0.024138339,0.028173123,0.027259734,0.032578666,0.034752455,0.034232706,0.03252036,0.0357678,0.029168166,0.032422952,0.029197408,0.030990023,0.025777996,0.031730004,0.0330266 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv new file mode 100644 index 00000000..a3d9edc1 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv @@ -0,0 +1,5 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.024938403,0.025853546,0.030925326,0.035836563,0.027472962,0.033917453,0.031773735,0.033111185,0.030894933,0.03310667,0.03077764,0.031968474,0.027649606,0.029903907,0.03066213,0.030050345,0.028726462,0.024805613,0.029500253,0.026645845,0.025433421,0.030492553,0.029441224,0.033256244,0.030633831,0.03083032,0.029116308,0.03357199,0.035229903,0.031910744,0.02843861,0.03163502,0.031488776 +0.027546028,0.024828414,0.029011007,0.033997692,0.028309349,0.034571003,0.028885573,0.030300727,0.033193853,0.03057627,0.030879539,0.030720139,0.028182643,0.03336716,0.031966623,0.029043915,0.030032871,0.026891707,0.028006839,0.028216656,0.030012557,0.03335293,0.03443931,0.034874037,0.031277187,0.02787145,0.027704827,0.033389967,0.027017491,0.03146076,0.027681751,0.030754598,0.031635087 +0.025267702,0.02593611,0.026375175,0.033555325,0.02729746,0.03769069,0.028252527,0.03147091,0.031586744,0.02977779,0.026451198,0.029979987,0.028936028,0.031154884,0.0320948,0.03343466,0.027493577,0.029236242,0.024690645,0.028272472,0.026758416,0.031592447,0.03592271,0.03407506,0.03227401,0.035707034,0.030419732,0.03240453,0.030306093,0.030438218,0.026424794,0.031391647,0.033330467 +0.027293371,0.028949117,0.028703904,0.02919847,0.030929094,0.032399643,0.029274687,0.034145895,0.02837577,0.029229118,0.030326605,0.03315343,0.032393903,0.032588884,0.030739764,0.030741734,0.033645798,0.030104026,0.032112077,0.03169782,0.029715285,0.030085078,0.033176463,0.032097504,0.027618587,0.02773887,0.030057417,0.028018357,0.025789501,0.03361293,0.027174367,0.03010951,0.02880308 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv new file mode 100644 index 00000000..e4570072 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv @@ -0,0 +1,4 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.033277225,0.030706238,0.03168895,0.033311088,0.029628102,0.026783517,0.033642292,0.028419774,0.03004662,0.030877694,0.030766364,0.02872636,0.028279921,0.025215175,0.032209065,0.028634787,0.031974144,0.031396896,0.027670972,0.030388262,0.03137201,0.0331837,0.024129286,0.02784322,0.03336912,0.025571778,0.033213194,0.032749813,0.033496857,0.029778576,0.03258353,0.029908357,0.029157136 +0.025729796,0.029602438,0.029645566,0.029040024,0.031028586,0.030800173,0.033909444,0.031098856,0.028809031,0.027932486,0.029731028,0.031625725,0.033525992,0.029835034,0.029137556,0.028564114,0.03216789,0.027496634,0.034953404,0.028403202,0.026970934,0.027889818,0.031215824,0.029021468,0.030363686,0.03254443,0.03467346,0.028671235,0.034229062,0.029859748,0.031822145,0.030721655,0.028979547 +0.028761078,0.027854176,0.03048727,0.034092404,0.029769653,0.030306583,0.03338378,0.032568734,0.0329339,0.03081607,0.026996588,0.028901242,0.028271142,0.026599998,0.027621023,0.02927734,0.034487005,0.032435104,0.022172494,0.029216152,0.028780058,0.030934772,0.025088819,0.030961733,0.032769565,0.028614981,0.03369568,0.030542089,0.03556081,0.033930458,0.030258873,0.03194647,0.029963972 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv new file mode 100644 index 00000000..fc1bbb92 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv @@ -0,0 +1,7 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.033417575,0.030952973,0.031909764,0.03328892,0.029420735,0.02633423,0.03413355,0.028891983,0.02999831,0.030924743,0.030936386,0.02908393,0.028261695,0.025051711,0.032034438,0.028418737,0.032599755,0.03089184,0.027745165,0.0306719,0.031189425,0.032526094,0.023779722,0.027861075,0.03290723,0.02475645,0.03326867,0.03255766,0.03400532,0.030586168,0.032822493,0.030047486,0.028723868 +0.034453217,0.0305892,0.029416787,0.029322578,0.028612511,0.031616293,0.028566025,0.026076926,0.03032813,0.02860342,0.032680735,0.028623346,0.028884213,0.03250039,0.034757424,0.029118933,0.027070051,0.031802647,0.031775847,0.03249104,0.03419997,0.0347499,0.034769706,0.03168993,0.032166995,0.029576255,0.02648399,0.032632153,0.022518143,0.027031703,0.028449764,0.027058687,0.031383082 +0.03126686,0.028659452,0.026583998,0.02960171,0.029598372,0.0348543,0.028967595,0.027243897,0.03295455,0.028712928,0.027025098,0.02840309,0.029796531,0.030191114,0.032229044,0.030590648,0.030458689,0.030780101,0.028688198,0.030927148,0.03236309,0.035447787,0.03583643,0.031489626,0.034140706,0.032815706,0.028919876,0.032643765,0.022453642,0.028814038,0.028506618,0.028614122,0.030421335 +0.024738476,0.030802721,0.029338533,0.030698724,0.026044017,0.036583103,0.02847107,0.0297974,0.030350022,0.031745814,0.027877493,0.030870043,0.031255092,0.029293576,0.030610705,0.032736078,0.027911829,0.030885635,0.028708616,0.030616442,0.026017355,0.031379726,0.033175353,0.032386277,0.030061183,0.03907589,0.027840383,0.030412367,0.03361048,0.028390406,0.025730342,0.030818133,0.031766724 +0.027777517,0.028804556,0.031672627,0.030206317,0.025076197,0.034134787,0.032481443,0.029717883,0.03154765,0.028994586,0.027599279,0.028896887,0.030154243,0.028881382,0.030242773,0.027787082,0.02839826,0.0288448,0.031094935,0.029876556,0.027011143,0.026954878,0.030751621,0.029737474,0.032815382,0.035880763,0.031499054,0.03416633,0.03777237,0.028893098,0.032805875,0.02953868,0.029983671 +0.027476907,0.029252572,0.029974613,0.03427469,0.03160824,0.029946703,0.026536744,0.03142502,0.029297996,0.033668708,0.030066026,0.031427413,0.031061247,0.026917415,0.030150387,0.033821,0.0326446,0.032380875,0.025550779,0.02765895,0.02903609,0.035553962,0.025652928,0.029973598,0.030050268,0.028396083,0.03117175,0.03078121,0.032512754,0.03008112,0.02760991,0.033881046,0.03015839 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv new file mode 100644 index 00000000..66ac322a --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv @@ -0,0 +1,4 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.02787407,0.027104642,0.030358018,0.034553517,0.028322224,0.031050757,0.034033015,0.031545833,0.033861537,0.030875284,0.027181892,0.028938169,0.027790133,0.027383799,0.028615393,0.028780295,0.03324079,0.030557051,0.022777924,0.029385028,0.028478311,0.030502185,0.026848188,0.03165467,0.032651097,0.028698592,0.032736804,0.031015739,0.037046205,0.033572696,0.030005831,0.03182181,0.030738411 +0.02670878,0.025883488,0.02744727,0.03386368,0.029877376,0.032459594,0.030426193,0.03247706,0.02878972,0.027941974,0.027739787,0.030217001,0.030183967,0.029890094,0.032915857,0.03072404,0.030120345,0.030178469,0.027195016,0.02812506,0.028859448,0.029241446,0.031200247,0.029883275,0.0328588,0.029916031,0.035874527,0.030879542,0.033642642,0.031450473,0.030106302,0.03142932,0.03149319 +0.032150064,0.028221862,0.028330833,0.02810167,0.027819155,0.03160524,0.027474659,0.027735386,0.033368625,0.028838621,0.028449835,0.027917936,0.032627217,0.031592034,0.03244308,0.028486887,0.03201186,0.028425962,0.033350077,0.031887256,0.03447993,0.030445999,0.032843858,0.028395893,0.032929353,0.029940993,0.026082069,0.032996614,0.026771395,0.031200353,0.031379223,0.030597694,0.031098424 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv new file mode 100644 index 00000000..b6233023 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv @@ -0,0 +1,8 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.027693711,0.029121894,0.03263769,0.030477673,0.025150716,0.03287544,0.032045007,0.030850839,0.031303454,0.02993946,0.027595572,0.02886764,0.031017965,0.027735751,0.02935163,0.027287817,0.030652735,0.029687006,0.030908603,0.030391091,0.027535228,0.026636822,0.027238684,0.028523553,0.03267429,0.03431938,0.03061821,0.033247806,0.040079303,0.030726168,0.03266249,0.03049625,0.02965006 +0.025466071,0.029875752,0.029835982,0.029151956,0.028186664,0.03173176,0.03316926,0.030232249,0.031046985,0.02931059,0.029201102,0.03172116,0.033616595,0.029696383,0.029422067,0.027533485,0.034060102,0.026428862,0.035074487,0.030573001,0.027960634,0.02801773,0.03157427,0.029605145,0.0301314,0.03144874,0.030063352,0.028544225,0.03480755,0.032065663,0.030100726,0.031310387,0.029035721 +0.026478115,0.027542712,0.025084658,0.02916108,0.0296517,0.030709622,0.029443054,0.031282466,0.031903658,0.029175015,0.02586855,0.028222973,0.03547591,0.02836005,0.03144234,0.03363753,0.03476335,0.02754813,0.028392714,0.029871454,0.028496739,0.030743234,0.02964027,0.027810814,0.032352984,0.031880755,0.030597484,0.03063106,0.032444194,0.03375546,0.029653978,0.03467788,0.033299997 +0.026364712,0.029757837,0.032045525,0.031597987,0.030919015,0.031508707,0.031495456,0.03135381,0.03211043,0.03435329,0.03110224,0.032581497,0.029810883,0.029403877,0.027003385,0.030518897,0.03186091,0.026397405,0.03112966,0.027613735,0.026846573,0.032183122,0.029105142,0.032442607,0.028408209,0.031621095,0.028020909,0.03026787,0.031812698,0.030703535,0.02858388,0.031764213,0.029310849 +0.03315158,0.030279914,0.029608734,0.029177485,0.027309386,0.032146376,0.0286247,0.026008293,0.032145012,0.029281488,0.03193118,0.028416706,0.029567713,0.032534126,0.033859003,0.02824213,0.02870284,0.031056287,0.0315024,0.033499297,0.03437484,0.034205765,0.034372948,0.031886913,0.032041393,0.029588355,0.024660248,0.03200928,0.023830036,0.028581526,0.027754126,0.027885024,0.03176486 +0.025848068,0.028431289,0.029892355,0.028693581,0.030470718,0.029235307,0.030940453,0.03242136,0.029718446,0.027495537,0.029365137,0.02925045,0.03549993,0.030839637,0.028326172,0.029380446,0.034169305,0.03261548,0.028191667,0.0298291,0.028319623,0.027590321,0.02789852,0.028912824,0.029687619,0.03054694,0.033803966,0.027655903,0.037782732,0.031797566,0.030679887,0.03306369,0.031645942 +0.024057524,0.02544963,0.025607307,0.029881254,0.029157504,0.031960018,0.030122014,0.032780554,0.031288777,0.028194267,0.027988294,0.028752653,0.036150485,0.031077877,0.031034835,0.031049933,0.034480184,0.02570712,0.030488791,0.028481508,0.027200652,0.029486086,0.029952202,0.029214997,0.032385252,0.032020196,0.029338684,0.03019485,0.03324283,0.034965817,0.028807197,0.034836706,0.034644097 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv new file mode 100644 index 00000000..c4d448a9 --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv @@ -0,0 +1,5 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.02861608,0.02783555,0.031125112,0.034070816,0.029551925,0.02920194,0.03443248,0.032701004,0.03236621,0.031025173,0.027565764,0.029052038,0.028101817,0.02655173,0.028142825,0.029290026,0.03396453,0.031744126,0.022819739,0.029417034,0.028412648,0.03002513,0.02473677,0.030448401,0.031774003,0.027520519,0.034440182,0.030517727,0.037965015,0.03373207,0.030928032,0.03187111,0.030052474 +0.029571708,0.027468769,0.028687142,0.030722428,0.030333482,0.028803239,0.034810323,0.032661207,0.028865434,0.028517043,0.03039022,0.029620783,0.030924972,0.029667925,0.033478405,0.02773338,0.03547341,0.02907416,0.032520335,0.033110958,0.03192609,0.030285636,0.027565196,0.028671881,0.031343654,0.024217593,0.030943919,0.029093694,0.028387735,0.03578851,0.029546076,0.029263297,0.0305314 +0.03309813,0.030376514,0.031082107,0.032114696,0.0303959,0.026847737,0.033983357,0.028783653,0.029035237,0.02931486,0.030565187,0.0282617,0.028926874,0.025849348,0.032453902,0.029420223,0.030807314,0.032321904,0.027733354,0.029939143,0.030494139,0.032511473,0.024984352,0.027675122,0.033265285,0.026638621,0.03590076,0.032994192,0.033117052,0.028538441,0.033555407,0.02946036,0.029553706 +0.032728393,0.028721752,0.02882793,0.027880307,0.028566426,0.030735191,0.027027326,0.027918302,0.033026785,0.029266033,0.028729456,0.028066441,0.03297658,0.031279273,0.031866837,0.028559575,0.032620937,0.02890799,0.033787943,0.03182001,0.03511367,0.030451855,0.03162444,0.027786268,0.03249884,0.029433765,0.025993556,0.032565445,0.026775395,0.031265218,0.031698216,0.030825824,0.030654097 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv new file mode 100644 index 00000000..4e8c02ca --- /dev/null +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv @@ -0,0 +1,4 @@ +[unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 +0.03475592,0.03205031,0.029370865,0.02778089,0.027614197,0.030346887,0.03223454,0.026713328,0.03431964,0.030279862,0.027550474,0.027702024,0.028271765,0.029716752,0.031870633,0.03032701,0.029443298,0.03097386,0.02868564,0.035414,0.033398263,0.030973615,0.033969566,0.030356236,0.030772602,0.030513762,0.027257016,0.031204006,0.027268384,0.029877514,0.030222507,0.02795559,0.03080913 +0.027402356,0.027945139,0.02530322,0.029322542,0.029918933,0.029952679,0.028517315,0.03166655,0.031823326,0.02963542,0.026160058,0.028808074,0.03524668,0.028342647,0.03120509,0.0340563,0.03451171,0.02670396,0.02878434,0.029324375,0.028796544,0.029988907,0.029430298,0.027544383,0.031944152,0.031181917,0.030243525,0.031055551,0.032528445,0.03417648,0.030487247,0.03531119,0.032680634 +0.032010403,0.03287599,0.029452827,0.027987542,0.027845826,0.03130848,0.027573993,0.030086143,0.02799824,0.028927118,0.031524617,0.02894558,0.032493584,0.030415898,0.03303464,0.03172704,0.029664379,0.035562575,0.029617772,0.034429386,0.031013394,0.032945413,0.029464815,0.030695107,0.03063894,0.031342026,0.026874157,0.030781394,0.025375465,0.029842958,0.026907688,0.028956134,0.031680416 From e504c1443bf3100027d8747d3e452d892386cdbc Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 09:57:13 +0200 Subject: [PATCH 37/81] Make special_token_ids metadata field mandatory --- .../config/hyperparameter_search_config.py | 10 ++- src/sequifier/config/infer_config.py | 6 ++ src/sequifier/config/train_config.py | 12 +++- src/sequifier/infer.py | 5 ++ src/sequifier/preprocess.py | 9 +++ src/sequifier/special_tokens.py | 25 +++++++ tests/unit/test_infer.py | 52 +++++++++++++- tests/unit/test_preprocess.py | 1 + tests/unit/test_train.py | 71 +++++++++++++++++++ 9 files changed, 185 insertions(+), 6 deletions(-) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index cec47b2f..cb3841f8 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -18,6 +18,7 @@ TrainModel, ) from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.special_tokens import validate_special_token_ids class FloatDistribution(BaseModel): @@ -119,8 +120,8 @@ def sample_trial(self, trial: Any) -> BERTSpecModel: replacement_distribution = self.replacement_distribution[ replacement_distribution_index - ].model_copy(deep=True) - span_masking = self.span_masking[span_masking_index].model_copy(deep=True) + ].model_copy(deep=True) # type: ignore + span_masking = self.span_masking[span_masking_index].model_copy(deep=True) # type: ignore logger.info( f"{masking_probability = } - {replacement_distribution = } - {span_masking = }" @@ -164,6 +165,11 @@ def load_hyperparameter_search_config( ) as f: metadata_config = json.loads(f.read()) + validate_special_token_ids( + metadata_config.get("special_token_ids"), + source=f"metadata config '{metadata_config_path}'", + ) + config_values["column_types"] = config_values.get( "column_types", [metadata_config["column_types"]] ) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 62277c76..59d1ef75 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -15,6 +15,7 @@ ) from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.special_tokens import validate_special_token_ids @beartype @@ -46,6 +47,11 @@ def load_inferer_config( ) as f: metadata_config = json.load(f) + validate_special_token_ids( + metadata_config.get("special_token_ids"), + source=f"metadata config '{metadata_config_path}'", + ) + config_values["column_types"] = config_values.get( "column_types", metadata_config["column_types"] ) diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index d387e7cd..5aa6ae29 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -23,7 +23,7 @@ import sequifier from sequifier.config.probabilities import ProbabilityDistribution from sequifier.helpers import normalize_path, try_catch_excess_keys -from sequifier.special_tokens import SPECIAL_TOKEN_IDS +from sequifier.special_tokens import SPECIAL_TOKEN_IDS, validate_special_token_ids AnyType = str | int | float @@ -98,8 +98,9 @@ def load_train_config( ) config_values["id_maps"] = metadata_config["id_maps"] - config_values["special_token_ids"] = metadata_config.get( - "special_token_ids", SPECIAL_TOKEN_IDS.ids_by_label + config_values["special_token_ids"] = validate_special_token_ids( + metadata_config.get("special_token_ids"), + source=f"metadata config '{metadata_config_path}'", ) return try_catch_excess_keys(config_path, TrainModel, config_values) @@ -575,6 +576,11 @@ class TrainModel(BaseModel): model_spec: ModelSpecModel training_spec: TrainingSpecModel + @field_validator("special_token_ids") + @classmethod + def validate_special_token_ids_match_runtime(cls, v): + return validate_special_token_ids(v, source="TrainModel") + @model_validator(mode="after") def validate_bert_prediction_length_matches_seq_length(self): if ( diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 41b491cb..57902f78 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -24,6 +24,7 @@ unpack_preprocessed_pt_tuple, write_data, ) +from sequifier.special_tokens import validate_special_token_ids from sequifier.train import ( infer_with_embedding_model, infer_with_generative_model, @@ -66,6 +67,10 @@ def infer(args: Any, args_config: dict[str, Any]) -> None: normalize_path(config.metadata_config_path, config.project_root), "r" ) as f: metadata_config = json.loads(f.read()) + validate_special_token_ids( + metadata_config.get("special_token_ids"), + source=f"metadata config '{config.metadata_config_path}'", + ) id_maps = metadata_config["id_maps"] selected_columns_statistics = metadata_config["selected_columns_statistics"] else: diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 46747d4a..c67cb9eb 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -26,6 +26,7 @@ SPECIAL_TOKEN_ID_VALUES, SPECIAL_TOKEN_IDS, SPECIAL_TOKEN_LABELS, + validate_special_token_ids, ) INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") @@ -192,6 +193,10 @@ def __init__( with open(metadata_path, "r") as f: preexisting_metadata = json.load(f) + validate_special_token_ids( + preexisting_metadata.get("special_token_ids"), + source=f"metadata config '{self.metadata_config_path}'", + ) id_maps = preexisting_metadata["id_maps"] selected_columns_statistics = preexisting_metadata[ "selected_columns_statistics" @@ -282,6 +287,10 @@ def __init__( with open(metadata_path, "r") as f: preexisting_metadata = json.load(f) + validate_special_token_ids( + preexisting_metadata.get("special_token_ids"), + source=f"metadata config '{self.metadata_config_path}'", + ) id_maps = preexisting_metadata["id_maps"] selected_columns_statistics = preexisting_metadata[ "selected_columns_statistics" diff --git a/src/sequifier/special_tokens.py b/src/sequifier/special_tokens.py index 9f1cd4ba..c92e23d8 100644 --- a/src/sequifier/special_tokens.py +++ b/src/sequifier/special_tokens.py @@ -1,4 +1,6 @@ +from collections.abc import Mapping from dataclasses import asdict, dataclass +from typing import Any @dataclass(frozen=True) @@ -27,3 +29,26 @@ def ids_by_label(self) -> dict[str, int]: SPECIAL_TOKEN_IDS = SpecialTokenIds() SPECIAL_TOKEN_LABELS = frozenset(SPECIAL_TOKEN_IDS.ids_by_label.keys()) SPECIAL_TOKEN_ID_VALUES = frozenset(SPECIAL_TOKEN_IDS.labels_by_id.keys()) + + +def validate_special_token_ids( + special_token_ids: Mapping[str, Any] | None, + source: str = "metadata", +) -> dict[str, int]: + """Validate persisted special token IDs against runtime constants.""" + expected = SPECIAL_TOKEN_IDS.ids_by_label + assert special_token_ids is not None + try: + normalized = {str(label): int(id_) for label, id_ in special_token_ids.items()} + except (AttributeError, TypeError, ValueError) as exc: + raise ValueError( + f"{source} special_token_ids must be a mapping from token labels to integer IDs." + ) from exc + + if normalized != expected: + raise ValueError( + f"{source} special_token_ids must match the sequifier runtime constants. " + f"Expected {expected}, found {dict(special_token_ids)}." + ) + + return normalized diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 5416dc41..9bfdaa63 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -1,11 +1,13 @@ +import json from unittest.mock import patch import numpy as np import polars as pl import pytest import torch +import yaml -from sequifier.config.infer_config import InfererModel +from sequifier.config.infer_config import InfererModel, load_inferer_config from sequifier.infer import ( Inferer, calculate_item_positions, @@ -234,6 +236,54 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): ) +def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_path): + data_path = tmp_path / "data.parquet" + data_path.touch() + metadata_path = tmp_path / "metadata.json" + config_path = tmp_path / "infer.yaml" + + metadata_path.write_text( + json.dumps( + { + "split_paths": [str(data_path)], + "column_types": {"target_col": "int64"}, + "id_maps": {"target_col": {"A": 3}}, + "selected_columns_statistics": {}, + "special_token_ids": { + "[unknown]": 10, + "[other]": 11, + "[mask]": 12, + }, + } + ) + ) + config_path.write_text( + yaml.safe_dump( + { + "project_root": str(tmp_path), + "metadata_config_path": metadata_path.name, + "model_path": "dummy.onnx", + "model_type": "generative", + "training_objective": "causal", + "data_path": str(data_path), + "input_columns": ["target_col"], + "categorical_columns": ["target_col"], + "real_columns": [], + "target_columns": ["target_col"], + "column_types": {"target_col": "int64"}, + "target_column_types": {"target_col": "categorical"}, + "seed": 42, + "device": "cpu", + "seq_length": 3, + "inference_batch_size": 2, + } + ) + ) + + with pytest.raises(ValueError, match="special_token_ids must match"): + load_inferer_config(str(config_path), {}, skip_metadata=False) + + def test_infer_pure_passes_attention_valid_mask_to_onnx(mock_inferer): class Input: def __init__(self, name): diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 416d13d9..e18caaf4 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -194,6 +194,7 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): "selected_columns_statistics": { "itemValue": {"mean": 60.0, "std": 10.0} }, + "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, } ) ) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index fb451533..50d7e106 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -1,7 +1,9 @@ import copy +import json import pytest import torch +import yaml from pydantic import ValidationError from sequifier.config.probabilities import PoissonDistributionFloor @@ -11,7 +13,9 @@ ReplacementDistribution, TrainingSpecModel, TrainModel, + load_train_config, ) +from sequifier.special_tokens import SPECIAL_TOKEN_IDS from sequifier.train import TransformerModel @@ -218,6 +222,73 @@ def test_train_model_requires_bert_prediction_length_to_equal_seq_length(model_c TrainModel(**config_values) +def test_train_model_rejects_mismatched_special_token_ids(model_config): + config_values = model_config.model_dump() + config_values["special_token_ids"] = { + "[unknown]": 10, + "[other]": 11, + "[mask]": 12, + } + + with pytest.raises(ValidationError, match="special_token_ids must match"): + TrainModel(**config_values) + + +def test_load_train_config_rejects_mismatched_metadata_special_token_ids( + tmp_path, model_config +): + config_path = tmp_path / "train.yaml" + metadata_path = tmp_path / "metadata.json" + config_values = model_config.model_dump() + config_values["project_root"] = str(tmp_path) + config_values["metadata_config_path"] = metadata_path.name + config_path.write_text(yaml.safe_dump(config_values)) + metadata_path.write_text( + json.dumps( + { + "split_paths": ["data/train.pt", "data/val.pt"], + "column_types": config_values["column_types"], + "n_classes": config_values["n_classes"], + "id_maps": config_values["id_maps"], + "special_token_ids": { + "[unknown]": 10, + "[other]": 11, + "[mask]": 12, + }, + } + ) + ) + + with pytest.raises(ValueError, match="special_token_ids must match"): + load_train_config(str(config_path), {}, skip_metadata=False) + + +def test_load_train_config_defaults_missing_metadata_special_token_ids( + tmp_path, model_config +): + config_path = tmp_path / "train.yaml" + metadata_path = tmp_path / "metadata.json" + config_values = model_config.model_dump() + config_values["project_root"] = str(tmp_path) + config_values["metadata_config_path"] = metadata_path.name + config_path.write_text(yaml.safe_dump(config_values)) + metadata_path.write_text( + json.dumps( + { + "split_paths": ["data/train.pt", "data/val.pt"], + "column_types": config_values["column_types"], + "n_classes": config_values["n_classes"], + "id_maps": config_values["id_maps"], + "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, + } + ) + ) + + config = load_train_config(str(config_path), {}, skip_metadata=False) + + assert config.special_token_ids == SPECIAL_TOKEN_IDS.ids_by_label + + def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size From c3f03f0a4515b39265775a2bc9333d71002b8d1e Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 11:16:29 +0200 Subject: [PATCH 38/81] Remove tuple backward compatibility --- src/sequifier/helpers.py | 26 ---- src/sequifier/infer.py | 5 +- .../io/sequifier_dataset_from_folder_pt.py | 10 +- .../sequifier_dataset_from_folder_pt_lazy.py | 10 +- src/sequifier/preprocess.py | 11 +- tests/integration/conftest.py | 124 ++++++++++-------- ...t_sequifier_dataset_from_folder_pt_lazy.py | 1 + 7 files changed, 76 insertions(+), 111 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index fd3fdb90..5cb2db62 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -377,32 +377,6 @@ def generate_padding_masks( } -@beartype -def unpack_preprocessed_pt_tuple( - data: tuple[Any, ...], -) -> tuple[Any, Any, Any, Any, Optional[Any]]: - """Unpacks both v1 four-item and v2 five-item preprocessed PT tuples.""" - if len(data) == 4: - sequences_dict, sequence_ids, subsequence_ids, start_positions = data - return sequences_dict, sequence_ids, subsequence_ids, start_positions, None - if len(data) == 5: - ( - sequences_dict, - sequence_ids, - subsequence_ids, - start_positions, - left_pad_lengths, - ) = data - return ( - sequences_dict, - sequence_ids, - subsequence_ids, - start_positions, - left_pad_lengths, - ) - raise ValueError(f"Expected a 4- or 5-item preprocessed PT tuple, got {len(data)}") - - @beartype def normalize_path(path: str, project_root: str) -> str: """Normalizes a path to be relative to a project path, then joins them. diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 57902f78..f4dbad3f 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -21,7 +21,6 @@ normalize_path, numpy_to_pytorch, subset_to_input_columns, - unpack_preprocessed_pt_tuple, write_data, ) from sequifier.special_tokens import validate_special_token_ids @@ -491,7 +490,7 @@ def infer_embedding( subsequence_ids_tensor, start_positions_tensor, left_pad_lengths_tensor, - ) = unpack_preprocessed_pt_tuple(data) + ) = data metadata = {} if left_pad_lengths_tensor is not None: target_offset = 0 if config.training_objective == "causal" else 1 @@ -738,7 +737,7 @@ def infer_generative( _, start_positions_tensor, left_pad_lengths_tensor, - ) = unpack_preprocessed_pt_tuple(data) + ) = data total_steps = ( 1 if config.autoregression_total_steps is None diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index f689ac73..988ca94d 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -9,11 +9,7 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import ( - generate_padding_masks, - normalize_path, - unpack_preprocessed_pt_tuple, -) +from sequifier.helpers import generate_padding_masks, normalize_path from sequifier.io.batch import SequifierBatch @@ -65,9 +61,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): _, _, left_pad_lengths_batch, - ) = unpack_preprocessed_pt_tuple( - torch.load(file_path, map_location="cpu", weights_only=False) - ) + ) = torch.load(file_path, map_location="cpu", weights_only=False) for col in all_sequences.keys(): if col in sequences_batch: all_sequences[col].append(sequences_batch[col]) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 37d7940f..dc60aa34 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -10,11 +10,7 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import ( - generate_padding_masks, - normalize_path, - unpack_preprocessed_pt_tuple, -) +from sequifier.helpers import generate_padding_masks, normalize_path from sequifier.io.batch import SequifierBatch @@ -233,9 +229,7 @@ def __iter__( _, _, left_pad_lengths_batch, - ) = unpack_preprocessed_pt_tuple( - torch.load(file_path, map_location="cpu", weights_only=False) - ) + ) = torch.load(file_path, map_location="cpu", weights_only=False) # Generate indices for the whole file indices = torch.arange(file_samples) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index c67cb9eb..4b5afc75 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -16,12 +16,7 @@ from loguru import logger from sequifier.config.preprocess_config import load_preprocessor_config -from sequifier.helpers import ( - PANDAS_TO_TORCH_TYPES, - read_data, - unpack_preprocessed_pt_tuple, - write_data, -) +from sequifier.helpers import PANDAS_TO_TORCH_TYPES, read_data, write_data from sequifier.special_tokens import ( SPECIAL_TOKEN_ID_VALUES, SPECIAL_TOKEN_IDS, @@ -882,8 +877,8 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No for file_path in files: try: if write_format == "pt": - sequences_dict, _, _, _, _ = unpack_preprocessed_pt_tuple( - torch.load(file_path, weights_only=False) + sequences_dict, _, _, _, _ = torch.load( + file_path, weights_only=False ) if sequences_dict: n_samples = sequences_dict[ diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 83208921..30588329 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -1,3 +1,4 @@ +import copy import os import shutil import subprocess @@ -5,6 +6,7 @@ import polars as pl import pytest +import torch import yaml SELECTED_COLUMNS = { @@ -318,77 +320,83 @@ def format_configs_locally( ): from sys import platform - if platform == "windows": - config_paths = [ - preprocessing_config_path_cat, - preprocessing_config_path_cat_multitarget, - preprocessing_config_path_real, - preprocessing_config_path_multi_file, - preprocessing_config_path_interrupted, - training_config_path_cat, - training_config_path_cat_multitarget, - training_config_path_real, - training_config_path_cat_inf_size_1, - training_config_path_cat_inf_size_3, - training_config_path_cat_bert, - training_config_path_real_bert, - training_config_path_distributed, - training_config_path_distributed_lazy_parquet, - training_config_path_lazy, - training_config_path_resume_epoch, - training_config_path_resume_mid_epoch, - inference_config_path_cat, - inference_config_path_cat_multitarget, - training_config_path_cat_multitarget_eager, - inference_config_path_real, - inference_config_path_real_autoregression, - inference_config_path_categorical_autoregression, - inference_config_path_cat_inf_size_1, - inference_config_path_cat_inf_size_3, - inference_config_path_cat_bert, - inference_config_path_cat_bert_embedding, - inference_config_path_distributed, - inference_config_path_distributed_parquet, - inference_config_path_lazy, - hp_search_configs["grid"], - hp_search_configs["sample"], - hp_search_configs["bert"], - hp_search_configs["bayesian"], - hp_search_configs["custom-eval"], - ] - for config_path in config_paths: + config_paths = [ + preprocessing_config_path_cat, + preprocessing_config_path_cat_multitarget, + preprocessing_config_path_real, + preprocessing_config_path_multi_file, + preprocessing_config_path_interrupted, + training_config_path_cat, + training_config_path_cat_multitarget, + training_config_path_real, + training_config_path_cat_inf_size_1, + training_config_path_cat_inf_size_3, + training_config_path_cat_bert, + training_config_path_real_bert, + training_config_path_distributed, + training_config_path_distributed_lazy_parquet, + training_config_path_lazy, + training_config_path_resume_epoch, + training_config_path_resume_mid_epoch, + inference_config_path_cat, + inference_config_path_cat_multitarget, + training_config_path_cat_multitarget_eager, + inference_config_path_real, + inference_config_path_real_autoregression, + inference_config_path_categorical_autoregression, + inference_config_path_cat_inf_size_1, + inference_config_path_cat_inf_size_3, + inference_config_path_cat_bert, + inference_config_path_cat_bert_embedding, + inference_config_path_distributed, + inference_config_path_distributed_parquet, + inference_config_path_lazy, + hp_search_configs["grid"], + hp_search_configs["sample"], + hp_search_configs["bert"], + hp_search_configs["bayesian"], + hp_search_configs["custom-eval"], + ] + original_configs = {} + + cuda_available = torch.cuda.is_available() + + for config_path in config_paths: + if str(platform).startswith("win") or cuda_available: with open(config_path, "r") as f: config = yaml.safe_load(f) + original_config = copy.deepcopy(config) + original_configs[config_path] = original_config + assert config is not None, config_path - config_formatted = { - attr: reformat_parameter(attr, param, "linux->local") - for attr, param in config.items() - } + if platform == "windows": + config = { + attr: reformat_parameter(attr, param, "linux->local") + for attr, param in config.items() + } + + if cuda_available: + if "training_spec" in config: + config["training_spec"]["device"] = "cuda" # type: ignore + if "device" in config: + config["device"] = "cuda" with open(config_path, "w") as f: - yaml.dump( - config_formatted, f, default_flow_style=False, sort_keys=False - ) + yaml.dump(config, f, default_flow_style=False, sort_keys=False) - yield + yield + if str(platform).startswith("win") or cuda_available: for config_path in config_paths: - with open(config_path, "r") as f: - config = yaml.safe_load(f) - - config_formatted = { - attr: reformat_parameter(attr, param, "local->linux") - for attr, param in config.items() - } - with open(config_path, "w") as f: yaml.dump( - config_formatted, f, default_flow_style=False, sort_keys=False + original_configs[config_path], + f, + default_flow_style=False, + sort_keys=False, ) - else: - yield @pytest.fixture(scope="session") diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index f3194651..2c697037 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -65,6 +65,7 @@ def side_effect(path, map_location, weights_only): None, None, None, + None, ) mock_load.side_effect = side_effect From ecbb09745a145ca0441b625cf79d484d1043b62f Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 11:43:27 +0200 Subject: [PATCH 39/81] Create dummy metadata --- src/sequifier/train.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index c05be463..39795814 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -104,7 +104,9 @@ def cleanup(): @beartype -def create_dummy_data(config: TrainModel, local_rank: int) -> dict[str, Tensor]: +def create_dummy_data_and_metadata( + config: TrainModel, local_rank: int +) -> tuple[dict[str, Tensor], dict[str, Tensor]]: dummy_data = {} for col in config.input_columns: dtype = torch.int64 if col in config.categorical_columns else torch.float32 @@ -114,7 +116,14 @@ def create_dummy_data(config: TrainModel, local_rank: int) -> dict[str, Tensor]: device=local_rank, ) - return dummy_data + dummy_metadata = { + "attention_valid_mask": torch.ones( + (config.training_spec.batch_size, config.seq_length), + dtype=torch.bool, + device=local_rank, + ) + } + return dummy_data, dummy_metadata @beartype @@ -345,9 +354,11 @@ def train_worker( model.layers[i] = torch.compile(model.layers[i]) if config.training_spec.device.startswith("cuda"): - dummy_data = create_dummy_data(config, local_rank) + dummy_data, dummy_metadata = create_dummy_data_and_metadata( + config, local_rank + ) with torch.no_grad(): - _ = model(dummy_data, False) + _ = model(dummy_data, dummy_metadata, False) dist.barrier() @@ -387,16 +398,18 @@ def train_worker( ddp_model = DDP(model, device_ids=device_ids, find_unused_parameters=False) if config.training_spec.device.startswith("cuda"): - dummy_data = create_dummy_data(config, local_rank) + dummy_data, dummy_metadata = create_dummy_data_and_metadata( + config, local_rank + ) if config.training_spec.layer_autocast: with torch.no_grad(), torch.autocast( device_type="cuda", dtype=torch.bfloat16 ): - _ = ddp_model(dummy_data, False) + _ = ddp_model(dummy_data, dummy_metadata, False) else: with torch.no_grad(): - _ = ddp_model(dummy_data, False) + _ = ddp_model(dummy_data, dummy_metadata, False) dist.barrier() model.train_model(train_loader, valid_loader, ddp_model=ddp_model) From 24192e56b95b979e8fa8df262e4c6f110c2d28f6 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 13:29:31 +0200 Subject: [PATCH 40/81] Introduce target_max_offset --- README.md | 20 +- documentation/configs/preprocess.md | 1 + documentation/consolidated-docs.md | 19 +- .../config/hyperparameter_search_config.py | 16 +- src/sequifier/config/infer_config.py | 36 +++- src/sequifier/config/preprocess_config.py | 3 + src/sequifier/config/train_config.py | 46 ++++- src/sequifier/helpers.py | 122 +++++++++++- src/sequifier/infer.py | 51 +++-- .../io/sequifier_dataset_from_file.py | 7 +- .../sequifier_dataset_from_folder_parquet.py | 32 +-- ...uifier_dataset_from_folder_parquet_lazy.py | 32 +-- .../io/sequifier_dataset_from_folder_pt.py | 33 ++-- .../sequifier_dataset_from_folder_pt_lazy.py | 32 +-- src/sequifier/make.py | 4 + src/sequifier/preprocess.py | 182 ++++++++++++------ ...infer-test-categorical-autoregression.yaml | 1 + ...infer-test-categorical-bert-embedding.yaml | 1 + .../configs/infer-test-categorical-bert.yaml | 1 + .../infer-test-categorical-embedding.yaml | 1 + .../infer-test-categorical-inf-size-1.yaml | 1 + ...test-categorical-inf-size-3-embedding.yaml | 1 + .../infer-test-categorical-inf-size-3.yaml | 1 + .../infer-test-categorical-multitarget.yaml | 1 + tests/configs/infer-test-categorical.yaml | 1 + .../infer-test-distributed-parquet.yaml | 1 + tests/configs/infer-test-distributed.yaml | 1 + tests/configs/infer-test-lazy.yaml | 1 + .../infer-test-real-autoregression.yaml | 1 + tests/configs/infer-test-real.yaml | 1 + .../configs/train-test-categorical-bert.yaml | 2 + .../train-test-categorical-inf-size-1.yaml | 2 + .../train-test-categorical-inf-size-3.yaml | 2 + ...in-test-categorical-multitarget-eager.yaml | 2 + .../train-test-categorical-multitarget.yaml | 2 + tests/configs/train-test-categorical.yaml | 2 + .../train-test-distributed-lazy-parquet.yaml | 2 + tests/configs/train-test-distributed.yaml | 2 + tests/configs/train-test-lazy.yaml | 2 + tests/configs/train-test-real-bert.yaml | 2 + tests/configs/train-test-real.yaml | 2 + tests/configs/train-test-resume-epoch.yaml | 2 + .../configs/train-test-resume-mid-epoch.yaml | 2 + tests/integration/conftest.py | 4 +- tests/integration/test_make.py | 2 + tests/integration/test_onnx_export.py | 4 + tests/integration/test_preprocessing.py | 27 +-- .../preprocess-manifest.json | 11 ++ ...uifier_dataset_from_folder_parquet_lazy.py | 1 + ...t_sequifier_dataset_from_folder_pt_lazy.py | 4 +- tests/unit/test_helpers.py | 24 ++- .../unit/test_hyperparameter_search_config.py | 14 +- tests/unit/test_infer.py | 5 + tests/unit/test_preprocess.py | 43 ++++- tests/unit/test_train.py | 3 + 55 files changed, 617 insertions(+), 201 deletions(-) create mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json diff --git a/README.md b/README.md index 85f64440..30617973 100644 --- a/README.md +++ b/README.md @@ -97,16 +97,16 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`, which takes this form: - -|sequenceId|subsequenceId|startItemPosition|columnName|[Subsequence Length]|[Subsequence Length - 1]|...|0| -|----------|-------------|-----------------|----------|--------------------|------------------------| - |-| -|0|0|0|column1|"high"|"high"|...|"low"| -|0|0|0|column2|12.3|10.2|...|14.9| -|...|...|...|...|...|...|...|...| -|1|0|15|column1|"medium"|"high"|...|"medium"| -|1|0|15|column2|20.6|18.5|...|21.6| -|...|...|...|...|...|...|...|...| +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `seq_length + target_max_offset` (`target_max_offset` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): + +|sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| +|----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| +|0|0|0|0|column1|"high"|"high"|...|"low"| +|0|0|0|0|column2|12.3|10.2|...|14.9| +|...|...|...|...|...|...|...|...|...| +|1|0|15|0|column1|"medium"|"high"|...|"medium"| +|1|0|15|0|column2|20.6|18.5|...|21.6| +|...|...|...|...|...|...|...|...|...| On inference, the output is returned in the library input format, introduced first. diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index 74ef6c5d..29920541 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -46,6 +46,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `seq_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | +| `target_max_offset` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `seq_length + target_max_offset`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | | `stride_by_split` | `list[int]` | No | `[seq_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 657cf59c..241983bc 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -97,16 +97,16 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`, which takes this form: +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `seq_length + target_max_offset` (`target_max_offset` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): -|sequenceId|subsequenceId|startItemPosition|columnName|[Subsequence Length]|[Subsequence Length - 1]|...|0| -|----------|-------------|-----------------|----------|--------------------|------------------------| - |-| -|0|0|0|column1|"high"|"high"|...|"low"| -|0|0|0|column2|12.3|10.2|...|14.9| -|...|...|...|...|...|...|...|...| -|1|0|15|column1|"medium"|"high"|...|"medium"| -|1|0|15|column2|20.6|18.5|...|21.6| -|...|...|...|...|...|...|...|...| +|sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| +|----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| +|0|0|0|0|column1|"high"|"high"|...|"low"| +|0|0|0|0|column2|12.3|10.2|...|14.9| +|...|...|...|...|...|...|...|...|...| +|1|0|15|0|column1|"medium"|"high"|...|"medium"| +|1|0|15|0|column2|20.6|18.5|...|21.6| +|...|...|...|...|...|...|...|...|...| On inference, the output is returned in the library input format, introduced first. @@ -254,6 +254,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `seq_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | +| `target_max_offset` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `seq_length + target_max_offset`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | | `stride_by_split` | `list[int]` | No | `[seq_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index cb3841f8..74080dcf 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -415,7 +415,9 @@ def validate_scheduler_config(cls, v, info_dict): ) return v - def sample_trial(self, trial: Any) -> TrainingSpecModel: + def sample_trial( + self, trial: Any, target_max_offset: int, window_length: int + ) -> TrainingSpecModel: """Samples training hyperparameters using an Optuna trial. This method leverages the provided Optuna trial to suggest values for @@ -498,6 +500,8 @@ def sample_trial(self, trial: Any) -> TrainingSpecModel: fsdp_cpu_offload=self.fsdp_cpu_offload, torch_compile=self.torch_compile, float32_matmul_precision=self.float32_matmul_precision, + target_max_offset=target_max_offset, + window_length=window_length, ) @@ -699,6 +703,7 @@ class HyperparameterSearchConfig(BaseModel): id_maps: dict[str, dict[str | int, int]] seq_length: list[int] + target_max_offset: int = Field(default=1, ge=0) n_classes: dict[str, int] inference_batch_size: int @@ -816,12 +821,17 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: TrainModel: A fully populated configuration instance for the current trial. """ model_spec = self.model_hyperparameter_sampling.sample_trial(trial) - training_spec = self.training_hyperparameter_sampling.sample_trial(trial) input_columns_index = trial.suggest_categorical( "input_columns_index", list(range(len(self.input_columns))) ) seq_length = trial.suggest_categorical("seq_length", self.seq_length) + window_length = seq_length + self.target_max_offset + training_spec = self.training_hyperparameter_sampling.sample_trial( + trial, + target_max_offset=self.target_max_offset, + window_length=window_length, + ) logger.info(f"{input_columns_index = } - {seq_length = }") @@ -840,6 +850,8 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: target_column_types=self.target_column_types, id_maps=self.id_maps, seq_length=seq_length, + target_max_offset=self.target_max_offset, + window_length=window_length, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 59d1ef75..a05053bb 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -14,7 +14,11 @@ model_validator, ) -from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.helpers import ( + normalize_path, + sequence_layout_from_metadata, + try_catch_excess_keys, +) from sequifier.special_tokens import validate_special_token_ids @@ -51,6 +55,14 @@ def load_inferer_config( metadata_config.get("special_token_ids"), source=f"metadata config '{metadata_config_path}'", ) + sequence_layout = sequence_layout_from_metadata( + metadata_config, config_values["seq_length"] + ) + config_values["target_max_offset"] = sequence_layout.target_max_offset + config_values["window_length"] = sequence_layout.window_length + config_values["sequence_layout_version"] = ( + sequence_layout.sequence_layout_version + ) config_values["column_types"] = config_values.get( "column_types", metadata_config["column_types"] @@ -143,6 +155,9 @@ class InfererModel(BaseModel): seed: int device: str seq_length: int + target_max_offset: int = Field(default=1, ge=0) + window_length: int + sequence_layout_version: int = 1 prediction_length: Optional[int] = None inference_batch_size: int @@ -153,6 +168,11 @@ class InfererModel(BaseModel): @model_validator(mode="after") def normalize_prediction_length(self): + if self.window_length != self.seq_length + self.target_max_offset: + raise ValueError( + "window_length must equal seq_length + target_max_offset " + f"({self.window_length} != {self.seq_length} + {self.target_max_offset})." + ) if self.prediction_length is None: self.prediction_length = ( self.seq_length if self.training_objective == "bert" else 1 @@ -163,8 +183,22 @@ def normalize_prediction_length(self): "For BERT inference, prediction_length must be equal to seq_length " f"(got prediction_length={self.prediction_length}, seq_length={self.seq_length})." ) + elif self.target_max_offset < 1: + raise ValueError( + "Causal inference requires data preprocessed with target_max_offset >= 1" + ) return self + @property + def data_offset(self) -> int: + return self.target_max_offset + + @property + def target_offset(self) -> int: + if self.training_objective == "bert": + return self.target_max_offset + return self.target_max_offset - 1 + @field_validator("training_objective") @classmethod def validate_training_objective(cls, v): diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index 4777d26d..e72a62ed 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -8,6 +8,7 @@ from pydantic import ( BaseModel, ConfigDict, + Field, ValidationInfo, field_validator, model_validator, @@ -54,6 +55,7 @@ class PreprocessorModel(BaseModel): split_ratios: A list of floats that define the relative sizes of data splits (e.g., for train, validation, test). The sum of proportions must be 1.0. seq_length: The sequence length for the model inputs. + target_max_offset: The maximum retained target offset after the model input window. stride_by_split: A list of step sizes for creating subsequences within each data split. max_rows: The maximum number of input rows to process. If None, all rows are processed. seed: A random seed for reproducibility. @@ -77,6 +79,7 @@ class PreprocessorModel(BaseModel): split_ratios: list[float] seq_length: int + target_max_offset: int = Field(default=1, ge=0) stride_by_split: Optional[list[int]] = None max_rows: Optional[int] = None seed: int diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 5aa6ae29..992c76ee 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -22,7 +22,11 @@ import sequifier from sequifier.config.probabilities import ProbabilityDistribution -from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.helpers import ( + normalize_path, + sequence_layout_from_metadata, + try_catch_excess_keys, +) from sequifier.special_tokens import SPECIAL_TOKEN_IDS, validate_special_token_ids AnyType = str | int | float @@ -58,6 +62,20 @@ def load_train_config( ) as f: metadata_config = json.loads(f.read()) + sequence_layout = sequence_layout_from_metadata( + metadata_config, config_values["seq_length"] + ) + config_values["target_max_offset"] = sequence_layout.target_max_offset + config_values["window_length"] = sequence_layout.window_length + config_values["sequence_layout_version"] = ( + sequence_layout.sequence_layout_version + ) + config_values.setdefault("training_spec", {}) + config_values["training_spec"]["target_max_offset"] = ( + sequence_layout.target_max_offset + ) + config_values["training_spec"]["window_length"] = sequence_layout.window_length + split_paths = metadata_config["split_paths"] config_values["column_types"] = config_values.get( @@ -227,6 +245,8 @@ class TrainingSpecModel(BaseModel): fsdp_cpu_offload: Optional[bool] = None torch_compile: str = "outer" float32_matmul_precision: str = "highest" + target_max_offset: int = Field(default=1, ge=0) + window_length: int def __init__(self, **kwargs): super().__init__( @@ -244,11 +264,13 @@ def serialize_dotdict(self, value: DotDict) -> dict[str, Any]: @property def data_offset(self) -> int: - return 1 + return self.target_max_offset @property def target_offset(self) -> int: - return 0 if self.training_objective == "causal" else 1 + if self.training_objective == "bert": + return self.target_max_offset + return self.target_max_offset - 1 @field_validator("layer_type_dtypes") @classmethod @@ -360,6 +382,14 @@ def validate_bert_spec_matches_objective(self): ) return self + @model_validator(mode="after") + def validate_sequence_layout(self): + if self.training_objective == "causal" and self.target_max_offset < 1: + raise ValueError( + "Causal training requires data preprocessed with target_max_offset >= 1" + ) + return self + @field_validator("sampling_strategy") @classmethod def validate_sampling_strategy(cls, v): @@ -563,6 +593,9 @@ class TrainModel(BaseModel): ) seq_length: int + target_max_offset: int = Field(default=1, ge=0) + window_length: int + sequence_layout_version: int = 1 n_classes: dict[str, int] inference_batch_size: int seed: int @@ -583,6 +616,13 @@ def validate_special_token_ids_match_runtime(cls, v): @model_validator(mode="after") def validate_bert_prediction_length_matches_seq_length(self): + if self.window_length != self.seq_length + self.target_max_offset: + raise ValueError( + "window_length must equal seq_length + target_max_offset " + f"({self.window_length} != {self.seq_length} + {self.target_max_offset})." + ) + self.training_spec.target_max_offset = self.target_max_offset + self.training_spec.window_length = self.window_length if ( self.training_spec.training_objective == "bert" and self.model_spec.prediction_length != self.seq_length diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 5cb2db62..1bac51bd 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -3,6 +3,7 @@ import random import re import sys +from dataclasses import dataclass from datetime import datetime from typing import Any, Dict, Optional, Union @@ -48,6 +49,100 @@ ) +@dataclass(frozen=True) +class SequenceLayout: + seq_length: int + target_max_offset: int = 1 + sequence_layout_version: int = 2 + + def __post_init__(self) -> None: + if self.seq_length < 1: + raise ValueError("seq_length must be a positive integer") + if self.target_max_offset < 0: + raise ValueError("target_max_offset must be non-negative") + + @property + def window_length(self) -> int: + return self.seq_length + self.target_max_offset + + @property + def input_offset(self) -> int: + return self.target_max_offset + + def target_offset(self, horizon: int) -> int: + offset = self.target_max_offset - horizon + if offset < 0: + raise ValueError( + f"horizon={horizon} exceeds target_max_offset={self.target_max_offset}" + ) + return offset + + +@beartype +def sequence_column_names(seq_length: int, offset: int) -> list[str]: + if offset < 0: + raise ValueError("offset must be non-negative") + return [str(i) for i in range(seq_length - 1 + offset, offset - 1, -1)] + + +@beartype +def slice_window(tensor: Tensor, seq_length: int, offset: int) -> Tensor: + if offset < 0: + raise ValueError("offset must be non-negative") + + end = -offset if offset else None + result = tensor[:, -(seq_length + offset) : end] + + if result.shape[1] != seq_length: + raise ValueError( + f"Stored window width {tensor.shape[1]} cannot provide " + f"seq_length={seq_length} at offset={offset}" + ) + return result + + +@beartype +def validate_stored_window_width(tensor: Tensor, window_length: int) -> None: + if tensor.shape[1] != window_length: + raise ValueError( + f"Stored window width {tensor.shape[1]} does not match " + f"metadata window_length={window_length}." + ) + + +@beartype +def sequence_layout_from_metadata(metadata: dict, seq_length: int) -> SequenceLayout: + metadata_seq_length = int(metadata.get("seq_length", seq_length)) + if metadata_seq_length != seq_length: + raise ValueError( + f"Configured seq_length={seq_length} does not match preprocessed " + f"metadata seq_length={metadata_seq_length}." + ) + + target_max_offset = int(metadata.get("target_max_offset", 1)) + window_length = int( + metadata.get("window_length", metadata_seq_length + target_max_offset) + ) + if window_length != metadata_seq_length + target_max_offset: + raise ValueError( + "Invalid sequence layout metadata: window_length must equal " + "seq_length + target_max_offset " + f"({window_length} != {metadata_seq_length} + {target_max_offset})." + ) + + layout = SequenceLayout( + seq_length=metadata_seq_length, + target_max_offset=target_max_offset, + sequence_layout_version=int(metadata.get("sequence_layout_version", 1)), + ) + if layout.window_length != window_length: + raise ValueError( + f"Resolved layout window_length={layout.window_length} does not match " + f"metadata window_length={window_length}." + ) + return layout + + # Check an environment variable to see if we are in a testing context IS_TESTING = os.environ.get("SEQUIFIER_TESTING", "0") == "1" @@ -245,6 +340,7 @@ def numpy_to_pytorch( column_types: dict[str, torch.dtype], all_columns: list[str], seq_length: int, + window_length: int, data_offset: int, target_offset: int, ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: @@ -282,12 +378,8 @@ def numpy_to_pytorch( (e.g., `{'price': , 'price_target': }`). - a metadata dictionary containing any explicit masks. """ - input_seq_cols = [ - str(c) for c in range(seq_length - 1 + data_offset, (-1 + data_offset), -1) - ] - target_seq_cols = [ - str(c) for c in range(seq_length - 1 + target_offset, (-1 + target_offset), -1) - ] + input_seq_cols = sequence_column_names(seq_length, data_offset) + target_seq_cols = sequence_column_names(seq_length, target_offset) # We will create a unified dictionary unified_tensors = {} @@ -315,7 +407,11 @@ def numpy_to_pytorch( left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) if left_pad_lengths is not None: metadata = generate_padding_masks( - left_pad_lengths, seq_length, data_offset, target_offset + left_pad_lengths, + seq_length, + window_length, + data_offset, + target_offset, ) else: metadata = {} @@ -362,17 +458,17 @@ def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Optional[ def generate_padding_masks( left_pad_lengths: Tensor, seq_length: int, + window_length: int, data_offset: int, target_offset: int, ) -> dict[str, Tensor]: """Generates explicit attention and target masks as a metadata dictionary.""" - full_length = seq_length + 1 return { "attention_valid_mask": build_valid_mask( - left_pad_lengths, full_length, data_offset, seq_length + left_pad_lengths, window_length, data_offset, seq_length ), "target_valid_mask": build_valid_mask( - left_pad_lengths, full_length, target_offset, seq_length + left_pad_lengths, window_length, target_offset, seq_length ), } @@ -603,6 +699,12 @@ def apply_bert_masking( batch_size, seq_len = valid_mask.shape device = valid_mask.device + for target_name, target in targets_batch.items(): + if target.shape != valid_mask.shape: + raise ValueError( + f"BERT target {target_name!r} has shape {target.shape}; " + f"expected {valid_mask.shape}" + ) if eval_seed is not None: cpu_rng_state = torch.get_rng_state() diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index f4dbad3f..d6c2e864 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -20,7 +20,9 @@ generate_padding_masks, normalize_path, numpy_to_pytorch, + slice_window, subset_to_input_columns, + validate_stored_window_width, write_data, ) from sequifier.special_tokens import validate_special_token_ids @@ -362,8 +364,9 @@ def _bert_target_valid_mask_from_preprocessed_data( metadata = generate_padding_masks( left_pad_lengths, config.seq_length, - data_offset=1, - target_offset=1, + config.window_length, + data_offset=config.data_offset, + target_offset=config.target_offset, ) return _flatten_bert_target_valid_mask(config, metadata, prediction_length) @@ -491,14 +494,16 @@ def infer_embedding( start_positions_tensor, left_pad_lengths_tensor, ) = data + for tensor in sequences_dict.values(): + validate_stored_window_width(tensor, config.window_length) metadata = {} if left_pad_lengths_tensor is not None: - target_offset = 0 if config.training_objective == "causal" else 1 metadata = generate_padding_masks( left_pad_lengths_tensor, config.seq_length, - data_offset=1, - target_offset=target_offset, + config.window_length, + data_offset=config.data_offset, + target_offset=config.target_offset, ) embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata @@ -738,6 +743,8 @@ def infer_generative( start_positions_tensor, left_pad_lengths_tensor, ) = data + for tensor in sequences_dict.values(): + validate_stored_window_width(tensor, config.window_length) total_steps = ( 1 if config.autoregression_total_steps is None @@ -745,19 +752,19 @@ def infer_generative( ) sequences_dict = { - key: tensor[:, :-1] + key: slice_window(tensor, config.seq_length, config.data_offset) for key, tensor in sequences_dict.items() if key in config.input_columns } metadata = {} if left_pad_lengths_tensor is not None: - target_offset = 0 if config.training_objective == "causal" else 1 metadata = generate_padding_masks( left_pad_lengths_tensor, config.seq_length, - data_offset=1, - target_offset=target_offset, + config.window_length, + data_offset=config.data_offset, + target_offset=config.target_offset, ) probs, preds = get_probs_preds_from_dict( @@ -936,8 +943,10 @@ def get_embeddings_pt( Returns: A NumPy array containing the computed embeddings for the batch. """ + for tensor in data.values(): + validate_stored_window_width(tensor, config.window_length) X = { - key: val[:, :-1].numpy() + key: slice_window(val, config.seq_length, config.data_offset).numpy() for key, val in data.items() if key in config.input_columns } @@ -1087,9 +1096,14 @@ def get_embeddings( A NumPy array containing the computed embeddings for the batch. """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) - target_offset = 0 if config.training_objective == "causal" else 1 X, metadata = numpy_to_pytorch( - data, column_types, all_columns, config.seq_length, 1, target_offset + data, + column_types, + all_columns, + config.seq_length, + config.window_length, + config.data_offset, + config.target_offset, ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = ( @@ -1135,10 +1149,14 @@ def get_probs_preds_from_df( """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) - target_offset = 0 if config.training_objective == "causal" else 1 - X, metadata = numpy_to_pytorch( - data, column_types, all_columns, config.seq_length, 1, target_offset + data, + column_types, + all_columns, + config.seq_length, + config.window_length, + config.data_offset, + config.target_offset, ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = ( @@ -1266,7 +1284,8 @@ def get_probs_preds_autoregression( column_types, config.input_columns, seq_length, - data_offset=1, + config.window_length, + data_offset=config.data_offset, target_offset=0, ) diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index 87203d2e..51a778ce 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -41,16 +41,15 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in config.column_types } - target_offset = 0 if config.training_spec.training_objective == "causal" else 1 - # self.all_tensors now holds both inputs and targets all_tensors, metadata_tensors = numpy_to_pytorch( data=data_df, column_types=column_types, all_columns=all_columns, seq_length=config.seq_length, - data_offset=1, - target_offset=target_offset, + window_length=config.window_length, + data_offset=config.training_spec.data_offset, + target_offset=config.training_spec.target_offset, ) self.n_samples = all_tensors[all_columns[0]].shape[0] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 2d2cae63..d667f6c5 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -15,6 +15,8 @@ generate_padding_masks, get_left_pad_lengths_from_preprocessed_data, normalize_path, + sequence_column_names, + sequence_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch @@ -47,6 +49,13 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) + folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) + if folder_layout.window_length != config.window_length: + raise ValueError( + f"Preprocessed folder window_length={folder_layout.window_length} " + f"does not match config window_length={config.window_length}." + ) + self.n_samples = metadata["total_samples"] logger.info( @@ -60,22 +69,12 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): # Sequence formatting structures matching long-format schema boundaries train_seq_len = self.config.seq_length - input_seq_cols = [ - str(c) - for c in range( - train_seq_len - 1 + self.config.training_spec.data_offset, - (-1 + self.config.training_spec.data_offset), - -1, - ) - ] - target_seq_cols = [ - str(c) - for c in range( - train_seq_len - 1 + self.config.training_spec.target_offset, - (-1 + self.config.training_spec.target_offset), - -1, - ) - ] + input_seq_cols = sequence_column_names( + train_seq_len, self.config.training_spec.data_offset + ) + target_seq_cols = sequence_column_names( + train_seq_len, self.config.training_spec.target_offset + ) all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in config.input_columns } @@ -232,6 +231,7 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, + self.config.window_length, self.config.training_spec.data_offset, self.config.training_spec.target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index c922d88c..2145539b 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -16,6 +16,8 @@ generate_padding_masks, get_left_pad_lengths_from_preprocessed_data, normalize_path, + sequence_column_names, + sequence_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch @@ -63,6 +65,13 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) + folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) + if folder_layout.window_length != config.window_length: + raise ValueError( + f"Preprocessed folder window_length={folder_layout.window_length} " + f"does not match config window_length={config.window_length}." + ) + self.batch_files_info = metadata["batch_files"] self.total_samples = metadata["total_samples"] self.sampling_strategy = config.training_spec.sampling_strategy @@ -213,22 +222,12 @@ def __iter__( train_seq_len = self.config.seq_length global_file_start_sample = 0 - input_seq_cols = [ - str(c) - for c in range( - train_seq_len - 1 + self.config.training_spec.data_offset, - (-1 + self.config.training_spec.data_offset), - -1, - ) - ] - target_seq_cols = [ - str(c) - for c in range( - train_seq_len - 1 + self.config.training_spec.target_offset, - (-1 + self.config.training_spec.target_offset), - -1, - ) - ] + input_seq_cols = sequence_column_names( + train_seq_len, self.config.training_spec.data_offset + ) + target_seq_cols = sequence_column_names( + train_seq_len, self.config.training_spec.target_offset + ) # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} @@ -320,6 +319,7 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths[worker_indices], train_seq_len, + self.config.window_length, self.config.training_spec.data_offset, self.config.training_spec.target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 988ca94d..b6108fb6 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -9,7 +9,13 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import generate_padding_masks, normalize_path +from sequifier.helpers import ( + generate_padding_masks, + normalize_path, + sequence_layout_from_metadata, + slice_window, + validate_stored_window_width, +) from sequifier.io.batch import SequifierBatch @@ -41,6 +47,13 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) + folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) + if folder_layout.window_length != config.window_length: + raise ValueError( + f"Preprocessed folder window_length={folder_layout.window_length} " + f"does not match config window_length={config.window_length}." + ) + self.n_samples = metadata["total_samples"] logger.info( @@ -64,6 +77,9 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): ) = torch.load(file_path, map_location="cpu", weights_only=False) for col in all_sequences.keys(): if col in sequences_batch: + validate_stored_window_width( + sequences_batch[col], config.window_length + ) all_sequences[col].append(sequences_batch[col]) if left_pad_lengths_batch is not None: all_left_pad_lengths.append(left_pad_lengths_batch) @@ -166,22 +182,12 @@ def __iter__( data_offset = self.config.training_spec.data_offset target_offset = self.config.training_spec.target_offset data_batch = { - key: tensor[ - batch_indices, - -(train_seq_len + data_offset) : ( - -data_offset if data_offset > 0 else None - ), - ] + key: slice_window(tensor[batch_indices], train_seq_len, data_offset) for key, tensor in self.sequences.items() if key in self.config.input_columns } targets_batch = { - key: tensor[ - batch_indices, - -(train_seq_len + target_offset) : ( - -target_offset if target_offset > 0 else None - ), - ] + key: slice_window(tensor[batch_indices], train_seq_len, target_offset) for key, tensor in self.sequences.items() if key in self.config.target_columns } @@ -191,6 +197,7 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, + self.config.window_length, data_offset, target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index dc60aa34..36e43b7b 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -10,7 +10,13 @@ from torch.utils.data import IterableDataset, get_worker_info from sequifier.config.train_config import TrainModel -from sequifier.helpers import generate_padding_masks, normalize_path +from sequifier.helpers import ( + generate_padding_masks, + normalize_path, + sequence_layout_from_metadata, + slice_window, + validate_stored_window_width, +) from sequifier.io.batch import SequifierBatch @@ -57,6 +63,13 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) + folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) + if folder_layout.window_length != config.window_length: + raise ValueError( + f"Preprocessed folder window_length={folder_layout.window_length} " + f"does not match config window_length={config.window_length}." + ) + self.batch_files_info = metadata["batch_files"] self.total_samples = metadata["total_samples"] self.sampling_strategy = config.training_spec.sampling_strategy @@ -230,6 +243,8 @@ def __iter__( _, left_pad_lengths_batch, ) = torch.load(file_path, map_location="cpu", weights_only=False) + for tensor in sequences_batch.values(): + validate_stored_window_width(tensor, self.config.window_length) # Generate indices for the whole file indices = torch.arange(file_samples) @@ -253,22 +268,12 @@ def __iter__( data_offset = self.config.training_spec.data_offset target_offset = self.config.training_spec.target_offset new_seq = { - k: v[ - worker_indices, - -(train_seq_len + data_offset) : ( - -data_offset if data_offset > 0 else None - ), - ] + k: slice_window(v[worker_indices], train_seq_len, data_offset) for k, v in sequences_batch.items() if k in self.config.input_columns } new_tgt = { - k: v[ - worker_indices, - -(train_seq_len + target_offset) : ( - -target_offset if target_offset > 0 else None - ), - ] + k: slice_window(v[worker_indices], train_seq_len, target_offset) for k, v in sequences_batch.items() if k in self.config.target_columns } @@ -278,6 +283,7 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths_batch[worker_indices], train_seq_len, + self.config.window_length, data_offset, target_offset, ) diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 8777ac97..f7434b49 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -12,6 +12,7 @@ - 0.1 - 0.1 seq_length: 48 +target_max_offset: 1 stride_by_split: - 1 - 1 @@ -30,6 +31,7 @@ EXAMPLE_TARGET_COLUMN_NAME: real seq_length: 48 +window_length: 49 inference_batch_size: 10 export_generative_model: PLEASE FILL # true or false @@ -47,6 +49,7 @@ num_layers: 3 prediction_length: 1 training_spec: + window_length: 49 training_objective: causal device: cuda epochs: 10 @@ -88,6 +91,7 @@ map_to_id: true device: cpu seq_length: 48 +window_length: 49 inference_batch_size: 10 autoregression: true diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 4b5afc75..01d312b1 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -16,7 +16,12 @@ from loguru import logger from sequifier.config.preprocess_config import load_preprocessor_config -from sequifier.helpers import PANDAS_TO_TORCH_TYPES, read_data, write_data +from sequifier.helpers import ( + PANDAS_TO_TORCH_TYPES, + SequenceLayout, + read_data, + write_data, +) from sequifier.special_tokens import ( SPECIAL_TOKEN_ID_VALUES, SPECIAL_TOKEN_IDS, @@ -90,6 +95,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], + target_max_offset: int = 1, mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -103,6 +109,7 @@ def __init__( selected_columns: A list of columns to be included in the preprocessing. split_ratios: A list of floats that define the relative sizes of data splits. seq_length: The sequence length for the model inputs. + target_max_offset: The maximum target horizon retained after each input window. stride_by_split: A list of step sizes for creating subsequences. max_rows: The maximum number of input rows to process. seed: A random seed for reproducibility. @@ -137,6 +144,7 @@ def __init__( np.random.seed(seed) self.n_cores = n_cores or multiprocessing.cpu_count() self.continue_preprocessing = continue_preprocessing + self.layout = SequenceLayout(seq_length, target_max_offset) self._setup_directories() if selected_columns is not None: @@ -232,7 +240,13 @@ def __init__( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, seq_length + 1) + self._write_or_validate_resume_manifest( + selected_columns, + write_format, + data_columns, + ) + + schema = self._create_schema(col_types, self.layout.window_length) data = data.sort(["sequenceId", "itemPosition"]) n_batches = _process_batches_single_file( @@ -241,7 +255,7 @@ def __init__( data, schema, self.n_cores, - seq_length, + self.layout, stride_by_split, data_columns, col_types, @@ -323,7 +337,12 @@ def __init__( self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, seq_length + 1) + self._write_or_validate_resume_manifest( + selected_columns, + write_format, + data_columns, + ) + schema = self._create_schema(col_types, self.layout.window_length) self._process_batches_multiple_files( files_to_process, @@ -332,7 +351,7 @@ def __init__( max_rows, schema, self.n_cores, - seq_length, + self.layout, stride_by_split, data_columns, n_classes, @@ -349,19 +368,19 @@ def __init__( @beartype def _create_schema( - self, col_types: dict[str, str], seq_length: int + self, col_types: dict[str, str], window_length: int ) -> dict[str, Any]: """Creates the Polars schema for the intermediate sequence DataFrame. This schema defines the structure of the DataFrame after sequence extraction, which includes sequence identifiers, the start item position within the original sequence, the input column name, and columns for - each item in the sequence (named '0', '1', ..., 'seq_length-1'). + each stored item in the serialized window. Args: col_types: A dictionary mapping data column names to their Polars string representations (e.g., "Int64", "Float64"). - seq_length: The length of the sequences being extracted. + window_length: The number of items stored for each extracted window. Returns: A dictionary defining the Polars schema. Keys are column names @@ -391,7 +410,7 @@ def _create_schema( sequence_position_type = pl.Float64 schema.update( - {str(i): sequence_position_type for i in range(seq_length - 1, -1, -1)} + {str(i): sequence_position_type for i in range(window_length - 1, -1, -1)} ) return schema @@ -594,7 +613,7 @@ def _process_batches_multiple_files( max_rows: Optional[int], schema: Any, n_cores: int, - seq_length: int, + layout: SequenceLayout, stride_by_split: list[int], data_columns: list[str], n_classes: dict[str, int], @@ -616,7 +635,7 @@ def _process_batches_multiple_files( max_rows: The maximum number of rows to process. schema: The schema for the preprocessed data. n_cores: The number of cores to use for parallel processing. - seq_length: The sequence length for the model inputs. + layout: The sequence and serialized-window layout. stride_by_split: A list of step sizes for creating subsequences. data_columns: A list of data columns. n_classes: A dictionary containing the number of classes for each categorical column. @@ -643,7 +662,7 @@ def _process_batches_multiple_files( max_rows=max_rows, schema=schema, n_cores=n_cores, - seq_length=seq_length, + layout=layout, stride_by_split=stride_by_split, data_columns=data_columns, n_classes=n_classes, @@ -688,7 +707,7 @@ def _process_batches_multiple_files( "max_rows": max_rows, "schema": schema, "n_cores": 1, - "seq_length": seq_length, + "layout": layout, "stride_by_split": stride_by_split, "data_columns": data_columns, "n_classes": n_classes, @@ -790,6 +809,49 @@ def _cleanup(self, write_format: str) -> None: if not os.listdir(directory) or self.target_dir == "temp": shutil.rmtree(directory) + @beartype + def _layout_metadata(self) -> dict[str, int]: + return { + "seq_length": self.layout.seq_length, + "target_max_offset": self.layout.target_max_offset, + "window_length": self.layout.window_length, + "sequence_layout_version": self.layout.sequence_layout_version, + } + + @beartype + def _write_or_validate_resume_manifest( + self, + selected_columns: Optional[list[str]], + write_format: str, + data_columns: list[str], + ) -> None: + manifest = { + **self._layout_metadata(), + "selected_columns": selected_columns, + "data_columns": data_columns, + "write_format": write_format, + } + manifest_path = os.path.join( + self.project_root, "data", self.target_dir, "preprocess-manifest.json" + ) + + if self.continue_preprocessing: + if not os.path.exists(manifest_path): + raise ValueError( + "Cannot continue preprocessing because the temp manifest is missing." + ) + with open(manifest_path, "r") as f: + previous_manifest = json.load(f) + if previous_manifest != manifest: + raise ValueError( + "Cannot continue preprocessing with different sequence layout, " + "selected columns, or write format." + ) + return + + with open(manifest_path, "w") as f: + json.dump(manifest, f, indent=4) + @beartype def _export_metadata( self, @@ -828,6 +890,7 @@ def _export_metadata( col: {"mean": stats["mean"], "std": stats["std"]} for col, stats in selected_columns_statistics.items() }, + **self._layout_metadata(), } os.makedirs( os.path.join(self.project_root, "configs", "metadata_configs"), @@ -908,6 +971,7 @@ def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> No metadata = { "total_samples": total_samples, "batch_files": batch_files_metadata, + **self._layout_metadata(), } metadata_path = directory / "metadata.json" @@ -1404,7 +1468,7 @@ def _process_batches_multiple_files_inner( max_rows: Optional[int], schema: Any, n_cores: int, - seq_length: int, + layout: SequenceLayout, stride_by_split: list[int], data_columns: list[str], n_classes: dict[str, int], @@ -1433,7 +1497,7 @@ def _process_batches_multiple_files_inner( max_rows: The maximum number of rows to process. schema: The schema for the preprocessed data. n_cores: The number of cores to use for parallel processing. - seq_length: The sequence length for the model inputs. + layout: The sequence and serialized-window layout. stride_by_split: A list of step sizes for creating subsequences. data_columns: A list of data columns. n_classes: A dictionary containing the number of classes for each categorical column. @@ -1515,7 +1579,7 @@ def _process_batches_multiple_files_inner( data, schema, n_cores, - seq_length, + layout, stride_by_split, data_columns, col_types, @@ -1562,7 +1626,7 @@ def _process_batches_single_file( data: pl.DataFrame, schema: Any, n_cores: Optional[int], - seq_length: int, + layout: SequenceLayout, stride_by_split: list[int], data_columns: list[str], col_types: dict[str, str], @@ -1582,7 +1646,7 @@ def _process_batches_single_file( data: The data to process. schema: The schema for the preprocessed data. n_cores: The number of cores to use for parallel processing. - seq_length: The sequence length for the model inputs. + layout: The sequence and serialized-window layout. stride_by_split: A list of step sizes for creating subsequences. data_columns: A list of data columns. col_types: A dictionary containing the column types. @@ -1608,7 +1672,7 @@ def _process_batches_single_file( data.slice(start, end - start), schema, split_paths, - seq_length, + layout, stride_by_split, data_columns, col_types, @@ -1840,7 +1904,10 @@ def get_group_bounds(data_subset: pl.DataFrame, split_ratios: list[float]): @beartype def process_and_write_data_pt( - data: pl.DataFrame, seq_length: int, path: str, column_types: dict[str, str] + data: pl.DataFrame, + window_length: int, + path: str, + column_types: dict[str, str], ): """Processes the sequence DataFrame and writes it to a .pt file. @@ -1849,17 +1916,15 @@ def process_and_write_data_pt( so that each `inputCol` becomes its own column containing a list of sequence items. It also extracts the `startItemPosition`. - It then converts these lists into NumPy arrays, splits them into - `sequences` (all but last item) and `targets` (all but first item), - and converts them to PyTorch tensors along with sequence/subsequence IDs - and start positions. The final data tuple - `(sequences_dict, targets_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor)` + It then converts these lists into NumPy arrays and stores one full + sequence tensor per feature. Each tensor has shape + `(batch_size, window_length)`. The final five-element tuple + `(sequences_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, left_pad_lengths_tensor)` is saved to a .pt file using `torch.save`. Args: data: The long-format Polars DataFrame of extracted sequences. - seq_length: The total sequence length (N). The resulting tensors - will have sequence length N-1. + window_length: The stored serialized window width. path: The output file path (e.g., "data/batch_0.pt"). column_types: A dictionary mapping column names to their string data types, used to determine the correct torch dtype. @@ -1867,7 +1932,7 @@ def process_and_write_data_pt( if data.is_empty(): return - sequence_cols = [str(c) for c in range(seq_length, -1, -1)] + sequence_cols = [str(c) for c in range(window_length - 1, -1, -1)] all_feature_cols = data.get_column("inputCol").unique().to_list() @@ -1936,7 +2001,7 @@ def _write_accumulated_sequences( process_id: int, file_index_str: str, target_dir: str, - seq_length: int, + layout: SequenceLayout, col_types: dict[str, str], ): """Helper to write a batch of accumulated sequences to a single .pt file. @@ -1953,7 +2018,7 @@ def _write_accumulated_sequences( process_id: The ID of the parent multiprocessing process. file_index: The index of this file batch for this split and process. target_dir: The temporary directory to write the file into. - seq_length: The total sequence length. + layout: The sequence and serialized-window layout. col_types: A dictionary mapping column names to their string types. """ @@ -1967,7 +2032,9 @@ def _write_accumulated_sequences( out_path = insert_top_folder(split_path_batch_seq, target_dir) if write_format == "pt": - process_and_write_data_pt(combined_df, seq_length, out_path, col_types) + process_and_write_data_pt( + combined_df, layout.window_length, out_path, col_types + ) elif write_format == "parquet": combined_df.write_parquet(out_path) @@ -1980,7 +2047,7 @@ def preprocess_batch( batch: pl.DataFrame, schema: Any, split_paths: list[str], - seq_length: int, + layout: SequenceLayout, stride_by_split: list[int], data_columns: list[str], col_types: dict[str, str], @@ -2000,7 +2067,7 @@ def preprocess_batch( batch: The batch of data to process. schema: The schema for the preprocessed data. split_paths: The paths to the output split files. - seq_length: The sequence length for the model inputs. + layout: The sequence and serialized-window layout. stride_by_split: A list of step sizes for creating subsequences. data_columns: A list of data columns. col_types: A dictionary containing the column types. @@ -2026,7 +2093,7 @@ def preprocess_batch( extract_sequences( data_subset.slice(lb, ub - lb), schema, - seq_length, + layout, stride_by_split[i], data_columns, subsequence_start_mode, @@ -2048,7 +2115,7 @@ def preprocess_batch( process_id, str(file_indices[group]).zfill(pad_width), target_dir, - seq_length, + layout, col_types, ) # Reset the accumulator and increment the file index @@ -2064,7 +2131,7 @@ def preprocess_batch( process_id, str(file_indices[group]).zfill(pad_width), target_dir, - seq_length, + layout, col_types, ) @@ -2078,7 +2145,7 @@ def preprocess_batch( extract_sequences( data_subset.slice(lb, ub - lb), schema, - seq_length, + layout, stride_by_split[j], data_columns, subsequence_start_mode, @@ -2119,7 +2186,7 @@ def preprocess_batch( def extract_sequences( data: pl.DataFrame, schema: Any, - seq_length: int, + layout: SequenceLayout, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2128,7 +2195,7 @@ def extract_sequences( This function takes a DataFrame where each row contains all items for a single `sequenceId`. It iterates through each `sequenceId`, - extracts all possible subsequences of `seq_length` using the + extracts all possible serialized windows using the specified `stride_for_split`, calculates the starting position of each subsequence within the original sequence, and formats them into a new, long-format DataFrame that conforms to the provided `schema`. @@ -2136,7 +2203,7 @@ def extract_sequences( Args: data: The input Polars DataFrame, grouped by "sequenceId". schema: The schema for the output long-format DataFrame. - seq_length: The length of the subsequences to extract. + layout: The sequence and serialized-window layout. stride_for_split: The step size to use when sliding the window to create subsequences. columns: A list of the data column names (features) to extract. @@ -2161,7 +2228,7 @@ def extract_sequences( subsequences, left_pad_lengths, subsequence_starts = extract_subsequences( in_seq_lists_only, - seq_length, + layout.window_length, stride_for_split, columns, subsequence_start_mode, @@ -2177,9 +2244,10 @@ def extract_sequences( left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] - if len(row) != (seq_length + 6): + expected_row_length = 5 + layout.window_length + if len(row) != expected_row_length: raise RuntimeError( - f"Row length mismatch. Expected {seq_length + 6}, got {len(row)}. Row: {row}" + f"Row length mismatch. Expected {expected_row_length}, got {len(row)}. Row: {row}" ) rows.append(row) @@ -2194,21 +2262,21 @@ def extract_sequences( @beartype def get_subsequence_starts( in_seq_length: int, - seq_length: int, + window_length: int, stride_for_split: int, subsequence_start_mode: str, ) -> np.ndarray: """Calculates the start indices for extracting subsequences. This function determines the starting indices for sliding a window of - `seq_length` over an input sequence of `in_seq_length`. It aims to + `window_length` over an input sequence of `in_seq_length`. It aims to use `stride_for_split`, but adjusts the step size slightly to ensure that the windows are distributed as evenly as possible and cover the full sequence from the beginning to the end. Args: in_seq_length: The length of the original input sequence. - seq_length: The length of the subsequences to extract. + window_length: The stored window length to extract. stride_for_split: The *desired* step size between subsequences. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2221,7 +2289,7 @@ def get_subsequence_starts( ) if subsequence_start_mode == "distribute": - last_available_start = in_seq_length - (seq_length + 1) + last_available_start = in_seq_length - window_length raw_starts = np.arange( 0, last_available_start + stride_for_split, stride_for_split ) @@ -2232,11 +2300,11 @@ def get_subsequence_starts( return np.unique(starts) if subsequence_start_mode == "exact": - if ((in_seq_length - 1) - seq_length) % stride_for_split != 0: + if (in_seq_length - window_length) % stride_for_split != 0: raise ValueError( - f"'exact' mode requires sequence length alignment, i.e. if: ((in_seq_length - 1) - seq_length) % stride_for_split == 0, {(in_seq_length -1) = }, {seq_length = }, {stride_for_split = }" + f"'exact' mode requires sequence length alignment, i.e. if: (in_seq_length - window_length) % stride_for_split == 0, {in_seq_length = }, {window_length = }, {stride_for_split = }" ) - last_possible_start = in_seq_length - (seq_length + 1) + last_possible_start = in_seq_length - window_length return np.arange(0, last_possible_start + 1, stride_for_split) return np.array([]) @@ -2244,7 +2312,7 @@ def get_subsequence_starts( @beartype def extract_subsequences( in_seq: dict[str, list], - seq_length: int, + window_length: int, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2254,14 +2322,14 @@ def extract_subsequences( This function takes a dictionary `in_seq` where keys are column names and values are lists of items for a single full sequence. It first pads the sequences with 0s at the beginning if they are - shorter than `seq_length`. Then, it calculates the subsequence + shorter than `window_length`. Then, it calculates the subsequence start indices using `get_subsequence_starts` and extracts all subsequences. Args: in_seq: A dictionary mapping column names to lists of items (e.g., `{'col_A': [1, 2, 3, 4, 5], 'col_B': [6, 7, 8, 9, 10]}`). - seq_length: The length of the subsequences to extract. + window_length: The stored window length to extract. stride_for_split: The desired step size between subsequences. columns: A list of the column names (keys in `in_seq`) to process. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2272,13 +2340,13 @@ def extract_subsequences( """ in_seq_len = len(in_seq[columns[0]]) pad_len = 0 - if in_seq_len < (seq_length + 1): - pad_len = (seq_length + 1) - in_seq_len + if in_seq_len < window_length: + pad_len = window_length - in_seq_len in_seq = {col: ([0] * pad_len) + in_seq[col] for col in columns} in_seq_length = len(in_seq[columns[0]]) subsequence_starts = get_subsequence_starts( - in_seq_length, seq_length, stride_for_split, subsequence_start_mode + in_seq_length, window_length, stride_for_split, subsequence_start_mode ) subsequence_starts_diff = subsequence_starts[1:] - subsequence_starts[:-1] if not np.all(subsequence_starts_diff <= stride_for_split): @@ -2287,7 +2355,7 @@ def extract_subsequences( ) result = { - col: [list(in_seq[col][i : i + seq_length + 1]) for i in subsequence_starts] + col: [list(in_seq[col][i : i + window_length]) for i in subsequence_starts] for col in columns } left_pad_lengths = [pad_len] * len(subsequence_starts) diff --git a/tests/configs/infer-test-categorical-autoregression.yaml b/tests/configs/infer-test-categorical-autoregression.yaml index 76d9d06b..f34d4771 100644 --- a/tests/configs/infer-test-categorical-autoregression.yaml +++ b/tests/configs/infer-test-categorical-autoregression.yaml @@ -17,6 +17,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml index 14e95fea..17b591fd 100644 --- a/tests/configs/infer-test-categorical-bert-embedding.yaml +++ b/tests/configs/infer-test-categorical-bert-embedding.yaml @@ -17,6 +17,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml index c6ec607f..c213d865 100644 --- a/tests/configs/infer-test-categorical-bert.yaml +++ b/tests/configs/infer-test-categorical-bert.yaml @@ -17,6 +17,7 @@ output_probabilities: true map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-embedding.yaml b/tests/configs/infer-test-categorical-embedding.yaml index 9ea82e5a..bbb67fcf 100644 --- a/tests/configs/infer-test-categorical-embedding.yaml +++ b/tests/configs/infer-test-categorical-embedding.yaml @@ -17,6 +17,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-1.yaml b/tests/configs/infer-test-categorical-inf-size-1.yaml index 37280c9c..f1632ef5 100644 --- a/tests/configs/infer-test-categorical-inf-size-1.yaml +++ b/tests/configs/infer-test-categorical-inf-size-1.yaml @@ -16,6 +16,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml index 6f0e3085..6fdbb4e6 100644 --- a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml @@ -19,6 +19,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3.yaml b/tests/configs/infer-test-categorical-inf-size-3.yaml index 2a99c2be..0f8f6bff 100644 --- a/tests/configs/infer-test-categorical-inf-size-3.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3.yaml @@ -19,6 +19,7 @@ output_probabilities: true map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-multitarget.yaml b/tests/configs/infer-test-categorical-multitarget.yaml index 29c4d8d8..4b0c13d1 100644 --- a/tests/configs/infer-test-categorical-multitarget.yaml +++ b/tests/configs/infer-test-categorical-multitarget.yaml @@ -19,6 +19,7 @@ output_probabilities: true map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical.yaml b/tests/configs/infer-test-categorical.yaml index eeca3e19..6b8d52cd 100644 --- a/tests/configs/infer-test-categorical.yaml +++ b/tests/configs/infer-test-categorical.yaml @@ -17,6 +17,7 @@ output_probabilities: true map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed-parquet.yaml b/tests/configs/infer-test-distributed-parquet.yaml index 6e01ac6a..c9716b2a 100644 --- a/tests/configs/infer-test-distributed-parquet.yaml +++ b/tests/configs/infer-test-distributed-parquet.yaml @@ -18,6 +18,7 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed.yaml b/tests/configs/infer-test-distributed.yaml index 2e468055..a344c553 100644 --- a/tests/configs/infer-test-distributed.yaml +++ b/tests/configs/infer-test-distributed.yaml @@ -20,4 +20,5 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-lazy.yaml b/tests/configs/infer-test-lazy.yaml index 472b1dfa..aafbe379 100644 --- a/tests/configs/infer-test-lazy.yaml +++ b/tests/configs/infer-test-lazy.yaml @@ -18,4 +18,5 @@ output_probabilities: false map_to_id: true device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-real-autoregression.yaml b/tests/configs/infer-test-real-autoregression.yaml index 72c4128e..357dc11b 100644 --- a/tests/configs/infer-test-real-autoregression.yaml +++ b/tests/configs/infer-test-real-autoregression.yaml @@ -17,6 +17,7 @@ output_probabilities: false map_to_id: false device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: false diff --git a/tests/configs/infer-test-real.yaml b/tests/configs/infer-test-real.yaml index 009823e0..bc35d9e4 100644 --- a/tests/configs/infer-test-real.yaml +++ b/tests/configs/infer-test-real.yaml @@ -15,6 +15,7 @@ output_probabilities: false map_to_id: false device: cpu seq_length: 8 +window_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml index 12adcc5a..abf8e2d4 100644 --- a/tests/configs/train-test-categorical-bert.yaml +++ b/tests/configs/train-test-categorical-bert.yaml @@ -9,6 +9,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,6 +33,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-categorical-inf-size-1.yaml b/tests/configs/train-test-categorical-inf-size-1.yaml index 92cae64c..259252dc 100644 --- a/tests/configs/train-test-categorical-inf-size-1.yaml +++ b/tests/configs/train-test-categorical-inf-size-1.yaml @@ -9,6 +9,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -31,6 +32,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-inf-size-3.yaml b/tests/configs/train-test-categorical-inf-size-3.yaml index c20d9ac0..33644d6d 100644 --- a/tests/configs/train-test-categorical-inf-size-3.yaml +++ b/tests/configs/train-test-categorical-inf-size-3.yaml @@ -11,6 +11,7 @@ target_column_types: supCat2: categorical seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -38,6 +39,7 @@ model_spec: n_kv_heads: 1 rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget-eager.yaml b/tests/configs/train-test-categorical-multitarget-eager.yaml index 55d55d83..e2212baf 100644 --- a/tests/configs/train-test-categorical-multitarget-eager.yaml +++ b/tests/configs/train-test-categorical-multitarget-eager.yaml @@ -10,6 +10,7 @@ target_column_types: supCat1: categorical supReal3: real seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -38,6 +39,7 @@ model_spec: rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget.yaml b/tests/configs/train-test-categorical-multitarget.yaml index 6066730a..c8d32a20 100644 --- a/tests/configs/train-test-categorical-multitarget.yaml +++ b/tests/configs/train-test-categorical-multitarget.yaml @@ -11,6 +11,7 @@ target_column_types: supCat1: categorical supReal3: real seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -39,6 +40,7 @@ model_spec: rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml index eafdbd8d..36dcff1c 100644 --- a/tests/configs/train-test-categorical.yaml +++ b/tests/configs/train-test-categorical.yaml @@ -9,6 +9,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,6 +33,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: + window_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/configs/train-test-distributed-lazy-parquet.yaml b/tests/configs/train-test-distributed-lazy-parquet.yaml index 871fa0c1..576bcee4 100644 --- a/tests/configs/train-test-distributed-lazy-parquet.yaml +++ b/tests/configs/train-test-distributed-lazy-parquet.yaml @@ -9,6 +9,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 2 export_generative_model: true @@ -25,6 +26,7 @@ model_spec: prediction_length: 1 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-distributed.yaml b/tests/configs/train-test-distributed.yaml index 23e92988..923fbf4a 100644 --- a/tests/configs/train-test-distributed.yaml +++ b/tests/configs/train-test-distributed.yaml @@ -11,6 +11,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 2 export_generative_model: true @@ -27,6 +28,7 @@ model_spec: prediction_length: 1 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-lazy.yaml b/tests/configs/train-test-lazy.yaml index e53b9e2f..1d2ce592 100644 --- a/tests/configs/train-test-lazy.yaml +++ b/tests/configs/train-test-lazy.yaml @@ -11,6 +11,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 2 export_generative_model: true @@ -27,6 +28,7 @@ model_spec: prediction_length: 1 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-real-bert.yaml b/tests/configs/train-test-real-bert.yaml index 426a129c..4e915730 100644 --- a/tests/configs/train-test-real-bert.yaml +++ b/tests/configs/train-test-real-bert.yaml @@ -9,6 +9,7 @@ target_column_types: itemValue: real seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,6 +33,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: + window_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-real.yaml b/tests/configs/train-test-real.yaml index 0b02444a..2596a365 100644 --- a/tests/configs/train-test-real.yaml +++ b/tests/configs/train-test-real.yaml @@ -9,6 +9,7 @@ target_column_types: itemValue: real seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,6 +33,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: + window_length: 9 training_objective: causal device: cpu torch_compile: "inner" diff --git a/tests/configs/train-test-resume-epoch.yaml b/tests/configs/train-test-resume-epoch.yaml index ce93f148..da990807 100644 --- a/tests/configs/train-test-resume-epoch.yaml +++ b/tests/configs/train-test-resume-epoch.yaml @@ -9,6 +9,7 @@ target_column_types: itemValue: real seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: false @@ -32,6 +33,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: + window_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml index 6398cb81..b76a474c 100644 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ b/tests/configs/train-test-resume-mid-epoch.yaml @@ -9,6 +9,7 @@ target_column_types: itemId: categorical seq_length: 8 +window_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,6 +33,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: + window_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 30588329..3adcf402 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -410,7 +410,7 @@ def copy_interrupted_data(project_root, remove_project_root_contents): project_root, "data", "test-data-categorical-1-interrupted-temp" ) - shutil.copytree(source_path, target_path) + shutil.copytree(source_path, target_path, dirs_exist_ok=True) @pytest.fixture(scope="session") @@ -447,7 +447,7 @@ def run_preprocessing( source_path = os.path.join("tests", "resources", "source_configs", "id_maps") target_path = os.path.join(project_root, "configs", "id_maps") - shutil.copytree(source_path, target_path) + shutil.copytree(source_path, target_path, dirs_exist_ok=True) run_and_log( f"sequifier preprocess --config-path {preprocessing_config_path_cat_multitarget}" ) diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py index d4b3cd26..649b3903 100644 --- a/tests/integration/test_make.py +++ b/tests/integration/test_make.py @@ -88,6 +88,7 @@ def adapt_configs(config_strings): .replace("epochs: 10", "epochs: 3") .replace("device: cuda", "device: cpu") .replace("seq_length: 48", "seq_length: 10") + .replace("window_length: 49", "window_length: 11") .replace("total_steps: PLEASE FILL", "total_steps: 10000") ) @@ -118,6 +119,7 @@ def adapt_configs(config_strings): .replace("[EXAMPLE_INPUT_COLUMN_NAME]", "[itemId]") .replace("[EXAMPLE_TARGET_COLUMN_NAME]", "[itemId]") .replace("seq_length: 48", "seq_length: 10") + .replace("window_length: 49", "window_length: 11") .replace("autoregression: true", "autoregression: false") .replace("EXAMPLE_TARGET_COLUMN_NAME: real", "itemId: categorical") ) diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index e26d3d8e..d90fe0ff 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -28,6 +28,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, n_classes={"cat_col": 6}, seq_length=seq_length, + window_length=5, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -71,6 +72,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): loss_weights={"cat_col": 1.0, "real_col": 1.0}, torch_compile="none", layer_autocast=False, + window_length=5, ), ) model = TransformerModel(config) @@ -126,6 +128,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): }, n_classes={"cat2": 7, "cat10": 6}, seq_length=seq_length, + window_length=5, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -160,6 +163,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): loss_weights={"cat2": 1.0}, torch_compile="none", layer_autocast=False, + window_length=5, ), ) model = TransformerModel(config) diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 95061cf3..54cb4839 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -24,21 +24,22 @@ def metadata_configs(run_preprocessing, project_root): def test_metadata_config(metadata_configs): + expected_metadata_keys = [ + "n_classes", + "id_maps", + "special_token_ids", + "split_paths", + "column_types", + "selected_columns_statistics", + "seq_length", + "target_max_offset", + "window_length", + "sequence_layout_version", + ] + for file_name, metadata_config in metadata_configs.items(): print(f"Verifying metadata_config for: {file_name}") - assert np.all( - np.array(list(metadata_config.keys())) - == np.array( - [ - "n_classes", - "id_maps", - "special_token_ids", - "split_paths", - "column_types", - "selected_columns_statistics", - ] - ) - ), list(metadata_config.keys()) + assert list(metadata_config.keys()) == expected_metadata_keys assert metadata_config["special_token_ids"] == { "[unknown]": 0, "[other]": 1, diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json new file mode 100644 index 00000000..d8212897 --- /dev/null +++ b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json @@ -0,0 +1,11 @@ +{ + "seq_length": 8, + "target_max_offset": 1, + "window_length": 9, + "sequence_layout_version": 2, + "selected_columns": null, + "data_columns": [ + "itemId" + ], + "write_format": "pt" +} diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index dff33ff3..0c3feb6b 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -16,6 +16,7 @@ def mock_config(): config.project_root = "." config.seed = 42 config.seq_length = 2 + config.window_length = 3 config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 config.training_spec.num_workers = 0 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 2c697037..6bea73f4 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -20,6 +20,7 @@ def mock_config(tmp_path): config.training_spec.num_workers = 0 config.seed = 42 config.seq_length = 5 + config.window_length = 6 config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] config.training_spec.data_offset = 1 @@ -57,8 +58,7 @@ def mock_torch_load(): with patch("torch.load") as mock_load: def side_effect(path, map_location, weights_only): - # Tensors size: (10 samples per file, sequence length 10 to allow slicing) - dummy_seq = {"col1": torch.ones((10, 10)), "tgt1": torch.zeros((10, 10))} + dummy_seq = {"col1": torch.ones((10, 6)), "tgt1": torch.zeros((10, 6))} return ( dummy_seq, diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index dd1a23c4..cd111b6d 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -8,6 +8,7 @@ build_valid_mask, construct_index_maps, numpy_to_pytorch, + slice_window, ) # ========================================== @@ -86,7 +87,13 @@ def test_numpy_to_pytorch_shapes_and_shifting(): seq_length = 3 tensors, metadata = numpy_to_pytorch( - data, column_types, all_columns, seq_length, data_offset=1, target_offset=0 + data, + column_types, + all_columns, + seq_length, + seq_length + 1, + data_offset=1, + target_offset=0, ) # 1. Check Keys @@ -122,6 +129,7 @@ def test_numpy_to_pytorch_dtypes(): {"int_col": torch.int64}, ["int_col"], seq_length=1, + window_length=2, data_offset=1, target_offset=0, ) @@ -134,6 +142,7 @@ def test_numpy_to_pytorch_dtypes(): {"float_col": torch.float32}, ["float_col"], seq_length=1, + window_length=2, data_offset=1, target_offset=0, ) @@ -172,6 +181,18 @@ def test_build_valid_mask_from_left_pad_lengths(): ) +def test_slice_window_validates_stored_width(): + tensor = torch.arange(8).reshape(2, 4) + + assert torch.equal( + slice_window(tensor, seq_length=3, offset=1), + torch.tensor([[0, 1, 2], [4, 5, 6]]), + ) + assert torch.equal( + slice_window(tensor[:, :3], seq_length=3, offset=0), tensor[:, :3] + ) + + def test_numpy_to_pytorch_includes_explicit_padding_masks(): data = pl.DataFrame( { @@ -192,6 +213,7 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): {"A": torch.float32}, ["A"], seq_length=3, + window_length=4, data_offset=1, target_offset=0, ) diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py index b09eed26..7b9103d7 100644 --- a/tests/unit/test_hyperparameter_search_config.py +++ b/tests/unit/test_hyperparameter_search_config.py @@ -62,14 +62,19 @@ def bert_spec_sampling_config(): } +def sample_training_spec(sampling, trial): + return sampling.sample_trial(trial, target_max_offset=1, window_length=9) + + def test_training_objective_defaults_to_causal_without_bert_spec(): sampling = make_training_sampling() trial = RecordingTrial() - training_spec = sampling.sample_trial(trial) + training_spec = sample_training_spec(sampling, trial) assert training_spec.training_objective == "causal" assert training_spec.bert_spec is None + assert training_spec.window_length == 9 assert trial.params["training_objective"] == "causal" @@ -87,9 +92,10 @@ def test_bert_spec_fields_are_sampled_separately_for_bert_objective(): } ) - training_spec = sampling.sample_trial(trial) + training_spec = sample_training_spec(sampling, trial) assert training_spec.training_objective == "bert" + assert training_spec.bert_spec is not None assert training_spec.bert_spec.masking_probability == 0.30 assert training_spec.bert_spec.replacement_distribution.masked == 0.6 assert training_spec.bert_spec.replacement_distribution.random == 0.2 @@ -112,7 +118,7 @@ def test_causal_objective_does_not_sample_bert_fields(): ) trial = RecordingTrial({"training_objective": "causal"}) - training_spec = sampling.sample_trial(trial) + training_spec = sample_training_spec(sampling, trial) assert training_spec.training_objective == "causal" assert training_spec.bert_spec is None @@ -131,7 +137,7 @@ def test_bert_training_spec_dumps_to_plain_yaml(): training_objective=["bert"], bert_spec=bert_spec_sampling_config(), ) - training_spec = sampling.sample_trial(RecordingTrial()) + training_spec = sample_training_spec(sampling, RecordingTrial()) dumped = yaml.dump(training_spec, Dumper=TrainModelDumper, sort_keys=False) loaded = yaml.safe_load(dumped) diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 9bfdaa63..ccf5e2ae 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -174,6 +174,7 @@ def test_infer_config_defaults_bert_prediction_length_to_seq_length(): device="cpu", prediction_length=None, seq_length=3, + window_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -201,6 +202,7 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): device="cpu", prediction_length=None, seq_length=3, + window_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -229,6 +231,7 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): device="cpu", prediction_length=1, seq_length=3, + window_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -387,6 +390,7 @@ def _bert_inference_config(tmp_path, model_type="generative"): device="cpu", prediction_length=None, seq_length=3, + window_length=4, inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -594,6 +598,7 @@ def ar_config(): device="cpu", prediction_length=1, seq_length=3, + window_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, # Set to False to bypass ID mapping requirements diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index e18caaf4..6000208e 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -7,6 +7,7 @@ from pydantic import ValidationError from sequifier.config.preprocess_config import PreprocessorModel +from sequifier.helpers import SequenceLayout from sequifier.preprocess import ( Preprocessor, _apply_column_statistics, @@ -40,7 +41,11 @@ def test_extract_subsequences_basic(): # Windows: [10,11,12,13], [11,12,13,14], [12,13,14,15] result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, seq_length, stride, columns, subsequence_start_mode="distribute" + input_data, + seq_length + 1, + stride, + columns, + subsequence_start_mode="distribute", ) assert len(result["col1"]) == 3 @@ -48,17 +53,36 @@ def test_extract_subsequences_basic(): assert result["col1"][2] == [12, 13, 14, 15] +def test_extract_subsequences_bert_width(): + input_data = {"col1": [10, 11, 12, 13, 14, 15]} + seq_length = 3 + stride = 1 + columns = ["col1"] + + result, left_pad_lengths, subsequence_starts = extract_subsequences( + input_data, + window_length=seq_length, + stride_for_split=stride, + columns=columns, + subsequence_start_mode="distribute", + ) + + assert len(result["col1"]) == 4 + assert result["col1"][0] == [10, 11, 12] + assert result["col1"][3] == [13, 14, 15] + + def test_extract_subsequences_padding(): """Tests that sequences shorter than seq_length are padded with 0s.""" input_data = {"col1": [1, 2]} # Length 2 - seq_length = 4 # Req length 5 (4+1) + window_length = 5 stride = 1 columns = ["col1"] # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, seq_length, stride, columns, subsequence_start_mode="distribute" + input_data, window_length, stride, columns, subsequence_start_mode="distribute" ) assert len(result["col1"]) == 1 @@ -69,7 +93,7 @@ def test_extract_subsequences_returns_left_pad_lengths_when_requested(): input_data = {"col1": [0.0, 1.5]} result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - seq_length=4, + window_length=5, stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -103,7 +127,7 @@ def test_extract_sequences_persists_left_pad_length_metadata(): sequences = extract_sequences( data, schema, - seq_length=4, + layout=SequenceLayout(seq_length=4), stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -130,7 +154,7 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): process_and_write_data_pt( data, - seq_length=3, + window_length=4, path=str(out_path), column_types={"col1": "Float64"}, ) @@ -426,13 +450,14 @@ def test_extract_subsequences_modes(mode): # exact: strictly adheres to stride, throws error if misalignment. input_data = {"col1": list(range(10))} seq_length = 2 + window_length = seq_length + 1 columns = ["col1"] if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, seq_length, stride, columns, mode + input_data, window_length, stride, columns, mode ) assert len(result["col1"]) > 0 @@ -442,13 +467,13 @@ def test_extract_subsequences_modes(mode): ) # Testing a failing exact case with pytest.raises(ValueError): - extract_subsequences(input_data, seq_length, 4, columns, mode) + extract_subsequences(input_data, window_length, 4, columns, mode) # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data_exact, seq_length, 4, columns, mode + input_data_exact, window_length, 4, columns, mode ) assert len(result["col1"]) > 0 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 50d7e106..74292545 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -31,6 +31,7 @@ def _training_spec_kwargs(**overrides): "optimizer": {"name": "Adam"}, "scheduler": {"name": "StepLR", "step_size": 1, "gamma": 0.1}, "loss_weights": {"cat_col": 1.0, "real_col": 1.0}, + "window_length": 11, } values.update(overrides) return values @@ -117,6 +118,7 @@ def model_config(tmp_path): optimizer={"name": "Adam"}, scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, loss_weights={"cat_col": 1.0, "real_col": 1.0}, + window_length=11, ) config = TrainModel( @@ -135,6 +137,7 @@ def model_config(tmp_path): id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, n_classes={"cat_col": 5}, # 0 + 4 classes seq_length=10, + window_length=11, inference_batch_size=4, seed=42, export_generative_model=True, From 0265aa370fbd36cdb5064c3fed9457766783bc8c Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 13:42:39 +0200 Subject: [PATCH 41/81] Rename seq_length -> context_length target_max_offset -> max_lookahead window_length -> sample_length --- README.md | 2 +- .../configs/hyperparameter-search.md | 4 +- documentation/configs/infer.md | 2 +- documentation/configs/preprocess.md | 10 +- documentation/configs/train.md | 2 +- documentation/consolidated-docs.md | 20 ++-- .../demos/self-contained-example.ipynb | 6 +- .../config/hyperparameter_search_config.py | 30 ++--- src/sequifier/config/infer_config.py | 38 +++---- src/sequifier/config/preprocess_config.py | 12 +- src/sequifier/config/train_config.py | 52 +++++---- src/sequifier/helpers.py | 104 +++++++++--------- src/sequifier/infer.py | 64 +++++------ .../io/sequifier_dataset_from_file.py | 4 +- .../sequifier_dataset_from_folder_parquet.py | 14 +-- ...uifier_dataset_from_folder_parquet_lazy.py | 12 +- .../io/sequifier_dataset_from_folder_pt.py | 14 +-- .../sequifier_dataset_from_folder_pt_lazy.py | 14 +-- src/sequifier/make.py | 14 +-- src/sequifier/model/layers.py | 10 +- src/sequifier/preprocess.py | 74 ++++++------- src/sequifier/train.py | 66 +++++------ .../hyperparameter-search-bayesian.yaml | 2 +- tests/configs/hyperparameter-search-bert.yaml | 2 +- ...arameter-search-custom-eval-inference.yaml | 2 +- .../hyperparameter-search-custom-eval.yaml | 2 +- tests/configs/hyperparameter-search-grid.yaml | 2 +- .../configs/hyperparameter-search-sample.yaml | 2 +- ...infer-test-categorical-autoregression.yaml | 4 +- ...infer-test-categorical-bert-embedding.yaml | 4 +- .../configs/infer-test-categorical-bert.yaml | 4 +- .../infer-test-categorical-embedding.yaml | 4 +- .../infer-test-categorical-inf-size-1.yaml | 4 +- ...test-categorical-inf-size-3-embedding.yaml | 4 +- .../infer-test-categorical-inf-size-3.yaml | 4 +- .../infer-test-categorical-multitarget.yaml | 4 +- tests/configs/infer-test-categorical.yaml | 4 +- .../infer-test-distributed-parquet.yaml | 4 +- tests/configs/infer-test-distributed.yaml | 4 +- tests/configs/infer-test-lazy.yaml | 4 +- .../infer-test-real-autoregression.yaml | 4 +- tests/configs/infer-test-real.yaml | 4 +- .../preprocess-test-categorical-exact-pt.yaml | 2 +- .../preprocess-test-categorical-exact.yaml | 2 +- ...eprocess-test-categorical-interrupted.yaml | 2 +- ...eprocess-test-categorical-multitarget.yaml | 2 +- ...ategorical-precomputed-stats-negative.yaml | 2 +- ...ss-test-categorical-precomputed-stats.yaml | 2 +- .../configs/preprocess-test-categorical.yaml | 2 +- tests/configs/preprocess-test-multi-file.yaml | 2 +- tests/configs/preprocess-test-real.yaml | 2 +- .../configs/train-test-categorical-bert.yaml | 6 +- .../train-test-categorical-inf-size-1.yaml | 6 +- .../train-test-categorical-inf-size-3.yaml | 6 +- ...in-test-categorical-multitarget-eager.yaml | 6 +- .../train-test-categorical-multitarget.yaml | 6 +- tests/configs/train-test-categorical.yaml | 6 +- .../train-test-distributed-lazy-parquet.yaml | 6 +- tests/configs/train-test-distributed.yaml | 6 +- tests/configs/train-test-lazy.yaml | 6 +- tests/configs/train-test-real-bert.yaml | 6 +- tests/configs/train-test-real.yaml | 6 +- tests/configs/train-test-resume-epoch.yaml | 6 +- .../configs/train-test-resume-mid-epoch.yaml | 6 +- tests/integration/test_inference.py | 2 +- tests/integration/test_make.py | 10 +- tests/integration/test_onnx_export.py | 20 ++-- tests/integration/test_preprocessing.py | 6 +- .../preprocess-manifest.json | 6 +- ...uifier_dataset_from_folder_parquet_lazy.py | 4 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 4 +- tests/unit/test_helpers.py | 30 ++--- .../unit/test_hyperparameter_search_config.py | 4 +- tests/unit/test_infer.py | 30 ++--- tests/unit/test_preprocess.py | 40 +++---- tests/unit/test_train.py | 30 ++--- tools/split_file.py | 11 +- 77 files changed, 471 insertions(+), 458 deletions(-) diff --git a/README.md b/README.md index 30617973..8aa1c7f9 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `seq_length + target_max_offset` (`target_max_offset` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `context_length + max_lookahead` (`max_lookahead` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| diff --git a/documentation/configs/hyperparameter-search.md b/documentation/configs/hyperparameter-search.md index bc890ed1..23402080 100644 --- a/documentation/configs/hyperparameter-search.md +++ b/documentation/configs/hyperparameter-search.md @@ -59,7 +59,7 @@ Sequifier allows you to search not just for model parameters, but for the best * | --- | --- | --- | --- | | `input_columns` | `list[list[str]]` | **Yes** | A list of input sets. E.g., `[['col1'], ['col1', 'col2']]`. | | `target_columns` | `list[str]` | **Yes** | The target column(s) to predict. Fixed across all runs. | -| `seq_length` | `list[int]` | **Yes** | List of sequence lengths to test (e.g., `[24, 48]`). | +| `context_length` | `list[int]` | **Yes** | List of sequence lengths to test (e.g., `[24, 48]`). | | `target_column_types` | `dict` | **Yes** | Map of target columns to `categorical` or `real`. | | `column_types` | `list[dict]` | *Conditional* | Required if `input_columns` varies. List of type maps corresponding to the input sets. | @@ -186,7 +186,7 @@ All other parameters are considered **Independent**. Sequifier will test every v * **Model:** `num_layers`, `dim_feedforward`, `activation_fn`, `normalization`, `norm_first`, `positional_encoding`, `attention_type`, `rope_theta`. * **Training:** `batch_size`, `dropout`, `accumulation_steps`, `optimizer`. - * **Data:** `seq_length`. + * **Data:** `context_length`. ### 3\. Special Case: `n_kv_heads` diff --git a/documentation/configs/infer.md b/documentation/configs/infer.md index 0ec62861..6a80934e 100644 --- a/documentation/configs/infer.md +++ b/documentation/configs/infer.md @@ -40,7 +40,7 @@ These fields tell the inference engine which columns to extract from the new dat | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `model_type` | `str` | **Yes** | - | `generative` (predict next value) or `embedding` (extract vector representation). | -| `seq_length` | `int` | **Yes** | - | The context window size. Must match training. | +| `context_length` | `int` | **Yes** | - | The context window size. Must match training. | | `prediction_length` | `int` | No | `1` | Number of steps to predict *simultaneously*. **Must be 1** if `autoregression: true`. | | `inference_batch_size`| `int` | **Yes** | - | Number of sequences to process at once. | | `autoregression` | `bool` | No | `false` | If `true`, feeds predictions back into the model to predict further into the future. | diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index 29920541..8185baec 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -45,10 +45,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `seq_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | -| `target_max_offset` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `seq_length + target_max_offset`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | +| `context_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | +| `max_lookahead` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `context_length + max_lookahead`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[seq_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[context_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -73,10 +73,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are This controls data augmentation and redundancy. - * **Stride = `seq_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. + * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `seq_length: 48`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `context_length: 48`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` diff --git a/documentation/configs/train.md b/documentation/configs/train.md index 1e929b0b..48df255a 100644 --- a/documentation/configs/train.md +++ b/documentation/configs/train.md @@ -30,7 +30,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `seq_length` | `int` | **Yes** | - | Must match the `seq_length` used in preprocessing. | +| `context_length` | `int` | **Yes** | - | Must match the `context_length` used in preprocessing. | ### 3\. Model Architecture (`model_spec`) diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 241983bc..0baf670c 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `seq_length + target_max_offset` (`target_max_offset` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `context_length + max_lookahead` (`max_lookahead` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| @@ -253,10 +253,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `seq_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | -| `target_max_offset` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `seq_length + target_max_offset`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | +| `context_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | +| `max_lookahead` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `context_length + max_lookahead`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[seq_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[context_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -281,10 +281,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are This controls data augmentation and redundancy. - * **Stride = `seq_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. + * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `seq_length: 48`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `context_length: 48`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` @@ -379,7 +379,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `seq_length` | `int` | **Yes** | - | Must match the `seq_length` used in preprocessing. | +| `context_length` | `int` | **Yes** | - | Must match the `context_length` used in preprocessing. | ### 3\. Model Architecture (`model_spec`) @@ -604,7 +604,7 @@ These fields tell the inference engine which columns to extract from the new dat | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `model_type` | `str` | **Yes** | - | `generative` (predict next value) or `embedding` (extract vector representation). | -| `seq_length` | `int` | **Yes** | - | The context window size. Must match training. | +| `context_length` | `int` | **Yes** | - | The context window size. Must match training. | | `prediction_length` | `int` | No | `1` | Number of steps to predict *simultaneously*. **Must be 1** if `autoregression: true`. | | `inference_batch_size`| `int` | **Yes** | - | Number of sequences to process at once. | | `autoregression` | `bool` | No | `false` | If `true`, feeds predictions back into the model to predict further into the future. | @@ -788,7 +788,7 @@ Sequifier allows you to search not just for model parameters, but for the best * | --- | --- | --- | --- | | `input_columns` | `list[list[str]]` | **Yes** | A list of input sets. E.g., `[['col1'], ['col1', 'col2']]`. | | `target_columns` | `list[str]` | **Yes** | The target column(s) to predict. Fixed across all runs. | -| `seq_length` | `list[int]` | **Yes** | List of sequence lengths to test (e.g., `[24, 48]`). | +| `context_length` | `list[int]` | **Yes** | List of sequence lengths to test (e.g., `[24, 48]`). | | `target_column_types` | `dict` | **Yes** | Map of target columns to `categorical` or `real`. | | `column_types` | `list[dict]` | *Conditional* | Required if `input_columns` varies. List of type maps corresponding to the input sets. | @@ -915,7 +915,7 @@ All other parameters are considered **Independent**. Sequifier will test every v * **Model:** `num_layers`, `dim_feedforward`, `activation_fn`, `normalization`, `norm_first`, `positional_encoding`, `attention_type`, `rope_theta`. * **Training:** `batch_size`, `dropout`, `accumulation_steps`, `optimizer`. - * **Data:** `seq_length`. + * **Data:** `context_length`. ### 3\. Special Case: `n_kv_heads` diff --git a/documentation/demos/self-contained-example.ipynb b/documentation/demos/self-contained-example.ipynb index 27cc4893..80c2a59b 100644 --- a/documentation/demos/self-contained-example.ipynb +++ b/documentation/demos/self-contained-example.ipynb @@ -173,7 +173,7 @@ " \"write_format\": \"parquet\",\n", " \"selected_columns\": [\"targetToken\"],\n", " \"split_ratios\": [0.8, 0.1, 0.1], # Train, Val, Test\n", - " \"seq_length\": 10, # Lookback window\n", + " \"context_length\": 10, # Lookback window\n", " \"stride_by_split\": [1, 1, 1], # Dense sampling\n", " \"max_rows\": None,\n", " \"seed\": 42,\n", @@ -199,7 +199,7 @@ " \"input_columns\": [\"targetToken\"],\n", " \"target_columns\": [\"targetToken\"],\n", " \"target_column_types\": {\"targetToken\": \"categorical\"},\n", - " \"seq_length\": 10,\n", + " \"context_length\": 10,\n", " \"inference_batch_size\": 10,\n", " \"export_generative_model\": True,\n", " \"export_embedding_model\": False,\n", @@ -257,7 +257,7 @@ " \"output_probabilities\": False,\n", " \"map_to_id\": True, # Map integer classes back to original values (e.g., \"1\", \"2\")\n", " \"device\": \"cuda\" if torch.cuda.is_available() else \"cpu\",\n", - " \"seq_length\": 10,\n", + " \"context_length\": 10,\n", " \"inference_batch_size\": 10,\n", " \"autoregression\": True,\n", " \"autoregression_total_steps\": 5, # Predict 5 steps into the future\n", diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 74080dcf..6e0282c0 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -416,7 +416,7 @@ def validate_scheduler_config(cls, v, info_dict): return v def sample_trial( - self, trial: Any, target_max_offset: int, window_length: int + self, trial: Any, max_lookahead: int, sample_length: int ) -> TrainingSpecModel: """Samples training hyperparameters using an Optuna trial. @@ -500,8 +500,8 @@ def sample_trial( fsdp_cpu_offload=self.fsdp_cpu_offload, torch_compile=self.torch_compile, float32_matmul_precision=self.float32_matmul_precision, - target_max_offset=target_max_offset, - window_length=window_length, + max_lookahead=max_lookahead, + sample_length=sample_length, ) @@ -669,7 +669,7 @@ class HyperparameterSearchConfig(BaseModel): target_columns: The list of target columns for model training. target_column_types: A dictionary mapping target columns to their types. id_maps: A dictionary mapping categorical values to their indexed representation. - seq_length: A list of possible sequence lengths. + context_length: A list of possible sequence lengths. n_classes: The number of classes for each categorical column. inference_batch_size: The batch size for inference. export_onnx: If True, exports the model in ONNX format. @@ -702,8 +702,8 @@ class HyperparameterSearchConfig(BaseModel): target_column_types: dict[str, str] id_maps: dict[str, dict[str | int, int]] - seq_length: list[int] - target_max_offset: int = Field(default=1, ge=0) + context_length: list[int] + max_lookahead: int = Field(default=1, ge=0) n_classes: dict[str, int] inference_batch_size: int @@ -825,15 +825,17 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: input_columns_index = trial.suggest_categorical( "input_columns_index", list(range(len(self.input_columns))) ) - seq_length = trial.suggest_categorical("seq_length", self.seq_length) - window_length = seq_length + self.target_max_offset + context_length = trial.suggest_categorical( + "context_length", self.context_length + ) + sample_length = context_length + self.max_lookahead training_spec = self.training_hyperparameter_sampling.sample_trial( trial, - target_max_offset=self.target_max_offset, - window_length=window_length, + max_lookahead=self.max_lookahead, + sample_length=sample_length, ) - logger.info(f"{input_columns_index = } - {seq_length = }") + logger.info(f"{input_columns_index = } - {context_length = }") return TrainModel( project_root=self.project_root, @@ -849,9 +851,9 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: target_columns=self.target_columns, target_column_types=self.target_column_types, id_maps=self.id_maps, - seq_length=seq_length, - target_max_offset=self.target_max_offset, - window_length=window_length, + context_length=context_length, + max_lookahead=self.max_lookahead, + sample_length=sample_length, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index a05053bb..99f1be90 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -56,10 +56,10 @@ def load_inferer_config( source=f"metadata config '{metadata_config_path}'", ) sequence_layout = sequence_layout_from_metadata( - metadata_config, config_values["seq_length"] + metadata_config, config_values["context_length"] ) - config_values["target_max_offset"] = sequence_layout.target_max_offset - config_values["window_length"] = sequence_layout.window_length + config_values["max_lookahead"] = sequence_layout.max_lookahead + config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( sequence_layout.sequence_layout_version ) @@ -122,7 +122,7 @@ class InfererModel(BaseModel): map_to_id: If True, maps categorical output values back to their original IDs. seed: The random seed for reproducibility. device: The device to run inference on (e.g., 'cuda', 'cpu', 'mps'). - seq_length: The sequence length of the model's input. + context_length: The sequence length of the model's input. inference_batch_size: The batch size for inference. sample_from_distribution_columns: A list of columns from which to sample from the distribution. infer_with_dropout: If True, applies dropout during inference. @@ -154,9 +154,9 @@ class InfererModel(BaseModel): map_to_id: bool = Field(default=True) seed: int device: str - seq_length: int - target_max_offset: int = Field(default=1, ge=0) - window_length: int + context_length: int + max_lookahead: int = Field(default=1, ge=0) + sample_length: int sequence_layout_version: int = 1 prediction_length: Optional[int] = None inference_batch_size: int @@ -168,36 +168,36 @@ class InfererModel(BaseModel): @model_validator(mode="after") def normalize_prediction_length(self): - if self.window_length != self.seq_length + self.target_max_offset: + if self.sample_length != self.context_length + self.max_lookahead: raise ValueError( - "window_length must equal seq_length + target_max_offset " - f"({self.window_length} != {self.seq_length} + {self.target_max_offset})." + "sample_length must equal context_length + max_lookahead " + f"({self.sample_length} != {self.context_length} + {self.max_lookahead})." ) if self.prediction_length is None: self.prediction_length = ( - self.seq_length if self.training_objective == "bert" else 1 + self.context_length if self.training_objective == "bert" else 1 ) if self.training_objective == "bert": - if self.prediction_length != self.seq_length: + if self.prediction_length != self.context_length: raise ValueError( - "For BERT inference, prediction_length must be equal to seq_length " - f"(got prediction_length={self.prediction_length}, seq_length={self.seq_length})." + "For BERT inference, prediction_length must be equal to context_length " + f"(got prediction_length={self.prediction_length}, context_length={self.context_length})." ) - elif self.target_max_offset < 1: + elif self.max_lookahead < 1: raise ValueError( - "Causal inference requires data preprocessed with target_max_offset >= 1" + "Causal inference requires data preprocessed with max_lookahead >= 1" ) return self @property def data_offset(self) -> int: - return self.target_max_offset + return self.max_lookahead @property def target_offset(self) -> int: if self.training_objective == "bert": - return self.target_max_offset - return self.target_max_offset - 1 + return self.max_lookahead + return self.max_lookahead - 1 @field_validator("training_objective") @classmethod diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index e72a62ed..a2532345 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -54,8 +54,8 @@ class PreprocessorModel(BaseModel): selected_columns: A list of columns to be included in the preprocessing. If None, all columns are used. split_ratios: A list of floats that define the relative sizes of data splits (e.g., for train, validation, test). The sum of proportions must be 1.0. - seq_length: The sequence length for the model inputs. - target_max_offset: The maximum retained target offset after the model input window. + context_length: The sequence length for the model inputs. + max_lookahead: The maximum retained target offset after the model input window. stride_by_split: A list of step sizes for creating subsequences within each data split. max_rows: The maximum number of input rows to process. If None, all rows are processed. seed: A random seed for reproducibility. @@ -78,8 +78,8 @@ class PreprocessorModel(BaseModel): selected_columns: Optional[list[str]] = None split_ratios: list[float] - seq_length: int - target_max_offset: int = Field(default=1, ge=0) + context_length: int + max_lookahead: int = Field(default=1, ge=0) stride_by_split: Optional[list[int]] = None max_rows: Optional[int] = None seed: int @@ -195,7 +195,9 @@ def validate_mask_column_requires_metadata(self) -> "PreprocessorModel": return self def __init__(self, **kwargs): - default_stride_for_split = [kwargs["seq_length"]] * len(kwargs["split_ratios"]) + default_stride_for_split = [kwargs["context_length"]] * len( + kwargs["split_ratios"] + ) kwargs["stride_by_split"] = kwargs.get( "stride_by_split", default_stride_for_split ) diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 992c76ee..f3621360 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -63,18 +63,16 @@ def load_train_config( metadata_config = json.loads(f.read()) sequence_layout = sequence_layout_from_metadata( - metadata_config, config_values["seq_length"] + metadata_config, config_values["context_length"] ) - config_values["target_max_offset"] = sequence_layout.target_max_offset - config_values["window_length"] = sequence_layout.window_length + config_values["max_lookahead"] = sequence_layout.max_lookahead + config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( sequence_layout.sequence_layout_version ) config_values.setdefault("training_spec", {}) - config_values["training_spec"]["target_max_offset"] = ( - sequence_layout.target_max_offset - ) - config_values["training_spec"]["window_length"] = sequence_layout.window_length + config_values["training_spec"]["max_lookahead"] = sequence_layout.max_lookahead + config_values["training_spec"]["sample_length"] = sequence_layout.sample_length split_paths = metadata_config["split_paths"] @@ -245,8 +243,8 @@ class TrainingSpecModel(BaseModel): fsdp_cpu_offload: Optional[bool] = None torch_compile: str = "outer" float32_matmul_precision: str = "highest" - target_max_offset: int = Field(default=1, ge=0) - window_length: int + max_lookahead: int = Field(default=1, ge=0) + sample_length: int def __init__(self, **kwargs): super().__init__( @@ -264,13 +262,13 @@ def serialize_dotdict(self, value: DotDict) -> dict[str, Any]: @property def data_offset(self) -> int: - return self.target_max_offset + return self.max_lookahead @property def target_offset(self) -> int: if self.training_objective == "bert": - return self.target_max_offset - return self.target_max_offset - 1 + return self.max_lookahead + return self.max_lookahead - 1 @field_validator("layer_type_dtypes") @classmethod @@ -384,9 +382,9 @@ def validate_bert_spec_matches_objective(self): @model_validator(mode="after") def validate_sequence_layout(self): - if self.training_objective == "causal" and self.target_max_offset < 1: + if self.training_objective == "causal" and self.max_lookahead < 1: raise ValueError( - "Causal training requires data preprocessed with target_max_offset >= 1" + "Causal training requires data preprocessed with max_lookahead >= 1" ) return self @@ -558,7 +556,7 @@ class TrainModel(BaseModel): target_columns: The list of target columns for model training. target_column_types: A dictionary mapping target columns to their types ('categorical' or 'real'). id_maps: For each categorical column, a map from distinct values to their indexed representation. - seq_length: The sequence length of the model's input. + context_length: The sequence length of the model's input. n_classes: The number of classes for each categorical column. inference_batch_size: The batch size to be used for inference after model export. seed: The random seed for numpy and PyTorch. @@ -592,9 +590,9 @@ class TrainModel(BaseModel): default_factory=lambda: SPECIAL_TOKEN_IDS.ids_by_label ) - seq_length: int - target_max_offset: int = Field(default=1, ge=0) - window_length: int + context_length: int + max_lookahead: int = Field(default=1, ge=0) + sample_length: int sequence_layout_version: int = 1 n_classes: dict[str, int] inference_batch_size: int @@ -615,21 +613,21 @@ def validate_special_token_ids_match_runtime(cls, v): return validate_special_token_ids(v, source="TrainModel") @model_validator(mode="after") - def validate_bert_prediction_length_matches_seq_length(self): - if self.window_length != self.seq_length + self.target_max_offset: + def validate_bert_prediction_length_matches_context_length(self): + if self.sample_length != self.context_length + self.max_lookahead: raise ValueError( - "window_length must equal seq_length + target_max_offset " - f"({self.window_length} != {self.seq_length} + {self.target_max_offset})." + "sample_length must equal context_length + max_lookahead " + f"({self.sample_length} != {self.context_length} + {self.max_lookahead})." ) - self.training_spec.target_max_offset = self.target_max_offset - self.training_spec.window_length = self.window_length + self.training_spec.max_lookahead = self.max_lookahead + self.training_spec.sample_length = self.sample_length if ( self.training_spec.training_objective == "bert" - and self.model_spec.prediction_length != self.seq_length + and self.model_spec.prediction_length != self.context_length ): raise ValueError( - "For BERT training, model_spec.prediction_length must be equal to seq_length " - f"(got prediction_length={self.model_spec.prediction_length}, seq_length={self.seq_length})." + "For BERT training, model_spec.prediction_length must be equal to context_length " + f"(got prediction_length={self.model_spec.prediction_length}, context_length={self.context_length})." ) return self diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 1bac51bd..335406ce 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -51,94 +51,96 @@ @dataclass(frozen=True) class SequenceLayout: - seq_length: int - target_max_offset: int = 1 + context_length: int + max_lookahead: int = 1 sequence_layout_version: int = 2 def __post_init__(self) -> None: - if self.seq_length < 1: - raise ValueError("seq_length must be a positive integer") - if self.target_max_offset < 0: - raise ValueError("target_max_offset must be non-negative") + if self.context_length < 1: + raise ValueError("context_length must be a positive integer") + if self.max_lookahead < 0: + raise ValueError("max_lookahead must be non-negative") @property - def window_length(self) -> int: - return self.seq_length + self.target_max_offset + def sample_length(self) -> int: + return self.context_length + self.max_lookahead @property def input_offset(self) -> int: - return self.target_max_offset + return self.max_lookahead def target_offset(self, horizon: int) -> int: - offset = self.target_max_offset - horizon + offset = self.max_lookahead - horizon if offset < 0: raise ValueError( - f"horizon={horizon} exceeds target_max_offset={self.target_max_offset}" + f"horizon={horizon} exceeds max_lookahead={self.max_lookahead}" ) return offset @beartype -def sequence_column_names(seq_length: int, offset: int) -> list[str]: +def sequence_column_names(context_length: int, offset: int) -> list[str]: if offset < 0: raise ValueError("offset must be non-negative") - return [str(i) for i in range(seq_length - 1 + offset, offset - 1, -1)] + return [str(i) for i in range(context_length - 1 + offset, offset - 1, -1)] @beartype -def slice_window(tensor: Tensor, seq_length: int, offset: int) -> Tensor: +def slice_window(tensor: Tensor, context_length: int, offset: int) -> Tensor: if offset < 0: raise ValueError("offset must be non-negative") end = -offset if offset else None - result = tensor[:, -(seq_length + offset) : end] + result = tensor[:, -(context_length + offset) : end] - if result.shape[1] != seq_length: + if result.shape[1] != context_length: raise ValueError( f"Stored window width {tensor.shape[1]} cannot provide " - f"seq_length={seq_length} at offset={offset}" + f"context_length={context_length} at offset={offset}" ) return result @beartype -def validate_stored_window_width(tensor: Tensor, window_length: int) -> None: - if tensor.shape[1] != window_length: +def validate_stored_window_width(tensor: Tensor, sample_length: int) -> None: + if tensor.shape[1] != sample_length: raise ValueError( f"Stored window width {tensor.shape[1]} does not match " - f"metadata window_length={window_length}." + f"metadata sample_length={sample_length}." ) @beartype -def sequence_layout_from_metadata(metadata: dict, seq_length: int) -> SequenceLayout: - metadata_seq_length = int(metadata.get("seq_length", seq_length)) - if metadata_seq_length != seq_length: +def sequence_layout_from_metadata( + metadata: dict, context_length: int +) -> SequenceLayout: + metadata_context_length = int(metadata.get("context_length", context_length)) + if metadata_context_length != context_length: raise ValueError( - f"Configured seq_length={seq_length} does not match preprocessed " - f"metadata seq_length={metadata_seq_length}." + f"Configured context_length={context_length} does not match preprocessed " + f"metadata context_length={metadata_context_length}." ) - target_max_offset = int(metadata.get("target_max_offset", 1)) - window_length = int( - metadata.get("window_length", metadata_seq_length + target_max_offset) + max_lookahead = int(metadata.get("max_lookahead", 1)) + sample_length = int( + metadata.get("sample_length", metadata_context_length + max_lookahead) ) - if window_length != metadata_seq_length + target_max_offset: + if sample_length != metadata_context_length + max_lookahead: raise ValueError( - "Invalid sequence layout metadata: window_length must equal " - "seq_length + target_max_offset " - f"({window_length} != {metadata_seq_length} + {target_max_offset})." + "Invalid sequence layout metadata: sample_length must equal " + "context_length + max_lookahead " + f"({sample_length} != {metadata_context_length} + {max_lookahead})." ) layout = SequenceLayout( - seq_length=metadata_seq_length, - target_max_offset=target_max_offset, + context_length=metadata_context_length, + max_lookahead=max_lookahead, sequence_layout_version=int(metadata.get("sequence_layout_version", 1)), ) - if layout.window_length != window_length: + if layout.sample_length != sample_length: raise ValueError( - f"Resolved layout window_length={layout.window_length} does not match " - f"metadata window_length={window_length}." + f"Resolved layout sample_length={layout.sample_length} does not match " + f"metadata sample_length={sample_length}." ) return layout @@ -339,8 +341,8 @@ def numpy_to_pytorch( data: pl.DataFrame, column_types: dict[str, torch.dtype], all_columns: list[str], - seq_length: int, - window_length: int, + context_length: int, + sample_length: int, data_offset: int, target_offset: int, ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: @@ -357,7 +359,7 @@ def numpy_to_pytorch( 2. A "target" tensor (from time steps L-1 down to 0). Example: - For `seq_length = 3` and `all_columns = ['price']`, it will create: + For `context_length = 3` and `all_columns = ['price']`, it will create: - 'price': Tensor from columns ["3", "2", "1"] - 'price_target': Tensor from columns ["2", "1", "0"] @@ -368,7 +370,7 @@ def numpy_to_pytorch( to their desired `torch.dtype`. all_columns: A list of all feature names (from "inputCol") to be processed and converted into tensors. - seq_length: The total sequence length (L). This determines the + context_length: The total sequence length (L). This determines the column names for time steps (e.g., "0" to "L"). Returns: @@ -378,8 +380,8 @@ def numpy_to_pytorch( (e.g., `{'price': , 'price_target': }`). - a metadata dictionary containing any explicit masks. """ - input_seq_cols = sequence_column_names(seq_length, data_offset) - target_seq_cols = sequence_column_names(seq_length, target_offset) + input_seq_cols = sequence_column_names(context_length, data_offset) + target_seq_cols = sequence_column_names(context_length, target_offset) # We will create a unified dictionary unified_tensors = {} @@ -408,8 +410,8 @@ def numpy_to_pytorch( if left_pad_lengths is not None: metadata = generate_padding_masks( left_pad_lengths, - seq_length, - window_length, + context_length, + sample_length, data_offset, target_offset, ) @@ -424,7 +426,7 @@ def build_valid_mask( left_pad_lengths: Tensor, full_length: int, offset: int, - seq_length: int, + context_length: int, ) -> Tensor: """Builds a boolean validity mask from explicit left-padding metadata.""" @@ -433,7 +435,7 @@ def build_valid_mask( ) full_valid = full_positions[None, :] >= left_pad_lengths[:, None] - return full_valid[:, -(seq_length + offset) : (-offset if offset > 0 else None)] + return full_valid[:, -(context_length + offset) : (-offset if offset > 0 else None)] @beartype @@ -457,18 +459,18 @@ def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Optional[ @beartype def generate_padding_masks( left_pad_lengths: Tensor, - seq_length: int, - window_length: int, + context_length: int, + sample_length: int, data_offset: int, target_offset: int, ) -> dict[str, Tensor]: """Generates explicit attention and target masks as a metadata dictionary.""" return { "attention_valid_mask": build_valid_mask( - left_pad_lengths, window_length, data_offset, seq_length + left_pad_lengths, sample_length, data_offset, context_length ), "target_valid_mask": build_valid_mask( - left_pad_lengths, window_length, target_offset, seq_length + left_pad_lengths, sample_length, target_offset, context_length ), } diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index d6c2e864..6d481926 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -221,7 +221,7 @@ def infer_worker( f"Unsupported input type or read format: {config.read_format}" ) - default_prediction_length = {"causal": 1, "bert": config.seq_length} + default_prediction_length = {"causal": 1, "bert": config.context_length} prediction_length = ( config.prediction_length if config.prediction_length is not None @@ -269,7 +269,7 @@ def infer_worker( def calculate_item_positions( start_positions: np.ndarray, - seq_length: int, + context_length: int, prediction_length: int, training_objective: str, ) -> np.ndarray: @@ -278,7 +278,7 @@ def calculate_item_positions( Args: start_positions: 1D array of base start positions for each sequence in the batch. - seq_length: The length of the input sequence window. + context_length: The length of the input sequence window. prediction_length: The total number of predicted tokens per sequence. training_objective: Either "causal" or "bert". @@ -291,7 +291,7 @@ def calculate_item_positions( position_offsets = np.arange(0, prediction_length) else: # Anchor positions to the future token step and tile backwards - base_positions = start_positions + seq_length + base_positions = start_positions + context_length position_offsets = np.arange(-prediction_length + 1, 1) # Repeat base anchors to match the number of predictions per sequence window @@ -363,8 +363,8 @@ def _bert_target_valid_mask_from_preprocessed_data( ) metadata = generate_padding_masks( left_pad_lengths, - config.seq_length, - config.window_length, + config.context_length, + config.sample_length, data_offset=config.data_offset, target_offset=config.target_offset, ) @@ -495,13 +495,13 @@ def infer_embedding( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.window_length) + validate_stored_window_width(tensor, config.sample_length) metadata = {} if left_pad_lengths_tensor is not None: metadata = generate_padding_masks( left_pad_lengths_tensor, - config.seq_length, - config.window_length, + config.context_length, + config.sample_length, data_offset=config.data_offset, target_offset=config.target_offset, ) @@ -522,7 +522,7 @@ def infer_embedding( # Step 2: Calculate absolute positions and repeat IDs # (e.g., for seq_len=50, inf_size=5, offsets are [45, 46, 47, 48, 49]) base_offsets = np.arange( - config.seq_length - prediction_length, config.seq_length + config.context_length - prediction_length, config.context_length ) # Tile these offsets for each sample in the batch @@ -669,7 +669,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.seq_length, + config.context_length, prediction_length, config.training_objective, ) @@ -682,7 +682,7 @@ def infer_generative( # Unpack the new third return value probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( get_probs_preds_autoregression( - config, inferer, data, column_types, config.seq_length + config, inferer, data, column_types, config.context_length ) ) elif config.read_format == "parquet" and is_folder_input: @@ -720,7 +720,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.seq_length, + config.context_length, prediction_length, config.training_objective, ) @@ -732,7 +732,7 @@ def infer_generative( probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( get_probs_preds_autoregression( - config, inferer, data, column_types, config.seq_length + config, inferer, data, column_types, config.context_length ) ) elif config.read_format == "pt": @@ -744,7 +744,7 @@ def infer_generative( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.window_length) + validate_stored_window_width(tensor, config.sample_length) total_steps = ( 1 if config.autoregression_total_steps is None @@ -752,7 +752,7 @@ def infer_generative( ) sequences_dict = { - key: slice_window(tensor, config.seq_length, config.data_offset) + key: slice_window(tensor, config.context_length, config.data_offset) for key, tensor in sequences_dict.items() if key in config.input_columns } @@ -761,8 +761,8 @@ def infer_generative( if left_pad_lengths_tensor is not None: metadata = generate_padding_masks( left_pad_lengths_tensor, - config.seq_length, - config.window_length, + config.context_length, + config.sample_length, data_offset=config.data_offset, target_offset=config.target_offset, ) @@ -788,7 +788,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.seq_length, + config.context_length, prediction_length, config.training_objective, ) @@ -798,8 +798,8 @@ def infer_generative( sequence_ids_tensor.numpy(), total_steps ) item_position_boundaries = zip( - list(start_positions_tensor + config.seq_length), - list(start_positions_tensor + config.seq_length + total_steps), + list(start_positions_tensor + config.context_length), + list(start_positions_tensor + config.context_length + total_steps), ) item_positions_for_preds = np.concatenate( [np.arange(start, end) for start, end in item_position_boundaries], @@ -944,9 +944,9 @@ def get_embeddings_pt( A NumPy array containing the computed embeddings for the batch. """ for tensor in data.values(): - validate_stored_window_width(tensor, config.window_length) + validate_stored_window_width(tensor, config.sample_length) X = { - key: slice_window(val, config.seq_length, config.data_offset).numpy() + key: slice_window(val, config.context_length, config.data_offset).numpy() for key, val in data.items() if key in config.input_columns } @@ -1100,8 +1100,8 @@ def get_embeddings( data, column_types, all_columns, - config.seq_length, - config.window_length, + config.context_length, + config.sample_length, config.data_offset, config.target_offset, ) @@ -1153,8 +1153,8 @@ def get_probs_preds_from_df( data, column_types, all_columns, - config.seq_length, - config.window_length, + config.context_length, + config.sample_length, config.data_offset, config.target_offset, ) @@ -1239,7 +1239,7 @@ def get_probs_preds_autoregression( inferer: "Inferer", data: pl.DataFrame, column_types: dict[str, torch.dtype], - seq_length: int, + context_length: int, ) -> tuple[ Optional[dict[str, np.ndarray]], dict[str, np.ndarray], np.ndarray, np.ndarray ]: @@ -1253,7 +1253,7 @@ def get_probs_preds_autoregression( inferer: Initialized `Inferer` instance. data: Input DataFrame, sorted globally by `sequenceId` and locally by `subsequenceId`. column_types: Mapping of input column names to their `torch.dtype`. - seq_length: Length of the input sequence context. + context_length: Length of the input sequence context. Returns: A tuple containing: @@ -1276,15 +1276,15 @@ def get_probs_preds_autoregression( .agg(pl.col("startItemPosition").max()) .get_column("startItemPosition") .to_numpy() - + seq_length + + context_length ) head_data, metadata = numpy_to_pytorch( head_data_df, column_types, config.input_columns, - seq_length, - config.window_length, + context_length, + config.sample_length, data_offset=config.data_offset, target_offset=0, ) diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index 51a778ce..fc082183 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -46,8 +46,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): data=data_df, column_types=column_types, all_columns=all_columns, - seq_length=config.seq_length, - window_length=config.window_length, + context_length=config.context_length, + sample_length=config.sample_length, data_offset=config.training_spec.data_offset, target_offset=config.training_spec.target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index d667f6c5..dc1965b7 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -49,11 +49,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) - if folder_layout.window_length != config.window_length: + folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + if folder_layout.sample_length != config.sample_length: raise ValueError( - f"Preprocessed folder window_length={folder_layout.window_length} " - f"does not match config window_length={config.window_length}." + f"Preprocessed folder sample_length={folder_layout.sample_length} " + f"does not match config sample_length={config.sample_length}." ) self.n_samples = metadata["total_samples"] @@ -68,7 +68,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): } # Sequence formatting structures matching long-format schema boundaries - train_seq_len = self.config.seq_length + train_seq_len = self.config.context_length input_seq_cols = sequence_column_names( train_seq_len, self.config.training_spec.data_offset ) @@ -213,7 +213,7 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Extract and pass unified data frames - train_seq_len = self.config.seq_length + train_seq_len = self.config.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] @@ -231,7 +231,7 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, - self.config.window_length, + self.config.sample_length, self.config.training_spec.data_offset, self.config.training_spec.target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 2145539b..980007ae 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -65,11 +65,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) - if folder_layout.window_length != config.window_length: + folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + if folder_layout.sample_length != config.sample_length: raise ValueError( - f"Preprocessed folder window_length={folder_layout.window_length} " - f"does not match config window_length={config.window_length}." + f"Preprocessed folder sample_length={folder_layout.sample_length} " + f"does not match config sample_length={config.sample_length}." ) self.batch_files_info = metadata["batch_files"] @@ -219,7 +219,7 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.seq_length + train_seq_len = self.config.context_length global_file_start_sample = 0 input_seq_cols = sequence_column_names( @@ -319,7 +319,7 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths[worker_indices], train_seq_len, - self.config.window_length, + self.config.sample_length, self.config.training_spec.data_offset, self.config.training_spec.target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index b6108fb6..de193564 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -47,11 +47,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) - if folder_layout.window_length != config.window_length: + folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + if folder_layout.sample_length != config.sample_length: raise ValueError( - f"Preprocessed folder window_length={folder_layout.window_length} " - f"does not match config window_length={config.window_length}." + f"Preprocessed folder sample_length={folder_layout.sample_length} " + f"does not match config sample_length={config.sample_length}." ) self.n_samples = metadata["total_samples"] @@ -78,7 +78,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in all_sequences.keys(): if col in sequences_batch: validate_stored_window_width( - sequences_batch[col], config.window_length + sequences_batch[col], config.sample_length ) all_sequences[col].append(sequences_batch[col]) if left_pad_lengths_batch is not None: @@ -175,7 +175,7 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Yield full batches - train_seq_len = self.config.seq_length + train_seq_len = self.config.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] @@ -197,7 +197,7 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, - self.config.window_length, + self.config.sample_length, data_offset, target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 36e43b7b..cc629186 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -63,11 +63,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.seq_length) - if folder_layout.window_length != config.window_length: + folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + if folder_layout.sample_length != config.sample_length: raise ValueError( - f"Preprocessed folder window_length={folder_layout.window_length} " - f"does not match config window_length={config.window_length}." + f"Preprocessed folder sample_length={folder_layout.sample_length} " + f"does not match config sample_length={config.sample_length}." ) self.batch_files_info = metadata["batch_files"] @@ -212,7 +212,7 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.seq_length + train_seq_len = self.config.context_length global_file_start_sample = 0 # Initialize cross-file buffers @@ -244,7 +244,7 @@ def __iter__( left_pad_lengths_batch, ) = torch.load(file_path, map_location="cpu", weights_only=False) for tensor in sequences_batch.values(): - validate_stored_window_width(tensor, self.config.window_length) + validate_stored_window_width(tensor, self.config.sample_length) # Generate indices for the whole file indices = torch.arange(file_samples) @@ -283,7 +283,7 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths_batch[worker_indices], train_seq_len, - self.config.window_length, + self.config.sample_length, data_offset, target_offset, ) diff --git a/src/sequifier/make.py b/src/sequifier/make.py index f7434b49..8f27cf17 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -11,8 +11,8 @@ - 0.8 - 0.1 - 0.1 -seq_length: 48 -target_max_offset: 1 +context_length: 48 +max_lookahead: 1 stride_by_split: - 1 - 1 @@ -30,8 +30,8 @@ target_column_types: # 'criterion' in training_spec must also be adapted EXAMPLE_TARGET_COLUMN_NAME: real -seq_length: 48 -window_length: 49 +context_length: 48 +sample_length: 49 inference_batch_size: 10 export_generative_model: PLEASE FILL # true or false @@ -49,7 +49,7 @@ num_layers: 3 prediction_length: 1 training_spec: - window_length: 49 + sample_length: 49 training_objective: causal device: cuda epochs: 10 @@ -90,8 +90,8 @@ output_probabilities: false map_to_id: true device: cpu -seq_length: 48 -window_length: 49 +context_length: 48 +sample_length: 49 inference_batch_size: 10 autoregression: true diff --git a/src/sequifier/model/layers.py b/src/sequifier/model/layers.py index ec970e8b..4e485d4c 100644 --- a/src/sequifier/model/layers.py +++ b/src/sequifier/model/layers.py @@ -106,7 +106,7 @@ def __init__( n_kv_heads, attention_type, dropout, - seq_length, + context_length, use_rope=False, rope_theta=10000.0, ): @@ -127,7 +127,7 @@ def __init__( if use_rope: self.rope = RotaryEmbedding( - self.head_dim, max_seq_len=seq_length, theta=rope_theta + self.head_dim, max_seq_len=context_length, theta=rope_theta ) if self.head_dim % 2 != 0: raise ValueError(f"head_dim ({self.head_dim}) must be even for RoPE") @@ -176,7 +176,9 @@ def forward(self, x, mask=None): class SequifierEncoderLayer(nn.Module): - def __init__(self, config, dim_model, n_head, dim_feedforward, dropout, seq_length): + def __init__( + self, config, dim_model, n_head, dim_feedforward, dropout, context_length + ): super().__init__() self.norm_first = config.norm_first @@ -192,7 +194,7 @@ def __init__(self, config, dim_model, n_head, dim_feedforward, dropout, seq_leng n_kv_heads=config.n_kv_heads, attention_type=config.attention_type, dropout=dropout, - seq_length=seq_length, + context_length=context_length, use_rope=(config.positional_encoding == "rope"), rope_theta=config.rope_theta, ) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 01d312b1..962dd204 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -85,7 +85,7 @@ def __init__( merge_output: bool, selected_columns: Optional[list[str]], split_ratios: list[float], - seq_length: int, + context_length: int, stride_by_split: list[int], max_rows: Optional[int], seed: int, @@ -95,7 +95,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], - target_max_offset: int = 1, + max_lookahead: int = 1, mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -108,8 +108,8 @@ def __init__( merge_output: Whether to combine the output into a single file. selected_columns: A list of columns to be included in the preprocessing. split_ratios: A list of floats that define the relative sizes of data splits. - seq_length: The sequence length for the model inputs. - target_max_offset: The maximum target horizon retained after each input window. + context_length: The sequence length for the model inputs. + max_lookahead: The maximum target horizon retained after each input window. stride_by_split: A list of step sizes for creating subsequences. max_rows: The maximum number of input rows to process. seed: A random seed for reproducibility. @@ -144,7 +144,7 @@ def __init__( np.random.seed(seed) self.n_cores = n_cores or multiprocessing.cpu_count() self.continue_preprocessing = continue_preprocessing - self.layout = SequenceLayout(seq_length, target_max_offset) + self.layout = SequenceLayout(context_length, max_lookahead) self._setup_directories() if selected_columns is not None: @@ -246,7 +246,7 @@ def __init__( data_columns, ) - schema = self._create_schema(col_types, self.layout.window_length) + schema = self._create_schema(col_types, self.layout.sample_length) data = data.sort(["sequenceId", "itemPosition"]) n_batches = _process_batches_single_file( @@ -342,7 +342,7 @@ def __init__( write_format, data_columns, ) - schema = self._create_schema(col_types, self.layout.window_length) + schema = self._create_schema(col_types, self.layout.sample_length) self._process_batches_multiple_files( files_to_process, @@ -368,7 +368,7 @@ def __init__( @beartype def _create_schema( - self, col_types: dict[str, str], window_length: int + self, col_types: dict[str, str], sample_length: int ) -> dict[str, Any]: """Creates the Polars schema for the intermediate sequence DataFrame. @@ -380,7 +380,7 @@ def _create_schema( Args: col_types: A dictionary mapping data column names to their Polars string representations (e.g., "Int64", "Float64"). - window_length: The number of items stored for each extracted window. + sample_length: The number of items stored for each extracted window. Returns: A dictionary defining the Polars schema. Keys are column names @@ -410,7 +410,7 @@ def _create_schema( sequence_position_type = pl.Float64 schema.update( - {str(i): sequence_position_type for i in range(window_length - 1, -1, -1)} + {str(i): sequence_position_type for i in range(sample_length - 1, -1, -1)} ) return schema @@ -812,9 +812,9 @@ def _cleanup(self, write_format: str) -> None: @beartype def _layout_metadata(self) -> dict[str, int]: return { - "seq_length": self.layout.seq_length, - "target_max_offset": self.layout.target_max_offset, - "window_length": self.layout.window_length, + "context_length": self.layout.context_length, + "max_lookahead": self.layout.max_lookahead, + "sample_length": self.layout.sample_length, "sequence_layout_version": self.layout.sequence_layout_version, } @@ -1905,7 +1905,7 @@ def get_group_bounds(data_subset: pl.DataFrame, split_ratios: list[float]): @beartype def process_and_write_data_pt( data: pl.DataFrame, - window_length: int, + sample_length: int, path: str, column_types: dict[str, str], ): @@ -1918,13 +1918,13 @@ def process_and_write_data_pt( It then converts these lists into NumPy arrays and stores one full sequence tensor per feature. Each tensor has shape - `(batch_size, window_length)`. The final five-element tuple + `(batch_size, sample_length)`. The final five-element tuple `(sequences_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, left_pad_lengths_tensor)` is saved to a .pt file using `torch.save`. Args: data: The long-format Polars DataFrame of extracted sequences. - window_length: The stored serialized window width. + sample_length: The stored serialized window width. path: The output file path (e.g., "data/batch_0.pt"). column_types: A dictionary mapping column names to their string data types, used to determine the correct torch dtype. @@ -1932,7 +1932,7 @@ def process_and_write_data_pt( if data.is_empty(): return - sequence_cols = [str(c) for c in range(window_length - 1, -1, -1)] + sequence_cols = [str(c) for c in range(sample_length - 1, -1, -1)] all_feature_cols = data.get_column("inputCol").unique().to_list() @@ -2033,7 +2033,7 @@ def _write_accumulated_sequences( if write_format == "pt": process_and_write_data_pt( - combined_df, layout.window_length, out_path, col_types + combined_df, layout.sample_length, out_path, col_types ) elif write_format == "parquet": combined_df.write_parquet(out_path) @@ -2228,7 +2228,7 @@ def extract_sequences( subsequences, left_pad_lengths, subsequence_starts = extract_subsequences( in_seq_lists_only, - layout.window_length, + layout.sample_length, stride_for_split, columns, subsequence_start_mode, @@ -2244,7 +2244,7 @@ def extract_sequences( left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] - expected_row_length = 5 + layout.window_length + expected_row_length = 5 + layout.sample_length if len(row) != expected_row_length: raise RuntimeError( f"Row length mismatch. Expected {expected_row_length}, got {len(row)}. Row: {row}" @@ -2261,22 +2261,22 @@ def extract_sequences( @beartype def get_subsequence_starts( - in_seq_length: int, - window_length: int, + in_context_length: int, + sample_length: int, stride_for_split: int, subsequence_start_mode: str, ) -> np.ndarray: """Calculates the start indices for extracting subsequences. This function determines the starting indices for sliding a window of - `window_length` over an input sequence of `in_seq_length`. It aims to + `sample_length` over an input sequence of `in_context_length`. It aims to use `stride_for_split`, but adjusts the step size slightly to ensure that the windows are distributed as evenly as possible and cover the full sequence from the beginning to the end. Args: - in_seq_length: The length of the original input sequence. - window_length: The stored window length to extract. + in_context_length: The length of the original input sequence. + sample_length: The stored window length to extract. stride_for_split: The *desired* step size between subsequences. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2289,7 +2289,7 @@ def get_subsequence_starts( ) if subsequence_start_mode == "distribute": - last_available_start = in_seq_length - window_length + last_available_start = in_context_length - sample_length raw_starts = np.arange( 0, last_available_start + stride_for_split, stride_for_split ) @@ -2300,11 +2300,11 @@ def get_subsequence_starts( return np.unique(starts) if subsequence_start_mode == "exact": - if (in_seq_length - window_length) % stride_for_split != 0: + if (in_context_length - sample_length) % stride_for_split != 0: raise ValueError( - f"'exact' mode requires sequence length alignment, i.e. if: (in_seq_length - window_length) % stride_for_split == 0, {in_seq_length = }, {window_length = }, {stride_for_split = }" + f"'exact' mode requires sequence length alignment, i.e. if: (in_context_length - sample_length) % stride_for_split == 0, {in_context_length = }, {sample_length = }, {stride_for_split = }" ) - last_possible_start = in_seq_length - window_length + last_possible_start = in_context_length - sample_length return np.arange(0, last_possible_start + 1, stride_for_split) return np.array([]) @@ -2312,7 +2312,7 @@ def get_subsequence_starts( @beartype def extract_subsequences( in_seq: dict[str, list], - window_length: int, + sample_length: int, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2322,14 +2322,14 @@ def extract_subsequences( This function takes a dictionary `in_seq` where keys are column names and values are lists of items for a single full sequence. It first pads the sequences with 0s at the beginning if they are - shorter than `window_length`. Then, it calculates the subsequence + shorter than `sample_length`. Then, it calculates the subsequence start indices using `get_subsequence_starts` and extracts all subsequences. Args: in_seq: A dictionary mapping column names to lists of items (e.g., `{'col_A': [1, 2, 3, 4, 5], 'col_B': [6, 7, 8, 9, 10]}`). - window_length: The stored window length to extract. + sample_length: The stored window length to extract. stride_for_split: The desired step size between subsequences. columns: A list of the column names (keys in `in_seq`) to process. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2340,13 +2340,13 @@ def extract_subsequences( """ in_seq_len = len(in_seq[columns[0]]) pad_len = 0 - if in_seq_len < window_length: - pad_len = window_length - in_seq_len + if in_seq_len < sample_length: + pad_len = sample_length - in_seq_len in_seq = {col: ([0] * pad_len) + in_seq[col] for col in columns} - in_seq_length = len(in_seq[columns[0]]) + in_context_length = len(in_seq[columns[0]]) subsequence_starts = get_subsequence_starts( - in_seq_length, window_length, stride_for_split, subsequence_start_mode + in_context_length, sample_length, stride_for_split, subsequence_start_mode ) subsequence_starts_diff = subsequence_starts[1:] - subsequence_starts[:-1] if not np.all(subsequence_starts_diff <= stride_for_split): @@ -2355,7 +2355,7 @@ def extract_subsequences( ) result = { - col: [list(in_seq[col][i : i + window_length]) for i in subsequence_starts] + col: [list(in_seq[col][i : i + sample_length]) for i in subsequence_starts] for col in columns } left_pad_lengths = [pad_len] * len(subsequence_starts) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 39795814..9b37f3f1 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -111,14 +111,14 @@ def create_dummy_data_and_metadata( for col in config.input_columns: dtype = torch.int64 if col in config.categorical_columns else torch.float32 dummy_data[col] = torch.ones( - (config.training_spec.batch_size, config.seq_length), + (config.training_spec.batch_size, config.context_length), dtype=dtype, device=local_rank, ) dummy_metadata = { "attention_valid_mask": torch.ones( - (config.training_spec.batch_size, config.seq_length), + (config.training_spec.batch_size, config.context_length), dtype=torch.bool, device=local_rank, ) @@ -627,7 +627,7 @@ def __init__( self.target_columns = hparams.target_columns self.target_column_types = hparams.target_column_types self.loss_weights = hparams.training_spec.loss_weights - self.seq_length = hparams.seq_length + self.context_length = hparams.context_length self.n_classes = hparams.n_classes self.inference_batch_size = hparams.inference_batch_size self.log_interval = hparams.training_spec.log_interval @@ -686,12 +686,12 @@ def __init__( self.pos_encoder = ModuleDict() for col in self.real_columns: self.pos_encoder[col] = nn.Embedding( - self.seq_length, self.feature_embedding_dims[col] + self.context_length, self.feature_embedding_dims[col] ) for col, n_classes in self.n_classes.items(): if col in self.categorical_columns: self.pos_encoder[col] = nn.Embedding( - self.seq_length, self.feature_embedding_dims[col] + self.context_length, self.feature_embedding_dims[col] ) else: self.pos_encoder = None @@ -704,7 +704,7 @@ def __init__( hparams.model_spec.n_head, hparams.model_spec.dim_feedforward, hparams.training_spec.dropout, - hparams.seq_length, + hparams.context_length, ) for _ in range(hparams.model_spec.num_layers) ] @@ -758,13 +758,13 @@ def __init__( if hparams.training_spec.training_objective == "causal": self.register_buffer( "src_mask", - self._generate_square_subsequent_mask(self.seq_length), + self._generate_square_subsequent_mask(self.context_length), persistent=False, # Optional: prevents the mask from being saved in your checkpoints ) elif hparams.training_spec.training_objective == "bert": self.register_buffer( "src_mask", - torch.zeros(self.seq_length, self.seq_length), + torch.zeros(self.context_length, self.context_length), persistent=False, ) else: @@ -1020,18 +1020,18 @@ def _recursive_concat(self, srcs: list[Tensor]): @conditional_beartype def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tensor: - batch_size, seq_length = valid_mask.shape + batch_size, context_length = valid_mask.shape device = valid_mask.device - expected_seq_length = self.src_mask.shape[-1] - if seq_length != expected_seq_length: + expected_context_length = self.src_mask.shape[-1] + if context_length != expected_context_length: raise ValueError( - f"valid_mask sequence length ({seq_length}) must match " - f"model sequence length ({expected_seq_length})." + f"valid_mask sequence length ({context_length}) must match " + f"model sequence length ({expected_context_length})." ) base_mask = self.src_mask.to(device=device, dtype=dtype) - base_mask = base_mask.view(1, 1, seq_length, seq_length) + base_mask = base_mask.view(1, 1, context_length, context_length) invalid_keys = ~valid_mask.bool() @@ -1039,7 +1039,7 @@ def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tenso batch_size, 1, 1, - seq_length, + context_length, device=device, dtype=dtype, ) @@ -1055,7 +1055,7 @@ def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tenso def _zero_padding_positions(self, x: Tensor, valid_mask: Tensor) -> Tensor: """ x shape: - (batch_size, seq_length, dim_model) + (batch_size, context_length, dim_model) Zeroes padded query positions so padded rows do not keep evolving. """ @@ -1072,11 +1072,11 @@ def forward_inner( Args: src: A dictionary mapping column names to input tensors - (batch_size, seq_length). + (batch_size, context_length). Returns: The raw output tensor from the TransformerEncoder - (seq_length, batch_size, dim_model). + (context_length, batch_size, dim_model). """ srcs = [] for col in self.categorical_columns: @@ -1087,7 +1087,7 @@ def forward_inner( if not self.use_rope: pos = ( torch.arange( - 0, self.seq_length, dtype=torch.long, device=src_t.device + 0, self.context_length, dtype=torch.long, device=src_t.device ) .repeat(src_t.shape[1], 1) .T @@ -1115,7 +1115,7 @@ def forward_inner( if not self.use_rope: pos = ( torch.arange( - 0, self.seq_length, dtype=torch.long, device=src_t.device + 0, self.context_length, dtype=torch.long, device=src_t.device ) .repeat(src_t.shape[1], 1) .T @@ -1137,7 +1137,7 @@ def forward_inner( if valid_mask.shape != src2.shape[:2]: raise ValueError( f"Invalid attention mask shape: got {tuple(valid_mask.shape)}, " - f"expected {tuple(src2.shape[:2])} = (batch_size, seq_length). " + f"expected {tuple(src2.shape[:2])} = (batch_size, context_length). " "Check attention_valid_mask / leftPadLength construction." ) src2 = self._zero_padding_positions(src2, valid_mask) @@ -1163,7 +1163,7 @@ def forward_embed( Args: src: A dictionary mapping column names to input tensors - (batch_size, seq_length). + (batch_size, context_length). Returns: The embedding tensor for the last token @@ -1182,11 +1182,11 @@ def forward_train( Args: src: A dictionary mapping column names to input tensors - (batch_size, seq_length). + (batch_size, context_length). Returns: A dictionary mapping target column names to their raw output - (logit) tensors (seq_length, batch_size, n_classes/1). + (logit) tensors (context_length, batch_size, n_classes/1). """ output = self.forward_inner(src, metadata) output = { @@ -1205,11 +1205,11 @@ def decode(self, target_column: str, output: Tensor) -> Tensor: Args: target_column: The name of the target column to decode. output: The raw output tensor from the TransformerEncoder - (seq_length, batch_size, dim_model). + (context_length, batch_size, dim_model). Returns: The decoded output (logits or real value) for the target column - (seq_length, batch_size, n_classes/1). + (context_length, batch_size, n_classes/1). """ target_dtype = self.decoder[target_column].weight.dtype @@ -1250,7 +1250,7 @@ def forward( Args: src: A dictionary mapping column names to input tensors - (batch_size, seq_length). + (batch_size, context_length). return_logits: Return logits Returns: @@ -1724,9 +1724,9 @@ def _calculate_loss( Args: output: A dictionary of output tensors from the model - (seq_length, batch_size, n_classes/1). + (context_length, batch_size, n_classes/1). targets: A dictionary of target tensors - (batch_size, seq_length). + (batch_size, context_length). Returns: A tuple containing: @@ -2160,14 +2160,16 @@ def _export_model( x_cat = { col: torch.randint( - 0, self.n_classes[col], (self.inference_batch_size, self.seq_length) + 0, + self.n_classes[col], + (self.inference_batch_size, self.context_length), ).to(export_device, non_blocking=True) for col in self.categorical_columns } dtype_real = torch.float32 if is_different_type else None x_real = { - col: torch.rand(self.inference_batch_size, self.seq_length).to( + col: torch.rand(self.inference_batch_size, self.context_length).to( export_device, non_blocking=True, dtype=dtype_real ) for col in self.real_columns @@ -2176,7 +2178,7 @@ def _export_model( input_dict = {**x_cat, **x_real} attention_valid_mask = torch.ones( self.inference_batch_size, - self.seq_length, + self.context_length, dtype=torch.bool, device=export_device, ) diff --git a/tests/configs/hyperparameter-search-bayesian.yaml b/tests/configs/hyperparameter-search-bayesian.yaml index e15a2b84..c5f8d733 100644 --- a/tests/configs/hyperparameter-search-bayesian.yaml +++ b/tests/configs/hyperparameter-search-bayesian.yaml @@ -7,7 +7,7 @@ read_format: pt target_columns: [itemId] target_column_types: itemId: categorical -seq_length: [8] +context_length: [8] inference_batch_size: 10 # Search Strategy diff --git a/tests/configs/hyperparameter-search-bert.yaml b/tests/configs/hyperparameter-search-bert.yaml index 84b49cf3..ff053b1e 100644 --- a/tests/configs/hyperparameter-search-bert.yaml +++ b/tests/configs/hyperparameter-search-bert.yaml @@ -7,7 +7,7 @@ read_format: pt target_columns: [itemId] target_column_types: itemId: categorical -seq_length: [8] +context_length: [8] inference_batch_size: 10 search_strategy: sample diff --git a/tests/configs/hyperparameter-search-custom-eval-inference.yaml b/tests/configs/hyperparameter-search-custom-eval-inference.yaml index ef23b3a0..aa40c11c 100644 --- a/tests/configs/hyperparameter-search-custom-eval-inference.yaml +++ b/tests/configs/hyperparameter-search-custom-eval-inference.yaml @@ -31,7 +31,7 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 +context_length: 8 prediction_length: 1 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml index 6d870395..2dfc8d7a 100644 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ b/tests/configs/hyperparameter-search-custom-eval.yaml @@ -16,7 +16,7 @@ target_column_types: supCat2: categorical supCat3: categorical supCat4: categorical -seq_length: [8] +context_length: [8] inference_batch_size: 10 # Search Strategy diff --git a/tests/configs/hyperparameter-search-grid.yaml b/tests/configs/hyperparameter-search-grid.yaml index df79f038..2922a641 100644 --- a/tests/configs/hyperparameter-search-grid.yaml +++ b/tests/configs/hyperparameter-search-grid.yaml @@ -7,7 +7,7 @@ read_format: pt target_columns: [itemId] target_column_types: itemId: categorical -seq_length: [8] +context_length: [8] inference_batch_size: 10 # Search Strategy diff --git a/tests/configs/hyperparameter-search-sample.yaml b/tests/configs/hyperparameter-search-sample.yaml index 5a0085ba..5d429e8b 100644 --- a/tests/configs/hyperparameter-search-sample.yaml +++ b/tests/configs/hyperparameter-search-sample.yaml @@ -7,7 +7,7 @@ read_format: pt target_columns: [itemId] target_column_types: itemId: categorical -seq_length: [8] +context_length: [8] inference_batch_size: 10 # Search Strategy diff --git a/tests/configs/infer-test-categorical-autoregression.yaml b/tests/configs/infer-test-categorical-autoregression.yaml index f34d4771..842cd2ea 100644 --- a/tests/configs/infer-test-categorical-autoregression.yaml +++ b/tests/configs/infer-test-categorical-autoregression.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml index 17b591fd..72c14459 100644 --- a/tests/configs/infer-test-categorical-bert-embedding.yaml +++ b/tests/configs/infer-test-categorical-bert-embedding.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml index c213d865..d4d2b4b3 100644 --- a/tests/configs/infer-test-categorical-bert.yaml +++ b/tests/configs/infer-test-categorical-bert.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: true map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-embedding.yaml b/tests/configs/infer-test-categorical-embedding.yaml index bbb67fcf..2c2bac57 100644 --- a/tests/configs/infer-test-categorical-embedding.yaml +++ b/tests/configs/infer-test-categorical-embedding.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-1.yaml b/tests/configs/infer-test-categorical-inf-size-1.yaml index f1632ef5..89af4da8 100644 --- a/tests/configs/infer-test-categorical-inf-size-1.yaml +++ b/tests/configs/infer-test-categorical-inf-size-1.yaml @@ -15,8 +15,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml index 6fdbb4e6..25f9f86e 100644 --- a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml @@ -18,8 +18,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3.yaml b/tests/configs/infer-test-categorical-inf-size-3.yaml index 0f8f6bff..014e53a4 100644 --- a/tests/configs/infer-test-categorical-inf-size-3.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3.yaml @@ -18,8 +18,8 @@ target_column_types: output_probabilities: true map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-multitarget.yaml b/tests/configs/infer-test-categorical-multitarget.yaml index 4b0c13d1..ec7064f4 100644 --- a/tests/configs/infer-test-categorical-multitarget.yaml +++ b/tests/configs/infer-test-categorical-multitarget.yaml @@ -18,8 +18,8 @@ target_column_types: output_probabilities: true map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical.yaml b/tests/configs/infer-test-categorical.yaml index 6b8d52cd..72214fba 100644 --- a/tests/configs/infer-test-categorical.yaml +++ b/tests/configs/infer-test-categorical.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: true map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed-parquet.yaml b/tests/configs/infer-test-distributed-parquet.yaml index c9716b2a..a7f2d423 100644 --- a/tests/configs/infer-test-distributed-parquet.yaml +++ b/tests/configs/infer-test-distributed-parquet.yaml @@ -17,8 +17,8 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed.yaml b/tests/configs/infer-test-distributed.yaml index a344c553..a89c17c8 100644 --- a/tests/configs/infer-test-distributed.yaml +++ b/tests/configs/infer-test-distributed.yaml @@ -19,6 +19,6 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-lazy.yaml b/tests/configs/infer-test-lazy.yaml index aafbe379..20bf3ec5 100644 --- a/tests/configs/infer-test-lazy.yaml +++ b/tests/configs/infer-test-lazy.yaml @@ -17,6 +17,6 @@ target_column_types: output_probabilities: false map_to_id: true device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-real-autoregression.yaml b/tests/configs/infer-test-real-autoregression.yaml index 357dc11b..79896d4c 100644 --- a/tests/configs/infer-test-real-autoregression.yaml +++ b/tests/configs/infer-test-real-autoregression.yaml @@ -16,8 +16,8 @@ target_column_types: output_probabilities: false map_to_id: false device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: false diff --git a/tests/configs/infer-test-real.yaml b/tests/configs/infer-test-real.yaml index bc35d9e4..e8610c0c 100644 --- a/tests/configs/infer-test-real.yaml +++ b/tests/configs/infer-test-real.yaml @@ -14,8 +14,8 @@ target_column_types: output_probabilities: false map_to_id: false device: cpu -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/preprocess-test-categorical-exact-pt.yaml b/tests/configs/preprocess-test-categorical-exact-pt.yaml index cea9f758..905eaf7e 100644 --- a/tests/configs/preprocess-test-categorical-exact-pt.yaml +++ b/tests/configs/preprocess-test-categorical-exact-pt.yaml @@ -7,7 +7,7 @@ selected_columns: null split_ratios: - 1.0 -seq_length: 5 +context_length: 5 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-exact.yaml b/tests/configs/preprocess-test-categorical-exact.yaml index 09720cde..d0cb1349 100644 --- a/tests/configs/preprocess-test-categorical-exact.yaml +++ b/tests/configs/preprocess-test-categorical-exact.yaml @@ -7,7 +7,7 @@ selected_columns: null split_ratios: - 1.0 -seq_length: 5 +context_length: 5 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-interrupted.yaml b/tests/configs/preprocess-test-categorical-interrupted.yaml index 5e9ddbab..16487d15 100644 --- a/tests/configs/preprocess-test-categorical-interrupted.yaml +++ b/tests/configs/preprocess-test-categorical-interrupted.yaml @@ -9,7 +9,7 @@ split_ratios: - 0.6 - 0.2 - 0.2 -seq_length: 8 +context_length: 8 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-multitarget.yaml b/tests/configs/preprocess-test-categorical-multitarget.yaml index aee30ff6..b90646c8 100644 --- a/tests/configs/preprocess-test-categorical-multitarget.yaml +++ b/tests/configs/preprocess-test-categorical-multitarget.yaml @@ -9,7 +9,7 @@ split_ratios: - 0.6 - 0.2 - 0.2 -seq_length: 8 +context_length: 8 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml index b7e38c7a..3a088619 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml @@ -8,7 +8,7 @@ selected_columns: null split_ratios: - 1.0 -seq_length: 8 +context_length: 8 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml index 11b3853c..4c730a1e 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml @@ -7,7 +7,7 @@ selected_columns: null split_ratios: - 1.0 -seq_length: 8 +context_length: 8 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical.yaml b/tests/configs/preprocess-test-categorical.yaml index 4571cfcd..c9ff762b 100644 --- a/tests/configs/preprocess-test-categorical.yaml +++ b/tests/configs/preprocess-test-categorical.yaml @@ -9,7 +9,7 @@ split_ratios: - 0.6 - 0.2 - 0.2 -seq_length: 8 +context_length: 8 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-multi-file.yaml b/tests/configs/preprocess-test-multi-file.yaml index 106e21c8..4ac995c6 100644 --- a/tests/configs/preprocess-test-multi-file.yaml +++ b/tests/configs/preprocess-test-multi-file.yaml @@ -12,7 +12,7 @@ split_ratios: - 0.8 - 0.1 - 0.1 -seq_length: 8 +context_length: 8 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-real.yaml b/tests/configs/preprocess-test-real.yaml index b5593b45..3265dccc 100644 --- a/tests/configs/preprocess-test-real.yaml +++ b/tests/configs/preprocess-test-real.yaml @@ -8,7 +8,7 @@ selected_columns: null split_ratios: - 0.5 - 0.5 -seq_length: 8 +context_length: 8 stride_by_split: - 1 - 1 diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml index abf8e2d4..64a584fb 100644 --- a/tests/configs/train-test-categorical-bert.yaml +++ b/tests/configs/train-test-categorical-bert.yaml @@ -8,8 +8,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +33,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-categorical-inf-size-1.yaml b/tests/configs/train-test-categorical-inf-size-1.yaml index 259252dc..bc3a78f5 100644 --- a/tests/configs/train-test-categorical-inf-size-1.yaml +++ b/tests/configs/train-test-categorical-inf-size-1.yaml @@ -8,8 +8,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,7 +32,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-inf-size-3.yaml b/tests/configs/train-test-categorical-inf-size-3.yaml index 33644d6d..9e0e1ebc 100644 --- a/tests/configs/train-test-categorical-inf-size-3.yaml +++ b/tests/configs/train-test-categorical-inf-size-3.yaml @@ -10,8 +10,8 @@ target_column_types: supCat1: categorical supCat2: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -39,7 +39,7 @@ model_spec: n_kv_heads: 1 rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget-eager.yaml b/tests/configs/train-test-categorical-multitarget-eager.yaml index e2212baf..4439f4e4 100644 --- a/tests/configs/train-test-categorical-multitarget-eager.yaml +++ b/tests/configs/train-test-categorical-multitarget-eager.yaml @@ -9,8 +9,8 @@ target_column_types: itemId: categorical supCat1: categorical supReal3: real -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -39,7 +39,7 @@ model_spec: rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget.yaml b/tests/configs/train-test-categorical-multitarget.yaml index c8d32a20..f7594939 100644 --- a/tests/configs/train-test-categorical-multitarget.yaml +++ b/tests/configs/train-test-categorical-multitarget.yaml @@ -10,8 +10,8 @@ target_column_types: itemId: categorical supCat1: categorical supReal3: real -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -40,7 +40,7 @@ model_spec: rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml index 36dcff1c..018226c2 100644 --- a/tests/configs/train-test-categorical.yaml +++ b/tests/configs/train-test-categorical.yaml @@ -8,8 +8,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +33,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/configs/train-test-distributed-lazy-parquet.yaml b/tests/configs/train-test-distributed-lazy-parquet.yaml index 576bcee4..ba63aaec 100644 --- a/tests/configs/train-test-distributed-lazy-parquet.yaml +++ b/tests/configs/train-test-distributed-lazy-parquet.yaml @@ -8,8 +8,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -26,7 +26,7 @@ model_spec: prediction_length: 1 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-distributed.yaml b/tests/configs/train-test-distributed.yaml index 923fbf4a..3c0bb02d 100644 --- a/tests/configs/train-test-distributed.yaml +++ b/tests/configs/train-test-distributed.yaml @@ -10,8 +10,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -28,7 +28,7 @@ model_spec: prediction_length: 1 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-lazy.yaml b/tests/configs/train-test-lazy.yaml index 1d2ce592..6367027d 100644 --- a/tests/configs/train-test-lazy.yaml +++ b/tests/configs/train-test-lazy.yaml @@ -10,8 +10,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -28,7 +28,7 @@ model_spec: prediction_length: 1 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-real-bert.yaml b/tests/configs/train-test-real-bert.yaml index 4e915730..4a8ef116 100644 --- a/tests/configs/train-test-real-bert.yaml +++ b/tests/configs/train-test-real-bert.yaml @@ -8,8 +8,8 @@ target_columns: [itemValue] target_column_types: itemValue: real -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +33,7 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-real.yaml b/tests/configs/train-test-real.yaml index 2596a365..33a0c67d 100644 --- a/tests/configs/train-test-real.yaml +++ b/tests/configs/train-test-real.yaml @@ -8,8 +8,8 @@ target_columns: [itemValue] target_column_types: itemValue: real -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +33,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu torch_compile: "inner" diff --git a/tests/configs/train-test-resume-epoch.yaml b/tests/configs/train-test-resume-epoch.yaml index da990807..f229fb1d 100644 --- a/tests/configs/train-test-resume-epoch.yaml +++ b/tests/configs/train-test-resume-epoch.yaml @@ -8,8 +8,8 @@ target_columns: [itemValue] target_column_types: itemValue: real -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: false @@ -33,7 +33,7 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml index b76a474c..b43c8c2b 100644 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ b/tests/configs/train-test-resume-mid-epoch.yaml @@ -8,8 +8,8 @@ target_columns: [itemId] target_column_types: itemId: categorical -seq_length: 8 -window_length: 9 +context_length: 8 +sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +33,7 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: - window_length: 9 + sample_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 36d5bbdd..8136c84e 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -168,7 +168,7 @@ def test_probabilities(probabilities): ) -def test_bert_generative_predictions_default_to_seq_length( +def test_bert_generative_predictions_default_to_context_length( bert_predictions, project_root ): metadata = _categorical_metadata(project_root) diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py index 649b3903..471de7a0 100644 --- a/tests/integration/test_make.py +++ b/tests/integration/test_make.py @@ -54,7 +54,7 @@ def adapt_configs(config_strings): "selected_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "selected_columns: " ) .replace("input_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "input_columns: ") - .replace("seq_length: 48", "seq_length: 10") + .replace("context_length: 48", "context_length: 10") .replace("max_rows: null", "max_rows: null\nn_cores: 1") ) @@ -87,8 +87,8 @@ def adapt_configs(config_strings): .replace("EXAMPLE_TARGET_COLUMN_NAME: MSELoss", "itemId: CrossEntropyLoss") .replace("epochs: 10", "epochs: 3") .replace("device: cuda", "device: cpu") - .replace("seq_length: 48", "seq_length: 10") - .replace("window_length: 49", "window_length: 11") + .replace("context_length: 48", "context_length: 10") + .replace("sample_length: 49", "sample_length: 11") .replace("total_steps: PLEASE FILL", "total_steps: 10000") ) @@ -118,8 +118,8 @@ def adapt_configs(config_strings): ) .replace("[EXAMPLE_INPUT_COLUMN_NAME]", "[itemId]") .replace("[EXAMPLE_TARGET_COLUMN_NAME]", "[itemId]") - .replace("seq_length: 48", "seq_length: 10") - .replace("window_length: 49", "window_length: 11") + .replace("context_length: 48", "context_length: 10") + .replace("sample_length: 49", "sample_length: 11") .replace("autoregression: true", "autoregression: false") .replace("EXAMPLE_TARGET_COLUMN_NAME: real", "itemId: categorical") ) diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index d90fe0ff..cb663dc2 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -11,7 +11,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): project_root = str(tmp_path) (tmp_path / "logs").mkdir() - seq_length = 4 + context_length = 4 inference_batch_size = 2 config = TrainModel( project_root=project_root, @@ -27,8 +27,8 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): real_columns=["real_col"], id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, n_classes={"cat_col": 6}, - seq_length=seq_length, - window_length=5, + context_length=context_length, + sample_length=5, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -41,7 +41,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): n_head=2, dim_feedforward=8, num_layers=1, - prediction_length=seq_length, + prediction_length=context_length, feature_embedding_dims={"cat_col": 7, "real_col": 1}, activation_fn="relu", normalization="layer_norm", @@ -72,7 +72,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): loss_weights={"cat_col": 1.0, "real_col": 1.0}, torch_compile="none", layer_autocast=False, - window_length=5, + sample_length=5, ), ) model = TransformerModel(config) @@ -108,7 +108,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): project_root = str(tmp_path) (tmp_path / "logs").mkdir() - seq_length = 4 + context_length = 4 inference_batch_size = 2 config = TrainModel( project_root=project_root, @@ -127,8 +127,8 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): "cat10": {"x": 3, "y": 4, "z": 5}, }, n_classes={"cat2": 7, "cat10": 6}, - seq_length=seq_length, - window_length=5, + context_length=context_length, + sample_length=5, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -163,7 +163,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): loss_weights={"cat2": 1.0}, torch_compile="none", layer_autocast=False, - window_length=5, + sample_length=5, ), ) model = TransformerModel(config) @@ -186,7 +186,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): "cat2_in": np.array([[3, 4, 5, 6], [6, 5, 4, 3]], dtype=np.int64), "cat10_in": np.array([[3, 4, 5, 3], [5, 4, 3, 5]], dtype=np.int64), "attention_valid_mask": np.ones( - (inference_batch_size, seq_length), dtype=np.bool_ + (inference_batch_size, context_length), dtype=np.bool_ ), }, ) diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 54cb4839..999c9cbf 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -31,9 +31,9 @@ def test_metadata_config(metadata_configs): "split_paths", "column_types", "selected_columns_statistics", - "seq_length", - "target_max_offset", - "window_length", + "context_length", + "max_lookahead", + "sample_length", "sequence_layout_version", ] diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json index d8212897..03a72927 100644 --- a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json +++ b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json @@ -1,7 +1,7 @@ { - "seq_length": 8, - "target_max_offset": 1, - "window_length": 9, + "context_length": 8, + "max_lookahead": 1, + "sample_length": 9, "sequence_layout_version": 2, "selected_columns": null, "data_columns": [ diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 0c3feb6b..d51685bf 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -15,8 +15,8 @@ def mock_config(): config = MagicMock() config.project_root = "." config.seed = 42 - config.seq_length = 2 - config.window_length = 3 + config.context_length = 2 + config.sample_length = 3 config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 config.training_spec.num_workers = 0 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 6bea73f4..d5688ddc 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -19,8 +19,8 @@ def mock_config(tmp_path): config.training_spec.sampling_strategy = "exact" config.training_spec.num_workers = 0 config.seed = 42 - config.seq_length = 5 - config.window_length = 6 + config.context_length = 5 + config.sample_length = 6 config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] config.training_spec.data_offset = 1 diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index cd111b6d..b36c1624 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -65,7 +65,7 @@ def test_numpy_to_pytorch_shapes_and_shifting(): Tests that DataFrames are correctly converted to input and target Tensors. Logic to test: - If seq_length = 3: + If context_length = 3: - Input cols: ['3', '2', '1'] - Target cols: ['2', '1', '0'] """ @@ -84,14 +84,14 @@ def test_numpy_to_pytorch_shapes_and_shifting(): column_types = {"A": torch.float32} all_columns = ["A"] - seq_length = 3 + context_length = 3 tensors, metadata = numpy_to_pytorch( data, column_types, all_columns, - seq_length, - seq_length + 1, + context_length, + context_length + 1, data_offset=1, target_offset=0, ) @@ -128,8 +128,8 @@ def test_numpy_to_pytorch_dtypes(): data_int, {"int_col": torch.int64}, ["int_col"], - seq_length=1, - window_length=2, + context_length=1, + sample_length=2, data_offset=1, target_offset=0, ) @@ -141,8 +141,8 @@ def test_numpy_to_pytorch_dtypes(): data_float, {"float_col": torch.float32}, ["float_col"], - seq_length=1, - window_length=2, + context_length=1, + sample_length=2, data_offset=1, target_offset=0, ) @@ -153,10 +153,10 @@ def test_build_valid_mask_from_left_pad_lengths(): left_pad_lengths = torch.tensor([0, 2, 5], dtype=torch.int64) input_mask = build_valid_mask( - left_pad_lengths, full_length=6, offset=1, seq_length=5 + left_pad_lengths, full_length=6, offset=1, context_length=5 ) target_mask = build_valid_mask( - left_pad_lengths, full_length=6, offset=0, seq_length=5 + left_pad_lengths, full_length=6, offset=0, context_length=5 ) assert torch.equal( @@ -185,11 +185,11 @@ def test_slice_window_validates_stored_width(): tensor = torch.arange(8).reshape(2, 4) assert torch.equal( - slice_window(tensor, seq_length=3, offset=1), + slice_window(tensor, context_length=3, offset=1), torch.tensor([[0, 1, 2], [4, 5, 6]]), ) assert torch.equal( - slice_window(tensor[:, :3], seq_length=3, offset=0), tensor[:, :3] + slice_window(tensor[:, :3], context_length=3, offset=0), tensor[:, :3] ) @@ -212,8 +212,8 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): data, {"A": torch.float32}, ["A"], - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, data_offset=1, target_offset=0, ) @@ -238,7 +238,7 @@ def test_apply_bert_masking_uses_explicit_valid_mask_for_zero_values(): categorical_columns=[], real_columns=["real_col"], n_classes={}, - seq_length=4, + context_length=4, training_spec=SimpleNamespace( batch_size=1, bert_spec=SimpleNamespace( diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py index 7b9103d7..8a50fc34 100644 --- a/tests/unit/test_hyperparameter_search_config.py +++ b/tests/unit/test_hyperparameter_search_config.py @@ -63,7 +63,7 @@ def bert_spec_sampling_config(): def sample_training_spec(sampling, trial): - return sampling.sample_trial(trial, target_max_offset=1, window_length=9) + return sampling.sample_trial(trial, max_lookahead=1, sample_length=9) def test_training_objective_defaults_to_causal_without_bert_spec(): @@ -74,7 +74,7 @@ def test_training_objective_defaults_to_causal_without_bert_spec(): assert training_spec.training_objective == "causal" assert training_spec.bert_spec is None - assert training_spec.window_length == 9 + assert training_spec.sample_length == 9 assert trial.params["training_objective"] == "causal" diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index ccf5e2ae..5cc76580 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -156,7 +156,7 @@ def test_inferer_prepare_inference_batches_split(mock_inferer): np.testing.assert_array_equal(batches[2]["cat_col"], [[5]]) -def test_infer_config_defaults_bert_prediction_length_to_seq_length(): +def test_infer_config_defaults_bert_prediction_length_to_context_length(): config = InfererModel( project_root=".", metadata_config_path="dummy.json", @@ -173,15 +173,15 @@ def test_infer_config_defaults_bert_prediction_length_to_seq_length(): seed=42, device="cpu", prediction_length=None, - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, autoregression=False, ) - assert config.prediction_length == config.seq_length + assert config.prediction_length == config.context_length def test_infer_config_defaults_causal_prediction_length_to_one(): @@ -201,8 +201,8 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): seed=42, device="cpu", prediction_length=None, - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -230,8 +230,8 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): seed=42, device="cpu", prediction_length=1, - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -277,7 +277,7 @@ def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_p "target_column_types": {"target_col": "categorical"}, "seed": 42, "device": "cpu", - "seq_length": 3, + "context_length": 3, "inference_batch_size": 2, } ) @@ -350,7 +350,7 @@ def get_inputs(self): def test_calculate_item_positions_bert_uses_full_input_window(): positions = calculate_item_positions( np.array([10, 20]), - seq_length=4, + context_length=4, prediction_length=4, training_objective="bert", ) @@ -361,7 +361,7 @@ def test_calculate_item_positions_bert_uses_full_input_window(): def test_calculate_item_positions_causal_uses_future_window_tail(): positions = calculate_item_positions( np.array([10, 20]), - seq_length=4, + context_length=4, prediction_length=2, training_objective="causal", ) @@ -389,8 +389,8 @@ def _bert_inference_config(tmp_path, model_type="generative"): seed=42, device="cpu", prediction_length=None, - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -597,8 +597,8 @@ def ar_config(): seed=42, device="cpu", prediction_length=1, - seq_length=3, - window_length=4, + context_length=3, + sample_length=4, inference_batch_size=2, output_probabilities=False, map_to_id=False, # Set to False to bypass ID mapping requirements diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 6000208e..f6c13e17 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -33,16 +33,16 @@ def test_extract_subsequences_basic(): """Tests basic sliding window extraction with sufficient length.""" input_data = {"col1": [10, 11, 12, 13, 14, 15]} - seq_length = 3 + context_length = 3 stride = 1 columns = ["col1"] - # Expected behavior: Window size is seq_length + 1 (history + target) + # Expected behavior: Window size is context_length + 1 (history + target) # Windows: [10,11,12,13], [11,12,13,14], [12,13,14,15] result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - seq_length + 1, + context_length + 1, stride, columns, subsequence_start_mode="distribute", @@ -55,13 +55,13 @@ def test_extract_subsequences_basic(): def test_extract_subsequences_bert_width(): input_data = {"col1": [10, 11, 12, 13, 14, 15]} - seq_length = 3 + context_length = 3 stride = 1 columns = ["col1"] result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - window_length=seq_length, + sample_length=context_length, stride_for_split=stride, columns=columns, subsequence_start_mode="distribute", @@ -73,16 +73,16 @@ def test_extract_subsequences_bert_width(): def test_extract_subsequences_padding(): - """Tests that sequences shorter than seq_length are padded with 0s.""" + """Tests that sequences shorter than context_length are padded with 0s.""" input_data = {"col1": [1, 2]} # Length 2 - window_length = 5 + sample_length = 5 stride = 1 columns = ["col1"] # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, window_length, stride, columns, subsequence_start_mode="distribute" + input_data, sample_length, stride, columns, subsequence_start_mode="distribute" ) assert len(result["col1"]) == 1 @@ -93,7 +93,7 @@ def test_extract_subsequences_returns_left_pad_lengths_when_requested(): input_data = {"col1": [0.0, 1.5]} result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - window_length=5, + sample_length=5, stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -127,7 +127,7 @@ def test_extract_sequences_persists_left_pad_length_metadata(): sequences = extract_sequences( data, schema, - layout=SequenceLayout(seq_length=4), + layout=SequenceLayout(context_length=4), stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -154,7 +154,7 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): process_and_write_data_pt( data, - window_length=4, + sample_length=4, path=str(out_path), column_types={"col1": "Float64"}, ) @@ -242,7 +242,7 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): merge_output=True, selected_columns=["itemId", "itemValue"], split_ratios=[1.0], - seq_length=2, + context_length=2, stride_by_split=[1], max_rows=None, seed=1010, @@ -379,7 +379,7 @@ def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): merge_output=True, selected_columns=["itemId"], split_ratios=[1.0], - seq_length=1, + context_length=1, stride_by_split=[1], max_rows=None, seed=1010, @@ -408,7 +408,7 @@ def test_preprocessor_config_defaults_mask_column_to_none(tmp_path): project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - seq_length=1, + context_length=1, seed=1010, ) @@ -436,7 +436,7 @@ def test_preprocessor_config_requires_metadata_config_for_mask_column( project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - seq_length=1, + context_length=1, seed=1010, mask_column=RESERVED_MASK_COLUMN, ) @@ -449,15 +449,15 @@ def test_extract_subsequences_modes(mode): # distribute: adjusts stride to cover data evenly. # exact: strictly adheres to stride, throws error if misalignment. input_data = {"col1": list(range(10))} - seq_length = 2 - window_length = seq_length + 1 + context_length = 2 + sample_length = context_length + 1 columns = ["col1"] if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, window_length, stride, columns, mode + input_data, sample_length, stride, columns, mode ) assert len(result["col1"]) > 0 @@ -467,13 +467,13 @@ def test_extract_subsequences_modes(mode): ) # Testing a failing exact case with pytest.raises(ValueError): - extract_subsequences(input_data, window_length, 4, columns, mode) + extract_subsequences(input_data, sample_length, 4, columns, mode) # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data_exact, window_length, 4, columns, mode + input_data_exact, sample_length, 4, columns, mode ) assert len(result["col1"]) > 0 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 74292545..054d0956 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -31,7 +31,7 @@ def _training_spec_kwargs(**overrides): "optimizer": {"name": "Adam"}, "scheduler": {"name": "StepLR", "step_size": 1, "gamma": 0.1}, "loss_weights": {"cat_col": 1.0, "real_col": 1.0}, - "window_length": 11, + "sample_length": 11, } values.update(overrides) return values @@ -118,7 +118,7 @@ def model_config(tmp_path): optimizer={"name": "Adam"}, scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, loss_weights={"cat_col": 1.0, "real_col": 1.0}, - window_length=11, + sample_length=11, ) config = TrainModel( @@ -136,8 +136,8 @@ def model_config(tmp_path): # id_maps is needed for constructing index_maps in model init id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, n_classes={"cat_col": 5}, # 0 + 4 classes - seq_length=10, - window_length=11, + context_length=10, + sample_length=11, inference_batch_size=4, seed=42, export_generative_model=True, @@ -164,7 +164,7 @@ def causal_model(model_config): @pytest.fixture def bert_model(model_config): config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = model_config.seq_length + config_values["model_spec"]["prediction_length"] = model_config.context_length config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), @@ -213,9 +213,11 @@ def test_transformer_model_initialization(model, model_config): assert "real_col" in model.encoder -def test_train_model_requires_bert_prediction_length_to_equal_seq_length(model_config): +def test_train_model_requires_bert_prediction_length_to_equal_context_length( + model_config, +): config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = model_config.seq_length - 1 + config_values["model_spec"]["prediction_length"] = model_config.context_length - 1 config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), @@ -295,7 +297,7 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.seq_length + seq_len = model_config.context_length # Create dummy inputs # Categorical: (batch, seq_len) integers @@ -326,7 +328,7 @@ def test_forward_train_shapes(model, model_config): def test_forward_inference_shapes(model, model_config): """Tests the output shapes of the forward (inference) method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.seq_length + seq_len = model_config.context_length prediction_length = model_config.model_spec.prediction_length # 1 x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -359,7 +361,7 @@ def test_forward_inference_shapes(model, model_config): def test_calculate_loss(model, model_config): """Tests that loss calculation returns a scalar tensor.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.seq_length + seq_len = model_config.context_length # Inputs x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -448,7 +450,7 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): def test_padding_keys_are_masked(bert_model): - seq_len = bert_model.seq_length + seq_len = bert_model.context_length valid_mask = torch.ones( 2, @@ -477,7 +479,7 @@ def test_padding_keys_are_masked(bert_model): def test_causal_and_padding_masks_are_combined(causal_model): - seq_len = causal_model.seq_length + seq_len = causal_model.context_length valid_mask = torch.ones( 1, @@ -510,7 +512,7 @@ def test_causal_and_padding_masks_are_combined(causal_model): @pytest.fixture def batch(model): - seq_len = model.seq_length + seq_len = model.context_length return { "cat_col": torch.tensor( @@ -534,7 +536,7 @@ def batch(model): @pytest.fixture def batch_metadata(model): - seq_len = model.seq_length + seq_len = model.context_length valid_mask = torch.ones( 2, seq_len, diff --git a/tools/split_file.py b/tools/split_file.py index 1cceee9a..aa99ee79 100644 --- a/tools/split_file.py +++ b/tools/split_file.py @@ -4,7 +4,7 @@ def split_file_up( data: pd.DataFrame, number_of_files: int, - seq_length: int, + context_length: int, prediction_length: int, folder_path: str, ): @@ -15,18 +15,21 @@ def split_file_up( i_offset = 0 first_start = True for i in range(number_of_files): - if (i * rows_per_file) >= (seq_length - prediction_length): + if (i * rows_per_file) >= (context_length - prediction_length): if first_start: start = 0 first_start = False else: start = ( - leading_rows + (i * rows_per_file) - seq_length + prediction_length + leading_rows + + (i * rows_per_file) + - context_length + + prediction_length ) end = leading_rows + ((i + 1) * rows_per_file) + 1 print( - f"{start = }, {end = }, {(start + (seq_length - prediction_length)) = }, {(end - (start + (seq_length - prediction_length))) = })" + f"{start = }, {end = }, {(start + (context_length - prediction_length)) = }, {(end - (start + (context_length - prediction_length))) = })" ) data_subset = data.iloc[start:end, :] data_subset.to_parquet( From 0b0296b4d6ac4026f84243d74b7dfd96aa5bad67 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 16:06:27 +0200 Subject: [PATCH 42/81] set max_lookahead to 0 for bert integration tests --- tests/configs/hyperparameter-search-bert.yaml | 3 +- ...infer-test-categorical-bert-embedding.yaml | 4 +- .../configs/infer-test-categorical-bert.yaml | 4 +- ...eprocess-test-categorical-lookahead-0.yaml | 19 ++ .../configs/train-test-categorical-bert.yaml | 2 +- tests/integration-test-log.txt | 1 + tests/integration/conftest.py | 21 ++ .../integration/test_hyperparameter_search.py | 11 + tests/integration/test_inference.py | 9 +- tests/integration/test_preprocessing.py | 45 ++++ .../test-data-categorical-1-lookahead-0.csv | 201 ++++++++++++++++++ 11 files changed, 311 insertions(+), 9 deletions(-) create mode 100644 tests/configs/preprocess-test-categorical-lookahead-0.yaml create mode 100644 tests/resources/source_data/test-data-categorical-1-lookahead-0.csv diff --git a/tests/configs/hyperparameter-search-bert.yaml b/tests/configs/hyperparameter-search-bert.yaml index ff053b1e..b4490817 100644 --- a/tests/configs/hyperparameter-search-bert.yaml +++ b/tests/configs/hyperparameter-search-bert.yaml @@ -1,5 +1,5 @@ project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json hp_search_name: test-hp-search-bert model_config_write_path: configs @@ -8,6 +8,7 @@ target_columns: [itemId] target_column_types: itemId: categorical context_length: [8] +max_lookahead: 0 inference_batch_size: 10 search_strategy: sample diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml index 72c14459..b74491a0 100644 --- a/tests/configs/infer-test-categorical-bert-embedding.yaml +++ b/tests/configs/infer-test-categorical-bert-embedding.yaml @@ -1,10 +1,10 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical-bert.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json model_type: embedding training_objective: bert model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-embedding-1.pt -data_path: tests/project_folder/data/test-data-categorical-1-split2 +data_path: tests/project_folder/data/test-data-categorical-1-lookahead-0-split2 read_format: pt write_format: csv diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml index d4d2b4b3..ca23aba1 100644 --- a/tests/configs/infer-test-categorical-bert.yaml +++ b/tests/configs/infer-test-categorical-bert.yaml @@ -1,10 +1,10 @@ project_root: tests/project_folder training_config_path: tests/configs/train-test-categorical-bert.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json +metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json model_type: generative training_objective: bert model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-1.pt -data_path: tests/project_folder/data/test-data-categorical-1-split2 +data_path: tests/project_folder/data/test-data-categorical-1-lookahead-0-split2 read_format: pt write_format: csv diff --git a/tests/configs/preprocess-test-categorical-lookahead-0.yaml b/tests/configs/preprocess-test-categorical-lookahead-0.yaml new file mode 100644 index 00000000..520f4b8d --- /dev/null +++ b/tests/configs/preprocess-test-categorical-lookahead-0.yaml @@ -0,0 +1,19 @@ +project_root: tests/project_folder +data_path: tests/resources/source_data/test-data-categorical-1.csv +merge_output: false +read_format: csv +write_format: pt +selected_columns: null + +split_ratios: +- 0.6 +- 0.2 +- 0.2 +context_length: 8 +max_lookahead: 0 +stride_by_split: +- 1 +- 1 +- 1 +max_rows: null +subsequence_start_mode: distribute diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml index 64a584fb..af929462 100644 --- a/tests/configs/train-test-categorical-bert.yaml +++ b/tests/configs/train-test-categorical-bert.yaml @@ -1,7 +1,7 @@ project_root: tests/project_folder model_name: model-categorical-bert read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-1.json +metadata_config_path: configs/metadata_configs/test-data-categorical-1-lookahead-0.json input_columns: [itemId] target_columns: [itemId] diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt index e44783c3..5d4ec365 100644 --- a/tests/integration-test-log.txt +++ b/tests/integration-test-log.txt @@ -6,6 +6,7 @@ sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yam sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-5.csv --selected-columns itemValue supReal1 supReal2 supReal3 supReal4 sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yaml --data-path tests/resources/source_data/test-data-categorical-50.csv --selected-columns None sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-50.csv --selected-columns itemValue supReal1 supReal2 supReal3 supReal4 supReal5 supReal6 supReal7 supReal8 supReal9 supReal10 supReal11 supReal12 supReal13 supReal14 supReal15 supReal16 supReal17 supReal18 supReal19 supReal20 supReal21 supReal22 supReal23 supReal24 supReal25 supReal26 supReal27 supReal28 supReal29 supReal30 supReal31 supReal32 supReal33 supReal34 supReal35 supReal36 supReal37 supReal38 supReal39 supReal40 supReal41 supReal42 supReal43 supReal44 supReal45 supReal46 supReal47 supReal48 supReal49 +sequifier preprocess --config-path tests/configs/preprocess-test-categorical-lookahead-0.yaml --data-path tests/resources/source_data/test-data-categorical-1-lookahead-0.csv --selected-columns None sequifier preprocess --config-path tests/configs/preprocess-test-categorical-multitarget.yaml sequifier preprocess --config-path tests/configs/preprocess-test-multi-file.yaml sequifier preprocess --config-path tests/configs/preprocess-test-categorical-interrupted.yaml diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 3adcf402..a8575c49 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -60,6 +60,13 @@ def preprocessing_config_path_cat_multitarget(): ) +@pytest.fixture(scope="session") +def preprocessing_config_path_cat_lookahead_0(): + return os.path.join( + "tests", "configs", "preprocess-test-categorical-lookahead-0.yaml" + ) + + @pytest.fixture(scope="session") def preprocessing_config_path_multi_file(): return os.path.join("tests", "configs", "preprocess-test-multi-file.yaml") @@ -288,6 +295,7 @@ def reformat_parameter(attr, param, type): def format_configs_locally( preprocessing_config_path_cat, preprocessing_config_path_cat_multitarget, + preprocessing_config_path_cat_lookahead_0, preprocessing_config_path_real, preprocessing_config_path_multi_file, preprocessing_config_path_interrupted, @@ -323,6 +331,7 @@ def format_configs_locally( config_paths = [ preprocessing_config_path_cat, preprocessing_config_path_cat_multitarget, + preprocessing_config_path_cat_lookahead_0, preprocessing_config_path_real, preprocessing_config_path_multi_file, preprocessing_config_path_interrupted, @@ -418,6 +427,7 @@ def run_preprocessing( project_root, preprocessing_config_path_cat, preprocessing_config_path_cat_multitarget, + preprocessing_config_path_cat_lookahead_0, preprocessing_config_path_real, preprocessing_config_path_multi_file, preprocessing_config_path_interrupted, @@ -445,6 +455,17 @@ def run_preprocessing( f"sequifier preprocess --config-path {preprocessing_config_path_real} --data-path {data_path_real} --selected-columns {SELECTED_COLUMNS['real'][data_number]}" ) + data_path_cat_lookahead_0 = os.path.join( + "tests", + "resources", + "source_data", + "test-data-categorical-1-lookahead-0.csv", + ) + run_and_log( + f"sequifier preprocess --config-path {preprocessing_config_path_cat_lookahead_0} " + f"--data-path {data_path_cat_lookahead_0} --selected-columns None " + ) + source_path = os.path.join("tests", "resources", "source_configs", "id_maps") target_path = os.path.join(project_root, "configs", "id_maps") shutil.copytree(source_path, target_path, dirs_exist_ok=True) diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 187c8312..6cbfbbbf 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -2,6 +2,8 @@ import json import os +import yaml + def test_hp_search_grid_outputs(run_hp_search, project_root): hp_name = "test-hp-search-grid" @@ -32,6 +34,15 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): len(generated_configs) == 1 ), f"Expected 1 BERT sample config, found {len(generated_configs)}" + with open(generated_configs[0], "r") as f: + generated_config = yaml.safe_load(f) + + assert generated_config["metadata_config_path"].endswith( + "test-data-categorical-1-lookahead-0.json" + ) + assert generated_config["max_lookahead"] == 0 + assert generated_config["sample_length"] == generated_config["context_length"] + def test_hp_search_bayesian_outputs(run_hp_search, project_root): hp_name = "test-hp-search-bayesian" diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 8136c84e..bce3bddd 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -8,18 +8,19 @@ TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} BERT_SEQ_LENGTH = 8 BERT_EMBEDDING_DIM = 16 +BERT_DATA_NAME = "test-data-categorical-1-lookahead-0" def _categorical_metadata(project_root): metadata_path = os.path.join( - project_root, "configs", "metadata_configs", "test-data-categorical-1.json" + project_root, "configs", "metadata_configs", f"{BERT_DATA_NAME}.json" ) with open(metadata_path, "r") as f: return json.load(f) def _bert_inference_metadata(project_root): - data_path = os.path.join(project_root, "data", "test-data-categorical-1-split2") + data_path = os.path.join(project_root, "data", f"{BERT_DATA_NAME}-split2") contents = [] for root, _, files in os.walk(data_path): for file in sorted(files): @@ -172,7 +173,9 @@ def test_bert_generative_predictions_default_to_context_length( bert_predictions, project_root ): metadata = _categorical_metadata(project_root) - valid_values = {str(v) for v in metadata["id_maps"]["itemId"].keys()} + valid_values = {str(v) for v in metadata["id_maps"]["itemId"].keys()}.union( + {"[unknown]", "[other]"} + ) assert bert_predictions.height > 0 assert set(bert_predictions["itemId"].to_list()).issubset(valid_values) diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 999c9cbf..3cabc262 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -200,6 +200,8 @@ def read_preprocessing_outputs(path, variant): ): return load_parquet_folder_outputs(path) return load_pt_outputs(path) + else: + raise ValueError(f"Invalid variant: {variant}") @pytest.fixture() @@ -260,6 +262,49 @@ def test_preprocessed_data_categorical(data_splits): ), f'{list(group["5"].to_numpy()[:-j]) = } != {list(group["6"].to_numpy()[j:]) = }' +def test_preprocessed_data_categorical_lookahead_0(run_preprocessing, project_root): + metadata_path = os.path.join( + project_root, + "configs", + "metadata_configs", + "test-data-categorical-1-lookahead-0.json", + ) + with open(metadata_path, "r") as f: + metadata_config = json.load(f) + + assert metadata_config["max_lookahead"] == 0 + assert metadata_config["sample_length"] == metadata_config["context_length"] + + for split in range(3): + data = read_preprocessing_outputs( + os.path.join( + project_root, + "data", + f"test-data-categorical-1-lookahead-0-split{split}", + ), + "categorical", + ) + + assert data is not None + assert data.shape[1] == 13 + assert "8" not in data.columns + assert set(str(i) for i in range(8)).issubset(set(data.columns)) + + for sequence_id, group in data.group_by("sequenceId"): + assert np.all( + np.abs(group["1"].to_numpy()[:-1] - group["2"].to_numpy()[1:]) < 0.0001 + ), ( + f"{sequence_id = }: {list(group['1'].to_numpy()[:-1]) = } " + f"!= {list(group['2'].to_numpy()[1:]) = }" + ) + assert np.all( + np.abs(group["5"].to_numpy()[:-1] - group["6"].to_numpy()[1:]) < 0.0001 + ), ( + f"{sequence_id = }: {list(group['5'].to_numpy()[:-1]) = } " + f"!= {list(group['6'].to_numpy()[1:]) = }" + ) + + def unnest(list_var): return [x for y in list_var for x in y] diff --git a/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv b/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv new file mode 100644 index 00000000..9c89f83e --- /dev/null +++ b/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv @@ -0,0 +1,201 @@ +sequenceId,itemPosition,itemId +0,0,112 +0,1,104 +0,2,129 +0,3,121 +0,4,109 +0,5,111 +0,6,121 +0,7,109 +0,8,126 +0,9,112 +0,10,104 +0,11,103 +0,12,119 +0,13,103 +0,14,105 +0,15,121 +0,16,107 +0,17,128 +0,18,128 +0,19,116 +0,20,106 +0,21,103 +0,22,119 +0,23,105 +0,24,100 +1,25,113 +1,26,116 +1,27,105 +1,28,113 +1,29,108 +1,30,118 +1,31,102 +1,32,102 +1,33,121 +1,34,104 +1,35,111 +1,36,110 +1,37,102 +1,38,102 +1,39,120 +1,40,109 +1,41,101 +1,42,111 +1,43,127 +1,44,105 +1,45,115 +1,46,104 +2,47,112 +2,48,124 +2,49,121 +2,50,124 +2,51,129 +2,52,103 +2,53,119 +2,54,118 +2,55,110 +2,56,102 +2,57,121 +2,58,108 +2,59,101 +2,60,102 +2,61,110 +2,62,106 +2,63,102 +2,64,110 +2,65,109 +2,66,115 +3,67,122 +3,68,129 +3,69,101 +3,70,117 +3,71,120 +3,72,127 +3,73,122 +3,74,112 +3,75,127 +3,76,115 +3,77,117 +3,78,102 +3,79,120 +3,80,108 +3,81,126 +3,82,116 +3,83,102 +3,84,121 +3,85,118 +3,86,105 +4,87,113 +4,88,127 +4,89,105 +4,90,104 +4,91,106 +4,92,118 +4,93,112 +4,94,122 +4,95,105 +4,96,121 +4,97,119 +4,98,126 +4,99,120 +4,100,103 +4,101,117 +4,102,114 +5,103,120 +5,104,123 +5,105,127 +5,106,105 +5,107,112 +5,108,108 +5,109,123 +5,110,108 +5,111,129 +5,112,122 +5,113,117 +5,114,122 +5,115,109 +5,116,112 +5,117,126 +5,118,120 +6,119,127 +6,120,119 +6,121,127 +6,122,102 +6,123,113 +6,124,119 +6,125,103 +6,126,126 +6,127,128 +6,128,113 +6,129,111 +6,130,117 +6,131,124 +6,132,100 +6,133,119 +6,134,117 +6,135,103 +6,136,110 +6,137,108 +6,138,125 +6,139,107 +7,140,111 +7,141,112 +7,142,113 +7,143,113 +7,144,113 +7,145,121 +7,146,100 +7,147,129 +7,148,100 +7,149,125 +7,150,118 +7,151,121 +7,152,127 +7,153,121 +7,154,129 +7,155,113 +7,156,110 +8,157,101 +8,158,119 +8,159,103 +8,160,113 +8,161,105 +8,162,111 +8,163,124 +8,164,108 +8,165,118 +8,166,124 +8,167,109 +8,168,121 +8,169,110 +8,170,120 +8,171,114 +8,172,107 +8,173,100 +8,174,111 +8,175,107 +8,176,109 +8,177,114 +8,178,102 +8,179,126 +8,180,115 +9,181,128 +9,182,120 +9,183,103 +9,184,116 +9,185,122 +9,186,100 +9,187,128 +9,188,102 +9,189,122 +9,190,110 +9,191,122 +9,192,107 +9,193,123 +9,194,103 +9,195,128 +9,196,106 +9,197,108 +9,198,119 +9,199,129 From 6a95a7c48f4938fad468814f14eaee00541e1069 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 18:52:52 +0200 Subject: [PATCH 43/81] fix tests, reverse metadata export order --- src/sequifier/config/preprocess_config.py | 2 + src/sequifier/helpers.py | 13 +-- src/sequifier/infer.py | 95 ++++++++----------- src/sequifier/preprocess.py | 12 +-- src/sequifier/train.py | 10 +- ...uifier_dataset_from_folder_parquet_lazy.py | 32 +++++-- ...t_sequifier_dataset_from_folder_pt_lazy.py | 51 ++++++---- tests/unit/test_infer.py | 22 ++++- tests/unit/test_train.py | 8 ++ 9 files changed, 135 insertions(+), 110 deletions(-) diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index a2532345..ed1aa518 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -192,6 +192,8 @@ def validate_subsequence_start_mode(cls, v: str) -> str: def validate_mask_column_requires_metadata(self) -> "PreprocessorModel": if self.mask_column is not None and self.metadata_config_path is None: raise ValueError("metadata_config_path must be set when mask_column is set") + if self.mask_column in ("sequenceId", "itemPosition"): + raise ValueError("mask_column cannot be sequenceId or itemPosition") return self def __init__(self, **kwargs): diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 335406ce..d228b456 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -114,17 +114,10 @@ def validate_stored_window_width(tensor: Tensor, sample_length: int) -> None: def sequence_layout_from_metadata( metadata: dict, context_length: int ) -> SequenceLayout: - metadata_context_length = int(metadata.get("context_length", context_length)) - if metadata_context_length != context_length: - raise ValueError( - f"Configured context_length={context_length} does not match preprocessed " - f"metadata context_length={metadata_context_length}." - ) + metadata_context_length = int(metadata["context_length"]) - max_lookahead = int(metadata.get("max_lookahead", 1)) - sample_length = int( - metadata.get("sample_length", metadata_context_length + max_lookahead) - ) + max_lookahead = int(metadata["max_lookahead"]) + sample_length = int(metadata["sample_length"]) if sample_length != metadata_context_length + max_lookahead: raise ValueError( "Invalid sequence layout metadata: sample_length must equal " diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 6d481926..8abdef3d 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -305,7 +305,7 @@ def calculate_item_positions( @beartype def _flatten_bert_target_valid_mask( config: InfererModel, - metadata: Optional[dict[str, Any]], + metadata: dict[str, Any], prediction_length: int, ) -> Optional[np.ndarray]: if config.training_objective != "bert" or not metadata: @@ -768,7 +768,7 @@ def infer_generative( ) probs, preds = get_probs_preds_from_dict( - config, inferer, sequences_dict, total_steps, metadata=metadata + config, inferer, sequences_dict, metadata, total_steps ) prediction_length = inferer.prediction_length # Get prediction_length @@ -923,7 +923,7 @@ def get_embeddings_pt( config: Any, inferer: "Inferer", data: dict[str, torch.Tensor], - metadata: Optional[dict[str, torch.Tensor]] = None, + metadata: dict[str, torch.Tensor], ) -> np.ndarray: """Generates embeddings from a batch of PyTorch tensor data. @@ -950,9 +950,7 @@ def get_embeddings_pt( for key, val in data.items() if key in config.input_columns } - metadata_np = ( - {key: val.numpy() for key, val in metadata.items()} if metadata else None - ) + metadata_np = {key: val.numpy() for key, val in metadata.items()} embeddings = inferer.infer_embedding(X, metadata=metadata_np) return embeddings @@ -962,8 +960,8 @@ def get_probs_preds_from_dict( config: Any, inferer: "Inferer", data: dict[str, torch.Tensor], + metadata: dict[str, torch.Tensor], total_steps: int = 1, - metadata: Optional[dict[str, torch.Tensor]] = None, ) -> tuple[Optional[dict[str, np.ndarray]], dict[str, np.ndarray]]: """Generates predictions from PyTorch tensor data, supporting autoregression. @@ -1006,9 +1004,7 @@ def get_probs_preds_from_dict( for key, tensor in data.items() if key in config.input_columns } - metadata_np = ( - {key: tensor.numpy() for key, tensor in metadata.items()} if metadata else None - ) + metadata_np = {key: tensor.numpy() for key, tensor in metadata.items()} all_probs_list = {col: [] for col in target_cols} all_preds_list = {col: [] for col in target_cols} @@ -1017,14 +1013,18 @@ def get_probs_preds_from_dict( for i in range(total_steps): if config.output_probabilities: probs_for_step = inferer.infer_generative( - X, return_probs=True, metadata=metadata_for_step + X, + metadata_for_step, + return_probs=True, + ) + preds_for_step = inferer.infer_generative( + None, metadata_for_step, probs_for_step ) - preds_for_step = inferer.infer_generative(None, probs_for_step) for col in target_cols: all_probs_list[col].append(probs_for_step[col]) else: preds_for_step = inferer.infer_generative( - X, return_probs=False, metadata=metadata_for_step + X, metadata_for_step, return_probs=False ) for col in target_cols: @@ -1106,11 +1106,7 @@ def get_embeddings( config.target_offset, ) X = {col: X_col.numpy() for col, X_col in X.items()} - metadata_np = ( - {col: metadata_col.numpy() for col, metadata_col in metadata.items()} - if metadata - else None - ) + metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} del data embeddings = inferer.infer_embedding(X, metadata=metadata_np) @@ -1159,19 +1155,15 @@ def get_probs_preds_from_df( config.target_offset, ) X = {col: X_col.numpy() for col, X_col in X.items()} - metadata_np = ( - {col: metadata_col.numpy() for col, metadata_col in metadata.items()} - if metadata - else None - ) + metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} del data if config.output_probabilities: - probs = inferer.infer_generative(X, return_probs=True, metadata=metadata_np) - preds = inferer.infer_generative(None, probs) + probs = inferer.infer_generative(X, metadata_np, return_probs=True) + preds = inferer.infer_generative(None, metadata_np, probs) else: probs = None - preds = inferer.infer_generative(X, metadata=metadata_np) + preds = inferer.infer_generative(X, metadata_np) return (probs, preds) @@ -1294,8 +1286,8 @@ def get_probs_preds_autoregression( config, inferer, head_data, - total_steps=config.autoregression_total_steps, - metadata=metadata, + metadata, + config.autoregression_total_steps, ) # 4. Generate the final output arrays using the perfectly aligned bases @@ -1456,7 +1448,7 @@ def invert_normalization( def infer_embedding( self, x: dict[str, np.ndarray], - metadata: Optional[dict[str, np.ndarray]] = None, + metadata: dict[str, np.ndarray], ) -> np.ndarray: """Performs inference with an embedding model. @@ -1473,7 +1465,7 @@ def infer_embedding( """ assert x is not None size = x[list(x.keys())[0]].shape[0] - embedding = self.adjust_and_infer_embedding(x, size, metadata=metadata) + embedding = self.adjust_and_infer_embedding(x, size, metadata) return embedding @@ -1481,9 +1473,9 @@ def infer_embedding( def infer_generative( self, x: Optional[dict[str, np.ndarray]], + metadata: dict[str, np.ndarray], probs: Optional[dict[str, np.ndarray]] = None, return_probs: bool = False, - metadata: Optional[dict[str, np.ndarray]] = None, ) -> dict[str, np.ndarray]: """Performs generative inference, returning probabilities or predictions. @@ -1529,7 +1521,7 @@ def infer_generative( f"Not all keys in x are in probs - {x.keys() = } != {probs.keys() = }. Full inference is executed." ) - outs = self.adjust_and_infer_generative(x, size, metadata=metadata) + outs = self.adjust_and_infer_generative(x, size, metadata) for target_column, target_outs in outs.items(): if np.any(target_outs == np.inf): @@ -1571,7 +1563,7 @@ def adjust_and_infer_embedding( self, x: dict[str, np.ndarray], size: int, - metadata: Optional[dict[str, np.ndarray]] = None, + metadata: dict[str, np.ndarray], ): """Handles batching and backend-specific calls for embedding inference. @@ -1590,11 +1582,10 @@ def adjust_and_infer_embedding( if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) - metadata_adjusted = ( - self.prepare_inference_batches(metadata, pad_to_batch_size=True) - if metadata - else [None] * len(x_adjusted) + metadata_adjusted = self.prepare_inference_batches( + metadata, pad_to_batch_size=True ) + inference_batch_embeddings = [ self.infer_pure(x_sub, metadata_sub)[0] for x_sub, metadata_sub in zip(x_adjusted, metadata_adjusted) @@ -1602,11 +1593,10 @@ def adjust_and_infer_embedding( embeddings = np.concatenate(inference_batch_embeddings, axis=0)[:size] elif self.inference_model_type == "pt": x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=False) - metadata_adjusted = ( - self.prepare_inference_batches(metadata, pad_to_batch_size=False) - if metadata - else None + metadata_adjusted = self.prepare_inference_batches( + metadata, pad_to_batch_size=False ) + embeddings = infer_with_embedding_model( self.inference_model, x_adjusted, @@ -1624,7 +1614,7 @@ def adjust_and_infer_generative( self, x: dict[str, np.ndarray], size: int, - metadata: Optional[dict[str, np.ndarray]] = None, + metadata: dict[str, np.ndarray], ): """Handles batching and backend-specific calls for generative inference. @@ -1645,10 +1635,8 @@ def adjust_and_infer_generative( if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) - metadata_adjusted = ( - self.prepare_inference_batches(metadata, pad_to_batch_size=True) - if metadata - else [None] * len(x_adjusted) + metadata_adjusted = self.prepare_inference_batches( + metadata, pad_to_batch_size=True ) out_subs = [ dict(zip(self.target_columns, self.infer_pure(x_sub, metadata_sub))) @@ -1663,10 +1651,8 @@ def adjust_and_infer_generative( elif self.inference_model_type == "pt": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=False) - metadata_adjusted = ( - self.prepare_inference_batches(metadata, pad_to_batch_size=False) - if metadata - else None + metadata_adjusted = self.prepare_inference_batches( + metadata, pad_to_batch_size=False ) outs = infer_with_generative_model( self.inference_model, @@ -1731,7 +1717,7 @@ def prepare_inference_batches( def infer_pure( self, x: dict[str, np.ndarray], - metadata: Optional[dict[str, np.ndarray]] = None, + metadata: dict[str, np.ndarray], ) -> list[np.ndarray]: """Performs a single inference pass using the ONNX session. @@ -1748,15 +1734,10 @@ def infer_pure( ONNX model. """ metadata = metadata or {} - reference_shape = next(iter(x.values())).shape ort_inputs = {} for session_input in self.ort_session.get_inputs(): input_name = session_input.name - if input_name == "attention_valid_mask": - value = metadata.get(input_name) - if value is None: - value = np.ones(reference_shape[:2], dtype=np.bool_) - elif input_name in metadata: + if input_name in metadata: value = metadata[input_name] elif input_name.endswith("_in") and input_name[:-3] in x: feature_column = input_name[:-3] diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 962dd204..cdbc1740 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -236,15 +236,15 @@ def __init__( col_types=col_types, ) data = _apply_mask_column(data, data_columns, col_types, self.mask_column) - self._export_metadata( - id_maps, n_classes, col_types, selected_columns_statistics - ) self._write_or_validate_resume_manifest( selected_columns, write_format, data_columns, ) + self._export_metadata( + id_maps, n_classes, col_types, selected_columns_statistics + ) schema = self._create_schema(col_types, self.layout.sample_length) @@ -334,14 +334,14 @@ def __init__( for col in id_maps: col_types[col] = "Int64" - self._export_metadata( - id_maps, n_classes, col_types, selected_columns_statistics - ) self._write_or_validate_resume_manifest( selected_columns, write_format, data_columns, ) + self._export_metadata( + id_maps, n_classes, col_types, selected_columns_statistics + ) schema = self._create_schema(col_types, self.layout.sample_length) self._process_batches_multiple_files( diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 9b37f3f1..66d7ff88 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1714,7 +1714,7 @@ def _calculate_loss( self, output: dict[str, Tensor], targets: dict[str, Tensor], - metadata: Optional[dict[str, Tensor]] = None, + metadata: dict[str, Tensor], ) -> tuple[Tensor, dict[str, Tensor]]: """Calculates the loss for the given output and targets. @@ -1738,9 +1738,9 @@ def _calculate_loss( if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") - valid_mask = metadata["attention_valid_mask"].bool() # type: ignore + valid_mask = metadata["target_valid_mask"].bool() # type: ignore - if metadata is not None and "bert_mask" in metadata: + if "bert_mask" in metadata: valid_mask = valid_mask & metadata["bert_mask"].bool() mask = valid_mask.T.contiguous().reshape(-1) @@ -2555,7 +2555,7 @@ def infer_with_embedding_model( device: str, size: int, target_columns: list[str], - metadata: Optional[list[dict[str, np.ndarray]]] = None, + metadata: list[dict[str, np.ndarray]], ) -> np.ndarray: """Performs inference with an embedding model. @@ -2615,7 +2615,7 @@ def infer_with_generative_model( device: str, size: int, target_columns: list[str], - metadata: Optional[list[dict[str, np.ndarray]]] = None, + metadata: list[dict[str, np.ndarray]], ) -> dict[str, np.ndarray]: """Performs inference with a generative model. diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index d51685bf..856b386b 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -9,14 +9,29 @@ SequifierDatasetFromFolderParquetLazy, ) +CONTEXT_LENGTH = 2 +MAX_LOOKAHEAD = 1 +SAMPLE_LENGTH = CONTEXT_LENGTH + MAX_LOOKAHEAD + + +def _folder_metadata(total_samples, batch_files): + return { + "total_samples": total_samples, + "batch_files": batch_files, + "context_length": CONTEXT_LENGTH, + "max_lookahead": MAX_LOOKAHEAD, + "sample_length": SAMPLE_LENGTH, + "sequence_layout_version": 1, + } + @pytest.fixture def mock_config(): config = MagicMock() config.project_root = "." config.seed = 42 - config.context_length = 2 - config.sample_length = 3 + config.context_length = CONTEXT_LENGTH + config.sample_length = SAMPLE_LENGTH config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 config.training_spec.num_workers = 0 @@ -57,7 +72,7 @@ def dataset_path(tmp_path): df.write_parquet(data_dir / filename) batch_files.append({"path": filename, "samples": 10}) - metadata = {"total_samples": 40, "batch_files": batch_files} + metadata = _folder_metadata(40, batch_files) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -119,10 +134,7 @@ def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): ) with open(data_dir / "metadata.json", "w") as f: json.dump( - { - "total_samples": 5, - "batch_files": [{"path": "file.parquet", "samples": 5}], - }, + _folder_metadata(5, [{"path": "file.parquet", "samples": 5}]), f, ) @@ -186,7 +198,7 @@ def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): {"path": "file_1.parquet", "samples": 15}, {"path": "file_2.parquet", "samples": 10}, ] - metadata = {"total_samples": 25, "batch_files": batch_files} + metadata = _folder_metadata(25, batch_files) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -228,7 +240,7 @@ def test_oversampling_strategy(mock_config, tmp_path): {"path": "file_1.parquet", "samples": 15}, {"path": "file_2.parquet", "samples": 10}, ] - metadata = {"total_samples": 25, "batch_files": batch_files} + metadata = _folder_metadata(25, batch_files) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -272,7 +284,7 @@ def test_undersampling_strategy(mock_config, tmp_path): {"path": "file_1.parquet", "samples": 15}, {"path": "file_2.parquet", "samples": 10}, ] - metadata = {"total_samples": 25, "batch_files": batch_files} + metadata = _folder_metadata(25, batch_files) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index d5688ddc..6cec3c92 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -8,6 +8,21 @@ SequifierDatasetFromFolderPtLazy, ) +CONTEXT_LENGTH = 5 +MAX_LOOKAHEAD = 1 +SAMPLE_LENGTH = CONTEXT_LENGTH + MAX_LOOKAHEAD + + +def _folder_metadata(total_samples, batch_files): + return { + "total_samples": total_samples, + "batch_files": batch_files, + "context_length": CONTEXT_LENGTH, + "max_lookahead": MAX_LOOKAHEAD, + "sample_length": SAMPLE_LENGTH, + "sequence_layout_version": 1, + } + # --- Fixtures --- @pytest.fixture @@ -19,8 +34,8 @@ def mock_config(tmp_path): config.training_spec.sampling_strategy = "exact" config.training_spec.num_workers = 0 config.seed = 42 - config.context_length = 5 - config.sample_length = 6 + config.context_length = CONTEXT_LENGTH + config.sample_length = SAMPLE_LENGTH config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] config.training_spec.data_offset = 1 @@ -36,15 +51,15 @@ def dataset_path(tmp_path): # Create dummy metadata.json # We define 4 files with 10 samples each = 40 total samples - metadata = { - "total_samples": 40, - "batch_files": [ + metadata = _folder_metadata( + 40, + [ {"path": "file1.pt", "samples": 10}, {"path": "file2.pt", "samples": 10}, {"path": "file3.pt", "samples": 10}, {"path": "file4.pt", "samples": 10}, ], - } + ) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -229,15 +244,15 @@ def test_exact_strategy_uneven_files_exception( # Rank 0 will get file1 (10) + file3 (10) = 20 samples # Rank 1 will get file2 (10) + file4 (5) = 15 samples - metadata = { - "total_samples": 35, - "batch_files": [ + metadata = _folder_metadata( + 35, + [ {"path": "file1.pt", "samples": 10}, {"path": "file2.pt", "samples": 10}, {"path": "file3.pt", "samples": 10}, {"path": "file4.pt", "samples": 5}, ], - } + ) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -265,14 +280,14 @@ def test_oversampling_strategy( # Rank 0 gets file1 (10) + file3 (5) = 15 samples # Rank 1 gets file2 (10) = 10 samples - metadata = { - "total_samples": 25, - "batch_files": [ + metadata = _folder_metadata( + 25, + [ {"path": "file1.pt", "samples": 10}, {"path": "file2.pt", "samples": 10}, {"path": "file3.pt", "samples": 5}, ], - } + ) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) @@ -311,14 +326,14 @@ def test_undersampling_strategy( # Rank 0 gets file1 (10) + file3 (5) = 15 samples # Rank 1 gets file2 (10) = 10 samples - metadata = { - "total_samples": 25, - "batch_files": [ + metadata = _folder_metadata( + 25, + [ {"path": "file1.pt", "samples": 10}, {"path": "file2.pt", "samples": 10}, {"path": "file3.pt", "samples": 5}, ], - } + ) with open(data_dir / "metadata.json", "w") as f: json.dump(metadata, f) diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 5cc76580..568a434e 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -337,13 +337,15 @@ def get_inputs(self): return [Input("unexpected_input")] mock_inferer.ort_session = Session() + metadata = {} with pytest.raises(ValueError, match="Could not map ONNX input"): mock_inferer.infer_pure( { "cat_col": np.array([[1, 2]], dtype=np.int64), "real_col": np.array([[1.0, 2.0]], dtype=np.float32), - } + }, + metadata, ) @@ -453,6 +455,14 @@ def _mock_bert_inferer(config): ) +def _dummy_attention_metadata(batch_size, context_length): + return { + "attention_valid_mask": torch.ones( + (batch_size, context_length), dtype=torch.bool + ) + } + + def test_bert_generative_inference_filters_left_padded_positions(tmp_path): config = _bert_inference_config(tmp_path) config.output_probabilities = True @@ -641,6 +651,7 @@ def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): and accurately shifts the input tensor to append the latest prediction. """ initial_data = {"target_col": torch.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]])} + metadata = _dummy_attention_metadata(batch_size=2, context_length=3) # Patch the method on the actual instance with patch.object(ar_inferer, "infer_generative") as mock_infer: @@ -653,7 +664,7 @@ def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): total_steps = 2 probs, preds = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, total_steps=total_steps + ar_config, ar_inferer, initial_data, metadata, total_steps=total_steps ) # 1. Verify Loop Count @@ -700,12 +711,14 @@ def test_get_probs_preds_from_dict_with_probabilities( # What we want our mock sample_with_cumsum to return mock_sample.return_value = np.array([1]) + metadata = _dummy_attention_metadata(batch_size=1, context_length=2) + # Mock the *inner* backend call, allowing infer_generative to execute its actual logic with patch.object( ar_inferer, "adjust_and_infer_generative", return_value=dummy_logits ) as mock_adjust: probs, preds = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, total_steps=1 + ar_config, ar_inferer, initial_data, metadata, total_steps=1 ) assert mock_adjust.call_count == 1 @@ -735,12 +748,13 @@ def test_get_probs_preds_from_dict_ignores_unselected_columns(ar_config, ar_infe "target_col": torch.tensor([[1.0, 2.0]]), "ignored_col": torch.tensor([[9.0, 9.0]]), } + metadata = _dummy_attention_metadata(batch_size=1, context_length=2) with patch.object(ar_inferer, "infer_generative") as mock_infer: mock_infer.return_value = {"target_col": np.array([[3.0]])} _, _ = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, total_steps=1 + ar_config, ar_inferer, initial_data, metadata, total_steps=1 ) first_call_args = mock_infer.call_args_list[0][0][0] diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 054d0956..875e9109 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -252,6 +252,10 @@ def test_load_train_config_rejects_mismatched_metadata_special_token_ids( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], + "context_length": config_values["context_length"], + "max_lookahead": 1, + "sample_length": config_values["context_length"] + 1, + "sequence_layout_version": 1, "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -281,6 +285,10 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], + "context_length": config_values["context_length"], + "max_lookahead": 1, + "sample_length": config_values["context_length"] + 1, + "sequence_layout_version": 1, "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], From 6bcfe78d39c48cd216b7dc9df56ffca9649cbef4 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 19:03:00 +0200 Subject: [PATCH 44/81] Update outputs --- ...cal-bert-best-embedding-1-0-embeddings.csv | 9 +- ...cal-bert-best-embedding-1-1-embeddings.csv | 9 +- ...cal-bert-best-embedding-1-2-embeddings.csv | 7 +- ...cal-bert-best-embedding-1-3-embeddings.csv | 14 +- ...cal-bert-best-embedding-1-4-embeddings.csv | 7 +- ...cal-bert-best-embedding-1-5-embeddings.csv | 16 +- ...cal-bert-best-embedding-1-6-embeddings.csv | 9 +- ...cal-bert-best-embedding-1-7-embeddings.csv | 7 +- ...-categorical-bert-best-1-0-predictions.csv | 3 +- ...-categorical-bert-best-1-1-predictions.csv | 3 +- ...-categorical-bert-best-1-2-predictions.csv | 3 +- ...-categorical-bert-best-1-3-predictions.csv | 8 +- ...-categorical-bert-best-1-4-predictions.csv | 5 +- ...-categorical-bert-best-1-5-predictions.csv | 10 +- ...-categorical-bert-best-1-6-predictions.csv | 5 +- ...-categorical-bert-best-1-7-predictions.csv | 5 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 48 +-- ...uifier-model-real-3-best-3-predictions.csv | 48 +-- ...uifier-model-real-5-best-3-predictions.csv | 48 +-- ...ifier-model-real-50-best-3-predictions.csv | 48 +-- ...custom-eval-run-1-best-1-0-predictions.csv | 58 +-- ...custom-eval-run-1-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-1-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-1-best-1-7-predictions.csv | 60 +-- ...custom-eval-run-2-best-1-0-predictions.csv | 2 +- ...custom-eval-run-2-best-1-1-predictions.csv | 10 +- ...custom-eval-run-2-best-1-2-predictions.csv | 26 +- ...custom-eval-run-2-best-1-3-predictions.csv | 30 +- ...custom-eval-run-2-best-1-4-predictions.csv | 4 +- ...custom-eval-run-2-best-1-5-predictions.csv | 70 +-- ...custom-eval-run-2-best-1-6-predictions.csv | 2 +- ...custom-eval-run-2-best-1-7-predictions.csv | 32 +- ...custom-eval-run-3-best-1-0-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-1-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-2-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-3-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-4-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-5-predictions.csv | 120 +++--- ...custom-eval-run-3-best-1-6-predictions.csv | 60 +-- ...custom-eval-run-3-best-1-7-predictions.csv | 60 +-- ...ategorical-bert-best-1-0-probabilities.csv | 9 +- ...ategorical-bert-best-1-1-probabilities.csv | 9 +- ...ategorical-bert-best-1-2-probabilities.csv | 7 +- ...ategorical-bert-best-1-3-probabilities.csv | 14 +- ...ategorical-bert-best-1-4-probabilities.csv | 7 +- ...ategorical-bert-best-1-5-probabilities.csv | 16 +- ...ategorical-bert-best-1-6-probabilities.csv | 9 +- ...ategorical-bert-best-1-7-probabilities.csv | 7 +- 53 files changed, 1097 insertions(+), 1067 deletions(-) diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv index 79067fd4..e3eb7be7 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv @@ -1,5 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -0,0,0,-0.46009058,0.45777348,-0.22698353,-0.25634044,0.05071858,-0.7203443,-0.5872563,-0.7930882,1.2241583,-0.81149936,-0.7057305,0.83234805,1.888106,-0.4073704,2.095673,-1.5786989 -0,0,1,1.2350427,-0.07666658,1.6687232,-0.10760293,-0.34233996,-0.6405651,-0.34899667,1.3310788,-1.7401463,0.48453188,-0.39308575,-0.38906077,0.09585311,0.9867051,0.3474074,-2.1432836 -0,0,2,-0.04062133,-1.1088247,-1.103962,-0.7512283,-0.3894962,0.40089244,1.3842655,-0.45180556,1.6632154,0.7094805,-1.2707394,1.2500856,-1.5106493,1.293199,0.25951874,-0.33003083 -0,0,3,0.95941216,0.026796307,0.18043526,-0.27425033,-0.8116876,0.59967464,0.15953179,0.6978008,0.6560124,-2.234662,-0.5438349,-1.4812955,-0.07771553,2.3249497,0.22156315,-0.4244198 +0,0,0,-0.5678054,0.30644566,-0.48223504,-0.37569737,-0.3008679,-0.52658165,-0.32838538,-0.8943048,0.95665604,-0.8637694,-0.3740866,0.95319647,1.8752165,-0.35496402,2.3600826,-1.429543 +0,0,1,0.78683025,-0.48157683,2.1831813,0.00026024866,0.19607927,-1.008873,0.06488745,0.6515402,-1.6177354,1.4758716,-0.756111,-0.30458173,0.38618582,0.34799105,-0.17682126,-1.7913008 +0,0,2,-1.0294193,-1.9363327,-0.10089664,-1.256774,-0.57952416,0.6647573,1.0020547,0.60435945,1.4913826,0.47637454,-0.52362984,1.2796938,-1.1521349,0.8179086,0.8369039,-0.61289996 +0,0,3,1.29303,0.5742223,-0.20042029,0.03720812,-1.1154803,0.26275542,-0.0761054,0.65055084,0.6538049,-1.9854333,-0.64701724,-1.4201233,0.422354,2.221934,-0.06508473,-0.6750595 +0,0,4,-0.14699927,-1.5303152,0.3594103,-0.9477121,-0.4332569,-0.068542324,0.5149603,0.34177327,1.5040935,0.8814393,-0.73049664,-0.66137636,-1.0386573,2.0420604,-1.2320555,1.142538 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv index f1ad3c83..b58246ec 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv @@ -1,5 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -1,0,0,0.5496252,-0.29538283,1.4190812,1.0952207,-1.0380151,-0.95464176,0.25532782,2.3793674,0.15770668,-0.4943242,-0.23793282,-0.93078727,-0.4377435,0.48551127,-1.7345339,-0.24836543 -1,0,1,1.1703843,-1.293456,-0.009221493,1.1512711,-1.2613713,-0.14320165,0.21250723,1.3096029,-0.19192691,-1.8777579,1.3773452,0.84090453,0.026053404,0.5442735,-1.1615742,-0.7001723 -1,0,2,1.3515635,0.47997367,-0.15122601,0.20858693,-0.96445537,0.32341665,-0.17822078,0.5217958,0.63256186,-1.831718,-0.63131493,-1.3727977,0.07998669,2.4652927,-0.28591567,-0.66949725 -1,0,3,1.2581677,-1.3701472,1.279228,0.34158385,-0.1695098,-0.12549305,-0.9352961,-0.7049133,0.7994457,-0.7667792,0.9320275,1.0522128,-1.8637831,-0.15688421,-0.91187423,1.3544698 +1,0,0,0.6880688,-0.49868053,1.1768215,0.9832487,-1.6379206,-0.87166226,0.13469009,2.644633,-0.3137418,-0.8415682,0.17771643,-0.33885878,-0.06802454,0.34736037,-1.01832,-0.62350124 +1,0,1,1.3108207,-1.3080025,0.34822875,1.4596325,-1.0497857,-0.16749367,0.485262,0.97075754,0.034637336,-1.7957212,1.4068959,0.78538895,-0.31832948,-0.30980903,-1.3081034,-0.5883961 +1,0,2,1.0650882,-0.09216967,0.36322507,0.18116008,-1.3025135,0.54174715,-0.482454,0.9420967,0.39991647,-2.0071194,-0.3020647,-1.1005768,0.43759206,2.1584413,0.28633898,-1.1556921 +1,0,3,1.8563068,-0.7071074,0.1579034,0.8939158,-0.0670585,-0.49880558,-1.4990184,-0.9207246,0.73329836,-0.34481865,0.627262,1.1733168,-1.3812757,-0.22482446,-1.1992402,1.4072857 +1,0,4,0.49123776,-0.65193045,2.2564845,-0.17658377,0.42154688,1.2235798,-0.052261785,-1.0662595,0.90595466,-0.9850903,-1.1610376,0.45742363,-1.7801737,-0.12341051,0.7481433,-0.5458406 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv index d9c4ea92..50c647c9 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv @@ -1,4 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -2,0,0,-0.7215402,-0.9107281,-1.3260528,-1.056419,0.45294917,-1.4000003,1.2015996,0.9110033,0.082641706,1.9949383,0.7476521,-0.21124426,1.3691758,-0.049398102,-0.21682854,-0.8714193 -2,0,1,1.7914528,0.28032902,1.0305467,0.54616165,-1.1185598,-0.72510433,-0.10695522,-0.7386186,-0.97949564,1.8118858,-0.005990093,-0.68710846,-0.26387492,0.34162205,-1.9024037,0.6979735 -2,0,2,-0.30499086,-0.8624588,-0.21858704,0.46042088,1.684188,-0.8045112,0.051364895,0.14763248,-0.15275371,-0.62137896,0.52078897,-2.5685115,1.6713971,0.9936811,0.5037575,-0.5022072 +2,0,0,-0.36413205,-0.6412734,-1.509915,-0.64748913,1.2593658,-1.3857695,0.8524324,0.52342945,-0.109673396,2.4144866,0.8789581,-0.38112083,0.7561693,-0.6839269,-0.28703287,-0.67817223 +2,0,1,1.2825032,-0.4427156,1.9214746,0.46229368,-1.4471735,-0.5868213,-0.8091576,-0.24864331,-1.2884412,1.7199851,0.23889081,0.040785108,-0.05055482,0.22968066,-1.4788846,0.43781894 +2,0,2,0.094167404,0.0859257,-0.5042325,0.7252808,1.3083975,-1.3224137,-0.33199427,0.13993336,0.08184377,-0.40506566,0.29009566,-2.2843225,1.9552679,1.2503077,-0.18841878,-0.93038386 +2,0,3,1.0551077,-1.1094918,0.8473594,-0.12514752,0.4117495,0.18166554,-1.1333376,-0.8610408,0.65473765,-0.5237611,0.96090883,0.9585637,-1.4609623,-0.9971072,-0.89406204,2.0541434 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv index 41d3d3c6..429d9980 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv @@ -1,7 +1,9 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -3,0,0,-0.7998329,-1.009516,-1.2457482,-0.76004726,0.5837586,-1.667505,0.9730014,0.9463384,0.092550665,2.0262837,0.91990626,-0.16828287,1.2223057,-0.15285197,-0.15041813,-0.8101929 -3,0,1,-0.44488773,-0.768482,-0.96725094,-1.0061802,-1.1290205,0.5468874,1.4315809,-0.18544558,0.2409695,-0.26420698,0.2942724,2.9089172,0.037383337,0.20568404,0.09013668,-0.9878235 -3,0,2,0.9197474,-0.54972196,0.19757852,-1.6962574,-1.6389741,0.1349557,1.9117059,-0.8651552,0.5093372,-1.4415438,0.5049666,0.5232043,0.6729788,0.5089508,0.9317495,-0.64518726 -4,0,0,1.0214102,-0.8599426,1.1313342,-0.9132186,-1.1094761,0.36796033,-0.3840757,0.69376415,0.1755591,-0.18347333,-2.1679997,-0.50493,-0.43210468,2.0920951,0.5312533,0.5269235 -4,0,1,1.975615,0.48146883,1.191331,0.069339134,-0.15332681,-0.8564395,0.082964964,0.59752154,-1.4309397,0.55613095,-0.887867,-0.40480894,0.031874895,1.017457,-0.07405214,-2.231385 -4,0,2,0.24375618,-1.9693801,-0.9987763,-1.4291574,0.28681424,0.22939153,0.74847555,1.6184663,0.56282,0.12442069,0.036241677,-1.4214271,-0.19361049,0.4269336,-0.029789643,1.7619773 +3,0,0,-0.40126666,-0.78331727,-1.5756154,-0.31062096,1.1928762,-1.6843582,0.7851598,0.5358782,0.060748313,2.3220642,0.983614,-0.29303667,0.58234143,-0.36522076,-0.30240387,-0.7496143 +3,0,1,-0.7336195,-1.2810793,-0.38829067,-0.4601508,-1.50845,0.5241958,0.8025443,0.6143513,0.056892652,-0.31004176,0.44623825,2.7555754,-0.0637165,0.22621281,0.6022362,-1.314328 +3,0,2,1.3642316,0.12788779,-0.20111935,-1.036736,-1.948152,-0.38286552,1.4817194,-0.9606339,0.7927826,-1.2917897,-0.020328995,0.9448982,1.0943421,0.79177094,0.19575107,-1.0141716 +3,0,3,0.86852545,-0.017761663,0.41102606,-0.18726309,-0.87506944,0.5694903,0.15854332,0.8119648,0.5742181,-2.3636305,-0.37842566,-1.5641385,0.12360405,2.1495688,0.17902005,-0.5240532 +4,0,0,1.1631641,-0.55724025,1.1540875,-1.288715,-0.25030568,0.29519114,-0.26156953,0.73843837,0.3341611,0.36159894,-2.2564068,-1.12792,-0.6742551,1.7842551,-0.06704759,0.6194069 +4,0,1,0.8389171,-0.6922904,2.0705483,0.090488724,-0.24284306,-0.52842766,-0.25121197,0.6185058,-1.8862301,1.0848103,-0.5888317,0.16298746,0.6342511,0.5813959,0.052398324,-1.9904659 +4,0,2,1.2333139,-0.8917692,-1.4689931,-0.6857654,0.11552239,0.31441647,0.30494234,1.6532247,0.5431021,0.16783965,-0.89129585,-1.6974555,0.21965057,-0.051815066,-0.7658714,1.8788624 +4,0,3,-0.026684264,-0.90918845,0.74477476,-0.18694443,-0.103529036,-0.61683804,-0.64630914,-0.77517974,1.4970412,1.2110367,2.242393,0.84123915,-0.07830191,-1.5589653,-0.5940237,-1.0396498 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv index bc0d81ae..92904b29 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv @@ -1,4 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -5,0,0,0.050885476,-0.68763536,-0.32008207,1.0336747,1.0007741,-0.9633068,-0.68598473,0.54518497,-0.34585357,-0.47822043,0.52911806,-2.0803304,1.9946527,1.3150282,0.1371507,-1.0467436 -5,0,1,1.5032598,0.98465127,-0.9370364,0.1338618,-0.023070391,-0.055669162,-0.92458737,0.0777592,-0.114300214,0.7075389,0.89388293,-1.1466067,0.17746806,1.8015935,-1.9533355,-1.140061 -5,0,2,0.92082304,-0.24809152,-0.097492896,-0.5940675,-1.1684945,0.82807684,-0.26342613,0.24813169,-0.61301243,-0.017792376,1.3554065,1.2064362,0.016166179,-0.95746326,1.6580712,-2.2975802 +5,0,0,-0.0975191,-0.4876295,-0.2364892,0.8899324,1.3293315,-1.4303449,-0.38584486,0.4049477,0.2341479,-0.24590422,0.4131558,-2.2018154,1.7526464,1.2278333,-0.1008542,-1.0976585 +5,0,1,0.96228456,0.5013961,-0.46397877,0.18880926,-0.21479401,0.068225846,-1.6835177,0.3138923,-0.215686,0.8992038,1.2001247,-0.7830776,0.29820076,1.9573467,-1.7968755,-1.2469637 +5,0,2,1.1223437,0.35189787,-0.4220163,-0.08106533,-1.5475112,0.14656012,-0.7290129,0.048741527,0.048301227,0.31566086,1.0508822,1.2633296,0.41796586,-1.0627791,1.3920348,-2.369732 +5,0,3,0.997344,-0.3670925,1.1623502,-1.5849966,-0.5812203,0.69678265,0.33674517,0.5580875,0.17368835,-0.32163247,-1.9439414,-1.2147049,-0.6150653,1.896507,0.09835436,0.66708636 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv index 32b2488a..4552eb37 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv @@ -1,8 +1,10 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -6,0,0,1.4568412,-0.14638022,1.5296284,-0.23393637,0.47851744,-0.61866605,-0.3450205,0.9253853,-1.4923376,1.1160238,-0.5999185,-0.7552432,-0.13930646,0.5775359,0.43673426,-2.2207265 -6,0,1,1.5268029,-0.8329019,1.6105913,0.68216175,-1.6239593,-0.7086337,-1.3626277,-0.081963986,-1.1570084,1.6663798,0.41809285,0.0707222,-0.10685151,0.3952702,-0.6428383,0.13019788 -6,0,2,1.0811658,0.20269495,-0.8124527,-0.00006336486,-1.4045546,0.38837618,-0.56309855,0.12770331,1.2022637,0.8725209,0.38372105,-2.5436192,0.303661,-0.14655858,1.5541319,-0.6847054 -6,0,3,0.03786793,-1.276104,1.9573607,0.4641471,-0.90920424,-0.64407074,0.8226515,1.1558217,-0.020683609,-0.8913047,-0.7226361,-0.8886756,-0.007999741,-0.83854043,-0.30502415,2.0437944 -7,0,0,-0.4584146,-1.3955376,-0.52467126,-0.618622,-1.2942654,0.7003769,0.48657182,0.09509239,-0.07182534,-0.2584199,0.48787862,2.825618,0.3362462,0.20020695,0.8225655,-1.3267877 -7,0,1,1.4503253,-0.6273112,-0.99216473,1.4233189,1.0060959,0.67193794,-1.6410915,-0.6428859,-0.934798,1.4429418,0.1590132,-1.4877084,0.1463788,0.6280047,-0.5242633,-0.079930626 -7,0,2,1.1836636,-0.09071134,-0.14702518,1.2998279,-1.8555058,0.77598166,-0.72920847,0.43935195,0.4997686,1.223445,0.761577,-2.2151723,-0.3662264,0.030556075,0.093911,-0.94706964 +6,0,0,0.77065754,-0.76632786,1.8472377,-0.36171773,-0.12794422,-0.51205856,0.23821487,0.19354652,-2.007292,1.1207803,-0.47570035,0.12879921,0.6755318,0.19856073,1.0114113,-1.9820988 +6,0,1,1.5402608,-0.6269262,1.811596,0.5628006,-1.0015095,-1.0100083,-0.8554023,-0.5945589,-0.7188355,2.0016418,0.036225002,-0.0963106,-0.34438652,-0.04934737,-1.2410477,0.5716474 +6,0,2,0.099329084,-0.9905449,0.37024456,-0.092512354,-1.0474453,0.5579103,-1.3993762,0.9833203,0.59650284,1.0684012,0.9790155,-2.0937629,0.30437842,-0.46602613,1.7425917,-0.64842325 +6,0,3,0.39516813,-0.6314403,1.4948617,1.0518291,-1.0769643,-1.1019645,0.72841096,0.8454386,-0.1329276,-0.27656975,-1.1176367,-0.6240037,0.08811874,-0.8709323,-1.0424569,2.2322922 +6,0,4,1.5397077,-1.1038709,0.17057961,-0.70247877,0.91511214,-0.19965753,0.10995354,-0.09201375,-0.5179603,-1.2657489,-0.9364169,0.99344826,-0.5904373,2.378038,-1.0655441,0.35856313 +7,0,0,-0.38164693,-1.3991219,-0.57864404,-0.64194506,-1.0146283,0.77735037,1.0805509,0.20559101,0.14912546,0.24122998,0.23987257,2.7745647,-0.1806378,-0.38417065,0.53943276,-1.4561769 +7,0,1,0.7505255,-1.2829787,-0.04241756,1.1337081,0.5512444,1.0470235,-2.240779,0.38265908,-0.9141051,0.9473515,1.0557507,-1.5054818,-0.0026612426,0.71467644,-0.11884089,-0.48391303 +7,0,2,1.4440962,0.640023,-1.0184404,1.4597166,-1.5533735,0.19580375,-0.73750097,0.17983381,0.6347194,1.3996398,0.19554296,-1.8371892,0.27592623,0.28698903,-0.50887656,-1.1177573 +7,0,3,1.6090622,-0.552633,2.0960214,0.36178717,-1.3726065,-0.61812073,-0.5444809,-0.8581807,-1.0325772,1.5600145,0.2399627,-0.15540515,-0.32274023,0.06386035,-1.1094363,0.61451924 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv index c949fdbf..9c9c4f81 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv @@ -1,5 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -8,0,0,-0.15959328,-0.6185797,-0.4608494,0.8537297,1.7962078,-1.1127523,-0.532915,0.41857973,-0.025692305,-0.11058396,0.43107894,-2.3876948,1.7336528,0.75202924,0.051930904,-0.62754744 -8,0,1,-0.0847378,-0.80747044,0.54135734,0.21987116,-0.27892733,-0.6947288,-1.0170838,-0.3269096,1.2616061,1.8441427,2.0002346,0.7380944,-0.06132242,-0.8849537,-1.2508907,-1.1942315 -8,0,2,-0.060736626,-0.2758699,-1.7476931,-0.90112156,0.66965175,-1.3700024,1.6178493,0.32909736,0.27642158,1.9732589,0.37533468,-0.48581138,1.1548799,0.011515356,-0.70278364,-0.87338156 -8,0,3,0.7022285,-0.33732405,-0.057168916,-0.8344231,-0.868286,0.98070174,-0.23612636,0.26457375,-0.65804225,0.08511807,1.3956434,1.1746727,-0.08018996,-1.348229,1.8052337,-2.011606 +8,0,0,-0.32614353,-0.64439976,-0.4606882,0.65944755,1.3359828,-1.0852644,-0.16756222,0.14784002,-0.08113572,-0.6550381,0.7323079,-2.066391,1.9876616,1.0655345,0.63813996,-1.1135746 +8,0,1,0.12641025,-0.56098837,0.40993986,0.107800655,0.32741314,-0.5968289,-0.84562564,-0.6825451,1.2423956,1.8815519,1.8854672,0.5606451,-0.055782493,-1.6092077,-1.2014889,-0.98526716 +8,0,2,-0.41545722,-0.6968768,-1.6478468,-0.6066328,0.9194668,-1.1579491,0.6114348,0.7974771,-0.52014804,2.3043096,1.1645346,-0.0551654,0.95790863,-0.3786852,-0.23132549,-1.0501995 +8,0,3,1.0761181,0.35165632,-0.40121642,-0.17262518,-1.2321544,0.42185432,-0.7928826,-0.034794606,-0.17338482,0.422188,1.1260121,1.2503253,0.30318612,-1.3496894,1.4538991,-2.2986958 +8,0,4,1.1404579,-1.0539529,0.6959456,0.0002799956,0.50083333,0.25582743,-1.1861986,-0.89913344,0.5945992,-0.5446149,0.99352646,1.0013199,-1.5414313,-0.9312056,-0.95023686,1.9430875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv index 13a6a356..8e68ce40 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv @@ -1,4 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -9,0,0,-0.5791086,0.37848184,-0.3573193,-0.2355006,-0.14353162,-0.3610847,-0.8467316,-0.7029914,0.79546255,-0.9406641,-0.41330278,1.1095508,1.7990614,-0.31147677,2.3270056,-1.514815 -9,0,1,0.80497956,0.5582172,-0.92235243,0.12620161,-1.2371104,0.36691037,-0.58676964,0.394082,1.040764,0.61476994,0.54693735,-2.5416214,-0.021673568,-0.45668596,1.8399619,-0.5678765 -9,0,2,-0.72852725,-1.68056,-0.4684366,-1.2692064,0.31585234,0.8645183,1.0582336,-0.34532753,1.2095294,0.25657162,-0.7247522,1.3270385,-1.5651994,0.36106008,1.513459,-0.11602255 +9,0,0,-0.47500592,0.4115684,-0.3617759,-0.28399315,0.3019857,-0.5060671,-0.6323188,-0.9995569,0.9944466,-0.5976193,-0.70640665,0.9123807,1.9063975,-0.45425025,2.1027493,-1.6554946 +9,0,1,-0.086714655,-0.97823036,0.05636277,-0.01605165,-0.9614703,0.6308942,-1.2854741,1.0908369,0.45563138,0.926207,1.0300418,-2.0144224,0.2822436,-0.24596272,1.959498,-0.8820346 +9,0,2,-0.4039917,-0.86205673,-1.1582229,-1.341583,-0.120875224,0.73452944,1.7072109,-0.28952715,1.6449419,0.5135223,-0.9904969,1.0184028,-1.2944711,1.0233638,0.47282502,-0.68130696 +9,0,3,0.4459618,-1.5170839,-0.057393685,0.48917928,1.573972,1.3741968,-1.1912827,-0.21140826,-0.8198331,0.22414537,1.1317799,-2.0740838,-0.63661385,0.7234822,0.49297914,0.047913294 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv index a6555801..8cccbef6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv @@ -1,5 +1,6 @@ sequenceId,itemPosition,itemId -0,0,116 +0,0,[unknown] 0,1,125 0,2,111 0,3,102 +0,4,118 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv index 63cca8be..4bd96488 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv @@ -2,4 +2,5 @@ sequenceId,itemPosition,itemId 1,0,100 1,1,120 1,2,102 -1,3,104 +1,3,119 +1,4,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv index 78e69770..7cd4f7cd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv @@ -1,4 +1,5 @@ sequenceId,itemPosition,itemId -2,0,103 +2,0,125 2,1,115 2,2,125 +2,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv index aa1d014b..ae179237 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv @@ -1,7 +1,9 @@ sequenceId,itemPosition,itemId -3,0,103 -3,1,119 +3,0,123 +3,1,111 3,2,119 +3,3,102 4,0,122 4,1,125 -4,2,118 +4,2,112 +4,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv index d0661d18..c8b395dc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv @@ -1,4 +1,5 @@ sequenceId,itemPosition,itemId 5,0,125 -5,1,123 -5,2,117 +5,1,100 +5,2,111 +5,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv index 9b747406..d04d1d0e 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv @@ -1,8 +1,10 @@ sequenceId,itemPosition,itemId 6,0,125 6,1,115 -6,2,109 -6,3,106 -7,0,117 +6,2,113 +6,3,115 +6,4,114 +7,0,111 7,1,125 -7,2,109 +7,2,129 +7,3,115 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv index 69194925..7143ade0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv @@ -1,5 +1,6 @@ sequenceId,itemPosition,itemId 8,0,125 -8,1,126 -8,2,123 +8,1,113 +8,2,125 8,3,117 +8,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv index 5be21105..d379af64 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv @@ -1,4 +1,5 @@ sequenceId,itemPosition,itemId 9,0,116 -9,1,128 -9,2,114 +9,1,113 +9,2,111 +9,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 05a3e9a6..4305a322 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.24294445 -0,22,0.2182963 -0,23,0.24425358 -0,24,0.276201 -0,25,0.0940009 -0,26,0.51380986 -0,27,0.13742942 -0,28,0.19333738 -0,29,0.14042449 -0,30,-0.110163026 -0,31,-0.12064577 -0,32,-0.17106278 -0,33,-0.007956264 -0,34,0.05157075 -0,35,-0.14410715 -0,36,-0.038530935 -0,37,0.07652966 -0,38,-0.1730595 -0,39,-0.068232045 -0,40,-0.04052765 -1,19,0.2532388 -1,20,0.2412585 -1,21,0.1653834 -1,22,0.23926179 -1,23,0.33210897 -1,24,0.11496639 -1,25,-0.025427505 -1,26,-0.054255053 -1,27,-0.20999868 -1,28,-0.045269843 -1,29,-0.11365727 -1,30,-0.116153166 -1,31,0.18535054 -1,32,0.15639819 -1,33,0.025363889 -1,34,0.17836204 -1,35,-0.06773287 -1,36,-0.096186034 -1,37,-0.16507263 -1,38,0.009327785 -2,17,0.40199393 -2,18,-0.024678737 -2,19,0.033101153 -2,20,0.15040804 -2,21,0.23327164 -2,22,0.08850994 -2,23,0.16138998 -2,24,0.013258814 -2,25,0.0075182635 -2,26,-0.09369014 -2,27,0.04258554 -2,28,-0.0762189 -2,29,-0.10716796 -2,30,-0.14510551 -2,31,0.12744585 -2,32,-0.072724655 -2,33,0.016253883 -2,34,-0.086202465 -2,35,0.018500187 -2,36,0.13643105 -3,17,0.0030256584 -3,18,0.49384275 -3,19,0.3081484 -3,20,0.16238832 -3,21,0.117462285 -3,22,0.11546557 -3,23,0.045830198 -3,24,0.01562991 -3,25,0.09699597 -3,26,0.033849917 -3,27,-0.032291207 -3,28,0.12744585 -3,29,-0.122143306 -3,30,-0.0832074 -3,31,-0.11515481 -3,32,-0.021808462 -3,33,-0.12314166 -3,34,0.06355102 -3,35,-0.020810105 -3,36,-0.17605457 -4,14,0.0077678524 -4,15,0.050821982 -4,16,0.0075182635 -4,17,-0.116153166 -4,18,0.24325521 -4,19,0.13942613 -4,20,0.12594831 -4,21,0.0665461 -4,22,-0.04252436 -4,23,0.06754445 -4,24,-0.021059694 -4,25,0.13243763 -4,26,0.07652966 -4,27,-0.24993296 -4,28,-0.1361203 -4,29,0.06030637 -4,30,0.070040345 -4,31,-0.002878685 -4,32,-0.06573616 -4,33,-0.16107921 -5,14,0.26821414 -5,15,0.25623387 -5,16,0.36405638 -5,17,0.22129136 -5,18,0.3061517 -5,19,0.077528015 -5,20,0.07503212 -5,21,0.09499926 -5,22,-0.08121069 -5,23,-0.18404141 -5,24,-0.08270822 -5,25,-0.10117782 -5,26,-0.10117782 -5,27,-0.018064626 -5,28,-0.1910299 -5,29,0.33210897 -5,30,-0.16207758 -5,31,0.025987862 -5,32,-0.035535865 -5,33,-0.049762446 -6,18,0.20631602 -6,19,0.27420428 -6,20,0.082020625 -6,21,0.28219113 -6,22,0.3940071 -6,23,0.16638176 -6,24,-0.08370657 -6,25,-0.12613674 -6,26,0.14641462 -6,27,-0.012511266 -6,28,-0.08520411 -6,29,-0.15708579 -6,30,-0.044521075 -6,31,0.069541164 -6,32,-0.0036664505 -6,33,-0.09269179 -6,34,-0.13711865 -6,35,-0.027549013 -6,36,-0.15309235 -6,37,0.07403377 -7,15,0.19832917 -7,16,0.28019443 -7,17,0.052569106 -7,18,-0.13412358 -7,19,-0.039279703 -7,20,0.06704527 -7,21,0.10049022 -7,22,0.055564176 -7,23,0.024365531 -7,24,0.018375391 -7,25,-0.11365727 -7,26,0.003056857 -7,27,0.027360601 -7,28,0.08401734 -7,29,0.07253624 -7,30,-0.12763427 -7,31,-0.1910299 -7,32,-0.012760855 -7,33,0.058559246 -7,34,0.026611833 -8,20,0.34808266 -8,21,-0.02392997 -8,22,-0.16806771 -8,23,0.09499926 -8,24,0.3361024 -8,25,0.017127445 -8,26,-0.15608743 -8,27,-0.10067864 -8,28,-0.12414002 -8,29,-0.013821609 -8,30,0.17137355 -8,31,-0.114156455 -8,32,0.03859211 -8,33,-0.009578593 -8,34,0.06454938 -8,35,-0.11116138 -8,36,0.05132116 -8,37,-0.12713508 -8,38,0.06305185 -8,39,-0.033539154 -9,16,0.19134067 -9,17,0.32811555 -9,18,0.09000748 -9,19,0.09000748 -9,20,-0.13212687 -9,21,0.055564176 -9,22,0.0665461 -9,23,-0.23395924 -9,24,0.15240477 -9,25,-0.021683667 -9,26,-0.090195894 -9,27,-0.06299067 -9,28,0.009639772 -9,29,-0.061992317 -9,30,-0.27688858 -9,31,0.118959814 -9,32,0.18934396 -9,33,-0.066734515 -9,34,0.06704527 -9,35,0.13742942 +0,21,-0.16518183 +0,22,0.28807208 +0,23,0.26411152 +0,24,0.070929505 +0,25,0.106371164 +0,26,0.08790157 +0,27,0.28008524 +0,28,0.18923476 +0,29,-0.0023990057 +0,30,-0.007035904 +0,31,-0.20611446 +0,32,-0.07283385 +0,33,0.10886706 +0,34,0.016643867 +0,35,-0.0878092 +0,36,0.06843361 +0,37,0.032991957 +0,38,-0.0878092 +0,39,-0.12524757 +0,40,-0.18714568 +1,19,0.18324462 +1,20,-0.041136023 +1,21,0.41785845 +1,22,0.41386503 +1,23,0.3938979 +1,24,0.07841718 +1,25,0.0021052985 +1,26,0.06344183 +1,27,-0.04138561 +1,28,-0.045878217 +1,29,-0.03289958 +1,30,-0.06684371 +1,31,0.10537281 +1,32,-0.058856852 +1,33,-0.14820977 +1,34,-0.13023935 +1,35,0.035737436 +1,36,-0.11326729 +1,37,-0.039139308 +1,38,0.11785226 +2,17,0.34198335 +2,18,0.20121504 +2,19,0.07142868 +2,20,0.03773415 +2,21,0.3060425 +2,22,-0.11426565 +2,23,0.07192786 +2,24,0.013773591 +2,25,-0.036643416 +2,26,-0.027034234 +2,27,-0.021293685 +2,28,-0.034397114 +2,29,-0.09030509 +2,30,-0.15120484 +2,31,-0.18914239 +2,32,-0.18914239 +2,33,0.07991471 +2,34,-0.120754965 +2,35,0.011652084 +2,36,-0.14421634 +3,17,0.11385884 +3,18,0.3240129 +3,19,0.29406223 +3,20,0.094390884 +3,21,0.2251756 +3,22,0.36993733 +3,23,0.057202104 +3,24,0.22417724 +3,25,-0.07283385 +3,26,0.16427584 +3,27,0.05545498 +3,28,-0.22108981 +3,29,-0.06834124 +3,30,-0.083316594 +3,31,0.05021361 +3,32,-0.052117944 +3,33,-0.1222525 +3,34,0.1148572 +3,35,-0.011247721 +3,36,-0.0209193 +4,14,0.25612468 +4,15,0.09139582 +4,16,0.2092019 +4,17,0.17126435 +4,18,0.12234487 +4,19,0.22817066 +4,20,0.04047963 +4,21,-0.14022292 +4,22,0.041727576 +4,23,-0.07033796 +4,24,-0.058856852 +4,25,-0.061352745 +4,26,-0.0067239176 +4,27,-0.012994845 +4,28,-0.12874182 +4,29,0.16128078 +4,30,-0.11925743 +4,31,-0.071336314 +4,32,-0.11726072 +4,33,0.06843361 +5,14,-0.2260816 +5,15,0.026253048 +5,16,0.13232844 +5,17,0.17825285 +5,18,0.35196692 +5,19,0.31203264 +5,20,0.06943197 +5,21,-0.10428208 +5,22,-0.10178619 +5,23,0.019638937 +5,24,0.017018251 +5,25,-0.10577962 +5,26,-0.073333025 +5,27,-0.17716211 +5,28,-0.16917527 +5,29,-0.17217033 +5,30,0.23316245 +5,31,0.04047963 +5,32,-0.06784207 +5,33,0.13432515 +6,18,0.2531296 +6,19,0.19222984 +6,20,0.455796 +6,21,0.3958946 +6,22,-0.015490737 +6,23,-0.17316869 +6,24,-0.109273866 +6,25,-0.16717854 +6,26,0.1333268 +6,27,-0.35486957 +6,28,-0.07283385 +6,29,-0.15320155 +6,30,0.12833501 +6,31,-0.04512945 +6,32,-0.12774347 +6,33,0.142312 +6,34,0.018765375 +6,35,0.14630543 +6,36,-0.10428208 +6,37,-0.062351096 +7,15,-0.022167247 +7,16,0.2601181 +7,17,0.08041389 +7,18,-0.019172177 +7,19,-0.1841506 +7,20,0.068932794 +7,21,0.053707857 +7,22,0.028499352 +7,23,-0.20811117 +7,24,-0.039139308 +7,25,-0.033897936 +7,26,-0.07582892 +7,27,0.06593772 +7,28,-0.067342885 +7,29,-0.21609803 +7,30,-0.19712925 +7,31,0.19222984 +7,32,-0.11825907 +7,33,-0.022167247 +7,34,0.065438546 +8,20,0.18324462 +8,21,-0.14122127 +8,22,-0.018922588 +8,23,0.32001948 +8,24,0.060197175 +8,25,0.070929505 +8,26,-0.03639383 +8,27,0.16727091 +8,28,-0.018049026 +8,29,-0.06634453 +8,30,-0.056111373 +8,31,-0.07383221 +8,32,-0.14920813 +8,33,-0.05361548 +8,34,0.10736952 +8,35,0.06793443 +8,36,0.043973878 +8,37,0.3040458 +8,38,-0.077326454 +8,39,-0.1522032 +9,16,0.3060425 +9,17,0.28807208 +9,18,0.3180228 +9,19,0.0068474924 +9,20,0.25612468 +9,21,0.14331035 +9,22,0.22118217 +9,23,-0.16118841 +9,24,-0.06384864 +9,25,-0.04537904 +9,26,0.18923476 +9,27,0.0664369 +9,28,-0.20611446 +9,29,0.07991471 +9,30,-0.19613089 +9,31,-0.109273866 +9,32,0.07642046 +9,33,-0.11975661 +9,34,-0.018548204 +9,35,-0.2350668 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 8cc53618..1cf52011 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,0.30016157 -0,9,-0.1820447 -0,10,0.39201036 -0,11,0.27420428 -0,12,-0.30883598 -1,8,0.290178 -1,9,-0.1890332 -1,10,0.3500794 -2,8,-0.15508908 -2,9,0.12445078 -3,8,0.3800301 -3,9,0.3061517 -4,7,-0.14011373 -5,7,0.14641462 -6,8,0.34808266 -6,9,-0.13911536 -6,10,0.3221254 -7,8,-0.16307592 -8,8,0.1743686 -8,9,-0.13711865 -8,10,0.43593806 -8,11,0.4259545 -9,8,0.33011225 -9,9,-0.12813345 +0,8,0.2900688 +0,9,-0.17616376 +0,10,0.3799209 +0,11,0.26411152 +0,12,-0.3009583 +1,8,0.28208193 +1,9,-0.0039628376 +1,10,0.33798993 +2,8,-0.14820977 +2,9,0.11735309 +3,8,0.36993733 +3,9,0.29805565 +4,7,-0.13523114 +5,7,0.14131364 +6,8,0.3359932 +6,9,0.26810494 +6,10,0.31402937 +7,8,-0.15419991 +8,8,0.16826928 +8,9,-0.25703064 +8,10,0.41586173 +8,11,0.40787488 +9,8,0.31402937 +9,9,0.25812137 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index 405ee2f4..68074514 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.19243994 -0,9,-0.010234638 -0,10,0.020318083 -0,11,0.18382144 -0,12,0.47416487 -1,8,0.09296566 -1,9,-0.059118994 -1,10,-0.2941589 -2,8,0.047784667 -2,9,-0.19342752 -3,8,0.09247188 -3,9,0.17888363 -4,7,0.37935886 -5,7,-0.14503694 -6,8,0.30035383 -6,9,0.33393097 -6,10,0.00545835 -7,8,0.6716774 -8,8,0.21542345 -8,9,0.19073437 -8,10,-0.041836645 -8,11,-0.02529497 -9,8,0.0025419537 -9,9,-0.2546564 +0,8,-0.19088916 +0,9,-0.078307025 +0,10,0.020881303 +0,11,0.13500652 +0,12,0.30980512 +1,8,0.0876035 +1,9,-0.026953768 +1,10,-0.2353295 +2,8,0.046619654 +2,9,-0.18891405 +3,8,0.08957863 +3,9,0.17450903 +4,7,0.37695938 +5,7,-0.18002598 +6,8,0.2999295 +6,9,0.33745688 +6,10,0.007867463 +7,8,0.66730285 +8,8,0.20117323 +8,9,0.19031003 +8,10,-0.03213847 +8,11,-0.012880999 +9,8,0.0023336397 +9,9,-0.2531056 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index 5e697aea..7c11814b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.083931625 -0,9,-0.35219386 -0,10,-0.061499946 -0,11,-0.23102838 -0,12,-0.24387926 -1,8,-0.27600646 -1,9,-0.108486 -1,10,-0.01715292 -2,8,-0.36320892 -2,9,-0.30262616 -3,8,-0.13740048 -3,9,0.2316035 -4,7,0.106766336 -5,7,-0.35219386 -6,8,0.06591888 -6,9,-0.11628832 -6,10,0.15358028 -7,8,0.11869929 -8,8,-0.17595315 -8,9,-0.14336696 -8,10,-0.3081337 -8,11,-0.3007903 -9,8,-0.1419901 -9,9,-0.01715292 +0,8,-0.07564883 +0,9,-0.34528795 +0,10,-0.06342901 +0,11,-0.22871205 +0,12,-0.23238373 +1,8,-0.2268762 +1,9,-0.10984136 +1,10,-0.016901925 +2,8,-0.3618105 +2,9,-0.29939193 +3,8,-0.1360021 +3,9,0.23850942 +4,7,0.104493044 +5,7,-0.3471238 +6,8,0.09990344 +6,9,-0.11305408 +6,10,0.15406075 +7,8,0.12652314 +8,8,-0.17822644 +8,9,-0.11075929 +8,10,-0.29755607 +8,11,-0.29204854 +9,8,-0.14472234 +9,9,-0.019196726 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index d6da3019..22ba483f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.08198105 -0,9,-0.215309 -0,10,-0.075096644 -0,11,-0.0692449 -0,12,-0.101486854 -1,8,-0.049674552 -1,9,-0.034134448 -1,10,-0.122140065 -2,8,-0.2749738 -2,9,-0.2575333 -3,8,-0.0012040511 -3,9,0.36940628 -4,7,0.35104787 -5,7,-0.06190154 -6,8,0.34003285 -6,9,0.2757784 -6,10,0.33085364 -7,8,0.35471958 -8,8,0.011417352 -8,9,0.100455634 -8,10,-0.057369307 -8,11,-0.12718862 -9,8,-0.0424531 -9,9,0.18031469 +0,8,-0.08269817 +0,9,-0.22038624 +0,10,-0.060151752 +0,11,-0.066634566 +0,12,-0.0973849 +1,8,-0.055131875 +1,9,-0.02945879 +1,10,-0.12446355 +2,8,-0.25710306 +2,9,-0.24058047 +3,8,0.01506035 +3,9,0.37075448 +4,7,0.3579036 +5,7,-0.12813523 +6,8,0.3395452 +6,9,0.2771266 +6,10,0.31567925 +7,8,0.35423192 +8,8,-0.039154325 +8,9,-0.015919466 +8,10,-0.053353403 +8,11,-0.12629938 +9,8,-0.0007737763 +9,9,0.19084209 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv index 9a24e80c..2132af3a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 0,4,127,1,1,2,1 -0,5,127,1,8,8,1 -0,6,113,1,1,7,0 -0,7,105,8,9,7,1 -0,8,127,1,1,0,1 -0,9,113,1,7,7,1 -0,10,113,8,9,1,1 -0,11,113,1,1,7,1 -0,12,105,8,5,7,1 -0,13,113,1,5,8,1 -0,14,113,1,[other],8,1 -0,15,113,1,5,7,1 -0,16,105,1,5,7,1 -0,17,108,1,8,7,1 -0,18,108,1,5,7,1 -0,19,124,1,5,7,1 -0,20,124,1,5,7,1 -0,21,105,8,5,7,1 -0,22,105,1,5,7,1 -0,23,110,1,5,7,1 -0,24,110,1,5,8,1 -0,25,110,1,7,8,1 -0,26,110,[other],7,7,1 -0,27,110,5,7,7,1 -0,28,103,5,7,0,1 -0,29,102,1,5,0,1 -0,30,103,1,7,7,1 -0,31,102,5,5,0,1 -0,32,103,1,7,0,1 -0,33,102,[mask],7,0,1 +0,5,113,4,9,8,1 +0,6,113,1,1,8,1 +0,7,113,1,9,8,1 +0,8,113,1,9,8,1 +0,9,113,1,9,8,1 +0,10,113,1,8,8,1 +0,11,113,1,0,8,1 +0,12,113,1,9,7,1 +0,13,121,1,8,7,1 +0,14,105,1,8,7,1 +0,15,105,1,8,7,1 +0,16,105,1,8,7,1 +0,17,113,1,7,7,1 +0,18,113,6,7,7,1 +0,19,113,6,7,2,1 +0,20,113,1,7,8,1 +0,21,113,1,7,8,1 +0,22,113,1,7,8,1 +0,23,113,1,0,8,1 +0,24,113,1,0,8,1 +0,25,113,1,0,8,1 +0,26,113,1,0,8,1 +0,27,113,1,0,8,1 +0,28,113,1,0,7,1 +0,29,108,1,8,7,1 +0,30,108,1,0,7,1 +0,31,108,6,0,7,1 +0,32,108,1,0,7,1 +0,33,108,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv index 12e2155a..c473bc6b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,121,1,0,7,0 -1,5,108,3,0,8,1 -1,6,103,1,0,7,0 -1,7,103,8,0,7,1 -1,8,108,1,0,2,1 -1,9,113,1,0,7,1 -1,10,108,8,7,7,1 -1,11,124,8,7,7,1 -1,12,105,8,7,7,1 -1,13,113,8,5,7,1 -1,14,113,1,[other],8,1 -1,15,113,1,[other],8,1 -1,16,113,1,[other],7,1 -1,17,108,1,5,7,1 -1,18,124,1,[other],7,1 -1,19,108,1,5,7,1 -1,20,124,1,5,7,1 -1,21,124,1,5,7,1 -1,22,105,8,5,7,1 -1,23,105,1,5,7,1 -1,24,124,8,5,7,1 -1,25,110,8,5,7,1 -1,26,110,1,5,8,1 -1,27,110,1,7,8,1 -1,28,110,6,7,7,1 -1,29,110,1,7,0,1 -1,30,113,1,7,0,1 -1,31,113,1,7,0,1 -1,32,113,1,7,0,1 -1,33,113,[mask],5,0,1 +1,4,121,6,0,8,0 +1,5,121,1,0,8,0 +1,6,121,1,0,8,0 +1,7,121,1,0,8,0 +1,8,121,1,0,8,0 +1,9,126,1,0,8,0 +1,10,127,1,0,8,0 +1,11,127,0,0,8,0 +1,12,127,0,9,8,0 +1,13,127,0,7,7,0 +1,14,105,8,9,7,1 +1,15,127,0,7,2,1 +1,16,113,4,7,8,1 +1,17,113,1,9,8,1 +1,18,113,1,7,8,1 +1,19,113,1,9,8,1 +1,20,113,1,0,8,1 +1,21,113,1,0,8,1 +1,22,113,1,0,8,1 +1,23,113,1,0,8,1 +1,24,113,1,0,7,1 +1,25,108,1,8,7,1 +1,26,108,1,8,7,1 +1,27,105,6,8,7,1 +1,28,113,1,8,7,1 +1,29,113,6,7,7,1 +1,30,113,6,7,7,1 +1,31,113,6,7,2,1 +1,32,113,1,7,8,1 +1,33,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv index 5cf7bea0..4f612da8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,128,1,8,6,0 -2,4,105,0,8,7,2 -2,5,105,1,8,2,1 -2,6,113,1,8,7,2 -2,7,105,1,9,7,1 -2,8,105,1,7,7,1 -2,9,113,1,7,7,1 -2,10,113,1,5,7,1 -2,11,113,1,[other],8,1 -2,12,113,1,[other],7,1 -2,13,113,8,5,7,1 -2,14,113,1,[other],8,1 -2,15,113,1,5,7,1 -2,16,113,1,5,7,1 -2,17,105,1,5,7,1 -2,18,108,1,5,7,1 -2,19,108,1,5,7,1 -2,20,108,1,5,7,1 -2,21,124,1,5,7,1 -2,22,105,8,5,7,1 -2,23,110,1,5,7,1 -2,24,110,8,5,8,1 -2,25,110,1,5,8,1 -2,26,110,[other],5,8,1 -2,27,127,1,7,8,1 -2,28,103,5,7,0,1 -2,29,103,1,5,7,1 -2,30,103,1,5,0,1 -2,31,103,[other],4,0,1 -2,32,127,1,4,7,1 +2,3,121,1,8,0,0 +2,4,105,0,8,7,0 +2,5,121,1,8,2,0 +2,6,113,4,7,8,0 +2,7,121,1,9,8,0 +2,8,127,1,0,8,0 +2,9,127,4,0,8,1 +2,10,127,1,0,8,0 +2,11,127,4,7,8,1 +2,12,127,1,0,8,1 +2,13,103,1,0,8,1 +2,14,113,1,0,8,1 +2,15,103,1,9,7,1 +2,16,105,1,7,7,1 +2,17,113,1,9,7,1 +2,18,105,1,9,7,1 +2,19,113,1,7,7,1 +2,20,113,6,9,7,1 +2,21,113,1,7,7,1 +2,22,113,6,5,7,1 +2,23,113,1,8,8,1 +2,24,113,1,0,8,1 +2,25,113,1,0,8,1 +2,26,113,1,0,8,1 +2,27,113,1,0,8,1 +2,28,113,1,0,8,1 +2,29,113,1,0,7,1 +2,30,108,1,8,7,1 +2,31,105,1,8,7,1 +2,32,105,1,9,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv index 4e1d63dd..52804bbb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,127,5,0,2,0 -3,4,127,4,0,8,0 -3,5,127,4,0,8,0 -3,6,127,4,0,8,0 -3,7,127,4,0,8,0 -3,8,127,4,0,8,1 -3,9,108,1,0,8,1 -3,10,103,1,7,7,1 -3,11,103,8,9,7,1 -3,12,103,1,7,7,1 -3,13,113,8,7,7,1 -3,14,113,8,5,7,1 -3,15,113,1,5,7,1 -3,16,113,1,5,7,1 -3,17,113,1,5,7,1 -3,18,113,1,[other],8,1 -3,19,113,1,[other],7,1 -3,20,108,8,5,7,1 -3,21,108,1,2,7,1 -3,22,108,1,5,7,1 -3,23,108,1,5,7,1 -3,24,124,1,5,7,1 -3,25,124,1,5,7,1 -3,26,124,8,5,7,1 -3,27,124,1,5,7,1 -3,28,124,8,5,7,1 -3,29,110,8,5,7,1 -3,30,110,1,5,8,1 -3,31,110,1,7,8,1 -3,32,110,[other],7,7,1 -4,3,127,0,9,[unknown],1 -4,4,127,0,1,8,1 -4,5,102,0,1,8,1 -4,6,127,1,4,8,0 -4,7,127,0,1,7,1 -4,8,127,0,4,0,1 -4,9,127,1,1,7,1 -4,10,124,1,9,0,1 -4,11,113,1,7,7,1 -4,12,113,8,5,0,1 -4,13,113,1,5,8,1 -4,14,113,1,7,8,1 -4,15,113,1,5,7,1 -4,16,113,1,5,7,1 -4,17,113,1,5,7,1 -4,18,113,1,5,7,1 -4,19,108,1,5,7,1 -4,20,108,1,5,7,1 -4,21,103,1,5,7,1 -4,22,103,1,5,7,1 -4,23,110,1,5,7,1 -4,24,110,1,5,8,1 -4,25,110,1,5,8,1 -4,26,110,1,5,0,1 -4,27,110,0,5,7,1 -4,28,110,[other],5,0,1 -4,29,127,0,4,7,1 -4,30,103,0,5,0,1 -4,31,103,[other],4,0,1 -4,32,127,1,4,7,1 +3,3,127,4,0,2,0 +3,4,127,4,0,8,1 +3,5,127,4,0,8,1 +3,6,127,1,0,2,1 +3,7,113,4,9,8,1 +3,8,121,1,1,2,1 +3,9,113,0,9,8,1 +3,10,113,1,1,8,1 +3,11,113,1,9,7,1 +3,12,105,1,9,7,1 +3,13,105,1,8,7,1 +3,14,105,1,9,7,1 +3,15,113,1,8,7,1 +3,16,105,8,9,7,1 +3,17,113,1,8,8,1 +3,18,113,1,9,8,1 +3,19,113,1,7,8,1 +3,20,113,1,9,7,1 +3,21,113,1,8,7,1 +3,22,113,1,8,7,1 +3,23,113,1,8,7,1 +3,24,113,1,8,7,1 +3,25,113,1,5,7,1 +3,26,113,1,5,8,1 +3,27,113,1,0,8,1 +3,28,113,1,0,8,1 +3,29,113,1,0,8,1 +3,30,113,1,0,8,1 +3,31,113,1,0,7,1 +3,32,108,1,8,7,1 +4,3,127,4,0,8,0 +4,4,127,4,0,8,1 +4,5,127,1,0,2,1 +4,6,127,4,7,8,1 +4,7,127,1,1,8,1 +4,8,127,1,0,8,1 +4,9,113,1,0,8,1 +4,10,113,1,9,8,1 +4,11,113,1,9,7,1 +4,12,105,1,9,7,1 +4,13,105,1,9,7,1 +4,14,105,1,9,7,1 +4,15,105,1,9,7,1 +4,16,113,1,9,7,1 +4,17,113,1,9,7,1 +4,18,113,1,9,7,1 +4,19,113,1,9,8,1 +4,20,113,1,9,8,1 +4,21,113,1,9,8,1 +4,22,113,1,9,8,1 +4,23,113,1,9,7,1 +4,24,113,1,8,7,1 +4,25,105,1,8,7,1 +4,26,113,1,8,7,1 +4,27,113,1,8,7,1 +4,28,113,1,8,7,1 +4,29,113,1,9,7,1 +4,30,113,1,7,8,1 +4,31,113,1,7,8,1 +4,32,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv index 4f5b8222..75c58ebf 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,128,1,5,4,1 -5,4,128,1,5,6,1 -5,5,105,1,5,6,1 -5,6,128,1,5,0,1 -5,7,105,1,5,7,1 -5,8,105,1,5,0,1 -5,9,113,1,7,7,1 -5,10,105,1,9,7,1 -5,11,103,1,9,7,1 -5,12,108,1,9,7,1 -5,13,113,1,5,7,1 -5,14,113,1,5,8,1 -5,15,113,1,5,8,1 -5,16,113,1,5,8,1 -5,17,113,1,5,7,1 -5,18,105,1,5,7,1 -5,19,105,1,5,7,1 -5,20,103,1,5,7,1 -5,21,103,1,5,7,1 -5,22,103,1,5,7,1 -5,23,103,1,5,7,1 -5,24,108,1,5,7,1 -5,25,124,8,5,7,1 -5,26,110,8,5,7,1 -5,27,110,1,5,8,1 -5,28,110,2,7,8,1 -5,29,110,2,5,0,1 -5,30,110,1,5,7,1 -5,31,124,[other],5,0,1 -5,32,127,1,8,0,1 +5,3,121,1,5,4,1 +5,4,127,1,0,8,1 +5,5,127,1,0,2,1 +5,6,127,1,7,2,1 +5,7,127,1,1,0,1 +5,8,105,1,9,2,1 +5,9,113,1,7,0,1 +5,10,113,1,9,7,1 +5,11,105,8,9,7,1 +5,12,105,1,8,2,1 +5,13,113,0,7,8,1 +5,14,113,1,9,8,1 +5,15,113,1,9,8,1 +5,16,113,1,9,8,1 +5,17,113,1,0,8,1 +5,18,113,1,0,8,1 +5,19,113,1,0,8,1 +5,20,113,1,0,7,1 +5,21,108,1,8,7,1 +5,22,105,1,8,7,1 +5,23,105,1,8,7,1 +5,24,105,1,9,7,1 +5,25,113,1,7,7,1 +5,26,113,6,7,7,1 +5,27,113,6,7,2,1 +5,28,113,1,7,8,1 +5,29,113,1,7,8,1 +5,30,113,1,9,8,1 +5,31,113,1,0,8,1 +5,32,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv index 929f2c8c..d4edc9b2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,109,4,8,8,1 -6,5,113,1,0,7,0 -6,6,113,1,7,7,1 -6,7,113,1,7,7,1 -6,8,113,1,7,7,1 -6,9,102,8,7,7,1 -6,10,102,5,7,7,1 -6,11,102,1,7,7,1 -6,12,113,1,7,7,1 -6,13,113,8,5,0,1 -6,14,102,1,5,2,1 -6,15,113,1,7,8,1 -6,16,113,1,1,0,1 -6,17,113,1,5,7,1 -6,18,105,1,5,7,1 -6,19,105,1,5,7,1 -6,20,108,1,7,7,1 -6,21,108,8,7,7,1 -6,22,105,5,5,7,1 -6,23,113,1,5,7,1 -6,24,113,1,5,8,1 -6,25,113,1,5,8,1 -6,26,113,1,5,8,1 -6,27,113,1,5,7,1 -6,28,108,1,5,7,1 -6,29,108,1,5,7,1 -6,30,103,1,5,7,1 -6,31,103,1,5,7,1 -6,32,103,1,5,7,1 -6,33,103,8,5,7,1 -7,3,105,0,9,8,0 -7,4,127,0,1,7,0 -7,5,105,0,9,8,1 -7,6,127,0,1,7,0 -7,7,105,0,9,8,1 -7,8,113,0,1,0,0 -7,9,113,1,9,8,1 -7,10,113,1,1,8,1 -7,11,113,1,9,8,1 -7,12,113,1,1,7,1 -7,13,113,1,9,7,1 -7,14,113,1,9,7,1 -7,15,105,1,5,7,1 -7,16,113,1,9,8,1 -7,17,113,1,5,7,1 -7,18,105,1,5,7,1 -7,19,105,1,5,7,1 -7,20,113,1,5,7,1 -7,21,113,1,5,7,1 -7,22,113,1,5,7,1 -7,23,113,1,5,7,1 -7,24,113,1,5,7,1 -7,25,113,1,5,7,1 -7,26,113,1,5,7,1 -7,27,113,1,5,7,1 -7,28,113,1,5,7,1 -7,29,113,1,5,7,1 -7,30,113,1,5,7,1 -7,31,113,1,5,7,1 -7,32,113,1,5,7,1 +6,4,121,4,0,8,0 +6,5,113,1,0,8,0 +6,6,113,1,0,8,1 +6,7,113,1,0,8,1 +6,8,113,1,0,8,1 +6,9,113,1,0,8,1 +6,10,113,1,0,8,1 +6,11,113,1,9,7,1 +6,12,105,8,9,7,1 +6,13,105,1,8,7,1 +6,14,105,1,9,7,1 +6,15,105,1,9,7,1 +6,16,113,1,7,7,1 +6,17,113,6,9,7,1 +6,18,113,1,3,2,1 +6,19,113,6,7,8,1 +6,20,113,1,9,8,1 +6,21,113,1,0,8,1 +6,22,113,1,0,8,1 +6,23,113,1,0,8,1 +6,24,113,1,0,8,1 +6,25,113,1,0,8,1 +6,26,113,1,0,7,1 +6,27,108,1,8,7,1 +6,28,105,1,8,7,1 +6,29,105,1,9,7,1 +6,30,105,1,7,7,1 +6,31,113,6,7,7,1 +6,32,113,6,7,7,1 +6,33,113,6,7,2,1 +7,3,105,4,9,8,0 +7,4,121,0,8,8,0 +7,5,113,0,8,8,0 +7,6,121,4,8,8,0 +7,7,127,0,0,8,0 +7,8,121,4,8,8,0 +7,9,127,4,0,8,0 +7,10,127,1,0,8,0 +7,11,127,4,0,8,1 +7,12,127,1,0,8,0 +7,13,127,1,0,8,1 +7,14,127,1,7,8,1 +7,15,113,1,7,8,1 +7,16,113,1,9,7,1 +7,17,103,1,7,7,1 +7,18,113,8,7,7,1 +7,19,113,1,9,7,1 +7,20,113,1,7,7,1 +7,21,113,6,5,7,1 +7,22,113,1,5,8,1 +7,23,113,1,0,8,1 +7,24,113,1,0,8,1 +7,25,113,1,0,8,1 +7,26,113,1,0,8,1 +7,27,113,1,0,7,1 +7,28,108,1,8,7,1 +7,29,108,1,8,7,1 +7,30,108,1,8,7,1 +7,31,122,6,7,7,1 +7,32,113,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv index 83cccde4..42ff3af8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,109,1,0,7,0 -8,5,127,1,8,7,1 -8,6,124,1,7,0,1 -8,7,127,1,7,7,0 -8,8,127,8,9,0,1 -8,9,127,1,1,0,1 -8,10,124,1,7,0,1 -8,11,113,1,7,0,1 -8,12,113,1,7,7,1 -8,13,113,8,5,7,1 -8,14,113,1,5,8,1 -8,15,113,1,5,8,1 -8,16,113,1,5,7,1 -8,17,113,1,5,7,1 -8,18,108,1,5,7,1 -8,19,108,1,5,7,1 -8,20,108,1,5,7,1 -8,21,124,1,5,7,1 -8,22,103,8,5,7,1 -8,23,103,1,5,7,1 -8,24,110,8,5,7,1 -8,25,110,1,5,8,1 -8,26,110,2,5,8,1 -8,27,110,1,5,8,1 -8,28,110,[other],7,0,1 -8,29,127,1,7,7,1 -8,30,108,5,7,0,1 -8,31,127,5,5,0,1 -8,32,102,1,4,0,1 -8,33,103,[other],4,0,1 +8,4,113,1,0,8,0 +8,5,113,1,0,8,1 +8,6,113,1,0,2,1 +8,7,113,1,8,2,1 +8,8,113,1,0,8,1 +8,9,113,1,0,8,1 +8,10,113,1,0,2,1 +8,11,113,1,0,2,1 +8,12,113,1,8,7,1 +8,13,105,8,9,7,1 +8,14,105,1,8,2,1 +8,15,113,1,9,7,1 +8,16,105,1,9,7,1 +8,17,113,1,7,7,1 +8,18,113,1,9,7,1 +8,19,113,1,7,8,1 +8,20,113,1,9,8,1 +8,21,113,1,0,8,1 +8,22,113,1,9,8,1 +8,23,113,1,0,7,1 +8,24,113,1,8,7,1 +8,25,105,1,8,7,1 +8,26,113,1,8,7,1 +8,27,105,1,9,7,1 +8,28,113,1,8,7,1 +8,29,113,6,9,7,1 +8,30,113,1,8,2,1 +8,31,113,1,7,8,1 +8,32,113,1,7,8,1 +8,33,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv index eebbcfd3..0c5df9b9 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,108,1,8,7,1 -9,4,108,1,[other],7,1 -9,5,108,8,5,7,1 -9,6,108,1,[other],7,1 -9,7,108,8,[other],7,1 -9,8,108,8,[other],7,1 -9,9,124,8,[other],7,1 -9,10,113,8,[other],2,1 -9,11,113,1,[other],8,1 -9,12,113,1,[other],8,1 -9,13,113,1,[other],8,1 -9,14,113,1,[other],0,1 -9,15,113,1,9,2,1 -9,16,113,1,5,7,1 -9,17,105,1,5,7,1 -9,18,105,1,8,7,1 -9,19,103,1,5,7,1 -9,20,105,1,5,7,1 -9,21,113,1,5,7,1 -9,22,113,1,7,7,1 -9,23,113,8,5,7,1 -9,24,113,1,5,8,1 -9,25,113,1,5,8,1 -9,26,113,1,5,7,1 -9,27,108,1,5,7,1 -9,28,108,1,5,7,1 -9,29,108,1,5,7,1 -9,30,108,1,5,7,1 -9,31,124,1,5,7,1 -9,32,103,8,5,7,1 +9,3,121,1,8,8,1 +9,4,113,1,0,8,1 +9,5,113,1,8,8,1 +9,6,113,1,0,7,1 +9,7,105,1,8,7,1 +9,8,105,1,8,7,1 +9,9,105,1,7,7,1 +9,10,113,1,7,7,1 +9,11,113,1,7,7,1 +9,12,113,6,7,7,1 +9,13,113,6,5,2,1 +9,14,113,1,0,8,1 +9,15,113,1,0,8,1 +9,16,113,1,0,8,1 +9,17,113,1,0,8,1 +9,18,113,1,0,8,1 +9,19,113,1,0,8,1 +9,20,113,1,0,8,1 +9,21,113,1,0,7,1 +9,22,105,1,8,7,1 +9,23,105,1,8,7,1 +9,24,105,1,9,7,1 +9,25,105,1,7,7,1 +9,26,113,6,7,7,1 +9,27,113,6,7,2,1 +9,28,113,1,7,8,1 +9,29,113,1,7,8,1 +9,30,113,1,9,8,1 +9,31,113,1,0,8,1 +9,32,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv index fd49670a..29653eb6 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv @@ -6,7 +6,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 0,8,111,9,9,7,[other] 0,9,107,1,9,7,[other] 0,10,104,1,9,7,[other] -0,11,102,1,9,7,[other] +0,11,116,1,9,7,[other] 0,12,104,6,9,7,[other] 0,13,104,1,9,7,[other] 0,14,104,1,9,[unknown],[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv index c47a6367..ec1ff900 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,111,9,2,7,[other] -1,5,111,1,9,7,[other] +1,4,111,9,2,9,[other] +1,5,111,1,2,7,[other] 1,6,111,1,9,7,[other] 1,7,111,1,9,7,[other] 1,8,111,1,9,7,[other] @@ -9,11 +9,11 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 1,11,129,1,9,[unknown],[other] 1,12,102,1,9,[unknown],[other] 1,13,104,6,9,[unknown],[other] -1,14,104,6,9,[unknown],[other] +1,14,104,1,9,[unknown],[other] 1,15,104,6,9,[unknown],[other] 1,16,104,6,9,[unknown],[other] -1,17,104,6,9,7,[other] -1,18,104,9,9,7,[other] +1,17,104,6,9,[unknown],[other] +1,18,104,6,9,7,[other] 1,19,104,6,9,7,[other] 1,20,104,6,9,7,[other] 1,21,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv index d60f3445..cffacbd7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv @@ -1,20 +1,20 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 2,3,115,9,2,2,[unknown] -2,4,118,9,2,[mask],[mask] -2,5,115,9,9,7,[mask] +2,4,118,[mask],2,[mask],[mask] +2,5,[unknown],9,2,7,[mask] 2,6,115,9,9,7,[mask] 2,7,115,9,9,7,[mask] -2,8,119,9,9,7,[mask] -2,9,104,9,9,7,[other] -2,10,104,1,9,7,[other] -2,11,104,6,9,7,[other] -2,12,104,6,9,7,[other] -2,13,104,6,9,7,[other] -2,14,104,6,9,7,[other] -2,15,104,6,9,7,[other] -2,16,104,6,9,7,[other] -2,17,104,6,9,7,[other] -2,18,104,6,9,7,[other] +2,8,115,9,9,7,[mask] +2,9,119,9,9,7,[other] +2,10,104,[mask],9,7,[other] +2,11,112,1,9,7,[other] +2,12,104,[mask],9,7,[other] +2,13,112,1,9,7,[other] +2,14,104,9,9,7,[other] +2,15,112,6,9,7,[other] +2,16,104,9,9,7,[other] +2,17,104,1,9,7,[other] +2,18,104,1,9,7,[other] 2,19,104,6,9,7,[other] 2,20,104,6,9,7,[other] 2,21,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv index 1923a1cb..9bf3ad90 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv @@ -5,7 +5,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 3,6,112,9,2,2,[mask] 3,7,112,9,2,2,[mask] 3,8,112,9,9,2,[other] -3,9,112,9,2,2,[other] +3,9,112,9,2,2,[mask] 3,10,112,9,9,7,[other] 3,11,112,9,9,7,[other] 3,12,112,9,9,7,[other] @@ -14,27 +14,27 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 3,15,112,9,9,7,[other] 3,16,112,9,9,7,[other] 3,17,112,9,9,7,[other] -3,18,112,9,9,7,[other] +3,18,112,9,9,8,[other] 3,19,112,9,9,7,[other] -3,20,112,9,9,7,[other] -3,21,112,9,9,7,[other] -3,22,112,9,9,7,[other] -3,23,112,9,9,7,[other] -3,24,112,9,9,7,[other] -3,25,112,9,9,7,[other] -3,26,112,9,9,7,[other] -3,27,112,9,9,7,[other] -3,28,112,9,9,7,[other] -3,29,112,9,9,7,[other] -3,30,112,9,9,7,[other] -3,31,112,9,9,7,[other] +3,20,112,[mask],9,7,[other] +3,21,112,[mask],9,8,[other] +3,22,112,[mask],9,7,[other] +3,23,112,[mask],9,7,[other] +3,24,112,[mask],9,7,[other] +3,25,129,[mask],9,7,[other] +3,26,129,1,9,7,[other] +3,27,129,1,9,7,[other] +3,28,129,1,9,7,[other] +3,29,129,1,9,[unknown],[other] +3,30,112,6,9,7,[other] +3,31,104,9,9,7,[other] 3,32,112,9,9,7,[other] 4,3,107,9,2,7,[other] 4,4,107,9,9,7,[other] 4,5,107,9,9,7,[other] 4,6,107,9,9,7,[other] 4,7,107,9,9,7,[other] -4,8,104,6,9,7,[other] +4,8,107,9,9,7,[other] 4,9,104,6,9,7,[other] 4,10,104,6,9,7,[other] 4,11,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv index fe484f33..cf194871 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv @@ -2,7 +2,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 5,3,111,3,2,2,[other] 5,4,111,3,2,8,[other] 5,5,111,1,2,7,[other] -5,6,111,1,9,7,[other] +5,6,111,1,2,7,[other] 5,7,111,1,9,7,[other] 5,8,111,1,9,7,[other] 5,9,102,1,9,7,[other] @@ -11,7 +11,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 5,12,102,6,9,[unknown],[other] 5,13,104,6,9,[unknown],[other] 5,14,104,6,9,[unknown],[other] -5,15,104,6,9,7,[other] +5,15,104,6,9,[unknown],[other] 5,16,104,6,9,7,[other] 5,17,104,9,9,7,[other] 5,18,104,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv index 22da0edc..4cae85f8 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv @@ -4,15 +4,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,6,111,9,9,7,[other] 6,7,111,1,9,7,[other] 6,8,111,1,9,7,[other] -6,9,102,1,9,7,[other] -6,10,129,1,9,[unknown],[other] +6,9,111,1,9,7,[other] +6,10,102,1,9,[unknown],[other] 6,11,129,1,9,[unknown],[other] -6,12,129,1,9,[unknown],[other] -6,13,104,1,9,[unknown],[other] -6,14,104,6,9,[unknown],[other] +6,12,102,1,9,[unknown],[other] +6,13,104,6,9,[unknown],[other] +6,14,104,1,9,[unknown],[other] 6,15,104,6,9,[unknown],[other] 6,16,104,6,9,[unknown],[other] -6,17,104,6,9,7,[other] +6,17,104,6,9,[unknown],[other] 6,18,104,6,9,7,[other] 6,19,104,6,9,7,[other] 6,20,104,6,9,7,[other] @@ -29,33 +29,33 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,31,104,6,9,7,[other] 6,32,104,6,9,7,[other] 6,33,104,6,9,7,[other] -7,3,117,2,9,7,[other] -7,4,129,6,9,7,[other] -7,5,104,9,9,7,[other] -7,6,129,9,9,7,[other] -7,7,129,9,9,7,[other] -7,8,129,9,9,7,[other] -7,9,129,6,9,2,[other] +7,3,111,2,9,7,[other] +7,4,111,5,9,7,[other] +7,5,117,1,9,7,[other] +7,6,129,6,9,[unknown],[other] +7,7,129,6,9,7,[other] +7,8,104,9,9,7,[other] +7,9,129,6,9,[unknown],[other] 7,10,104,9,9,7,[other] -7,11,112,9,9,7,[other] -7,12,112,9,9,7,[other] -7,13,112,[mask],9,7,[other] -7,14,112,[mask],9,8,[other] -7,15,112,[mask],9,7,[other] -7,16,112,[mask],9,7,[other] -7,17,112,9,9,7,[other] -7,18,112,[mask],9,7,[other] -7,19,112,[mask],9,7,[other] -7,20,112,[mask],9,7,[other] -7,21,129,1,9,7,[other] -7,22,129,1,9,7,[other] -7,23,129,9,9,7,[other] -7,24,112,9,9,7,[other] -7,25,112,9,9,7,[other] -7,26,112,9,9,7,[other] -7,27,112,9,9,7,[other] -7,28,112,9,9,7,[other] -7,29,112,9,9,8,[other] -7,30,112,9,9,7,[other] -7,31,112,[mask],9,7,[unknown] -7,32,112,[mask],9,8,[other] +7,11,104,[mask],9,7,[other] +7,12,104,[mask],9,7,[other] +7,13,104,[mask],9,7,[other] +7,14,107,[mask],9,7,[other] +7,15,107,1,9,7,[other] +7,16,104,6,9,7,[other] +7,17,104,6,9,7,[other] +7,18,104,1,9,7,[other] +7,19,104,1,9,7,[other] +7,20,104,6,9,7,[other] +7,21,104,6,9,7,[other] +7,22,104,6,9,7,[other] +7,23,104,6,9,7,[other] +7,24,104,6,9,7,[other] +7,25,104,6,9,7,[other] +7,26,104,6,9,7,[other] +7,27,104,6,9,7,[other] +7,28,104,6,9,7,[other] +7,29,104,6,9,7,[other] +7,30,104,6,9,7,[other] +7,31,104,6,9,7,[other] +7,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv index caac944b..b1dc8274 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv @@ -12,7 +12,7 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 8,14,104,1,9,[unknown],[other] 8,15,104,6,9,[unknown],[other] 8,16,104,6,9,[unknown],[other] -8,17,104,6,9,7,[other] +8,17,104,6,9,[unknown],[other] 8,18,104,6,9,7,[other] 8,19,104,6,9,7,[other] 8,20,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv index 3f1d5fac..12d83f71 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv @@ -2,24 +2,24 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 9,3,113,3,2,[other],[other] 9,4,119,9,2,7,[mask] 9,5,129,9,9,[other],[other] -9,6,119,9,9,7,[mask] -9,7,104,9,9,7,[other] -9,8,119,9,9,7,[other] -9,9,129,9,9,7,[other] +9,6,119,9,9,[other],[mask] +9,7,119,9,9,9,[mask] +9,8,129,9,9,8,[other] +9,9,111,9,9,7,[other] 9,10,112,9,9,7,[other] -9,11,112,9,9,7,[unknown] +9,11,112,[mask],9,7,[unknown] 9,12,112,[mask],9,7,[other] -9,13,112,[mask],9,7,[other] -9,14,112,[mask],9,7,[other] -9,15,112,[mask],9,7,[other] -9,16,112,[mask],9,7,[other] -9,17,112,[mask],9,8,[other] -9,18,112,[mask],9,7,[other] -9,19,129,1,9,7,[other] -9,20,129,1,9,7,[other] -9,21,129,1,9,7,[other] -9,22,104,1,9,7,[other] -9,23,104,6,9,7,[other] +9,13,112,[mask],9,8,[unknown] +9,14,104,[mask],9,7,[other] +9,15,129,1,9,7,[other] +9,16,129,1,9,7,[other] +9,17,129,1,9,7,[other] +9,18,104,1,9,7,[other] +9,19,104,1,9,7,[other] +9,20,104,1,9,[unknown],[other] +9,21,104,6,9,[unknown],[other] +9,22,104,6,9,[unknown],[other] +9,23,104,6,9,[unknown],[other] 9,24,104,6,9,7,[other] 9,25,104,6,9,7,[other] 9,26,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv index 8c8e70ba..54189e82 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,102,3,9,5,1 -0,5,102,4,3,0,1 -0,6,102,6,9,2,1 -0,7,102,4,3,0,1 -0,8,112,6,9,2,1 -0,9,102,4,3,0,1 -0,10,112,6,9,0,0 -0,11,102,4,3,0,1 -0,12,112,6,9,0,0 -0,13,102,4,3,0,2 -0,14,112,6,3,0,0 -0,15,102,4,9,0,0 -0,16,112,4,3,0,0 -0,17,112,4,3,0,0 -0,18,112,4,3,0,0 -0,19,112,4,3,0,0 -0,20,112,4,3,0,0 -0,21,112,4,3,0,0 -0,22,112,4,3,0,0 -0,23,112,4,3,0,0 -0,24,112,4,3,0,0 -0,25,112,4,3,0,0 -0,26,112,4,3,0,0 -0,27,112,4,3,0,0 -0,28,112,4,3,0,0 -0,29,112,4,3,0,0 -0,30,112,4,3,0,0 -0,31,112,4,3,0,0 -0,32,112,4,3,0,0 -0,33,112,4,3,0,0 +0,4,121,1,1,9,1 +0,5,105,0,[other],8,2 +0,6,113,1,[other],[mask],0 +0,7,105,8,[other],8,1 +0,8,113,1,1,8,0 +0,9,105,3,[other],1,1 +0,10,113,1,8,8,1 +0,11,113,1,[other],1,1 +0,12,113,1,9,1,1 +0,13,113,1,[other],1,1 +0,14,113,0,9,1,1 +0,15,113,1,8,1,1 +0,16,103,0,9,1,1 +0,17,113,0,8,1,1 +0,18,113,0,[other],8,1 +0,19,113,0,[other],0,[mask] +0,20,108,0,[other],1,[other] +0,21,108,0,[other],7,1 +0,22,108,5,[other],[mask],1 +0,23,124,[mask],[other],7,1 +0,24,124,1,[other],2,1 +0,25,113,1,[other],8,1 +0,26,113,1,[other],[mask],1 +0,27,122,8,[other],8,1 +0,28,113,1,[other],8,1 +0,29,113,1,[other],0,1 +0,30,113,8,[other],2,1 +0,31,113,1,[other],2,1 +0,32,113,8,9,1,1 +0,33,113,1,[other],[mask],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv index 60c86728..6342f656 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,102,4,0,5,0 -1,5,102,6,0,2,1 -1,6,111,4,2,2,1 -1,7,112,4,9,5,1 -1,8,112,4,9,8,1 -1,9,112,4,9,0,0 -1,10,112,7,9,0,1 -1,11,112,4,3,0,0 -1,12,112,4,9,0,0 -1,13,112,4,9,0,1 -1,14,112,4,9,0,0 -1,15,112,4,3,0,0 -1,16,112,4,9,0,0 -1,17,112,4,3,0,0 -1,18,112,4,9,0,0 -1,19,112,4,3,0,0 -1,20,112,4,3,0,0 -1,21,112,4,3,0,0 -1,22,112,4,3,0,0 -1,23,112,4,3,0,0 -1,24,112,4,3,0,0 -1,25,112,4,3,0,0 -1,26,112,4,3,0,0 -1,27,112,4,3,0,0 -1,28,112,4,3,0,0 -1,29,112,4,3,0,0 -1,30,112,4,3,0,0 -1,31,112,4,3,0,0 -1,32,112,4,3,0,0 -1,33,112,4,3,0,0 +1,4,107,5,[other],[mask],[other] +1,5,121,3,[other],7,[other] +1,6,121,5,[other],8,[other] +1,7,121,5,[other],7,[other] +1,8,121,5,[other],7,[other] +1,9,121,1,[other],8,1 +1,10,122,1,7,8,0 +1,11,105,1,7,8,[other] +1,12,122,1,7,[unknown],0 +1,13,105,0,7,1,1 +1,14,113,[other],7,5,0 +1,15,113,[mask],1,5,1 +1,16,113,1,1,2,1 +1,17,120,[mask],4,1,1 +1,18,113,[mask],1,7,1 +1,19,102,1,[other],2,1 +1,20,113,1,7,8,[unknown] +1,21,113,1,1,0,1 +1,22,128,1,0,1,1 +1,23,113,1,[other],7,1 +1,24,105,8,[other],2,1 +1,25,113,1,1,2,1 +1,26,113,8,[other],1,1 +1,27,105,1,1,2,1 +1,28,113,0,[other],1,1 +1,29,113,1,[other],2,1 +1,30,113,[mask],9,1,1 +1,31,113,1,[other],1,1 +1,32,113,1,9,1,1 +1,33,113,1,9,1,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv index 9c10138e..dba66fc2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,112,4,0,5,1 -2,4,112,4,3,0,0 -2,5,112,4,9,0,1 -2,6,112,4,9,0,0 -2,7,112,4,3,0,0 -2,8,112,4,9,0,0 -2,9,112,4,3,0,0 -2,10,112,4,9,0,0 -2,11,112,4,3,0,0 -2,12,112,4,3,0,0 -2,13,112,4,3,0,0 -2,14,112,4,3,0,0 -2,15,112,4,3,0,0 -2,16,112,4,3,0,0 -2,17,112,4,3,0,0 -2,18,112,4,3,0,0 -2,19,112,4,3,0,0 -2,20,112,4,3,0,0 -2,21,112,4,3,0,0 -2,22,112,4,3,0,0 -2,23,112,4,3,0,0 -2,24,112,4,3,0,0 -2,25,112,4,3,0,0 -2,26,112,4,3,0,0 -2,27,112,4,3,0,0 -2,28,112,4,3,0,0 -2,29,112,4,3,0,0 -2,30,112,4,3,0,0 -2,31,112,4,3,0,0 -2,32,112,4,3,0,0 +2,3,128,0,7,[unknown],2 +2,4,113,8,[other],6,2 +2,5,109,1,[other],6,1 +2,6,128,1,[other],[mask],2 +2,7,104,[mask],[other],6,1 +2,8,104,1,1,2,1 +2,9,113,1,8,0,2 +2,10,113,1,[other],[mask],1 +2,11,121,1,[other],0,1 +2,12,101,1,[other],7,1 +2,13,105,8,[other],0,1 +2,14,122,1,1,2,1 +2,15,113,[mask],[other],0,1 +2,16,113,1,[other],2,1 +2,17,113,[mask],[other],2,1 +2,18,113,1,[other],2,1 +2,19,113,[mask],[other],1,1 +2,20,113,1,[other],2,1 +2,21,113,1,[other],1,1 +2,22,113,1,9,1,1 +2,23,113,1,[other],1,1 +2,24,103,1,9,1,1 +2,25,103,1,8,1,1 +2,26,103,0,9,7,1 +2,27,105,5,8,0,1 +2,28,105,0,8,1,1 +2,29,113,0,8,9,2 +2,30,105,3,[other],1,[other] +2,31,113,0,[other],8,[other] +2,32,113,0,[other],8,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv index 8295c2ce..20206ce0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,112,3,3,5,0 -3,4,102,4,3,5,0 -3,5,112,3,3,0,0 -3,6,112,4,3,5,0 -3,7,112,4,3,0,0 -3,8,112,4,3,0,0 -3,9,112,4,9,0,0 -3,10,112,4,3,0,0 -3,11,112,4,9,0,0 -3,12,112,4,3,0,0 -3,13,112,4,9,0,0 -3,14,112,4,3,0,0 -3,15,112,4,3,0,0 -3,16,112,4,3,0,0 -3,17,112,4,3,0,0 -3,18,112,4,3,0,0 -3,19,112,4,3,0,0 -3,20,112,4,3,0,0 -3,21,112,4,3,0,0 -3,22,112,4,3,0,0 -3,23,112,4,3,0,0 -3,24,112,4,3,0,0 -3,25,112,4,3,0,0 -3,26,112,4,3,0,0 -3,27,112,4,3,0,0 -3,28,112,4,3,0,0 -3,29,112,4,3,0,0 -3,30,112,4,3,0,0 -3,31,112,4,3,0,0 -3,32,112,4,3,0,0 -4,3,113,4,9,5,1 -4,4,112,4,9,8,1 -4,5,118,4,9,8,1 -4,6,102,4,9,0,1 -4,7,112,4,9,0,1 -4,8,112,4,9,0,1 -4,9,112,4,9,0,1 -4,10,112,4,9,0,1 -4,11,112,4,3,0,0 -4,12,112,4,9,0,1 -4,13,112,4,3,0,0 -4,14,112,4,3,0,1 -4,15,112,4,9,0,0 -4,16,112,4,3,0,0 -4,17,112,4,9,0,0 -4,18,112,4,3,0,0 -4,19,112,4,9,0,0 -4,20,112,4,3,0,0 -4,21,112,4,3,0,0 -4,22,112,4,9,0,0 -4,23,112,4,3,0,0 -4,24,112,4,3,0,0 -4,25,112,4,3,0,0 -4,26,112,4,3,0,0 -4,27,112,4,3,0,0 -4,28,112,4,3,0,0 -4,29,112,4,3,0,0 -4,30,112,4,3,0,0 -4,31,112,4,3,0,0 -4,32,112,4,3,0,0 +3,3,102,5,1,1,2 +3,4,128,0,9,5,[unknown] +3,5,105,0,1,5,2 +3,6,105,[other],9,[mask],[unknown] +3,7,128,0,1,[mask],1 +3,8,105,0,[other],8,[unknown] +3,9,121,1,8,[mask],[other] +3,10,104,0,[other],8,1 +3,11,113,1,[other],[mask],0 +3,12,104,3,[other],1,1 +3,13,113,1,[other],8,2 +3,14,113,1,[other],1,1 +3,15,113,1,[other],1,1 +3,16,113,1,[other],1,1 +3,17,105,0,[other],1,1 +3,18,120,0,8,0,1 +3,19,105,0,8,2,1 +3,20,113,0,8,0,1 +3,21,113,1,[other],2,1 +3,22,113,0,[other],1,1 +3,23,113,0,[other],8,1 +3,24,113,1,[other],8,1 +3,25,113,1,[other],8,1 +3,26,113,1,[other],8,1 +3,27,113,1,[other],7,1 +3,28,105,8,[other],1,1 +3,29,113,1,1,0,1 +3,30,105,1,[other],1,1 +3,31,113,1,9,0,1 +3,32,105,1,[other],1,1 +4,3,102,0,[other],[unknown],[unknown] +4,4,102,8,[other],8,[unknown] +4,5,102,0,[other],6,[unknown] +4,6,105,8,[other],6,[unknown] +4,7,115,8,[other],2,1 +4,8,127,[mask],7,8,[unknown] +4,9,113,2,1,0,1 +4,10,122,1,[other],2,1 +4,11,113,[mask],7,2,1 +4,12,113,1,1,2,1 +4,13,113,[mask],[other],1,1 +4,14,113,1,1,2,1 +4,15,113,1,[other],1,1 +4,16,113,1,1,1,1 +4,17,105,1,[other],1,1 +4,18,105,1,9,0,1 +4,19,105,1,8,0,1 +4,20,105,1,9,0,1 +4,21,105,1,8,0,1 +4,22,105,0,9,1,[other] +4,23,113,0,8,0,[other] +4,24,113,0,[other],1,[other] +4,25,113,0,[other],8,2 +4,26,113,1,[other],8,1 +4,27,113,1,[other],8,1 +4,28,113,1,[other],8,1 +4,29,113,1,[other],8,1 +4,30,113,1,[other],[mask],1 +4,31,121,1,[other],1,1 +4,32,126,1,0,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv index cdb9d0fa..051cc930 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,108,4,9,8,1 -5,4,104,4,9,8,1 -5,5,119,4,9,8,1 -5,6,104,4,9,8,1 -5,7,119,4,9,8,1 -5,8,104,4,9,8,0 -5,9,102,4,9,5,1 -5,10,119,4,3,0,0 -5,11,112,4,3,6,0 -5,12,112,4,3,5,0 -5,13,112,4,3,5,0 -5,14,112,4,3,0,0 -5,15,112,4,3,0,0 -5,16,112,4,3,6,0 -5,17,112,4,3,0,0 -5,18,112,4,9,0,0 -5,19,112,4,3,6,0 -5,20,112,4,3,0,0 -5,21,112,4,9,0,0 -5,22,112,4,3,0,0 -5,23,112,4,3,0,0 -5,24,112,4,3,6,0 -5,25,112,4,3,0,0 -5,26,112,4,3,0,0 -5,27,112,4,3,6,0 -5,28,112,4,3,0,0 -5,29,112,4,3,0,0 -5,30,112,4,3,0,0 -5,31,112,4,3,6,0 -5,32,112,4,3,0,0 +5,3,128,3,[other],4,1 +5,4,128,1,[other],6,1 +5,5,105,1,[other],7,1 +5,6,105,1,[other],0,1 +5,7,105,1,[other],0,1 +5,8,105,1,[other],0,1 +5,9,113,1,7,2,1 +5,10,113,1,[other],1,1 +5,11,113,1,[other],1,1 +5,12,113,1,[other],1,1 +5,13,113,1,[other],1,1 +5,14,113,0,[other],1,1 +5,15,113,0,[other],2,1 +5,16,113,0,[other],2,1 +5,17,113,0,1,1,1 +5,18,108,0,9,1,1 +5,19,113,0,8,0,1 +5,20,113,0,[other],[mask],1 +5,21,108,3,[other],2,1 +5,22,113,1,[other],8,1 +5,23,113,1,[other],8,1 +5,24,113,1,[other],8,1 +5,25,113,1,[other],0,1 +5,26,113,1,[other],7,1 +5,27,105,8,[other],0,1 +5,28,113,1,[other],2,1 +5,29,113,8,[other],1,1 +5,30,113,1,[other],2,1 +5,31,113,[mask],[other],1,1 +5,32,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv index 181f8b8a..d92da9a7 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,102,4,9,5,1 -6,5,112,4,3,0,1 -6,6,112,4,9,5,1 -6,7,112,4,3,0,1 -6,8,112,4,9,0,1 -6,9,112,4,3,0,0 -6,10,112,4,9,0,1 -6,11,112,4,3,0,0 -6,12,112,4,9,0,0 -6,13,112,4,3,0,0 -6,14,112,4,9,0,0 -6,15,112,4,3,0,0 -6,16,112,4,9,0,0 -6,17,112,4,3,0,0 -6,18,112,4,9,0,0 -6,19,112,4,3,0,0 -6,20,112,4,3,0,0 -6,21,112,4,3,0,0 -6,22,112,4,3,0,0 -6,23,112,4,3,0,0 -6,24,112,4,3,0,0 -6,25,112,4,3,0,0 -6,26,112,4,3,0,0 -6,27,112,4,3,0,0 -6,28,112,4,3,0,0 -6,29,112,4,3,0,0 -6,30,112,4,3,0,0 -6,31,112,4,3,0,0 -6,32,112,4,3,0,0 -6,33,112,4,3,0,0 -7,3,102,4,0,5,1 -7,4,112,4,0,8,1 -7,5,118,4,9,8,1 -7,6,112,4,9,0,1 -7,7,112,4,9,0,1 -7,8,112,4,9,0,1 -7,9,112,4,9,0,1 -7,10,112,4,9,0,0 -7,11,112,4,3,0,0 -7,12,112,4,9,0,1 -7,13,112,4,9,0,0 -7,14,112,4,3,0,0 -7,15,112,4,9,0,0 -7,16,112,4,3,0,0 -7,17,112,4,9,0,0 -7,18,112,4,3,0,0 -7,19,112,4,3,0,0 -7,20,112,4,3,0,0 -7,21,112,4,3,0,0 -7,22,112,4,3,0,0 -7,23,112,4,3,0,0 -7,24,112,4,3,0,0 -7,25,112,4,3,0,0 -7,26,112,4,3,0,0 -7,27,112,4,3,0,0 -7,28,112,4,3,0,0 -7,29,112,4,3,0,0 -7,30,112,4,3,0,0 -7,31,112,4,3,0,0 -7,32,112,4,3,0,0 +6,4,122,2,[other],8,[unknown] +6,5,113,[mask],[other],8,[other] +6,6,113,1,[other],[unknown],1 +6,7,113,[mask],[other],2,1 +6,8,113,1,[other],2,1 +6,9,113,3,[other],1,1 +6,10,121,1,[other],[mask],1 +6,11,108,0,7,1,1 +6,12,113,1,1,[mask],1 +6,13,108,8,9,1,1 +6,14,113,1,1,0,1 +6,15,105,1,9,1,[other] +6,16,113,0,7,0,[other] +6,17,113,0,[other],0,[other] +6,18,113,8,[other],2,[other] +6,19,113,[mask],[other],8,1 +6,20,113,1,[other],[mask],1 +6,21,113,1,[other],1,1 +6,22,113,1,[other],[mask],1 +6,23,113,1,[other],[mask],1 +6,24,121,1,[other],2,1 +6,25,113,1,[other],8,1 +6,26,105,1,1,[mask],1 +6,27,105,[other],9,1,[other] +6,28,113,0,7,[unknown],1 +6,29,105,0,[other],1,1 +6,30,113,1,[other],0,1 +6,31,105,1,9,1,1 +6,32,113,0,7,1,1 +6,33,113,1,[other],1,1 +7,3,105,0,[other],8,[mask] +7,4,105,0,[other],1,[other] +7,5,105,0,9,6,[unknown] +7,6,105,0,[other],1,1 +7,7,113,0,[other],1,2 +7,8,113,0,[other],1,[other] +7,9,113,0,[other],[mask],1 +7,10,113,1,[other],[mask],1 +7,11,113,[mask],[other],8,1 +7,12,113,1,[other],[mask],1 +7,13,113,3,[other],1,1 +7,14,113,1,[other],[mask],1 +7,15,108,1,[other],0,1 +7,16,113,1,[other],7,1 +7,17,105,8,[other],2,1 +7,18,113,1,[other],2,1 +7,19,113,8,[other],1,1 +7,20,113,1,[other],2,1 +7,21,113,3,[other],1,1 +7,22,113,1,[other],2,1 +7,23,113,8,[other],1,1 +7,24,113,1,[other],2,1 +7,25,113,1,9,1,1 +7,26,103,1,9,1,1 +7,27,103,1,8,1,1 +7,28,103,0,9,7,1 +7,29,105,5,8,0,1 +7,30,105,1,8,1,1 +7,31,113,0,9,1,2 +7,32,113,0,[other],1,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv index a4fd8639..acc3eb04 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,112,4,9,5,0 -8,5,112,4,0,5,0 -8,6,112,7,8,5,0 -8,7,112,4,9,5,0 -8,8,112,4,9,5,0 -8,9,112,4,9,5,1 -8,10,112,4,9,0,0 -8,11,112,4,9,0,0 -8,12,112,4,3,0,0 -8,13,112,4,9,0,0 -8,14,112,4,3,0,0 -8,15,112,4,3,0,0 -8,16,112,4,3,0,0 -8,17,112,4,9,0,0 -8,18,112,4,3,0,0 -8,19,112,4,3,0,0 -8,20,112,4,3,0,0 -8,21,112,4,3,0,0 -8,22,112,4,3,0,0 -8,23,112,4,3,0,0 -8,24,112,4,3,0,0 -8,25,112,4,3,0,0 -8,26,112,4,3,0,0 -8,27,112,4,3,0,0 -8,28,112,4,3,0,0 -8,29,112,4,3,0,0 -8,30,112,4,3,0,0 -8,31,112,4,3,0,0 -8,32,112,4,3,0,0 -8,33,112,4,3,0,0 +8,4,101,1,[other],8,2 +8,5,104,1,[other],[unknown],2 +8,6,104,3,[other],[other],1 +8,7,120,5,1,0,1 +8,8,128,1,[other],0,1 +8,9,105,1,[other],7,[other] +8,10,120,8,7,0,[other] +8,11,120,5,[other],0,1 +8,12,120,1,7,2,1 +8,13,113,[mask],7,1,1 +8,14,113,1,[other],2,1 +8,15,113,1,[other],2,1 +8,16,113,1,[other],8,1 +8,17,113,1,[other],2,1 +8,18,113,[mask],1,8,1 +8,19,102,1,1,2,1 +8,20,128,1,4,7,1 +8,21,105,8,[other],7,1 +8,22,105,5,5,2,1 +8,23,113,1,8,0,1 +8,24,105,1,[other],7,1 +8,25,105,8,9,2,1 +8,26,113,1,[other],0,1 +8,27,113,8,[other],2,1 +8,28,113,1,[other],8,1 +8,29,113,1,[other],7,1 +8,30,105,8,[other],1,1 +8,31,113,1,[other],2,1 +8,32,113,[mask],[other],1,1 +8,33,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv index 42cdbf62..ff465a4a 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv @@ -1,31 +1,31 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,119,4,9,8,1 -9,4,102,4,9,8,1 -9,5,102,4,9,8,1 -9,6,102,4,9,0,1 -9,7,102,4,9,0,1 -9,8,102,6,9,0,1 -9,9,112,4,9,0,1 -9,10,112,4,9,0,0 -9,11,112,4,3,0,0 -9,12,112,4,3,0,0 -9,13,112,4,3,0,0 -9,14,112,4,3,0,0 -9,15,112,4,3,0,0 -9,16,112,4,9,0,0 -9,17,112,4,3,0,0 -9,18,112,4,3,0,0 -9,19,112,4,3,0,0 -9,20,112,4,3,0,0 -9,21,112,4,3,0,0 -9,22,112,4,3,0,0 -9,23,112,4,3,0,0 -9,24,112,4,3,0,0 -9,25,112,4,3,0,0 -9,26,112,4,3,0,0 -9,27,112,4,3,0,0 -9,28,112,4,3,0,0 -9,29,112,4,3,0,0 -9,30,112,4,3,0,0 -9,31,112,4,3,0,0 -9,32,112,4,3,0,0 +9,3,108,5,[other],8,2 +9,4,122,5,[other],7,1 +9,5,105,5,[other],7,[other] +9,6,122,5,7,7,[other] +9,7,122,5,[other],7,1 +9,8,122,5,[other],2,1 +9,9,113,[mask],7,2,1 +9,10,113,1,[other],2,1 +9,11,113,[mask],[other],2,1 +9,12,113,1,[other],2,1 +9,13,113,[mask],[other],2,1 +9,14,113,1,1,2,1 +9,15,113,[mask],[other],1,1 +9,16,113,1,1,2,1 +9,17,129,1,0,7,1 +9,18,108,1,8,7,1 +9,19,108,1,0,7,1 +9,20,108,1,[other],7,1 +9,21,124,8,[other],7,1 +9,22,105,8,[other],2,1 +9,23,113,1,[other],2,1 +9,24,113,8,[other],8,2 +9,25,113,[mask],[other],8,1 +9,26,113,1,[other],2,1 +9,27,113,8,[other],2,1 +9,28,113,1,[other],2,1 +9,29,113,1,[other],7,1 +9,30,108,8,9,2,1 +9,31,113,1,1,7,1 +9,32,108,8,[other],2,1 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv index 91865281..7cec3722 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv @@ -1,5 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03451868,0.031921398,0.029532596,0.027744867,0.02760109,0.030242559,0.033749565,0.027132228,0.033893008,0.030211333,0.027323615,0.0273727,0.027940668,0.02913617,0.03199635,0.030564532,0.02930324,0.031335846,0.02836081,0.035665363,0.032468908,0.031003729,0.033122327,0.030269567,0.03076924,0.030623542,0.02832116,0.03149027,0.02777426,0.029747033,0.030456595,0.027495332,0.030911474 -0.027516257,0.028654557,0.032131042,0.031892225,0.024753015,0.034306064,0.031358637,0.02987722,0.03253693,0.030763064,0.027757306,0.029624237,0.029635688,0.028321382,0.029743204,0.027194707,0.02963858,0.02781912,0.030843636,0.029608745,0.027764315,0.02745214,0.029405791,0.029906224,0.033089224,0.034630504,0.02899261,0.03382853,0.038423352,0.030570587,0.031674568,0.03056725,0.029719174 -0.030222073,0.031830907,0.028284168,0.028407857,0.027115861,0.03235872,0.029203441,0.02976575,0.026956126,0.027495082,0.03189054,0.028712502,0.03204519,0.030992731,0.03524834,0.032565366,0.027216628,0.034662586,0.02938502,0.033734377,0.028660439,0.033143435,0.03173607,0.03174802,0.031067362,0.03277405,0.029025575,0.031590212,0.025999047,0.02817474,0.026592813,0.028226981,0.033168018 -0.025530642,0.026080305,0.02652737,0.03402691,0.027508548,0.038157314,0.027138228,0.031741947,0.03190737,0.030657675,0.026315706,0.030096767,0.028837977,0.03074533,0.031430572,0.033588294,0.028155396,0.029817235,0.024138339,0.028173123,0.027259734,0.032578666,0.034752455,0.034232706,0.03252036,0.0357678,0.029168166,0.032422952,0.029197408,0.030990023,0.025777996,0.031730004,0.0330266 +0.03490532,0.031998005,0.028772216,0.027195405,0.027683252,0.029920967,0.03279077,0.02628576,0.034324087,0.030802563,0.027264664,0.027657194,0.027639514,0.029530054,0.03239934,0.030662043,0.029952087,0.030814199,0.028125698,0.0344104,0.033223245,0.032099433,0.032986548,0.029886737,0.03260546,0.030854948,0.027623257,0.031297766,0.026375476,0.030162385,0.030712212,0.027799197,0.031239802 +0.027808135,0.029926706,0.03400922,0.030426748,0.025627963,0.031928588,0.03561634,0.030228743,0.031077368,0.029948497,0.028980114,0.028951673,0.029900176,0.027818188,0.028425556,0.025779901,0.03055118,0.029142106,0.03244458,0.030813629,0.027564976,0.02764529,0.02720103,0.029113112,0.032587785,0.03428341,0.029919686,0.031955376,0.03911367,0.030389592,0.03261028,0.028901618,0.02930875 +0.029915085,0.030543437,0.028834613,0.03042259,0.026555737,0.03297875,0.028495284,0.03012273,0.02954228,0.030395597,0.031444997,0.02910545,0.030163703,0.030961595,0.03490318,0.031798262,0.029193621,0.03289751,0.028760593,0.033082496,0.029938387,0.03467049,0.02820007,0.031503487,0.032639142,0.031294454,0.025620796,0.031352498,0.025782082,0.030491428,0.025737967,0.028993692,0.033657994 +0.025365606,0.025664778,0.026062079,0.032890774,0.026538692,0.03823054,0.028495807,0.029882822,0.033322647,0.031037634,0.025865804,0.029255202,0.02681062,0.03221474,0.03261645,0.034453724,0.027962716,0.028476784,0.023960778,0.027055632,0.026977597,0.03259397,0.03620625,0.032044176,0.032762516,0.037340216,0.030151956,0.033774957,0.029703537,0.0278705,0.028950956,0.030582692,0.03487683 +0.025282321,0.029473947,0.028269365,0.03373335,0.028858237,0.033462204,0.030326918,0.033530205,0.027763087,0.030093702,0.030169412,0.03151387,0.03000025,0.029444912,0.032865997,0.03329371,0.030292938,0.032526247,0.026917703,0.03018704,0.026444286,0.033763483,0.028074782,0.0319315,0.030718518,0.032087997,0.031459063,0.02930742,0.030223848,0.030085208,0.025420504,0.030391077,0.032086886 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv index a3d9edc1..25701dea 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv @@ -1,5 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.024938403,0.025853546,0.030925326,0.035836563,0.027472962,0.033917453,0.031773735,0.033111185,0.030894933,0.03310667,0.03077764,0.031968474,0.027649606,0.029903907,0.03066213,0.030050345,0.028726462,0.024805613,0.029500253,0.026645845,0.025433421,0.030492553,0.029441224,0.033256244,0.030633831,0.03083032,0.029116308,0.03357199,0.035229903,0.031910744,0.02843861,0.03163502,0.031488776 -0.027546028,0.024828414,0.029011007,0.033997692,0.028309349,0.034571003,0.028885573,0.030300727,0.033193853,0.03057627,0.030879539,0.030720139,0.028182643,0.03336716,0.031966623,0.029043915,0.030032871,0.026891707,0.028006839,0.028216656,0.030012557,0.03335293,0.03443931,0.034874037,0.031277187,0.02787145,0.027704827,0.033389967,0.027017491,0.03146076,0.027681751,0.030754598,0.031635087 -0.025267702,0.02593611,0.026375175,0.033555325,0.02729746,0.03769069,0.028252527,0.03147091,0.031586744,0.02977779,0.026451198,0.029979987,0.028936028,0.031154884,0.0320948,0.03343466,0.027493577,0.029236242,0.024690645,0.028272472,0.026758416,0.031592447,0.03592271,0.03407506,0.03227401,0.035707034,0.030419732,0.03240453,0.030306093,0.030438218,0.026424794,0.031391647,0.033330467 -0.027293371,0.028949117,0.028703904,0.02919847,0.030929094,0.032399643,0.029274687,0.034145895,0.02837577,0.029229118,0.030326605,0.03315343,0.032393903,0.032588884,0.030739764,0.030741734,0.033645798,0.030104026,0.032112077,0.03169782,0.029715285,0.030085078,0.033176463,0.032097504,0.027618587,0.02773887,0.030057417,0.028018357,0.025789501,0.03361293,0.027174367,0.03010951,0.02880308 +0.025796872,0.025821052,0.030540183,0.03540621,0.026608227,0.03478382,0.03067776,0.031003399,0.033146046,0.03325188,0.030365815,0.0308043,0.027449563,0.030018117,0.03153884,0.029352657,0.029092524,0.02384649,0.029970763,0.026764145,0.02692843,0.03091666,0.031293344,0.03301509,0.030675245,0.031148765,0.027454989,0.03464577,0.03371407,0.03039152,0.029442204,0.031400308,0.032734923 +0.027645376,0.024716172,0.029397551,0.032479983,0.029057788,0.034062088,0.029561806,0.030762905,0.03275578,0.029999051,0.03151822,0.029582402,0.029124012,0.033837236,0.03152767,0.02815874,0.031342242,0.02682736,0.029414995,0.028265033,0.030185502,0.03224051,0.033708274,0.034261037,0.030121397,0.027603159,0.02855955,0.03343462,0.02645024,0.031482406,0.028913507,0.030383296,0.03262006 +0.024845945,0.025052948,0.0263014,0.032901563,0.025363559,0.03965492,0.028409896,0.029733066,0.03424027,0.03162598,0.025910662,0.028759446,0.026962476,0.032856528,0.03243185,0.032826383,0.029125627,0.02801517,0.024131,0.027621036,0.027519526,0.032559667,0.035635147,0.03229265,0.03338464,0.037081745,0.027807528,0.03353886,0.02957665,0.029155599,0.02823219,0.030683924,0.03576222 +0.02797149,0.029818716,0.028976986,0.028290737,0.03108153,0.03052239,0.02963015,0.03228555,0.028276766,0.028560005,0.03070743,0.032421984,0.03245931,0.03343161,0.031278666,0.030921867,0.03263645,0.03018529,0.032240782,0.0317139,0.03008393,0.02913051,0.034749724,0.031110376,0.02584681,0.027162941,0.032870043,0.028430955,0.02776051,0.031122573,0.029412452,0.030131536,0.028776024 +0.027345048,0.029193792,0.029317684,0.026135022,0.02694352,0.03692952,0.02964658,0.031842634,0.02922959,0.029339928,0.02875359,0.02905978,0.030834356,0.036634963,0.029727926,0.030966414,0.030507686,0.032904536,0.030803429,0.032436226,0.028633079,0.029277464,0.032264367,0.030212997,0.030541789,0.037181064,0.026679141,0.030335572,0.026149832,0.030504115,0.028901305,0.028029755,0.032737307 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv index e4570072..91c21c03 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv @@ -1,4 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.033277225,0.030706238,0.03168895,0.033311088,0.029628102,0.026783517,0.033642292,0.028419774,0.03004662,0.030877694,0.030766364,0.02872636,0.028279921,0.025215175,0.032209065,0.028634787,0.031974144,0.031396896,0.027670972,0.030388262,0.03137201,0.0331837,0.024129286,0.02784322,0.03336912,0.025571778,0.033213194,0.032749813,0.033496857,0.029778576,0.03258353,0.029908357,0.029157136 -0.025729796,0.029602438,0.029645566,0.029040024,0.031028586,0.030800173,0.033909444,0.031098856,0.028809031,0.027932486,0.029731028,0.031625725,0.033525992,0.029835034,0.029137556,0.028564114,0.03216789,0.027496634,0.034953404,0.028403202,0.026970934,0.027889818,0.031215824,0.029021468,0.030363686,0.03254443,0.03467346,0.028671235,0.034229062,0.029859748,0.031822145,0.030721655,0.028979547 -0.028761078,0.027854176,0.03048727,0.034092404,0.029769653,0.030306583,0.03338378,0.032568734,0.0329339,0.03081607,0.026996588,0.028901242,0.028271142,0.026599998,0.027621023,0.02927734,0.034487005,0.032435104,0.022172494,0.029216152,0.028780058,0.030934772,0.025088819,0.030961733,0.032769565,0.028614981,0.03369568,0.030542089,0.03556081,0.033930458,0.030258873,0.03194647,0.029963972 +0.033804633,0.03133798,0.03240842,0.032249976,0.031567764,0.023804748,0.033451684,0.031181484,0.02904705,0.028814662,0.031253017,0.029255506,0.03155321,0.024031805,0.03100783,0.02836353,0.032650135,0.032079875,0.029468795,0.03124199,0.031478617,0.030717542,0.022784976,0.027685331,0.031394366,0.023952689,0.03493583,0.030857133,0.035084616,0.03195621,0.032159757,0.030788282,0.02763058 +0.025631752,0.029802956,0.030698422,0.029735252,0.029497724,0.031349394,0.033659987,0.030621238,0.02941033,0.029097665,0.030105164,0.031282384,0.032693755,0.030077938,0.02911067,0.026763074,0.03305479,0.026865568,0.036262047,0.029614927,0.028123945,0.028390907,0.031433348,0.029613422,0.029825589,0.03213038,0.0313533,0.028229501,0.03429874,0.030838396,0.030776728,0.03051359,0.02913713 +0.028800884,0.027588563,0.0300563,0.03443287,0.02912721,0.029885918,0.03512253,0.03208439,0.032546118,0.030156115,0.026779838,0.028835671,0.027242702,0.026432548,0.029021429,0.029896194,0.032417633,0.031113513,0.022803584,0.029385664,0.028680721,0.030133814,0.027381856,0.030590741,0.03248337,0.028955875,0.03544596,0.03154471,0.036519587,0.03206369,0.031347316,0.03071588,0.030406838 +0.02862093,0.03000527,0.029652234,0.02862441,0.03345083,0.03031905,0.028309684,0.032872725,0.028253555,0.03009939,0.0307454,0.033102486,0.032555282,0.033184092,0.02956358,0.03107351,0.03461472,0.031375494,0.032400206,0.03102256,0.031462118,0.030181756,0.03170402,0.030066047,0.026040724,0.02641749,0.0313496,0.027319029,0.026150461,0.0320657,0.028823854,0.030786902,0.027786825 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv index fc1bbb92..4b357202 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv @@ -1,7 +1,9 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.033417575,0.030952973,0.031909764,0.03328892,0.029420735,0.02633423,0.03413355,0.028891983,0.02999831,0.030924743,0.030936386,0.02908393,0.028261695,0.025051711,0.032034438,0.028418737,0.032599755,0.03089184,0.027745165,0.0306719,0.031189425,0.032526094,0.023779722,0.027861075,0.03290723,0.02475645,0.03326867,0.03255766,0.03400532,0.030586168,0.032822493,0.030047486,0.028723868 -0.034453217,0.0305892,0.029416787,0.029322578,0.028612511,0.031616293,0.028566025,0.026076926,0.03032813,0.02860342,0.032680735,0.028623346,0.028884213,0.03250039,0.034757424,0.029118933,0.027070051,0.031802647,0.031775847,0.03249104,0.03419997,0.0347499,0.034769706,0.03168993,0.032166995,0.029576255,0.02648399,0.032632153,0.022518143,0.027031703,0.028449764,0.027058687,0.031383082 -0.03126686,0.028659452,0.026583998,0.02960171,0.029598372,0.0348543,0.028967595,0.027243897,0.03295455,0.028712928,0.027025098,0.02840309,0.029796531,0.030191114,0.032229044,0.030590648,0.030458689,0.030780101,0.028688198,0.030927148,0.03236309,0.035447787,0.03583643,0.031489626,0.034140706,0.032815706,0.028919876,0.032643765,0.022453642,0.028814038,0.028506618,0.028614122,0.030421335 -0.024738476,0.030802721,0.029338533,0.030698724,0.026044017,0.036583103,0.02847107,0.0297974,0.030350022,0.031745814,0.027877493,0.030870043,0.031255092,0.029293576,0.030610705,0.032736078,0.027911829,0.030885635,0.028708616,0.030616442,0.026017355,0.031379726,0.033175353,0.032386277,0.030061183,0.03907589,0.027840383,0.030412367,0.03361048,0.028390406,0.025730342,0.030818133,0.031766724 -0.027777517,0.028804556,0.031672627,0.030206317,0.025076197,0.034134787,0.032481443,0.029717883,0.03154765,0.028994586,0.027599279,0.028896887,0.030154243,0.028881382,0.030242773,0.027787082,0.02839826,0.0288448,0.031094935,0.029876556,0.027011143,0.026954878,0.030751621,0.029737474,0.032815382,0.035880763,0.031499054,0.03416633,0.03777237,0.028893098,0.032805875,0.02953868,0.029983671 -0.027476907,0.029252572,0.029974613,0.03427469,0.03160824,0.029946703,0.026536744,0.03142502,0.029297996,0.033668708,0.030066026,0.031427413,0.031061247,0.026917415,0.030150387,0.033821,0.0326446,0.032380875,0.025550779,0.02765895,0.02903609,0.035553962,0.025652928,0.029973598,0.030050268,0.028396083,0.03117175,0.03078121,0.032512754,0.03008112,0.02760991,0.033881046,0.03015839 +0.03365363,0.03131194,0.032062005,0.032612655,0.030762598,0.023996722,0.033894006,0.03161808,0.028858617,0.028537845,0.031369943,0.029386261,0.031269576,0.0240121,0.03156647,0.028297028,0.03270311,0.03169595,0.028860392,0.031636294,0.03105152,0.03050513,0.023036947,0.028302876,0.031403825,0.0235559,0.03512947,0.031095052,0.034982767,0.032558214,0.031808164,0.030668166,0.027796706 +0.032761578,0.029872429,0.029597605,0.029935349,0.026900567,0.032399144,0.02855435,0.026653757,0.03182153,0.03016848,0.032555472,0.028656261,0.029006623,0.03235095,0.03480727,0.028403722,0.028092936,0.029561672,0.03174143,0.03233374,0.033174057,0.034100316,0.03289924,0.032593768,0.032962408,0.029540613,0.02438331,0.032330763,0.023944201,0.029516606,0.027441561,0.028192038,0.0327462 +0.030725045,0.028272143,0.026365971,0.028971849,0.028257614,0.034422457,0.03088777,0.026187155,0.03345275,0.028805315,0.027079374,0.02812067,0.027472235,0.03160347,0.034400526,0.031103302,0.028490582,0.02971379,0.028624378,0.030313667,0.030894523,0.03547529,0.037652876,0.031707373,0.034248933,0.03381967,0.030158943,0.03319742,0.023066722,0.02731636,0.029626993,0.02753793,0.032026935 +0.025067946,0.025263725,0.026296385,0.033531774,0.026559269,0.03958333,0.027857842,0.030703193,0.033559784,0.03183785,0.025875572,0.029518714,0.026663154,0.032539647,0.03160153,0.034056365,0.029149989,0.02885333,0.023305051,0.02679659,0.027072044,0.033060253,0.034554478,0.032332253,0.03327132,0.037098464,0.028822728,0.033504702,0.02874793,0.029003797,0.028169123,0.03096053,0.03478138 +0.024328558,0.03019246,0.02978609,0.030933373,0.02664791,0.03585672,0.029219525,0.03113439,0.030371258,0.031899795,0.027526228,0.031095784,0.02991037,0.029948168,0.030375885,0.03407043,0.028136484,0.03192227,0.028028654,0.029312856,0.025214395,0.031401776,0.030239172,0.030062895,0.029838474,0.03965154,0.029726071,0.030511681,0.035435908,0.027180875,0.027923727,0.030501928,0.03161439 +0.027642481,0.029439252,0.033424422,0.030074678,0.02514382,0.033257872,0.03443825,0.02897289,0.032224122,0.03009342,0.028927157,0.028554885,0.029879149,0.029093452,0.028734183,0.025436884,0.030429183,0.029044895,0.032307327,0.0309847,0.028431837,0.028267644,0.029025367,0.029751183,0.03299192,0.035030864,0.02826856,0.031771418,0.037300482,0.030140122,0.03184548,0.028867587,0.030204555 +0.026242485,0.02856462,0.030316794,0.033157557,0.03299111,0.029088097,0.027124817,0.031284798,0.03198276,0.032629397,0.030249553,0.031380426,0.03177847,0.027848225,0.029764337,0.03523869,0.029829431,0.031178579,0.027072916,0.026859952,0.02733578,0.034253642,0.027440054,0.030315153,0.027151577,0.03023951,0.03223471,0.030502116,0.035234425,0.027642915,0.028225683,0.034010116,0.030831262 +0.031010924,0.027717909,0.028334908,0.029572029,0.031026728,0.028185181,0.03371703,0.03252502,0.028359665,0.028503757,0.029602813,0.028722132,0.03139693,0.029956581,0.033280496,0.027820814,0.037417598,0.029648174,0.03241054,0.03330766,0.034037765,0.030647116,0.027304817,0.027959816,0.031536154,0.023645312,0.031318452,0.029235678,0.025905538,0.035960104,0.030277228,0.029216642,0.030438429 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv index 66ac322a..b58e1cad 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv @@ -1,4 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02787407,0.027104642,0.030358018,0.034553517,0.028322224,0.031050757,0.034033015,0.031545833,0.033861537,0.030875284,0.027181892,0.028938169,0.027790133,0.027383799,0.028615393,0.028780295,0.03324079,0.030557051,0.022777924,0.029385028,0.028478311,0.030502185,0.026848188,0.03165467,0.032651097,0.028698592,0.032736804,0.031015739,0.037046205,0.033572696,0.030005831,0.03182181,0.030738411 -0.02670878,0.025883488,0.02744727,0.03386368,0.029877376,0.032459594,0.030426193,0.03247706,0.02878972,0.027941974,0.027739787,0.030217001,0.030183967,0.029890094,0.032915857,0.03072404,0.030120345,0.030178469,0.027195016,0.02812506,0.028859448,0.029241446,0.031200247,0.029883275,0.0328588,0.029916031,0.035874527,0.030879542,0.033642642,0.031450473,0.030106302,0.03142932,0.03149319 -0.032150064,0.028221862,0.028330833,0.02810167,0.027819155,0.03160524,0.027474659,0.027735386,0.033368625,0.028838621,0.028449835,0.027917936,0.032627217,0.031592034,0.03244308,0.028486887,0.03201186,0.028425962,0.033350077,0.031887256,0.03447993,0.030445999,0.032843858,0.028395893,0.032929353,0.029940993,0.026082069,0.032996614,0.026771395,0.031200353,0.031379223,0.030597694,0.031098424 +0.028346347,0.027353464,0.030344704,0.034818895,0.0283053,0.03005997,0.0355836,0.03275808,0.032522377,0.030344306,0.027134521,0.028696552,0.027392156,0.026236838,0.029147837,0.02928847,0.033233523,0.03095584,0.022680035,0.029963996,0.028415956,0.030157642,0.026274486,0.030956142,0.032518826,0.02823263,0.034416623,0.031546608,0.0369284,0.033256564,0.03058284,0.03078088,0.030765546 +0.02614715,0.0258215,0.027550466,0.034463495,0.028367938,0.032731164,0.030727468,0.032352015,0.028698286,0.028598435,0.027810419,0.029569183,0.029639808,0.030452486,0.033374913,0.030064132,0.03173377,0.029634332,0.027205918,0.028680194,0.030136917,0.029390203,0.031379256,0.029033292,0.032703232,0.029795818,0.034223244,0.030701801,0.03382241,0.031033205,0.03053796,0.030996071,0.03262359 +0.031898044,0.028340638,0.02751846,0.026926287,0.027034767,0.030630607,0.029686758,0.027121056,0.03294052,0.029303096,0.027993035,0.02730981,0.03156264,0.03152772,0.034503076,0.02913811,0.031860307,0.026993573,0.033478737,0.031741023,0.03363095,0.030359568,0.033719897,0.027680459,0.03301379,0.030039832,0.02723801,0.032895096,0.027244497,0.031041017,0.032970347,0.029797535,0.032860763 +0.024685703,0.029492697,0.028752888,0.031134205,0.0272171,0.037294548,0.028083863,0.03050206,0.030993259,0.031962592,0.027071144,0.031027092,0.0293045,0.030799314,0.030283516,0.034436323,0.028116086,0.03160242,0.02737299,0.02817356,0.025712473,0.032479364,0.031470202,0.030321851,0.031176731,0.040771965,0.02915091,0.030929118,0.03230334,0.026936619,0.027898025,0.03060591,0.031937685 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv index b6233023..c9e83edb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv @@ -1,8 +1,10 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027693711,0.029121894,0.03263769,0.030477673,0.025150716,0.03287544,0.032045007,0.030850839,0.031303454,0.02993946,0.027595572,0.02886764,0.031017965,0.027735751,0.02935163,0.027287817,0.030652735,0.029687006,0.030908603,0.030391091,0.027535228,0.026636822,0.027238684,0.028523553,0.03267429,0.03431938,0.03061821,0.033247806,0.040079303,0.030726168,0.03266249,0.03049625,0.02965006 -0.025466071,0.029875752,0.029835982,0.029151956,0.028186664,0.03173176,0.03316926,0.030232249,0.031046985,0.02931059,0.029201102,0.03172116,0.033616595,0.029696383,0.029422067,0.027533485,0.034060102,0.026428862,0.035074487,0.030573001,0.027960634,0.02801773,0.03157427,0.029605145,0.0301314,0.03144874,0.030063352,0.028544225,0.03480755,0.032065663,0.030100726,0.031310387,0.029035721 -0.026478115,0.027542712,0.025084658,0.02916108,0.0296517,0.030709622,0.029443054,0.031282466,0.031903658,0.029175015,0.02586855,0.028222973,0.03547591,0.02836005,0.03144234,0.03363753,0.03476335,0.02754813,0.028392714,0.029871454,0.028496739,0.030743234,0.02964027,0.027810814,0.032352984,0.031880755,0.030597484,0.03063106,0.032444194,0.03375546,0.029653978,0.03467788,0.033299997 -0.026364712,0.029757837,0.032045525,0.031597987,0.030919015,0.031508707,0.031495456,0.03135381,0.03211043,0.03435329,0.03110224,0.032581497,0.029810883,0.029403877,0.027003385,0.030518897,0.03186091,0.026397405,0.03112966,0.027613735,0.026846573,0.032183122,0.029105142,0.032442607,0.028408209,0.031621095,0.028020909,0.03026787,0.031812698,0.030703535,0.02858388,0.031764213,0.029310849 -0.03315158,0.030279914,0.029608734,0.029177485,0.027309386,0.032146376,0.0286247,0.026008293,0.032145012,0.029281488,0.03193118,0.028416706,0.029567713,0.032534126,0.033859003,0.02824213,0.02870284,0.031056287,0.0315024,0.033499297,0.03437484,0.034205765,0.034372948,0.031886913,0.032041393,0.029588355,0.024660248,0.03200928,0.023830036,0.028581526,0.027754126,0.027885024,0.03176486 -0.025848068,0.028431289,0.029892355,0.028693581,0.030470718,0.029235307,0.030940453,0.03242136,0.029718446,0.027495537,0.029365137,0.02925045,0.03549993,0.030839637,0.028326172,0.029380446,0.034169305,0.03261548,0.028191667,0.0298291,0.028319623,0.027590321,0.02789852,0.028912824,0.029687619,0.03054694,0.033803966,0.027655903,0.037782732,0.031797566,0.030679887,0.03306369,0.031645942 -0.024057524,0.02544963,0.025607307,0.029881254,0.029157504,0.031960018,0.030122014,0.032780554,0.031288777,0.028194267,0.027988294,0.028752653,0.036150485,0.031077877,0.031034835,0.031049933,0.034480184,0.02570712,0.030488791,0.028481508,0.027200652,0.029486086,0.029952202,0.029214997,0.032385252,0.032020196,0.029338684,0.03019485,0.03324283,0.034965817,0.028807197,0.034836706,0.034644097 +0.02937184,0.030781249,0.033119388,0.028550683,0.025509233,0.03206324,0.03396557,0.028235912,0.032892834,0.029829921,0.028320564,0.02828424,0.030789617,0.02829313,0.028306503,0.025561279,0.031485945,0.029745061,0.0323852,0.031503476,0.02918103,0.028602777,0.028324347,0.028798053,0.033785295,0.0349804,0.028154539,0.03169164,0.035794634,0.030512646,0.032773368,0.02908114,0.029325323 +0.025854453,0.030651193,0.030702325,0.02862513,0.029471286,0.030098798,0.034639407,0.031529788,0.028793877,0.028493036,0.029873291,0.031217096,0.03360634,0.029397383,0.029140493,0.02725684,0.033899527,0.027715212,0.036060736,0.030847853,0.027600395,0.027915468,0.030293047,0.02915647,0.028903313,0.031247552,0.032694653,0.02797646,0.034875035,0.031475507,0.031034105,0.030351939,0.028601935 +0.025826376,0.027251828,0.02673951,0.030150859,0.028219849,0.03097317,0.029552381,0.032052875,0.033098787,0.032143876,0.026451845,0.02858729,0.033598788,0.028336221,0.030879049,0.031548064,0.03830193,0.026910027,0.028226435,0.029459467,0.02940237,0.03086073,0.026327921,0.026920898,0.032483302,0.030522237,0.027463144,0.029610101,0.033719517,0.035605237,0.029845843,0.034718696,0.03421142 +0.02661512,0.030802475,0.032640494,0.031011712,0.03189831,0.030164946,0.03295102,0.030942937,0.031764835,0.032526337,0.032349735,0.03283627,0.03008033,0.029224372,0.02729727,0.029901998,0.029873366,0.025909916,0.03347985,0.027992664,0.02590215,0.030691914,0.030372458,0.033140227,0.026693273,0.03153677,0.029790008,0.029715454,0.033401065,0.02932462,0.029047104,0.03119655,0.028924473 +0.02814665,0.029950805,0.03147324,0.032071218,0.027423255,0.035451543,0.028824573,0.029990712,0.030143596,0.029638186,0.029570555,0.03163136,0.027836546,0.031823345,0.030531272,0.03083544,0.027090862,0.03556963,0.026167938,0.030581702,0.0284657,0.03182817,0.03386525,0.033583216,0.029266147,0.033167303,0.031999893,0.031316996,0.029996168,0.026834186,0.027982738,0.028263362,0.028678378 +0.033281386,0.030130476,0.030221825,0.02840587,0.027716415,0.030989772,0.02878914,0.026732758,0.031153036,0.02907955,0.033042736,0.027861213,0.030571226,0.03249253,0.034299064,0.028136875,0.02837106,0.03143917,0.03291027,0.033115998,0.03358187,0.03396475,0.031448998,0.031539276,0.032543357,0.029416593,0.025101459,0.031998575,0.024063027,0.029163437,0.027996125,0.027905693,0.03253653 +0.024855413,0.026666297,0.02936113,0.031087212,0.02884285,0.0313365,0.029449705,0.033253677,0.030825984,0.029471586,0.028742261,0.02912062,0.034331124,0.030908402,0.028541783,0.028688319,0.03659657,0.030675147,0.027317889,0.029583992,0.029643653,0.028368162,0.027667206,0.028800705,0.030276459,0.029693466,0.030268844,0.028184077,0.036950678,0.034286764,0.029671533,0.033815984,0.032715973 +0.025155025,0.026130434,0.026154922,0.02954241,0.028716099,0.030518187,0.031584375,0.031437334,0.030625204,0.027734924,0.028301684,0.027579084,0.033700705,0.030727208,0.03288186,0.03139454,0.032228857,0.026481455,0.030001791,0.028490013,0.027577322,0.029461626,0.031345062,0.028545208,0.031811137,0.032734197,0.032353926,0.031332225,0.03433076,0.031055674,0.0314804,0.03250627,0.036080144 +0.025650796,0.030116925,0.029914461,0.028343417,0.029756019,0.031495847,0.033737093,0.030940576,0.0293521,0.028435258,0.029297698,0.031161314,0.033550072,0.030386096,0.028744891,0.027141783,0.034294646,0.027434524,0.036070127,0.03000383,0.027885038,0.028399905,0.03164065,0.029249499,0.029878315,0.032681726,0.0320276,0.02796962,0.03277645,0.031302802,0.03109174,0.03045507,0.028814139 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv index c4d448a9..87c707bb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv @@ -1,5 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02861608,0.02783555,0.031125112,0.034070816,0.029551925,0.02920194,0.03443248,0.032701004,0.03236621,0.031025173,0.027565764,0.029052038,0.028101817,0.02655173,0.028142825,0.029290026,0.03396453,0.031744126,0.022819739,0.029417034,0.028412648,0.03002513,0.02473677,0.030448401,0.031774003,0.027520519,0.034440182,0.030517727,0.037965015,0.03373207,0.030928032,0.03187111,0.030052474 -0.029571708,0.027468769,0.028687142,0.030722428,0.030333482,0.028803239,0.034810323,0.032661207,0.028865434,0.028517043,0.03039022,0.029620783,0.030924972,0.029667925,0.033478405,0.02773338,0.03547341,0.02907416,0.032520335,0.033110958,0.03192609,0.030285636,0.027565196,0.028671881,0.031343654,0.024217593,0.030943919,0.029093694,0.028387735,0.03578851,0.029546076,0.029263297,0.0305314 -0.03309813,0.030376514,0.031082107,0.032114696,0.0303959,0.026847737,0.033983357,0.028783653,0.029035237,0.02931486,0.030565187,0.0282617,0.028926874,0.025849348,0.032453902,0.029420223,0.030807314,0.032321904,0.027733354,0.029939143,0.030494139,0.032511473,0.024984352,0.027675122,0.033265285,0.026638621,0.03590076,0.032994192,0.033117052,0.028538441,0.033555407,0.02946036,0.029553706 -0.032728393,0.028721752,0.02882793,0.027880307,0.028566426,0.030735191,0.027027326,0.027918302,0.033026785,0.029266033,0.028729456,0.028066441,0.03297658,0.031279273,0.031866837,0.028559575,0.032620937,0.02890799,0.033787943,0.03182001,0.03511367,0.030451855,0.03162444,0.027786268,0.03249884,0.029433765,0.025993556,0.032565445,0.026775395,0.031265218,0.031698216,0.030825824,0.030654097 +0.029685352,0.027744511,0.030044284,0.033951394,0.028732833,0.02994491,0.034402113,0.031651333,0.03374663,0.03049073,0.026828067,0.028434549,0.027637096,0.026393222,0.028637927,0.029101957,0.034120213,0.031485118,0.02227293,0.030039264,0.029686691,0.030844377,0.026529493,0.030811347,0.03335207,0.028110413,0.033255078,0.031356674,0.034736305,0.033637084,0.030754102,0.031082017,0.030499963 +0.030537475,0.027899254,0.029378591,0.0297096,0.031716786,0.02693288,0.03433145,0.033088665,0.02740053,0.02792913,0.030472768,0.028694458,0.03220934,0.029565549,0.032662544,0.027634623,0.03633886,0.030167157,0.033250082,0.03298737,0.033357035,0.029501474,0.026456432,0.027505033,0.030585667,0.023674536,0.03291113,0.028946836,0.028558468,0.035006773,0.030973727,0.02936918,0.03024652 +0.033833686,0.030788528,0.032240216,0.032861616,0.030781893,0.024426019,0.03269575,0.030321872,0.029727243,0.029050065,0.03131785,0.029049996,0.0312546,0.024382828,0.031556305,0.027793216,0.03238788,0.031475447,0.02939823,0.031028157,0.032263253,0.03098234,0.023543414,0.02798694,0.03215333,0.024038076,0.03364459,0.031184737,0.03487223,0.03188977,0.031967424,0.030930823,0.028171666 +0.032235544,0.028513635,0.027943423,0.026533665,0.027607339,0.030138258,0.029216288,0.027271325,0.03264726,0.02924624,0.028209869,0.027331444,0.032256123,0.03174167,0.03372429,0.028924001,0.032310896,0.027531,0.034024764,0.031696826,0.034188505,0.029953811,0.03298522,0.027146649,0.032747537,0.029807689,0.027179489,0.032454353,0.027391035,0.031187288,0.03338235,0.03002738,0.032444846 +0.028649943,0.02983568,0.029618803,0.028534783,0.033335116,0.030336117,0.028125117,0.032931272,0.028101504,0.029766463,0.030861683,0.032960948,0.032717913,0.033539113,0.029642688,0.031016078,0.034416024,0.03157327,0.03229032,0.0310232,0.03154139,0.029931167,0.03196622,0.030088337,0.0260188,0.026400523,0.031526826,0.027428826,0.026188847,0.03198211,0.028969765,0.030762099,0.027919022 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv index 4e8c02ca..08bba466 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv @@ -1,4 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03475592,0.03205031,0.029370865,0.02778089,0.027614197,0.030346887,0.03223454,0.026713328,0.03431964,0.030279862,0.027550474,0.027702024,0.028271765,0.029716752,0.031870633,0.03032701,0.029443298,0.03097386,0.02868564,0.035414,0.033398263,0.030973615,0.033969566,0.030356236,0.030772602,0.030513762,0.027257016,0.031204006,0.027268384,0.029877514,0.030222507,0.02795559,0.03080913 -0.027402356,0.027945139,0.02530322,0.029322542,0.029918933,0.029952679,0.028517315,0.03166655,0.031823326,0.02963542,0.026160058,0.028808074,0.03524668,0.028342647,0.03120509,0.0340563,0.03451171,0.02670396,0.02878434,0.029324375,0.028796544,0.029988907,0.029430298,0.027544383,0.031944152,0.031181917,0.030243525,0.031055551,0.032528445,0.03417648,0.030487247,0.03531119,0.032680634 -0.032010403,0.03287599,0.029452827,0.027987542,0.027845826,0.03130848,0.027573993,0.030086143,0.02799824,0.028927118,0.031524617,0.02894558,0.032493584,0.030415898,0.03303464,0.03172704,0.029664379,0.035562575,0.029617772,0.034429386,0.031013394,0.032945413,0.029464815,0.030695107,0.03063894,0.031342026,0.026874157,0.030781394,0.025375465,0.029842958,0.026907688,0.028956134,0.031680416 +0.0347061,0.032037724,0.029720293,0.026950317,0.027587326,0.029580832,0.033706103,0.02672045,0.0336072,0.0304948,0.027389366,0.027341463,0.027687615,0.029654475,0.03191975,0.030349722,0.029564764,0.03208654,0.028236479,0.035157055,0.033096552,0.031182028,0.03215033,0.02952733,0.0320103,0.031021614,0.028249703,0.031084804,0.02777836,0.02990182,0.031047527,0.027308928,0.031142361 +0.026352162,0.027308615,0.026728509,0.030381735,0.027763495,0.031036979,0.029111193,0.031803854,0.033297487,0.032028094,0.026604233,0.028412612,0.03335847,0.028347764,0.031116711,0.031521976,0.037724625,0.027063178,0.02756419,0.02944993,0.029611493,0.030874036,0.026384085,0.027145538,0.033017457,0.03050442,0.027128858,0.030084612,0.03357262,0.03557978,0.029888283,0.03474908,0.034483936 +0.031161968,0.030985577,0.028069872,0.029070867,0.02766797,0.031849217,0.028295552,0.029846,0.028211916,0.028096769,0.031157041,0.028553555,0.030611211,0.031491056,0.03540855,0.033342153,0.027244546,0.03506385,0.028400969,0.032600712,0.029665994,0.034185328,0.029610706,0.030778438,0.03282092,0.032744713,0.02873029,0.032103863,0.02512524,0.028251864,0.02723303,0.028246962,0.033373386 +0.025955163,0.027249493,0.029127032,0.030652158,0.03015496,0.03147695,0.028033996,0.034602076,0.030288333,0.029120373,0.028158711,0.029552525,0.03452732,0.030882543,0.02711481,0.029857256,0.03783241,0.03359149,0.025146987,0.029117852,0.029665263,0.028882185,0.026112327,0.028500061,0.030931538,0.02985717,0.031220669,0.028128866,0.03408741,0.03489066,0.02980184,0.03413182,0.03134773 From 14929b72a8dd55de337d093d2b0bd657985dca60 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 19:24:00 +0200 Subject: [PATCH 45/81] Enforce v2 --- src/sequifier/helpers.py | 6 +-- ...uifier_dataset_from_folder_parquet_lazy.py | 6 +-- src/sequifier/preprocess.py | 19 +--------- src/sequifier/train.py | 2 +- tests/integration/test_preprocessing.py | 1 + ...uifier_dataset_from_folder_parquet_lazy.py | 5 ++- ...t_sequifier_dataset_from_folder_pt_lazy.py | 2 +- tests/unit/test_helpers.py | 37 +++++++++++++++++-- tests/unit/test_infer.py | 4 ++ tests/unit/test_preprocess.py | 16 ++------ tests/unit/test_train.py | 4 +- 11 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index d228b456..a236b3b5 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -128,7 +128,7 @@ def sequence_layout_from_metadata( layout = SequenceLayout( context_length=metadata_context_length, max_lookahead=max_lookahead, - sequence_layout_version=int(metadata.get("sequence_layout_version", 1)), + sequence_layout_version=int(metadata["sequence_layout_version"]), ) if layout.sample_length != sample_length: raise ValueError( @@ -432,10 +432,8 @@ def build_valid_mask( @beartype -def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Optional[Tensor]: +def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Tensor: """Extracts one leftPadLength value per long-format subsequence.""" - if "leftPadLength" not in data.columns: - return None assert {"sequenceId", "subsequenceId"}.issubset(data.columns) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 980007ae..f716ae1c 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -284,7 +284,6 @@ def __iter__( # Process Long format data structures into PyTorch Tensors new_seq, new_tgt = {}, {} - expected_samples = len(worker_indices_np) # 2. Iterate over the expected config columns, not the dynamically found ones # Process inputs @@ -296,10 +295,7 @@ def __iter__( dtype=self.column_torch_types[col_name], ) else: - new_seq[col_name] = torch.zeros( - (expected_samples, train_seq_len), - dtype=self.column_torch_types[col_name], - ) + raise ValueError(f"Column not found in input data: {col_name}") # Process targets for col_name in self.config.target_columns: diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index cdbc1740..9bcb4253 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1202,24 +1202,9 @@ def load_precomputed_id_maps( min_val = min(user_values) if min_val == 2: - warnings.warn( - f"Precomputed map {file} uses legacy user IDs starting at 2; shifting user IDs by 1 to reserve the BERT mask ID.", - stacklevel=2, + raise ValueError( + f"Precomputed map {file} uses legacy user IDs starting at 2; shifting user IDs by 1 to reserve the BERT mask ID." ) - m = { - key: value + 1 - if key not in SPECIAL_TOKEN_LABELS - and value >= SPECIAL_TOKEN_IDS.mask - else value - for key, value in m.items() - } - user_values = [ - value - for key, value in m.items() - if key not in SPECIAL_TOKEN_LABELS - ] - min_val = min(user_values) - if min_val != SPECIAL_TOKEN_IDS.user_start: raise ValueError( f"minimum non-reserved value in map {file} is {min_val}, must be {SPECIAL_TOKEN_IDS.user_start}." diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 66d7ff88..794a896a 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -92,7 +92,7 @@ def _as_sequifier_batch(batch: Any) -> SequifierBatch: return SequifierBatch( inputs=data, targets=targets, - metadata=metadata or {}, + metadata=metadata, sequence_ids=sequence_ids, subsequence_ids=subsequence_ids, ) diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 3cabc262..9eeb3069 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -40,6 +40,7 @@ def test_metadata_config(metadata_configs): for file_name, metadata_config in metadata_configs.items(): print(f"Verifying metadata_config for: {file_name}") assert list(metadata_config.keys()) == expected_metadata_keys + assert metadata_config["sequence_layout_version"] == 2 assert metadata_config["special_token_ids"] == { "[unknown]": 0, "[other]": 1, diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 856b386b..24646c20 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -21,7 +21,7 @@ def _folder_metadata(total_samples, batch_files): "context_length": CONTEXT_LENGTH, "max_lookahead": MAX_LOOKAHEAD, "sample_length": SAMPLE_LENGTH, - "sequence_layout_version": 1, + "sequence_layout_version": 2, } @@ -54,6 +54,7 @@ def dataset_path(tmp_path): "sequenceId": pl.Int64, "subsequenceId": pl.Int64, "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, "inputCol": pl.String, "2": pl.Float64, "1": pl.Float64, @@ -66,7 +67,7 @@ def dataset_path(tmp_path): filename = f"file_{i}.parquet" rows = [] for s in range(10): - rows.append((s, 0, s * 2, "item", float(s), float(s + 1), float(s + 2))) + rows.append((s, 0, s * 2, 0, "item", float(s), float(s + 1), float(s + 2))) df = pl.DataFrame(rows, schema=schema, orient="row") df.write_parquet(data_dir / filename) diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 6cec3c92..879d855f 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -20,7 +20,7 @@ def _folder_metadata(total_samples, batch_files): "context_length": CONTEXT_LENGTH, "max_lookahead": MAX_LOOKAHEAD, "sample_length": SAMPLE_LENGTH, - "sequence_layout_version": 1, + "sequence_layout_version": 2, } diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index b36c1624..2b9f6b0e 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -74,6 +74,10 @@ def test_numpy_to_pytorch_shapes_and_shifting(): # Seq 1: [10, 20, 30, 40] (where 40 is t=0, 30 is t=1, etc.) data = pl.DataFrame( { + "sequenceId": [1, 2], + "subsequenceId": [0, 0], + "startItemPosition": [0, 0], + "leftPadLength": [0, 0], "inputCol": ["A", "A"], "3": [10, 11], "2": [20, 21], @@ -99,7 +103,14 @@ def test_numpy_to_pytorch_shapes_and_shifting(): # 1. Check Keys assert "A" in tensors assert "A_target" in tensors - assert metadata == {} + assert torch.equal( + metadata["attention_valid_mask"], + torch.tensor([[True, True, True], [True, True, True]]), + ) + assert torch.equal( + metadata["target_valid_mask"], + torch.tensor([[True, True, True], [True, True, True]]), + ) # 2. Check Input Tensor (Cols 3, 2, 1) # Row 0: [10, 20, 30] @@ -123,7 +134,17 @@ def test_numpy_to_pytorch_dtypes(): # (Polars columns usually have a single type). # Case 1: Integer - data_int = pl.DataFrame({"inputCol": ["int_col"], "1": [10], "0": [20]}) + data_int = pl.DataFrame( + { + "sequenceId": [1], + "subsequenceId": [0], + "startItemPosition": [0], + "leftPadLength": [0], + "inputCol": ["int_col"], + "1": [10], + "0": [20], + } + ) tensors_int, _ = numpy_to_pytorch( data_int, {"int_col": torch.int64}, @@ -136,7 +157,17 @@ def test_numpy_to_pytorch_dtypes(): assert tensors_int["int_col"].dtype == torch.int64 # Case 2: Float - data_float = pl.DataFrame({"inputCol": ["float_col"], "1": [10.5], "0": [20.5]}) + data_float = pl.DataFrame( + { + "sequenceId": [1], + "subsequenceId": [0], + "startItemPosition": [0], + "leftPadLength": [0], + "inputCol": ["float_col"], + "1": [10.5], + "0": [20.5], + } + ) tensors_float, _ = numpy_to_pytorch( data_float, {"float_col": torch.float32}, diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 568a434e..2d16fc81 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -249,6 +249,10 @@ def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_p json.dumps( { "split_paths": [str(data_path)], + "context_length": 3, + "max_lookahead": 1, + "sample_length": 4, + "sequence_layout_version": 2, "column_types": {"target_col": "int64"}, "id_maps": {"target_col": {"A": 3}}, "selected_columns_statistics": {}, diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index f6c13e17..bbafeda5 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -218,6 +218,10 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): "selected_columns_statistics": { "itemValue": {"mean": 60.0, "std": 10.0} }, + "context_length": 2, + "max_lookahead": 1, + "sample_length": 3, + "sequence_layout_version": 2, "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, } ) @@ -656,15 +660,3 @@ def test_load_precomputed_id_maps_allows_reserved_entries(tmp_path): assert id_maps["itemId"]["[mask]"] == 2 assert id_maps["itemId"]["a"] == 3 - - -def test_load_precomputed_id_maps_migrates_legacy_user_ids(tmp_path): - project_root = tmp_path / "project" - id_map_dir = project_root / "configs" / "id_maps" - id_map_dir.mkdir(parents=True) - (id_map_dir / "itemId.json").write_text(json.dumps({"a": 2, "b": 3})) - - with pytest.warns(UserWarning, match="legacy user IDs"): - id_maps = load_precomputed_id_maps(str(project_root), ["itemId"]) - - assert id_maps["itemId"] == {"a": 3, "b": 4} diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 875e9109..ea5e3863 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -255,7 +255,7 @@ def test_load_train_config_rejects_mismatched_metadata_special_token_ids( "context_length": config_values["context_length"], "max_lookahead": 1, "sample_length": config_values["context_length"] + 1, - "sequence_layout_version": 1, + "sequence_layout_version": 2, "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -288,7 +288,7 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( "context_length": config_values["context_length"], "max_lookahead": 1, "sample_length": config_values["context_length"] + 1, - "sequence_layout_version": 1, + "sequence_layout_version": 2, "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], From ead716e3213ac8749840d891b828a2907da3f6cc Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 23:31:28 +0200 Subject: [PATCH 46/81] Make sequence_layout_version required --- .../config/hyperparameter_search_config.py | 5 ++ src/sequifier/config/infer_config.py | 2 +- src/sequifier/config/train_config.py | 2 +- src/sequifier/helpers.py | 4 +- src/sequifier/io/batch.py | 18 ++++--- src/sequifier/preprocess.py | 28 +++++++---- src/sequifier/train.py | 47 +++++++++---------- .../integration/test_hyperparameter_search.py | 1 + tests/integration/test_onnx_export.py | 2 + tests/unit/io/test_batch.py | 32 +++++++++++++ ...uifier_dataset_from_folder_parquet_lazy.py | 11 +++-- ...t_sequifier_dataset_from_folder_pt_lazy.py | 10 ++-- tests/unit/test_infer.py | 5 ++ tests/unit/test_preprocess.py | 4 +- tests/unit/test_train.py | 1 + 15 files changed, 118 insertions(+), 54 deletions(-) create mode 100644 tests/unit/io/test_batch.py diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 6e0282c0..8f1c5145 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -18,6 +18,7 @@ TrainModel, ) from sequifier.helpers import normalize_path, try_catch_excess_keys +from sequifier.preprocess import CURRENT_SEQUENCE_LAYOUT_VERSION from sequifier.special_tokens import validate_special_token_ids @@ -201,6 +202,9 @@ def load_hyperparameter_search_config( config_values["n_classes"] = config_values.get( "n_classes", metadata_config["n_classes"] ) + config_values["sequence_layout_version"] = int( + metadata_config["sequence_layout_version"] + ) config_values["training_data_path"] = normalize_path( config_values.get("training_data_path", metadata_config["split_paths"][0]), config_values["project_root"], @@ -854,6 +858,7 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: context_length=context_length, max_lookahead=self.max_lookahead, sample_length=sample_length, + sequence_layout_version=CURRENT_SEQUENCE_LAYOUT_VERSION, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 99f1be90..174cdc10 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -157,7 +157,7 @@ class InfererModel(BaseModel): context_length: int max_lookahead: int = Field(default=1, ge=0) sample_length: int - sequence_layout_version: int = 1 + sequence_layout_version: int prediction_length: Optional[int] = None inference_batch_size: int diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index f3621360..e1c55b27 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -593,7 +593,7 @@ class TrainModel(BaseModel): context_length: int max_lookahead: int = Field(default=1, ge=0) sample_length: int - sequence_layout_version: int = 1 + sequence_layout_version: int n_classes: dict[str, int] inference_batch_size: int seed: int diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index a236b3b5..6d428721 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -52,8 +52,8 @@ @dataclass(frozen=True) class SequenceLayout: context_length: int - max_lookahead: int = 1 - sequence_layout_version: int = 2 + max_lookahead: int + sequence_layout_version: int def __post_init__(self) -> None: if self.context_length < 1: diff --git a/src/sequifier/io/batch.py b/src/sequifier/io/batch.py index 36906103..597a4db7 100644 --- a/src/sequifier/io/batch.py +++ b/src/sequifier/io/batch.py @@ -1,8 +1,10 @@ from dataclasses import dataclass -from typing import Iterator, Optional +from typing import Optional import torch +REQUIRED_METADATA_KEYS = frozenset({"attention_valid_mask", "target_valid_mask"}) + @dataclass(frozen=True) class SequifierBatch: @@ -12,9 +14,11 @@ class SequifierBatch: sequence_ids: Optional[torch.Tensor] = None subsequence_ids: Optional[torch.Tensor] = None - def __iter__(self) -> Iterator[object]: - yield self.inputs - yield self.targets - yield self.metadata - yield self.sequence_ids - yield self.subsequence_ids + def __post_init__(self) -> None: + metadata_keys = self.metadata.keys() if self.metadata is not None else set() + missing_keys = REQUIRED_METADATA_KEYS - metadata_keys + if missing_keys: + missing = ", ".join(sorted(missing_keys)) + raise ValueError( + f"SequifierBatch metadata is missing required keys: {missing}" + ) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 9bcb4253..0e65b0a7 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -31,6 +31,7 @@ INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") REAL_MASK_VALUE = 0.0 +CURRENT_SEQUENCE_LAYOUT_VERSION = 2 @beartype @@ -144,7 +145,11 @@ def __init__( np.random.seed(seed) self.n_cores = n_cores or multiprocessing.cpu_count() self.continue_preprocessing = continue_preprocessing - self.layout = SequenceLayout(context_length, max_lookahead) + self.layout = SequenceLayout( + context_length, + max_lookahead, + sequence_layout_version=CURRENT_SEQUENCE_LAYOUT_VERSION, + ) self._setup_directories() if selected_columns is not None: @@ -1020,20 +1025,23 @@ def _selected_columns_with_optional_mask( @beartype -def _mask_column_expr(mask_dtype: Any, mask_column: str) -> pl.Expr: +def _validate_and_create_mask_column_expr( + series: Any, mask_dtype: Any, mask_column: str +) -> pl.Expr: mask_col = pl.col(mask_column) if mask_dtype == pl.Boolean: return mask_col if mask_dtype.is_numeric(): + if not series.drop_nulls().is_in([0, 1]).all(): + raise ValueError( + f"Mask column {mask_column} contains inadmissible values not in (0, 1)" + ) return mask_col == 1 - if mask_dtype in (pl.String, pl.Utf8): - return mask_col.str.to_lowercase().is_in(["1"]) - raise ValueError( - f"Column {mask_column} must be boolean, numeric, or string, got {mask_dtype}" + f"Column {mask_column} must be boolean or numeric, got {mask_dtype}" ) @@ -1049,7 +1057,9 @@ def _apply_mask_column( if mask_column not in data.columns: raise ValueError(f"mask_column '{mask_column}' not found in input data") - mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) + mask_expr = _validate_and_create_mask_column_expr( + data[mask_column], data.schema[mask_column], mask_column + ) updates = [] for col in data_columns: mask_value = ( @@ -1273,7 +1283,9 @@ def _get_column_statistics( string, integer, nor float). """ if mask_column is not None and mask_column in data.columns: - mask_expr = _mask_column_expr(data.schema[mask_column], mask_column) + mask_expr = _validate_and_create_mask_column_expr( + data[mask_column], data.schema[mask_column], mask_column + ) data = data.filter(~mask_expr) if data.is_empty(): diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 794a896a..efa78380 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -84,20 +84,6 @@ from sequifier.special_tokens import SPECIAL_TOKEN_IDS # noqa: E402 -def _as_sequifier_batch(batch: Any) -> SequifierBatch: - if isinstance(batch, SequifierBatch): - return batch - - data, targets, metadata, sequence_ids, subsequence_ids = batch - return SequifierBatch( - inputs=data, - targets=targets, - metadata=metadata, - sequence_ids=sequence_ids, - subsequence_ids=subsequence_ids, - ) - - def cleanup(): """Cleans up the distributed training environment.""" dist.destroy_process_group() @@ -1538,8 +1524,12 @@ def _train_epoch( model_to_call.train() - for batch_count, raw_batch in enumerate(train_loader): - batch = _as_sequifier_batch(raw_batch) + for batch_count, batch in enumerate(train_loader): + if not isinstance(batch, SequifierBatch): + raise TypeError( + "Training DataLoader must yield SequifierBatch objects, " + f"got {type(batch).__name__}." + ) if batch_count >= start_batch: data = batch.inputs targets = batch.targets @@ -1555,8 +1545,7 @@ def _train_epoch( if k in self.target_column_types } metadata = { - k: v.to(self.device, non_blocking=True) - for k, v in (metadata or {}).items() + k: v.to(self.device, non_blocking=True) for k, v in metadata.items() } if self.hparams.training_spec.training_objective == "bert": data, targets, metadata = apply_bert_masking( @@ -1872,8 +1861,12 @@ def _evaluate( model_to_call.eval() with torch.no_grad(): - for batch_idx, raw_batch in enumerate(valid_loader): - batch = _as_sequifier_batch(raw_batch) + for batch_idx, batch in enumerate(valid_loader): + if not isinstance(batch, SequifierBatch): + raise TypeError( + "Validation DataLoader must yield SequifierBatch objects, " + f"got {type(batch).__name__}." + ) data = batch.inputs targets = batch.targets metadata = batch.metadata @@ -1889,8 +1882,7 @@ def _evaluate( if k in self.target_column_types } metadata = { - k: v.to(self.device, non_blocking=True) - for k, v in (metadata or {}).items() + k: v.to(self.device, non_blocking=True) for k, v in metadata.items() } if self.hparams.training_spec.training_objective == "bert": data, targets, metadata = apply_bert_masking( @@ -1980,8 +1972,12 @@ def _evaluate( baseline_losses_local_collect = {col: [] for col in self.target_columns} # Iterate over the sharded validation loader - for batch_idx, raw_batch in enumerate(valid_loader): - batch = _as_sequifier_batch(raw_batch) + for batch_idx, batch in enumerate(valid_loader): + if not isinstance(batch, SequifierBatch): + raise TypeError( + "Validation DataLoader must yield SequifierBatch objects, " + f"got {type(batch).__name__}." + ) data = batch.inputs targets = batch.targets metadata = batch.metadata @@ -1996,8 +1992,7 @@ def _evaluate( if k in self.target_column_types } metadata = { - k: v.to(self.device, non_blocking=True) - for k, v in (metadata or {}).items() + k: v.to(self.device, non_blocking=True) for k, v in metadata.items() } if self.hparams.training_spec.training_objective == "bert": diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 6cbfbbbf..0869ac35 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -41,6 +41,7 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): "test-data-categorical-1-lookahead-0.json" ) assert generated_config["max_lookahead"] == 0 + assert generated_config["sequence_layout_version"] == 2 assert generated_config["sample_length"] == generated_config["context_length"] diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index cb663dc2..25e8639d 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -29,6 +29,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): n_classes={"cat_col": 6}, context_length=context_length, sample_length=5, + sequence_layout_version=2, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -129,6 +130,7 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): n_classes={"cat2": 7, "cat10": 6}, context_length=context_length, sample_length=5, + sequence_layout_version=2, inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, diff --git a/tests/unit/io/test_batch.py b/tests/unit/io/test_batch.py new file mode 100644 index 00000000..e8b24ff9 --- /dev/null +++ b/tests/unit/io/test_batch.py @@ -0,0 +1,32 @@ +import pytest +import torch + +from sequifier.io.batch import SequifierBatch + + +def _metadata(): + valid_mask = torch.ones(1, 2, dtype=torch.bool) + return { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + +def test_sequifier_batch_requires_metadata_masks(): + with pytest.raises(ValueError, match="target_valid_mask"): + SequifierBatch( + inputs={"item": torch.ones(1, 2)}, + targets={"item": torch.ones(1, 2)}, + metadata={"attention_valid_mask": torch.ones(1, 2, dtype=torch.bool)}, + ) + + +def test_sequifier_batch_does_not_support_tuple_unpacking(): + batch = SequifierBatch( + inputs={"item": torch.ones(1, 2)}, + targets={"item": torch.ones(1, 2)}, + metadata=_metadata(), + ) + + with pytest.raises(TypeError): + tuple(batch) # type: ignore diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 24646c20..f4696079 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -101,7 +101,9 @@ def test_iteration_yields_correct_batches(mock_config, dataset_path): assert len(batches) == 8 # 40 samples / batch_size 5 # Check structural integrity of first batch - seq_batch, tgt_batch, _, _, _ = batches[0] + batch = batches[0] + seq_batch = batch.inputs + tgt_batch = batch.targets assert "item" in seq_batch assert "item" in tgt_batch assert isinstance(seq_batch["item"], torch.Tensor) @@ -142,7 +144,8 @@ def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): dataset = SequifierDatasetFromFolderParquetLazy( str(data_dir), mock_config, shuffle=False ) - seq_batch, tgt_batch, metadata_batch, _, _ = next(iter(dataset)) + batch = next(iter(dataset)) + metadata_batch = batch.metadata assert torch.equal( metadata_batch["attention_valid_mask"], @@ -185,8 +188,8 @@ def test_distributed_sharding(mock_ws, mock_rank, mock_init, mock_config, datase assert len(batches) == 4 # Verify input mapping structures - for seq_batch, _, _, _, _ in batches: - assert seq_batch["item"].shape[0] == 5 + for batch in batches: + assert batch.inputs["item"].shape[0] == 5 def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 879d855f..4fb599cc 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -74,13 +74,14 @@ def mock_torch_load(): def side_effect(path, map_location, weights_only): dummy_seq = {"col1": torch.ones((10, 6)), "tgt1": torch.zeros((10, 6))} + left_pad_lengths = torch.zeros(10, dtype=torch.int64) return ( dummy_seq, None, None, None, - None, + left_pad_lengths, ) mock_load.side_effect = side_effect @@ -114,7 +115,9 @@ def test_iteration_yields_correct_batches(mock_config, dataset_path, mock_torch_ assert mock_torch_load.call_count == 4 # Verify the structure of a yielded batch - seq_dict, tgt_dict, _, _, _ = batches[0] + batch = batches[0] + seq_dict = batch.inputs + tgt_dict = batch.targets assert "col1" in seq_dict, f"{seq_dict = }" @@ -145,7 +148,8 @@ def side_effect(path, map_location, weights_only): dataset = SequifierDatasetFromFolderPtLazy( dataset_path, mock_config, shuffle=False ) - seq_dict, tgt_dict, metadata_dict, _, _ = next(iter(dataset)) + batch = next(iter(dataset)) + metadata_dict = batch.metadata assert torch.equal( metadata_dict["attention_valid_mask"], diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 2d16fc81..321446a5 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -175,6 +175,7 @@ def test_infer_config_defaults_bert_prediction_length_to_context_length(): prediction_length=None, context_length=3, sample_length=4, + sequence_layout_version=2, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -203,6 +204,7 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): prediction_length=None, context_length=3, sample_length=4, + sequence_layout_version=2, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -232,6 +234,7 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): prediction_length=1, context_length=3, sample_length=4, + sequence_layout_version=2, inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -397,6 +400,7 @@ def _bert_inference_config(tmp_path, model_type="generative"): prediction_length=None, context_length=3, sample_length=4, + sequence_layout_version=2, inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -613,6 +617,7 @@ def ar_config(): prediction_length=1, context_length=3, sample_length=4, + sequence_layout_version=2, inference_batch_size=2, output_probabilities=False, map_to_id=False, # Set to False to bypass ID mapping requirements diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index bbafeda5..a90ae1c8 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -127,7 +127,7 @@ def test_extract_sequences_persists_left_pad_length_metadata(): sequences = extract_sequences( data, schema, - layout=SequenceLayout(context_length=4), + layout=SequenceLayout(4, 1, 2), stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -186,7 +186,7 @@ def test_apply_mask_column_replaces_values_and_drops_column(): { "cat_col": [3, 4, 5, 6], "num_col": [-1.0, 2.5, 3.5, 4.5], - RESERVED_MASK_COLUMN: ["0", "1", "0", "1"], + RESERVED_MASK_COLUMN: [0, 1, 0, 1], } ) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index ea5e3863..bcc8b00e 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -138,6 +138,7 @@ def model_config(tmp_path): n_classes={"cat_col": 5}, # 0 + 4 classes context_length=10, sample_length=11, + sequence_layout_version=2, inference_batch_size=4, seed=42, export_generative_model=True, From ac1bd3d0d40266d8b3ce1be2c92e4ab20018304f Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Fri, 12 Jun 2026 23:57:22 +0200 Subject: [PATCH 47/81] Small changes --- src/sequifier/config/hyperparameter_search_config.py | 2 +- src/sequifier/config/infer_config.py | 6 ++---- src/sequifier/config/train_config.py | 6 ++---- src/sequifier/helpers.py | 10 +--------- src/sequifier/infer.py | 2 +- .../io/sequifier_dataset_from_folder_parquet.py | 2 +- .../io/sequifier_dataset_from_folder_parquet_lazy.py | 2 +- src/sequifier/io/sequifier_dataset_from_folder_pt.py | 2 +- .../io/sequifier_dataset_from_folder_pt_lazy.py | 2 +- src/sequifier/preprocess.py | 4 ++-- src/sequifier/special_tokens.py | 4 ++-- 11 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 8f1c5145..411f6116 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -167,7 +167,7 @@ def load_hyperparameter_search_config( metadata_config = json.loads(f.read()) validate_special_token_ids( - metadata_config.get("special_token_ids"), + metadata_config["special_token_ids"], source=f"metadata config '{metadata_config_path}'", ) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 174cdc10..7b7e8c24 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -52,12 +52,10 @@ def load_inferer_config( metadata_config = json.load(f) validate_special_token_ids( - metadata_config.get("special_token_ids"), + metadata_config["special_token_ids"], source=f"metadata config '{metadata_config_path}'", ) - sequence_layout = sequence_layout_from_metadata( - metadata_config, config_values["context_length"] - ) + sequence_layout = sequence_layout_from_metadata(metadata_config) config_values["max_lookahead"] = sequence_layout.max_lookahead config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index e1c55b27..d079002d 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -62,9 +62,7 @@ def load_train_config( ) as f: metadata_config = json.loads(f.read()) - sequence_layout = sequence_layout_from_metadata( - metadata_config, config_values["context_length"] - ) + sequence_layout = sequence_layout_from_metadata(metadata_config) config_values["max_lookahead"] = sequence_layout.max_lookahead config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( @@ -115,7 +113,7 @@ def load_train_config( config_values["id_maps"] = metadata_config["id_maps"] config_values["special_token_ids"] = validate_special_token_ids( - metadata_config.get("special_token_ids"), + metadata_config["special_token_ids"], source=f"metadata config '{metadata_config_path}'", ) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 6d428721..792bbdc9 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -42,12 +42,6 @@ "uint8": torch.int16, } -EXPLICIT_PADDING_MASK_FALLBACK_WARNING = ( - "Explicit padding mask not found. Falling back to value-based padding " - "inference for real-valued data; leading 0.0 values may be treated as " - "padding. Re-run preprocessing to generate explicit masks." -) - @dataclass(frozen=True) class SequenceLayout: @@ -111,9 +105,7 @@ def validate_stored_window_width(tensor: Tensor, sample_length: int) -> None: @beartype -def sequence_layout_from_metadata( - metadata: dict, context_length: int -) -> SequenceLayout: +def sequence_layout_from_metadata(metadata: dict) -> SequenceLayout: metadata_context_length = int(metadata["context_length"]) max_lookahead = int(metadata["max_lookahead"]) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 8abdef3d..eae7cb56 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -69,7 +69,7 @@ def infer(args: Any, args_config: dict[str, Any]) -> None: ) as f: metadata_config = json.loads(f.read()) validate_special_token_ids( - metadata_config.get("special_token_ids"), + metadata_config["special_token_ids"], source=f"metadata config '{config.metadata_config_path}'", ) id_maps = metadata_config["id_maps"] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index dc1965b7..27dc8caa 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -49,7 +49,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + folder_layout = sequence_layout_from_metadata(metadata) if folder_layout.sample_length != config.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index f716ae1c..3628903f 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -65,7 +65,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + folder_layout = sequence_layout_from_metadata(metadata) if folder_layout.sample_length != config.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index de193564..17195b4f 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -47,7 +47,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + folder_layout = sequence_layout_from_metadata(metadata) if folder_layout.sample_length != config.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index cc629186..7b36b912 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -63,7 +63,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata, config.context_length) + folder_layout = sequence_layout_from_metadata(metadata) if folder_layout.sample_length != config.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 0e65b0a7..8232688a 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -202,7 +202,7 @@ def __init__( preexisting_metadata = json.load(f) validate_special_token_ids( - preexisting_metadata.get("special_token_ids"), + preexisting_metadata["special_token_ids"], source=f"metadata config '{self.metadata_config_path}'", ) id_maps = preexisting_metadata["id_maps"] @@ -302,7 +302,7 @@ def __init__( preexisting_metadata = json.load(f) validate_special_token_ids( - preexisting_metadata.get("special_token_ids"), + preexisting_metadata["special_token_ids"], source=f"metadata config '{self.metadata_config_path}'", ) id_maps = preexisting_metadata["id_maps"] diff --git a/src/sequifier/special_tokens.py b/src/sequifier/special_tokens.py index c92e23d8..d0224d1f 100644 --- a/src/sequifier/special_tokens.py +++ b/src/sequifier/special_tokens.py @@ -32,12 +32,12 @@ def ids_by_label(self) -> dict[str, int]: def validate_special_token_ids( - special_token_ids: Mapping[str, Any] | None, + special_token_ids: Mapping[str, Any], source: str = "metadata", ) -> dict[str, int]: """Validate persisted special token IDs against runtime constants.""" expected = SPECIAL_TOKEN_IDS.ids_by_label - assert special_token_ids is not None + try: normalized = {str(label): int(id_) for label, id_ in special_token_ids.items()} except (AttributeError, TypeError, ValueError) as exc: From 20fbb297eb4eebfd060c851c18c56229badfa7d2 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 00:00:43 +0200 Subject: [PATCH 48/81] Fail on wrong sequence_layout_version --- src/sequifier/config/infer_config.py | 5 +++++ src/sequifier/config/train_config.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 7b7e8c24..230fbd73 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -56,6 +56,11 @@ def load_inferer_config( source=f"metadata config '{metadata_config_path}'", ) sequence_layout = sequence_layout_from_metadata(metadata_config) + if sequence_layout.sequence_layout_version != 2: + raise ValueError( + "Inference requires metadata sequence_layout_version=2, " + f"got {sequence_layout.sequence_layout_version}." + ) config_values["max_lookahead"] = sequence_layout.max_lookahead config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index d079002d..a01e7635 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -63,6 +63,11 @@ def load_train_config( metadata_config = json.loads(f.read()) sequence_layout = sequence_layout_from_metadata(metadata_config) + if sequence_layout.sequence_layout_version != 2: + raise ValueError( + "Training requires metadata sequence_layout_version=2, " + f"got {sequence_layout.sequence_layout_version}." + ) config_values["max_lookahead"] = sequence_layout.max_lookahead config_values["sample_length"] = sequence_layout.sample_length config_values["sequence_layout_version"] = ( From 5b57073dac12adbb47ef409a3b274a888b1e9a71 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 10:51:09 +0200 Subject: [PATCH 49/81] Remove vestiges of v1 processing --- .../config/hyperparameter_search_config.py | 37 ++++++++++++++++--- src/sequifier/helpers.py | 23 ++++++------ src/sequifier/infer.py | 33 ++++++++--------- .../sequifier_dataset_from_folder_parquet.py | 7 +--- ...uifier_dataset_from_folder_parquet_lazy.py | 16 ++++---- .../io/sequifier_dataset_from_folder_pt.py | 10 +---- .../sequifier_dataset_from_folder_pt_lazy.py | 16 ++++---- 7 files changed, 76 insertions(+), 66 deletions(-) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 411f6116..d0496cac 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -17,8 +17,11 @@ TrainingSpecModel, TrainModel, ) -from sequifier.helpers import normalize_path, try_catch_excess_keys -from sequifier.preprocess import CURRENT_SEQUENCE_LAYOUT_VERSION +from sequifier.helpers import ( + normalize_path, + sequence_layout_from_metadata, + try_catch_excess_keys, +) from sequifier.special_tokens import validate_special_token_ids @@ -202,9 +205,20 @@ def load_hyperparameter_search_config( config_values["n_classes"] = config_values.get( "n_classes", metadata_config["n_classes"] ) - config_values["sequence_layout_version"] = int( - metadata_config["sequence_layout_version"] + + sequence_layout = sequence_layout_from_metadata(metadata_config) + if sequence_layout.sequence_layout_version != 2: + raise ValueError( + "Hyperparameter search requires metadata sequence_layout_version=2, " + f"got {sequence_layout.sequence_layout_version}." + ) + + config_values["max_lookahead"] = sequence_layout.max_lookahead + config_values["sample_length"] = sequence_layout.sample_length + config_values["sequence_layout_version"] = ( + sequence_layout.sequence_layout_version ) + config_values["training_data_path"] = normalize_path( config_values.get("training_data_path", metadata_config["split_paths"][0]), config_values["project_root"], @@ -708,6 +722,8 @@ class HyperparameterSearchConfig(BaseModel): context_length: list[int] max_lookahead: int = Field(default=1, ge=0) + sample_length: int + sequence_layout_version: int n_classes: dict[str, int] inference_batch_size: int @@ -727,6 +743,17 @@ class HyperparameterSearchConfig(BaseModel): override_input: bool = False + @model_validator(mode="after") + def validate_sequence_layout(self): + for cl in self.context_length: + if cl + self.max_lookahead > self.sample_length: + raise ValueError( + f"Sample length mismatch: context_length ({cl}) + max_lookahead " + f"({self.max_lookahead}) > stored sample_length ({self.sample_length}). " + "Model inputs cannot exceed the preprocessed sequence length." + ) + return self + @model_validator(mode="after") def validate_prune_trials(self): if self.prune_trials and self.training_hyperparameter_sampling.distributed: @@ -858,7 +885,7 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: context_length=context_length, max_lookahead=self.max_lookahead, sample_length=sample_length, - sequence_layout_version=CURRENT_SEQUENCE_LAYOUT_VERSION, + sequence_layout_version=self.sequence_layout_version, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 792bbdc9..c9bf4bce 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -392,16 +392,13 @@ def numpy_to_pytorch( unified_tensors[f"{col_name}_target"] = target_tensor left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) - if left_pad_lengths is not None: - metadata = generate_padding_masks( - left_pad_lengths, - context_length, - sample_length, - data_offset, - target_offset, - ) - else: - metadata = {} + metadata = generate_padding_masks( + left_pad_lengths, + context_length, + sample_length, + data_offset, + target_offset, + ) return unified_tensors, metadata @@ -426,7 +423,11 @@ def build_valid_mask( @beartype def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Tensor: """Extracts one leftPadLength value per long-format subsequence.""" - + if "leftPadLength" not in data.columns: + raise ValueError( + "Dataset layout v1 does not contain explicit padding metadata. " + "Please re-run preprocessing." + ) assert {"sequenceId", "subsequenceId"}.issubset(data.columns) lengths = ( diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index eae7cb56..b861dabd 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -496,15 +496,14 @@ def infer_embedding( ) = data for tensor in sequences_dict.values(): validate_stored_window_width(tensor, config.sample_length) - metadata = {} - if left_pad_lengths_tensor is not None: - metadata = generate_padding_masks( - left_pad_lengths_tensor, - config.context_length, - config.sample_length, - data_offset=config.data_offset, - target_offset=config.target_offset, - ) + + metadata = generate_padding_masks( + left_pad_lengths_tensor, + config.context_length, + config.sample_length, + data_offset=config.data_offset, + target_offset=config.target_offset, + ) embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata ) @@ -757,15 +756,13 @@ def infer_generative( if key in config.input_columns } - metadata = {} - if left_pad_lengths_tensor is not None: - metadata = generate_padding_masks( - left_pad_lengths_tensor, - config.context_length, - config.sample_length, - data_offset=config.data_offset, - target_offset=config.target_offset, - ) + metadata = generate_padding_masks( + left_pad_lengths_tensor, + config.context_length, + config.sample_length, + data_offset=config.data_offset, + target_offset=config.target_offset, + ) probs, preds = get_probs_preds_from_dict( config, inferer, sequences_dict, metadata, total_steps diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 27dc8caa..373e0512 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -122,12 +122,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col, tensors in all_targets.items() if tensors } - self.left_pad_lengths = ( - torch.cat(all_left_pad_lengths) - if all_left_pad_lengths - and len(all_left_pad_lengths) == len(metadata["batch_files"]) - else None - ) + self.left_pad_lengths = torch.cat(all_left_pad_lengths) # Step 3: Prevent serialization duplications across worker forks via shared memory flags for tensor in self.sequences.values(): diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 3628903f..0546c1d7 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -310,15 +310,13 @@ def __iter__( f"Missing required column {col_name} in Parquet partition" ) - new_meta = {} - if left_pad_lengths is not None: - new_meta = generate_padding_masks( - left_pad_lengths[worker_indices], - train_seq_len, - self.config.sample_length, - self.config.training_spec.data_offset, - self.config.training_spec.target_offset, - ) + new_meta = generate_padding_masks( + left_pad_lengths[worker_indices], + train_seq_len, + self.config.sample_length, + self.config.training_spec.data_offset, + self.config.training_spec.target_offset, + ) del df diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 17195b4f..9605020e 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -81,18 +81,12 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): sequences_batch[col], config.sample_length ) all_sequences[col].append(sequences_batch[col]) - if left_pad_lengths_batch is not None: - all_left_pad_lengths.append(left_pad_lengths_batch) + all_left_pad_lengths.append(left_pad_lengths_batch) self.sequences: Dict[str, torch.Tensor] = { col: torch.cat(tensors) for col, tensors in all_sequences.items() if tensors } - self.left_pad_lengths = ( - torch.cat(all_left_pad_lengths) - if all_left_pad_lengths - and len(all_left_pad_lengths) == len(metadata["batch_files"]) - else None - ) + self.left_pad_lengths = torch.cat(all_left_pad_lengths) for tensor in self.sequences.values(): tensor.share_memory_() if self.left_pad_lengths is not None: diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 7b36b912..c3b787d2 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -278,15 +278,13 @@ def __iter__( if k in self.config.target_columns } - new_meta = {} - if left_pad_lengths_batch is not None: - new_meta = generate_padding_masks( - left_pad_lengths_batch[worker_indices], - train_seq_len, - self.config.sample_length, - data_offset, - target_offset, - ) + new_meta = generate_padding_masks( + left_pad_lengths_batch[worker_indices], + train_seq_len, + self.config.sample_length, + data_offset, + target_offset, + ) # Free the large file immediately to keep RAM down del sequences_batch, left_pad_lengths_batch From 30129880b69fc7f7ad65d07ca5e861918b38a9e5 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 12:26:07 +0200 Subject: [PATCH 50/81] Access sequence layout directly --- .vscode/settings.json | 4 + .../config/hyperparameter_search_config.py | 20 +- src/sequifier/config/infer_config.py | 46 +- src/sequifier/config/train_config.py | 56 +- src/sequifier/helpers.py | 19 +- src/sequifier/infer.py | 93 +- .../io/sequifier_dataset_from_file.py | 10 +- .../sequifier_dataset_from_folder_parquet.py | 23 +- ...uifier_dataset_from_folder_parquet_lazy.py | 21 +- .../io/sequifier_dataset_from_folder_pt.py | 16 +- .../sequifier_dataset_from_folder_pt_lazy.py | 16 +- src/sequifier/io/yaml.py | 2 + src/sequifier/train.py | 9 +- .../integration/test_hyperparameter_search.py | 5 +- tests/integration/test_onnx_export.py | 19 +- ...uifier_dataset_from_folder_parquet_lazy.py | 11 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 11 +- .../unit/test_hyperparameter_search_config.py | 3 +- tests/unit/test_infer.py | 33 +- tests/unit/test_train.py | 48 +- uv.lock | 2269 +++++++++++++++++ 21 files changed, 2509 insertions(+), 225 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 uv.lock diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..c820b9a3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python-envs.defaultEnvManager": "ms-python.python:conda", + "python-envs.defaultPackageManager": "ms-python.python:conda" +} diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index d0496cac..c2b6c5ff 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -18,6 +18,7 @@ TrainModel, ) from sequifier.helpers import ( + SequenceLayout, normalize_path, sequence_layout_from_metadata, try_catch_excess_keys, @@ -433,9 +434,7 @@ def validate_scheduler_config(cls, v, info_dict): ) return v - def sample_trial( - self, trial: Any, max_lookahead: int, sample_length: int - ) -> TrainingSpecModel: + def sample_trial(self, trial: Any) -> TrainingSpecModel: """Samples training hyperparameters using an Optuna trial. This method leverages the provided Optuna trial to suggest values for @@ -518,8 +517,6 @@ def sample_trial( fsdp_cpu_offload=self.fsdp_cpu_offload, torch_compile=self.torch_compile, float32_matmul_precision=self.float32_matmul_precision, - max_lookahead=max_lookahead, - sample_length=sample_length, ) @@ -859,12 +856,12 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: context_length = trial.suggest_categorical( "context_length", self.context_length ) - sample_length = context_length + self.max_lookahead - training_spec = self.training_hyperparameter_sampling.sample_trial( - trial, + layout = SequenceLayout( + context_length=context_length, max_lookahead=self.max_lookahead, - sample_length=sample_length, + sequence_layout_version=self.sequence_layout_version, ) + training_spec = self.training_hyperparameter_sampling.sample_trial(trial) logger.info(f"{input_columns_index = } - {context_length = }") @@ -882,10 +879,7 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: target_columns=self.target_columns, target_column_types=self.target_column_types, id_maps=self.id_maps, - context_length=context_length, - max_lookahead=self.max_lookahead, - sample_length=sample_length, - sequence_layout_version=self.sequence_layout_version, + layout=layout, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 230fbd73..92a63b9e 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -15,6 +15,7 @@ ) from sequifier.helpers import ( + SequenceLayout, normalize_path, sequence_layout_from_metadata, try_catch_excess_keys, @@ -61,11 +62,14 @@ def load_inferer_config( "Inference requires metadata sequence_layout_version=2, " f"got {sequence_layout.sequence_layout_version}." ) - config_values["max_lookahead"] = sequence_layout.max_lookahead - config_values["sample_length"] = sequence_layout.sample_length - config_values["sequence_layout_version"] = ( - sequence_layout.sequence_layout_version - ) + config_values["layout"] = sequence_layout + for key in ( + "context_length", + "max_lookahead", + "sample_length", + "sequence_layout_version", + ): + config_values.pop(key, None) config_values["column_types"] = config_values.get( "column_types", metadata_config["column_types"] @@ -157,10 +161,7 @@ class InfererModel(BaseModel): map_to_id: bool = Field(default=True) seed: int device: str - context_length: int - max_lookahead: int = Field(default=1, ge=0) - sample_length: int - sequence_layout_version: int + layout: SequenceLayout prediction_length: Optional[int] = None inference_batch_size: int @@ -171,37 +172,20 @@ class InfererModel(BaseModel): @model_validator(mode="after") def normalize_prediction_length(self): - if self.sample_length != self.context_length + self.max_lookahead: - raise ValueError( - "sample_length must equal context_length + max_lookahead " - f"({self.sample_length} != {self.context_length} + {self.max_lookahead})." - ) if self.prediction_length is None: self.prediction_length = ( - self.context_length if self.training_objective == "bert" else 1 + self.layout.context_length if self.training_objective == "bert" else 1 ) if self.training_objective == "bert": - if self.prediction_length != self.context_length: + if self.prediction_length != self.layout.context_length: raise ValueError( "For BERT inference, prediction_length must be equal to context_length " - f"(got prediction_length={self.prediction_length}, context_length={self.context_length})." + f"(got prediction_length={self.prediction_length}, context_length={self.layout.context_length})." ) - elif self.max_lookahead < 1: - raise ValueError( - "Causal inference requires data preprocessed with max_lookahead >= 1" - ) + else: + self.layout.get_target_offset(self.training_objective) return self - @property - def data_offset(self) -> int: - return self.max_lookahead - - @property - def target_offset(self) -> int: - if self.training_objective == "bert": - return self.max_lookahead - return self.max_lookahead - 1 - @field_validator("training_objective") @classmethod def validate_training_objective(cls, v): diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index a01e7635..eabfaa2f 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -23,6 +23,7 @@ import sequifier from sequifier.config.probabilities import ProbabilityDistribution from sequifier.helpers import ( + SequenceLayout, normalize_path, sequence_layout_from_metadata, try_catch_excess_keys, @@ -68,14 +69,16 @@ def load_train_config( "Training requires metadata sequence_layout_version=2, " f"got {sequence_layout.sequence_layout_version}." ) - config_values["max_lookahead"] = sequence_layout.max_lookahead - config_values["sample_length"] = sequence_layout.sample_length - config_values["sequence_layout_version"] = ( - sequence_layout.sequence_layout_version - ) - config_values.setdefault("training_spec", {}) - config_values["training_spec"]["max_lookahead"] = sequence_layout.max_lookahead - config_values["training_spec"]["sample_length"] = sequence_layout.sample_length + config_values["layout"] = sequence_layout + for key in ( + "context_length", + "max_lookahead", + "sample_length", + "sequence_layout_version", + ): + config_values.pop(key, None) + for key in ("max_lookahead", "sample_length"): + config_values.get("training_spec", {}).pop(key, None) split_paths = metadata_config["split_paths"] @@ -246,8 +249,6 @@ class TrainingSpecModel(BaseModel): fsdp_cpu_offload: Optional[bool] = None torch_compile: str = "outer" float32_matmul_precision: str = "highest" - max_lookahead: int = Field(default=1, ge=0) - sample_length: int def __init__(self, **kwargs): super().__init__( @@ -263,16 +264,6 @@ def __init__(self, **kwargs): def serialize_dotdict(self, value: DotDict) -> dict[str, Any]: return dict(value) - @property - def data_offset(self) -> int: - return self.max_lookahead - - @property - def target_offset(self) -> int: - if self.training_objective == "bert": - return self.max_lookahead - return self.max_lookahead - 1 - @field_validator("layer_type_dtypes") @classmethod def validate_layer_type_dtypes(cls, v): @@ -383,14 +374,6 @@ def validate_bert_spec_matches_objective(self): ) return self - @model_validator(mode="after") - def validate_sequence_layout(self): - if self.training_objective == "causal" and self.max_lookahead < 1: - raise ValueError( - "Causal training requires data preprocessed with max_lookahead >= 1" - ) - return self - @field_validator("sampling_strategy") @classmethod def validate_sampling_strategy(cls, v): @@ -593,10 +576,7 @@ class TrainModel(BaseModel): default_factory=lambda: SPECIAL_TOKEN_IDS.ids_by_label ) - context_length: int - max_lookahead: int = Field(default=1, ge=0) - sample_length: int - sequence_layout_version: int + layout: SequenceLayout n_classes: dict[str, int] inference_batch_size: int seed: int @@ -617,20 +597,14 @@ def validate_special_token_ids_match_runtime(cls, v): @model_validator(mode="after") def validate_bert_prediction_length_matches_context_length(self): - if self.sample_length != self.context_length + self.max_lookahead: - raise ValueError( - "sample_length must equal context_length + max_lookahead " - f"({self.sample_length} != {self.context_length} + {self.max_lookahead})." - ) - self.training_spec.max_lookahead = self.max_lookahead - self.training_spec.sample_length = self.sample_length + self.layout.get_target_offset(self.training_spec.training_objective) if ( self.training_spec.training_objective == "bert" - and self.model_spec.prediction_length != self.context_length + and self.model_spec.prediction_length != self.layout.context_length ): raise ValueError( "For BERT training, model_spec.prediction_length must be equal to context_length " - f"(got prediction_length={self.model_spec.prediction_length}, context_length={self.context_length})." + f"(got prediction_length={self.model_spec.prediction_length}, context_length={self.layout.context_length})." ) return self diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index c9bf4bce..ae7f4022 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -63,13 +63,18 @@ def sample_length(self) -> int: def input_offset(self) -> int: return self.max_lookahead - def target_offset(self, horizon: int) -> int: - offset = self.max_lookahead - horizon - if offset < 0: - raise ValueError( - f"horizon={horizon} exceeds max_lookahead={self.max_lookahead}" - ) - return offset + def get_target_offset(self, training_objective: str) -> int: + if training_objective == "bert": + return self.max_lookahead + if training_objective == "causal": + if self.max_lookahead < 1: + raise ValueError( + "Causal training requires data preprocessed with max_lookahead >= 1" + ) + return self.max_lookahead - 1 + raise ValueError( + f"Only 'causal' and 'bert' are allowed, found {training_objective}" + ) @beartype diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index b861dabd..4514ab76 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -221,7 +221,7 @@ def infer_worker( f"Unsupported input type or read format: {config.read_format}" ) - default_prediction_length = {"causal": 1, "bert": config.context_length} + default_prediction_length = {"causal": 1, "bert": config.layout.context_length} prediction_length = ( config.prediction_length if config.prediction_length is not None @@ -363,10 +363,10 @@ def _bert_target_valid_mask_from_preprocessed_data( ) metadata = generate_padding_masks( left_pad_lengths, - config.context_length, - config.sample_length, - data_offset=config.data_offset, - target_offset=config.target_offset, + config.layout.context_length, + config.layout.sample_length, + data_offset=config.layout.input_offset, + target_offset=config.layout.get_target_offset(config.training_objective), ) return _flatten_bert_target_valid_mask(config, metadata, prediction_length) @@ -495,14 +495,16 @@ def infer_embedding( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.sample_length) + validate_stored_window_width(tensor, config.layout.sample_length) metadata = generate_padding_masks( left_pad_lengths_tensor, - config.context_length, - config.sample_length, - data_offset=config.data_offset, - target_offset=config.target_offset, + config.layout.context_length, + config.layout.sample_length, + data_offset=config.layout.input_offset, + target_offset=config.layout.get_target_offset( + config.training_objective + ), ) embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata @@ -521,7 +523,8 @@ def infer_embedding( # Step 2: Calculate absolute positions and repeat IDs # (e.g., for seq_len=50, inf_size=5, offsets are [45, 46, 47, 48, 49]) base_offsets = np.arange( - config.context_length - prediction_length, config.context_length + config.layout.context_length - prediction_length, + config.layout.context_length, ) # Tile these offsets for each sample in the batch @@ -668,7 +671,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.context_length, + config.layout.context_length, prediction_length, config.training_objective, ) @@ -681,7 +684,11 @@ def infer_generative( # Unpack the new third return value probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( get_probs_preds_autoregression( - config, inferer, data, column_types, config.context_length + config, + inferer, + data, + column_types, + config.layout.context_length, ) ) elif config.read_format == "parquet" and is_folder_input: @@ -719,7 +726,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.context_length, + config.layout.context_length, prediction_length, config.training_objective, ) @@ -731,7 +738,11 @@ def infer_generative( probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( get_probs_preds_autoregression( - config, inferer, data, column_types, config.context_length + config, + inferer, + data, + column_types, + config.layout.context_length, ) ) elif config.read_format == "pt": @@ -743,7 +754,7 @@ def infer_generative( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.sample_length) + validate_stored_window_width(tensor, config.layout.sample_length) total_steps = ( 1 if config.autoregression_total_steps is None @@ -751,17 +762,21 @@ def infer_generative( ) sequences_dict = { - key: slice_window(tensor, config.context_length, config.data_offset) + key: slice_window( + tensor, config.layout.context_length, config.layout.input_offset + ) for key, tensor in sequences_dict.items() if key in config.input_columns } metadata = generate_padding_masks( left_pad_lengths_tensor, - config.context_length, - config.sample_length, - data_offset=config.data_offset, - target_offset=config.target_offset, + config.layout.context_length, + config.layout.sample_length, + data_offset=config.layout.input_offset, + target_offset=config.layout.get_target_offset( + config.training_objective + ), ) probs, preds = get_probs_preds_from_dict( @@ -785,7 +800,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.context_length, + config.layout.context_length, prediction_length, config.training_objective, ) @@ -795,8 +810,12 @@ def infer_generative( sequence_ids_tensor.numpy(), total_steps ) item_position_boundaries = zip( - list(start_positions_tensor + config.context_length), - list(start_positions_tensor + config.context_length + total_steps), + list(start_positions_tensor + config.layout.context_length), + list( + start_positions_tensor + + config.layout.context_length + + total_steps + ), ) item_positions_for_preds = np.concatenate( [np.arange(start, end) for start, end in item_position_boundaries], @@ -941,9 +960,11 @@ def get_embeddings_pt( A NumPy array containing the computed embeddings for the batch. """ for tensor in data.values(): - validate_stored_window_width(tensor, config.sample_length) + validate_stored_window_width(tensor, config.layout.sample_length) X = { - key: slice_window(val, config.context_length, config.data_offset).numpy() + key: slice_window( + val, config.layout.context_length, config.layout.input_offset + ).numpy() for key, val in data.items() if key in config.input_columns } @@ -1097,10 +1118,10 @@ def get_embeddings( data, column_types, all_columns, - config.context_length, - config.sample_length, - config.data_offset, - config.target_offset, + config.layout.context_length, + config.layout.sample_length, + config.layout.input_offset, + config.layout.get_target_offset(config.training_objective), ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} @@ -1146,10 +1167,10 @@ def get_probs_preds_from_df( data, column_types, all_columns, - config.context_length, - config.sample_length, - config.data_offset, - config.target_offset, + config.layout.context_length, + config.layout.sample_length, + config.layout.input_offset, + config.layout.get_target_offset(config.training_objective), ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} @@ -1273,8 +1294,8 @@ def get_probs_preds_autoregression( column_types, config.input_columns, context_length, - config.sample_length, - data_offset=config.data_offset, + config.layout.sample_length, + data_offset=config.layout.input_offset, target_offset=0, ) diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index fc082183..71ce10ac 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -46,10 +46,12 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): data=data_df, column_types=column_types, all_columns=all_columns, - context_length=config.context_length, - sample_length=config.sample_length, - data_offset=config.training_spec.data_offset, - target_offset=config.training_spec.target_offset, + context_length=config.layout.context_length, + sample_length=config.layout.sample_length, + data_offset=config.layout.input_offset, + target_offset=config.layout.get_target_offset( + config.training_spec.training_objective + ), ) self.n_samples = all_tensors[all_columns[0]].shape[0] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 373e0512..6eebda70 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -50,10 +50,10 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): metadata = json.load(f) folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.sample_length: + if folder_layout.sample_length != config.layout.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.sample_length}." + f"does not match config sample_length={config.layout.sample_length}." ) self.n_samples = metadata["total_samples"] @@ -68,12 +68,15 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): } # Sequence formatting structures matching long-format schema boundaries - train_seq_len = self.config.context_length + train_seq_len = self.config.layout.context_length input_seq_cols = sequence_column_names( - train_seq_len, self.config.training_spec.data_offset + train_seq_len, self.config.layout.input_offset ) target_seq_cols = sequence_column_names( - train_seq_len, self.config.training_spec.target_offset + train_seq_len, + self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ), ) all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in config.input_columns @@ -208,7 +211,7 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Extract and pass unified data frames - train_seq_len = self.config.context_length + train_seq_len = self.config.layout.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] @@ -226,9 +229,11 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, - self.config.sample_length, - self.config.training_spec.data_offset, - self.config.training_spec.target_offset, + self.config.layout.sample_length, + self.config.layout.input_offset, + self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ), ) yield SequifierBatch( diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 0546c1d7..496fbf6c 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -66,10 +66,10 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): metadata = json.load(f) folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.sample_length: + if folder_layout.sample_length != config.layout.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.sample_length}." + f"does not match config sample_length={config.layout.sample_length}." ) self.batch_files_info = metadata["batch_files"] @@ -219,14 +219,17 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.context_length + train_seq_len = self.config.layout.context_length global_file_start_sample = 0 input_seq_cols = sequence_column_names( - train_seq_len, self.config.training_spec.data_offset + train_seq_len, self.config.layout.input_offset ) target_seq_cols = sequence_column_names( - train_seq_len, self.config.training_spec.target_offset + train_seq_len, + self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ), ) # Initialize cross-file buffers @@ -313,9 +316,11 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths[worker_indices], train_seq_len, - self.config.sample_length, - self.config.training_spec.data_offset, - self.config.training_spec.target_offset, + self.config.layout.sample_length, + self.config.layout.input_offset, + self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ), ) del df diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 9605020e..a1647fea 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -48,10 +48,10 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): metadata = json.load(f) folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.sample_length: + if folder_layout.sample_length != config.layout.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.sample_length}." + f"does not match config sample_length={config.layout.sample_length}." ) self.n_samples = metadata["total_samples"] @@ -78,7 +78,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in all_sequences.keys(): if col in sequences_batch: validate_stored_window_width( - sequences_batch[col], config.sample_length + sequences_batch[col], config.layout.sample_length ) all_sequences[col].append(sequences_batch[col]) all_left_pad_lengths.append(left_pad_lengths_batch) @@ -169,12 +169,14 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Yield full batches - train_seq_len = self.config.context_length + train_seq_len = self.config.layout.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] - data_offset = self.config.training_spec.data_offset - target_offset = self.config.training_spec.target_offset + data_offset = self.config.layout.input_offset + target_offset = self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ) data_batch = { key: slice_window(tensor[batch_indices], train_seq_len, data_offset) for key, tensor in self.sequences.items() @@ -191,7 +193,7 @@ def __iter__( metadata_batch = generate_padding_masks( self.left_pad_lengths[batch_indices], train_seq_len, - self.config.sample_length, + self.config.layout.sample_length, data_offset, target_offset, ) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index c3b787d2..4c50e903 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -64,10 +64,10 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): metadata = json.load(f) folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.sample_length: + if folder_layout.sample_length != config.layout.sample_length: raise ValueError( f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.sample_length}." + f"does not match config sample_length={config.layout.sample_length}." ) self.batch_files_info = metadata["batch_files"] @@ -212,7 +212,7 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.context_length + train_seq_len = self.config.layout.context_length global_file_start_sample = 0 # Initialize cross-file buffers @@ -244,7 +244,7 @@ def __iter__( left_pad_lengths_batch, ) = torch.load(file_path, map_location="cpu", weights_only=False) for tensor in sequences_batch.values(): - validate_stored_window_width(tensor, self.config.sample_length) + validate_stored_window_width(tensor, self.config.layout.sample_length) # Generate indices for the whole file indices = torch.arange(file_samples) @@ -265,8 +265,10 @@ def __iter__( continue # Extract the data subset for this worker (Advanced indexing copies the data) - data_offset = self.config.training_spec.data_offset - target_offset = self.config.training_spec.target_offset + data_offset = self.config.layout.input_offset + target_offset = self.config.layout.get_target_offset( + self.config.training_spec.training_objective + ) new_seq = { k: slice_window(v[worker_indices], train_seq_len, data_offset) for k, v in sequences_batch.items() @@ -281,7 +283,7 @@ def __iter__( new_meta = generate_padding_masks( left_pad_lengths_batch[worker_indices], train_seq_len, - self.config.sample_length, + self.config.layout.sample_length, data_offset, target_offset, ) diff --git a/src/sequifier/io/yaml.py b/src/sequifier/io/yaml.py index f8cdcd63..b35497b4 100644 --- a/src/sequifier/io/yaml.py +++ b/src/sequifier/io/yaml.py @@ -8,6 +8,7 @@ TrainingSpecModel, TrainModel, ) +from sequifier.helpers import SequenceLayout def represent_sequifier_object(dumper, data): @@ -78,6 +79,7 @@ def increase_indent(self, flow=False, indentless=False): TrainModelDumper.add_representer(TrainModel, represent_sequifier_object) TrainModelDumper.add_representer(ModelSpecModel, represent_sequifier_object) TrainModelDumper.add_representer(TrainingSpecModel, represent_sequifier_object) +TrainModelDumper.add_representer(SequenceLayout, represent_sequifier_object) TrainModelDumper.add_multi_representer(BaseModel, represent_sequifier_object) TrainModelDumper.add_representer(DotDict, represent_dot_dict) TrainModelDumper.add_representer(numpy.float64, represent_numpy_float) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index efa78380..f6b58150 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -97,14 +97,14 @@ def create_dummy_data_and_metadata( for col in config.input_columns: dtype = torch.int64 if col in config.categorical_columns else torch.float32 dummy_data[col] = torch.ones( - (config.training_spec.batch_size, config.context_length), + (config.training_spec.batch_size, config.layout.context_length), dtype=dtype, device=local_rank, ) dummy_metadata = { "attention_valid_mask": torch.ones( - (config.training_spec.batch_size, config.context_length), + (config.training_spec.batch_size, config.layout.context_length), dtype=torch.bool, device=local_rank, ) @@ -613,7 +613,8 @@ def __init__( self.target_columns = hparams.target_columns self.target_column_types = hparams.target_column_types self.loss_weights = hparams.training_spec.loss_weights - self.context_length = hparams.context_length + self.layout = hparams.layout + self.context_length = hparams.layout.context_length self.n_classes = hparams.n_classes self.inference_batch_size = hparams.inference_batch_size self.log_interval = hparams.training_spec.log_interval @@ -690,7 +691,7 @@ def __init__( hparams.model_spec.n_head, hparams.model_spec.dim_feedforward, hparams.training_spec.dropout, - hparams.context_length, + hparams.layout.context_length, ) for _ in range(hparams.model_spec.num_layers) ] diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 0869ac35..991205fd 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -40,9 +40,8 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): assert generated_config["metadata_config_path"].endswith( "test-data-categorical-1-lookahead-0.json" ) - assert generated_config["max_lookahead"] == 0 - assert generated_config["sequence_layout_version"] == 2 - assert generated_config["sample_length"] == generated_config["context_length"] + assert generated_config["layout"]["max_lookahead"] == 0 + assert generated_config["layout"]["sequence_layout_version"] == 2 def test_hp_search_bayesian_outputs(run_hp_search, project_root): diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index 25e8639d..d3c0839b 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -4,6 +4,7 @@ import onnxruntime from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel +from sequifier.helpers import SequenceLayout from sequifier.train import TransformerModel @@ -27,9 +28,11 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): real_columns=["real_col"], id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, n_classes={"cat_col": 6}, - context_length=context_length, - sample_length=5, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=context_length, + max_lookahead=1, + sequence_layout_version=2, + ), inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -73,7 +76,6 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): loss_weights={"cat_col": 1.0, "real_col": 1.0}, torch_compile="none", layer_autocast=False, - sample_length=5, ), ) model = TransformerModel(config) @@ -128,9 +130,11 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): "cat10": {"x": 3, "y": 4, "z": 5}, }, n_classes={"cat2": 7, "cat10": 6}, - context_length=context_length, - sample_length=5, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=context_length, + max_lookahead=1, + sequence_layout_version=2, + ), inference_batch_size=inference_batch_size, seed=42, export_generative_model=True, @@ -165,7 +169,6 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): loss_weights={"cat2": 1.0}, torch_compile="none", layer_autocast=False, - sample_length=5, ), ) model = TransformerModel(config) diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index f4696079..3cbe5f33 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -5,6 +5,7 @@ import pytest import torch +from sequifier.helpers import SequenceLayout from sequifier.io.sequifier_dataset_from_folder_parquet_lazy import ( SequifierDatasetFromFolderParquetLazy, ) @@ -30,14 +31,16 @@ def mock_config(): config = MagicMock() config.project_root = "." config.seed = 42 - config.context_length = CONTEXT_LENGTH - config.sample_length = SAMPLE_LENGTH + config.layout = SequenceLayout( + context_length=CONTEXT_LENGTH, + max_lookahead=MAX_LOOKAHEAD, + sequence_layout_version=2, + ) config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 config.training_spec.num_workers = 0 config.training_spec.sampling_strategy = "exact" - config.training_spec.data_offset = 1 - config.training_spec.target_offset = 0 + config.training_spec.training_objective = "causal" config.input_columns = ["item"] config.target_columns = ["item"] diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 4fb599cc..3eed7bcd 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -4,6 +4,7 @@ import pytest import torch +from sequifier.helpers import SequenceLayout from sequifier.io.sequifier_dataset_from_folder_pt_lazy import ( SequifierDatasetFromFolderPtLazy, ) @@ -34,12 +35,14 @@ def mock_config(tmp_path): config.training_spec.sampling_strategy = "exact" config.training_spec.num_workers = 0 config.seed = 42 - config.context_length = CONTEXT_LENGTH - config.sample_length = SAMPLE_LENGTH + config.layout = SequenceLayout( + context_length=CONTEXT_LENGTH, + max_lookahead=MAX_LOOKAHEAD, + sequence_layout_version=2, + ) config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] - config.training_spec.data_offset = 1 - config.training_spec.target_offset = 0 + config.training_spec.training_objective = "causal" return config diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py index 8a50fc34..77ea8639 100644 --- a/tests/unit/test_hyperparameter_search_config.py +++ b/tests/unit/test_hyperparameter_search_config.py @@ -63,7 +63,7 @@ def bert_spec_sampling_config(): def sample_training_spec(sampling, trial): - return sampling.sample_trial(trial, max_lookahead=1, sample_length=9) + return sampling.sample_trial(trial) def test_training_objective_defaults_to_causal_without_bert_spec(): @@ -74,7 +74,6 @@ def test_training_objective_defaults_to_causal_without_bert_spec(): assert training_spec.training_objective == "causal" assert training_spec.bert_spec is None - assert training_spec.sample_length == 9 assert trial.params["training_objective"] == "causal" diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 321446a5..97ba2fb8 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -8,6 +8,7 @@ import yaml from sequifier.config.infer_config import InfererModel, load_inferer_config +from sequifier.helpers import SequenceLayout from sequifier.infer import ( Inferer, calculate_item_positions, @@ -173,16 +174,16 @@ def test_infer_config_defaults_bert_prediction_length_to_context_length(): seed=42, device="cpu", prediction_length=None, - context_length=3, - sample_length=4, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=3, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=2, output_probabilities=False, map_to_id=False, autoregression=False, ) - assert config.prediction_length == config.context_length + assert config.prediction_length == config.layout.context_length def test_infer_config_defaults_causal_prediction_length_to_one(): @@ -202,9 +203,9 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): seed=42, device="cpu", prediction_length=None, - context_length=3, - sample_length=4, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=3, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -232,9 +233,9 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): seed=42, device="cpu", prediction_length=1, - context_length=3, - sample_length=4, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=3, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -398,9 +399,9 @@ def _bert_inference_config(tmp_path, model_type="generative"): seed=42, device="cpu", prediction_length=None, - context_length=3, - sample_length=4, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=3, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -615,9 +616,9 @@ def ar_config(): seed=42, device="cpu", prediction_length=1, - context_length=3, - sample_length=4, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=3, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=2, output_probabilities=False, map_to_id=False, # Set to False to bypass ID mapping requirements diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index bcc8b00e..f6bedbc4 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -15,6 +15,7 @@ TrainModel, load_train_config, ) +from sequifier.helpers import SequenceLayout from sequifier.special_tokens import SPECIAL_TOKEN_IDS from sequifier.train import TransformerModel @@ -31,7 +32,6 @@ def _training_spec_kwargs(**overrides): "optimizer": {"name": "Adam"}, "scheduler": {"name": "StepLR", "step_size": 1, "gamma": 0.1}, "loss_weights": {"cat_col": 1.0, "real_col": 1.0}, - "sample_length": 11, } values.update(overrides) return values @@ -77,7 +77,8 @@ def test_training_spec_model_dump_excludes_runtime_offsets(): assert "data_offset" not in dumped assert "target_offset" not in dumped - assert TrainingSpecModel(**dumped).target_offset == 0 + assert "sample_length" not in dumped + assert "max_lookahead" not in dumped def test_poisson_span_masking_samples_at_least_one_token(): @@ -118,7 +119,6 @@ def model_config(tmp_path): optimizer={"name": "Adam"}, scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, loss_weights={"cat_col": 1.0, "real_col": 1.0}, - sample_length=11, ) config = TrainModel( @@ -136,9 +136,9 @@ def model_config(tmp_path): # id_maps is needed for constructing index_maps in model init id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, n_classes={"cat_col": 5}, # 0 + 4 classes - context_length=10, - sample_length=11, - sequence_layout_version=2, + layout=SequenceLayout( + context_length=10, max_lookahead=1, sequence_layout_version=2 + ), inference_batch_size=4, seed=42, export_generative_model=True, @@ -165,7 +165,9 @@ def causal_model(model_config): @pytest.fixture def bert_model(model_config): config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = model_config.context_length + config_values["model_spec"]["prediction_length"] = ( + model_config.layout.context_length + ) config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), @@ -218,7 +220,9 @@ def test_train_model_requires_bert_prediction_length_to_equal_context_length( model_config, ): config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = model_config.context_length - 1 + config_values["model_spec"]["prediction_length"] = ( + model_config.layout.context_length - 1 + ) config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), @@ -248,15 +252,16 @@ def test_load_train_config_rejects_mismatched_metadata_special_token_ids( config_values = model_config.model_dump() config_values["project_root"] = str(tmp_path) config_values["metadata_config_path"] = metadata_path.name + layout = config_values["layout"] config_path.write_text(yaml.safe_dump(config_values)) metadata_path.write_text( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "context_length": config_values["context_length"], - "max_lookahead": 1, - "sample_length": config_values["context_length"] + 1, - "sequence_layout_version": 2, + "context_length": layout["context_length"], + "max_lookahead": layout["max_lookahead"], + "sample_length": layout["context_length"] + layout["max_lookahead"], + "sequence_layout_version": layout["sequence_layout_version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -281,15 +286,16 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( config_values = model_config.model_dump() config_values["project_root"] = str(tmp_path) config_values["metadata_config_path"] = metadata_path.name + layout = config_values["layout"] config_path.write_text(yaml.safe_dump(config_values)) metadata_path.write_text( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "context_length": config_values["context_length"], - "max_lookahead": 1, - "sample_length": config_values["context_length"] + 1, - "sequence_layout_version": 2, + "context_length": layout["context_length"], + "max_lookahead": layout["max_lookahead"], + "sample_length": layout["context_length"] + layout["max_lookahead"], + "sequence_layout_version": layout["sequence_layout_version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -306,7 +312,7 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.context_length + seq_len = model_config.layout.context_length # Create dummy inputs # Categorical: (batch, seq_len) integers @@ -337,7 +343,7 @@ def test_forward_train_shapes(model, model_config): def test_forward_inference_shapes(model, model_config): """Tests the output shapes of the forward (inference) method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.context_length + seq_len = model_config.layout.context_length prediction_length = model_config.model_spec.prediction_length # 1 x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -370,7 +376,7 @@ def test_forward_inference_shapes(model, model_config): def test_calculate_loss(model, model_config): """Tests that loss calculation returns a scalar tensor.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.context_length + seq_len = model_config.layout.context_length # Inputs x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -459,7 +465,7 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): def test_padding_keys_are_masked(bert_model): - seq_len = bert_model.context_length + seq_len = bert_model.layout.context_length valid_mask = torch.ones( 2, @@ -488,7 +494,7 @@ def test_padding_keys_are_masked(bert_model): def test_causal_and_padding_masks_are_combined(causal_model): - seq_len = causal_model.context_length + seq_len = causal_model.layout.context_length valid_mask = torch.ones( 1, diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..f078af13 --- /dev/null +++ b/uv.lock @@ -0,0 +1,2269 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.11' and platform_machine != 's390x'", + "python_full_version < '3.11' and platform_machine == 's390x'", +] + +[[package]] +name = "agate" +version = "1.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "isodate" }, + { name = "leather" }, + { name = "parsedatetime" }, + { name = "python-slugify" }, + { name = "pytimeparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/16/48/dc4d02dba00fbe62e966ed1a7d991e51654668ab343a2738bb816aa82256/agate-1.14.2.tar.gz", hash = "sha256:7f29841c39d84b1de7fde762b8d792085371515324f3a01413b20f810398225b", size = 204186, upload-time = "2026-02-27T16:35:55.432Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/70/9977183cff3420eb1a49a31bb709e90b76ea86b6e7a090de1ea41fac14c5/agate-1.14.2-py3-none-any.whl", hash = "sha256:e11018371d344dda5aca16a68830b6f8e86c84c531a7bb8f81456bf5014937d4", size = 95981, upload-time = "2026-02-27T16:35:53.863Z" }, +] + +[[package]] +name = "agate-dbf" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "agate" }, + { name = "dbfread" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/d8/abf6f39bd8c5767cc367472ea59f7d7cc4d5728388974a1b26a9472a971f/agate_dbf-0.2.4.tar.gz", hash = "sha256:6554828b10048a76dbb5bc4eff8911e059ea2b47155b7a89351e382915ca16fc", size = 7547, upload-time = "2025-12-15T18:47:46.682Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/2b/f9661a20b2812e7b3572c082b1cdf190a3c12e5cbfb2ef588c04ac47cbce/agate_dbf-0.2.4-py3-none-any.whl", hash = "sha256:65ef9df31cf25dcf829123fde63044ee7242bca6c47cbd90cedf318e1be0ad3e", size = 3696, upload-time = "2025-12-15T18:47:45.251Z" }, +] + +[[package]] +name = "agate-excel" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "agate" }, + { name = "olefile" }, + { name = "openpyxl" }, + { name = "xlrd" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/e5/b2d1bc555fd91145de5d11a7b31241076586713d222881c6d7eac9e4fda9/agate_excel-0.4.2.tar.gz", hash = "sha256:eed1dc6239f0e96720d962dc1bdfb4496e19687332c827fd8b1e587a917ea202", size = 271423, upload-time = "2025-12-15T18:48:59.689Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/cf/d34f66780f47c6eed299ee522eaee7fbe56014f3adfdb40b5e64fbec548b/agate_excel-0.4.2-py3-none-any.whl", hash = "sha256:f93f09b3ac02489ed2ed8669c7b3ce74eab30ebf9a03038c0283211dbc3b9c1a", size = 7227, upload-time = "2025-12-15T18:48:58.442Z" }, +] + +[[package]] +name = "agate-sql" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "agate" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/fe/fc7662f1ec3c0917c377f74f143a479eb13c9ae5fe14d77ce28eb165564f/agate_sql-0.7.3.tar.gz", hash = "sha256:4c588a28e80bc625c7d5f915e8f8dff4900140a8a6d8a350a098a2ba9adf9d33", size = 13936, upload-time = "2025-12-15T18:47:59.675Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/be/8f425d3e5846fb10a627a572e671a1ba2c2a51df4d398221f40f7b666310/agate_sql-0.7.3-py3-none-any.whl", hash = "sha256:57046f628dbffb125c36c94675716b441b40193bc18461f04e32a3153a8a0971", size = 7464, upload-time = "2025-12-15T18:47:58.295Z" }, +] + +[[package]] +name = "alembic" +version = "1.18.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mako" }, + { name = "sqlalchemy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/13/8b084e0f2efb0275a1d534838844926f798bd766566b1375174e2448cd31/alembic-1.18.4.tar.gz", hash = "sha256:cb6e1fd84b6174ab8dbb2329f86d631ba9559dd78df550b57804d607672cedbc", size = 2056725, upload-time = "2026-02-10T16:00:47.195Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/29/6533c317b74f707ea28f8d633734dbda2119bbadfc61b2f3640ba835d0f7/alembic-1.18.4-py3-none-any.whl", hash = "sha256:a5ed4adcf6d8a4cb575f3d759f071b03cd6e5c7618eb796cb52497be25bfe19a", size = 263893, upload-time = "2026-02-10T16:00:49.997Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "babel" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/b2/51899539b6ceeeb420d40ed3cd4b7a40519404f9baf3d4ac99dc413a834b/babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d", size = 9959554, upload-time = "2026-02-01T12:30:56.078Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35", size = 10196845, upload-time = "2026-02-01T12:30:53.445Z" }, +] + +[[package]] +name = "beartype" +version = "0.18.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/15/4e623478a9628ad4cee2391f19aba0b16c1dd6fedcb2a399f0928097b597/beartype-0.18.5.tar.gz", hash = "sha256:264ddc2f1da9ec94ff639141fbe33d22e12a9f75aa863b83b7046ffff1381927", size = 1193506, upload-time = "2024-04-21T07:25:58.64Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/43/7a1259741bd989723272ac7d381a43be932422abcff09a1d9f7ba212cb74/beartype-0.18.5-py3-none-any.whl", hash = "sha256:5301a14f2a9a5540fe47ec6d34d758e9cd8331d36c4760fc7a5499ab86310089", size = 917762, upload-time = "2024-04-21T07:25:55.758Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "colorlog" +version = "6.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/c1/e419ef3723a074172b68aaa89c9f3de486ed4c2399e2dbd8113a4fdcaf9e/colorlog-6.10.1-py3-none-any.whl", hash = "sha256:2d7e8348291948af66122cff006c9f8da6255d224e7cf8e37d8de2df3bad8c9c", size = 11743, upload-time = "2025-10-16T16:14:10.512Z" }, +] + +[[package]] +name = "cramjam" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/14/12/34bf6e840a79130dfd0da7badfb6f7810b8fcfd60e75b0539372667b41b6/cramjam-2.11.0.tar.gz", hash = "sha256:5c82500ed91605c2d9781380b378397012e25127e89d64f460fea6aeac4389b4", size = 99100, upload-time = "2025-07-27T21:25:07.559Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/d3/20d0402e4e983b66603117ad3dd3b864a05d7997a830206d3ff9cacef9a2/cramjam-2.11.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d0859c65775e8ebf2cbc084bfd51bd0ffda10266da6f9306451123b89f8e5a63", size = 3558999, upload-time = "2025-07-27T21:21:34.105Z" }, + { url = "https://files.pythonhosted.org/packages/f5/a8/a6e2744288938ccd320a5c6f6f3653faa790f933f5edd088c6e5782a2354/cramjam-2.11.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1d77b9b0aca02a3f6eeeff27fcd315ca5972616c0919ee38e522cce257bcd349", size = 1861558, upload-time = "2025-07-27T21:21:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/96/29/7961e09a849eea7d8302e7baa6f829dd3ef3faf199cb25ed29b318ae799b/cramjam-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66425bc25b5481359b12a6719b6e7c90ffe76d85d0691f1da7df304bfb8ce45c", size = 1699431, upload-time = "2025-07-27T21:21:38.396Z" }, + { url = "https://files.pythonhosted.org/packages/7a/60/6665e52f01a8919bf37c43dcf0e03b6dd3866f5c4e95440b357d508ee14e/cramjam-2.11.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bd748d3407ec63e049b3aea1595e218814fccab329b7fb10bb51120a30e9fb7e", size = 2025262, upload-time = "2025-07-27T21:21:40.417Z" }, + { url = "https://files.pythonhosted.org/packages/d7/80/79bd84dbeb109e2c6efb74e661b7bd4c3ba393208ebcf69e2ae9454ae80c/cramjam-2.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6d9a23a35b3a105c42a8de60fc2e80281ae6e758f05a3baea0b68eb1ddcb679", size = 1766177, upload-time = "2025-07-27T21:21:42.224Z" }, + { url = "https://files.pythonhosted.org/packages/28/ef/b43280767ebcde022ba31f1e9902137655a956ae30e920d75630fa67e36e/cramjam-2.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:40a75b95e05e38a2a055b2446f09994ce1139151721659315151d4ad6289bbff", size = 1854031, upload-time = "2025-07-27T21:21:43.651Z" }, + { url = "https://files.pythonhosted.org/packages/60/1c/79d522757c494dfd9e9b208b0604cc7e97b481483cc477144f5705a06ab7/cramjam-2.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5d042c376d2025300da37d65192d06a457918b63b31140f697f85fd8e310b29", size = 2035812, upload-time = "2025-07-27T21:21:45.473Z" }, + { url = "https://files.pythonhosted.org/packages/c8/70/3bf0670380069b3abd4c6b53f61d3148f4e08935569c08efbeaf7550e87d/cramjam-2.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb148b35ab20c75b19a06c27f05732e2a321adbd86fadc93f9466dbd7b1154a7", size = 2067661, upload-time = "2025-07-27T21:21:47.901Z" }, + { url = "https://files.pythonhosted.org/packages/db/7e/4f6ca98a4b474348e965a529b359184785d1119ab7c4c9ec1280b8bea50a/cramjam-2.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee47c220f0f5179ddc923ab91fc9e282c27b29fabc60c433dfe06f08084f798", size = 1981523, upload-time = "2025-07-27T21:21:49.704Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6c/b241511c7ffd5f1da29641429bb0e19b5fbcffafde5ba1bbcbf9394ea456/cramjam-2.11.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0cf1b5a81b21ea175c976c3ab09e00494258f4b49b7995efc86060cced3f0b2e", size = 2034251, upload-time = "2025-07-27T21:21:51.252Z" }, + { url = "https://files.pythonhosted.org/packages/14/5c/4ef926c8c3c1bf6da96f9c53450ff334cdb6d0fc1efced0aea97e2090803/cramjam-2.11.0-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:360c00338ecf48921492455007f904be607fc7818de3d681acbcc542aae2fb36", size = 2155322, upload-time = "2025-07-27T21:21:53.348Z" }, + { url = "https://files.pythonhosted.org/packages/be/fb/eb2aef7fb2730e56c5a2c9000817ee8fb4a95c92f19cc6e441afed42ec29/cramjam-2.11.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f31fcc0d30dc3f3e94ea6b4d8e1a855071757c6abf6a7b1e284050ab7d4c299c", size = 2169094, upload-time = "2025-07-27T21:21:55.187Z" }, + { url = "https://files.pythonhosted.org/packages/3b/80/925a5c668dcee1c6f61775067185c5dc9a63c766d5393e5c60d2af4217a7/cramjam-2.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:033be66fdceb3d63b2c99b257a98380c4ec22c9e4dca54a2bfec3718cd24e184", size = 2159089, upload-time = "2025-07-27T21:21:57.118Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ac/b2819640eef0592a6de7ca832c0d23c69bd1620f765ce88b60dbc8da9ba2/cramjam-2.11.0-cp310-cp310-win32.whl", hash = "sha256:1c6cea67f6000b81f6bd27d14c8a6f62d00336ca7252fd03ee16f6b70eb5c0d2", size = 1605046, upload-time = "2025-07-27T21:21:58.617Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f4/06af04727b9556721049e2127656d727306d275c518e3d97f9ed4cffd0d8/cramjam-2.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:98aa4a351b047b0f7f9e971585982065028adc2c162c5c23c5d5734c5ccc1077", size = 1710647, upload-time = "2025-07-27T21:22:00.279Z" }, + { url = "https://files.pythonhosted.org/packages/d0/89/8001f6a9b6b6e9fa69bec5319789083475d6f26d52aaea209d3ebf939284/cramjam-2.11.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:04cfa39118570e70e920a9b75c733299784b6d269733dbc791d9aaed6edd2615", size = 3559272, upload-time = "2025-07-27T21:22:01.988Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f3/001d00070ca92e5fbe6aacc768e455568b0cde46b0eb944561a4ea132300/cramjam-2.11.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:66a18f68506290349a256375d7aa2f645b9f7993c10fc4cc211db214e4e61d2b", size = 1861743, upload-time = "2025-07-27T21:22:03.754Z" }, + { url = "https://files.pythonhosted.org/packages/c9/35/041a3af01bf3f6158f120070f798546d4383b962b63c35cd91dcbf193e17/cramjam-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:50e7d65533857736cd56f6509cf2c4866f28ad84dd15b5bdbf2f8a81e77fa28a", size = 1699631, upload-time = "2025-07-27T21:22:05.192Z" }, + { url = "https://files.pythonhosted.org/packages/17/eb/5358b238808abebd0c949c42635c3751204ca7cf82b29b984abe9f5e33c8/cramjam-2.11.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1f71989668458fc327ac15396db28d92df22f8024bb12963929798b2729d2df5", size = 2025603, upload-time = "2025-07-27T21:22:06.726Z" }, + { url = "https://files.pythonhosted.org/packages/0e/79/19dba7c03a27408d8d11b5a7a4a7908459cfd4e6f375b73264dc66517bf6/cramjam-2.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee77ac543f1e2b22af1e8be3ae589f729491b6090582340aacd77d1d757d9569", size = 1766283, upload-time = "2025-07-27T21:22:08.568Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/40e4b3408501d886d082db465c33971655fe82573c535428e52ab905f4d0/cramjam-2.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad52784120e7e4d8a0b5b0517d185b8bf7f74f5e17272857ddc8951a628d9be1", size = 1854407, upload-time = "2025-07-27T21:22:10.518Z" }, + { url = "https://files.pythonhosted.org/packages/36/6e/c1b60ceb6d7ea6ff8b0bf197520aefe23f878bf2bfb0de65f2b0c2f82cd1/cramjam-2.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b86f8e6d9c1b3f9a75b2af870c93ceee0f1b827cd2507387540e053b35d7459", size = 2035793, upload-time = "2025-07-27T21:22:12.504Z" }, + { url = "https://files.pythonhosted.org/packages/9c/ad/32a8d5f4b1e3717787945ec6d71bd1c6e6bccba4b7e903fc0d9d4e4b08c3/cramjam-2.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:320d61938950d95da2371b46c406ec433e7955fae9f396c8e1bf148ffc187d11", size = 2067499, upload-time = "2025-07-27T21:22:14.067Z" }, + { url = "https://files.pythonhosted.org/packages/ff/cd/3b5a662736ea62ff7fa4c4a10a85e050bfdaad375cc53dc80427e8afe41c/cramjam-2.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41eafc8c1653a35a5c7e75ad48138f9f60085cc05cd99d592e5298552d944e9f", size = 1981853, upload-time = "2025-07-27T21:22:15.908Z" }, + { url = "https://files.pythonhosted.org/packages/26/8e/1dbcfaaa7a702ee82ee683ec3a81656934dd7e04a7bc4ee854033686f98a/cramjam-2.11.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03a7316c6bf763dfa34279335b27702321da44c455a64de58112968c0818ec4a", size = 2034514, upload-time = "2025-07-27T21:22:17.352Z" }, + { url = "https://files.pythonhosted.org/packages/50/62/f11709bfdce74af79a88b410dcb76dedc97612166e759136931bf63cfd7b/cramjam-2.11.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:244c2ed8bd7ccbb294a2abe7ca6498db7e89d7eb5e744691dc511a7dc82e65ca", size = 2155343, upload-time = "2025-07-27T21:22:18.854Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6d/3b98b61841a5376d9a9b8468ae58753a8e6cf22be9534a0fa5af4d8621cc/cramjam-2.11.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:405f8790bad36ce0b4bbdb964ad51507bfc7942c78447f25cb828b870a1d86a0", size = 2169367, upload-time = "2025-07-27T21:22:20.389Z" }, + { url = "https://files.pythonhosted.org/packages/11/72/bd5db5c49dbebc8b002f1c4983101b28d2e7fc9419753db1c31ec22b03ef/cramjam-2.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6b1b751a5411032b08fb3ac556160229ca01c6bbe4757bb3a9a40b951ebaac23", size = 2159334, upload-time = "2025-07-27T21:22:22.254Z" }, + { url = "https://files.pythonhosted.org/packages/34/32/203c57acdb6eea727e7078b2219984e64ed4ad043c996ed56321301ba167/cramjam-2.11.0-cp311-cp311-win32.whl", hash = "sha256:5251585608778b9ac8effed544933df7ad85b4ba21ee9738b551f17798b215ac", size = 1605313, upload-time = "2025-07-27T21:22:24.126Z" }, + { url = "https://files.pythonhosted.org/packages/a9/bd/102d6deb87a8524ac11cddcd31a7612b8f20bf9b473c3c645045e3b957c7/cramjam-2.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:dca88bc8b68ce6d35dafd8c4d5d59a238a56c43fa02b74c2ce5f9dfb0d1ccb46", size = 1710991, upload-time = "2025-07-27T21:22:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/0b/0d/7c84c913a5fae85b773a9dcf8874390f9d68ba0fcc6630efa7ff1541b950/cramjam-2.11.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:dba5c14b8b4f73ea1e65720f5a3fe4280c1d27761238378be8274135c60bbc6e", size = 3553368, upload-time = "2025-07-27T21:22:27.162Z" }, + { url = "https://files.pythonhosted.org/packages/2b/cc/4f6d185d8a744776f53035e72831ff8eefc2354f46ab836f4bd3c4f6c138/cramjam-2.11.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:11eb40722b3fcf3e6890fba46c711bf60f8dc26360a24876c85e52d76c33b25b", size = 1860014, upload-time = "2025-07-27T21:22:28.738Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a8/626c76263085c6d5ded0e71823b411e9522bfc93ba6cc59855a5869296e7/cramjam-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aeb26e2898994b6e8319f19a4d37c481512acdcc6d30e1b5ecc9d8ec57e835cb", size = 1693512, upload-time = "2025-07-27T21:22:30.999Z" }, + { url = "https://files.pythonhosted.org/packages/e9/52/0851a16a62447532e30ba95a80e638926fdea869a34b4b5b9d0a020083ba/cramjam-2.11.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f8d82081ed7d8fe52c982bd1f06e4c7631a73fe1fb6d4b3b3f2404f87dc40fe", size = 2025285, upload-time = "2025-07-27T21:22:32.954Z" }, + { url = "https://files.pythonhosted.org/packages/98/76/122e444f59dbc216451d8e3d8282c9665dc79eaf822f5f1470066be1b695/cramjam-2.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:092a3ec26e0a679305018380e4f652eae1b6dfe3fc3b154ee76aa6b92221a17c", size = 1761327, upload-time = "2025-07-27T21:22:34.484Z" }, + { url = "https://files.pythonhosted.org/packages/a3/bc/3a0189aef1af2b29632c039c19a7a1b752bc21a4053582a5464183a0ad3d/cramjam-2.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:529d6d667c65fd105d10bd83d1cd3f9869f8fd6c66efac9415c1812281196a92", size = 1854075, upload-time = "2025-07-27T21:22:36.157Z" }, + { url = "https://files.pythonhosted.org/packages/2e/80/8a6343b13778ce52d94bb8d5365a30c3aa951276b1857201fe79d7e2ad25/cramjam-2.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:555eb9c90c450e0f76e27d9ff064e64a8b8c6478ab1a5594c91b7bc5c82fd9f0", size = 2032710, upload-time = "2025-07-27T21:22:38.17Z" }, + { url = "https://files.pythonhosted.org/packages/df/6b/cd1778a207c29eda10791e3dfa018b588001928086e179fc71254793c625/cramjam-2.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5edf4c9e32493035b514cf2ba0c969d81ccb31de63bd05490cc8bfe3b431674e", size = 2068353, upload-time = "2025-07-27T21:22:39.615Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f0/5c2a5cd5711032f3b191ca50cb786c17689b4a9255f9f768866e6c9f04d9/cramjam-2.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fa2fe41f48c4d58d923803383b0737f048918b5a0d10390de9628bb6272b107", size = 1978104, upload-time = "2025-07-27T21:22:41.106Z" }, + { url = "https://files.pythonhosted.org/packages/f9/8b/b363a5fb2c3347504fe9a64f8d0f1e276844f0e532aa7162c061cd1ffee4/cramjam-2.11.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9ca14cf1cabdb0b77d606db1bb9e9ca593b1dbd421fcaf251ec9a5431ec449f3", size = 2030779, upload-time = "2025-07-27T21:22:42.969Z" }, + { url = "https://files.pythonhosted.org/packages/78/7b/d83dad46adb6c988a74361f81ad9c5c22642be53ad88616a19baedd06243/cramjam-2.11.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:309e95bf898829476bccf4fd2c358ec00e7ff73a12f95a3cdeeba4bb1d3683d5", size = 2155297, upload-time = "2025-07-27T21:22:44.6Z" }, + { url = "https://files.pythonhosted.org/packages/1a/be/60d9be4cb33d8740a4aa94c7513f2ef3c4eba4fd13536f086facbafade71/cramjam-2.11.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:86dca35d2f15ef22922411496c220f3c9e315d5512f316fe417461971cc1648d", size = 2169255, upload-time = "2025-07-27T21:22:46.534Z" }, + { url = "https://files.pythonhosted.org/packages/11/b0/4a595f01a243aec8ad272b160b161c44351190c35d98d7787919d962e9e5/cramjam-2.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:193c6488bd2f514cbc0bef5c18fad61a5f9c8d059dd56edf773b3b37f0e85496", size = 2155651, upload-time = "2025-07-27T21:22:48.46Z" }, + { url = "https://files.pythonhosted.org/packages/38/47/7776659aaa677046b77f527106e53ddd47373416d8fcdb1e1a881ec5dc06/cramjam-2.11.0-cp312-cp312-win32.whl", hash = "sha256:514e2c008a8b4fa823122ca3ecab896eac41d9aa0f5fc881bd6264486c204e32", size = 1603568, upload-time = "2025-07-27T21:22:50.084Z" }, + { url = "https://files.pythonhosted.org/packages/75/b1/d53002729cfd94c5844ddfaf1233c86d29f2dbfc1b764a6562c41c044199/cramjam-2.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:53fed080476d5f6ad7505883ec5d1ec28ba36c2273db3b3e92d7224fe5e463db", size = 1709287, upload-time = "2025-07-27T21:22:51.534Z" }, + { url = "https://files.pythonhosted.org/packages/0a/8b/406c5dc0f8e82385519d8c299c40fd6a56d97eca3fcd6f5da8dad48de75b/cramjam-2.11.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2c289729cc1c04e88bafa48b51082fb462b0a57dbc96494eab2be9b14dca62af", size = 3553330, upload-time = "2025-07-27T21:22:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/00/ad/4186884083d6e4125b285903e17841827ab0d6d0cffc86216d27ed91e91d/cramjam-2.11.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:045201ee17147e36cf43d8ae2fa4b4836944ac672df5874579b81cf6d40f1a1f", size = 1859756, upload-time = "2025-07-27T21:22:54.821Z" }, + { url = "https://files.pythonhosted.org/packages/54/01/91b485cf76a7efef638151e8a7d35784dae2c4ff221b1aec2c083e4b106d/cramjam-2.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:619cd195d74c9e1d2a3ad78d63451d35379c84bd851aec552811e30842e1c67a", size = 1693609, upload-time = "2025-07-27T21:22:56.331Z" }, + { url = "https://files.pythonhosted.org/packages/cd/84/d0c80d279b2976870fc7d10f15dcb90a3c10c06566c6964b37c152694974/cramjam-2.11.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6eb3ae5ab72edb2ed68bdc0f5710f0a6cad7fd778a610ec2c31ee15e32d3921e", size = 2024912, upload-time = "2025-07-27T21:22:57.915Z" }, + { url = "https://files.pythonhosted.org/packages/d6/70/88f2a5cb904281ed5d3c111b8f7d5366639817a5470f059bcd26833fc870/cramjam-2.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df7da3f4b19e3078f9635f132d31b0a8196accb2576e3213ddd7a77f93317c20", size = 1760715, upload-time = "2025-07-27T21:22:59.528Z" }, + { url = "https://files.pythonhosted.org/packages/b2/06/cf5b02081132537d28964fb385fcef9ed9f8a017dd7d8c59d317e53ba50d/cramjam-2.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:57286b289cd557ac76c24479d8ecfb6c3d5b854cce54ccc7671f9a2f5e2a2708", size = 1853782, upload-time = "2025-07-27T21:23:01.07Z" }, + { url = "https://files.pythonhosted.org/packages/57/27/63525087ed40a53d1867021b9c4858b80cc86274ffe7225deed067d88d92/cramjam-2.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28952fbbf8b32c0cb7fa4be9bcccfca734bf0d0989f4b509dc7f2f70ba79ae06", size = 2032354, upload-time = "2025-07-27T21:23:03.021Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ef/dbba082c6ebfb6410da4dd39a64e654d7194fcfd4567f85991a83fa4ec32/cramjam-2.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ed2e4099812a438b545dfbca1928ec825e743cd253bc820372d6ef8c3adff4", size = 2068007, upload-time = "2025-07-27T21:23:04.526Z" }, + { url = "https://files.pythonhosted.org/packages/35/ce/d902b9358a46a086938feae83b2251720e030f06e46006f4c1fc0ac9da20/cramjam-2.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9aecd5c3845d415bd6c9957c93de8d93097e269137c2ecb0e5a5256374bdc8", size = 1977485, upload-time = "2025-07-27T21:23:06.058Z" }, + { url = "https://files.pythonhosted.org/packages/e8/03/982f54553244b0afcbdb2ad2065d460f0ab05a72a96896a969a1ca136a1e/cramjam-2.11.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:362fcf4d6f5e1242a4540812455f5a594949190f6fbc04f2ffbfd7ae0266d788", size = 2030447, upload-time = "2025-07-27T21:23:07.679Z" }, + { url = "https://files.pythonhosted.org/packages/74/5f/748e54cdb665ec098ec519e23caacc65fc5ae58718183b071e33fc1c45b4/cramjam-2.11.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:13240b3dea41b1174456cb9426843b085dc1a2bdcecd9ee2d8f65ac5703374b0", size = 2154949, upload-time = "2025-07-27T21:23:09.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/81/c4e6cb06ed69db0dc81f9a8b1dc74995ebd4351e7a1877143f7031ff2700/cramjam-2.11.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:c54eed83726269594b9086d827decc7d2015696e31b99bf9b69b12d9063584fe", size = 2168925, upload-time = "2025-07-27T21:23:10.976Z" }, + { url = "https://files.pythonhosted.org/packages/13/5b/966365523ce8290a08e163e3b489626c5adacdff2b3da9da1b0823dfb14e/cramjam-2.11.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f8195006fdd0fc0a85b19df3d64a3ef8a240e483ae1dfc7ac6a4316019eb5df2", size = 2154950, upload-time = "2025-07-27T21:23:12.514Z" }, + { url = "https://files.pythonhosted.org/packages/3a/7d/7f8eb5c534b72b32c6eb79d74585bfee44a9a5647a14040bb65c31c2572d/cramjam-2.11.0-cp313-cp313-win32.whl", hash = "sha256:ccf30e3fe6d770a803dcdf3bb863fa44ba5dc2664d4610ba2746a3c73599f2e4", size = 1603199, upload-time = "2025-07-27T21:23:14.38Z" }, + { url = "https://files.pythonhosted.org/packages/37/05/47b5e0bf7c41a3b1cdd3b7c2147f880c93226a6bef1f5d85183040cbdece/cramjam-2.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ee36348a204f0a68b03400f4736224e9f61d1c6a1582d7f875c1ca56f0254268", size = 1708924, upload-time = "2025-07-27T21:23:16.332Z" }, + { url = "https://files.pythonhosted.org/packages/de/07/a1051cdbbe6d723df16d756b97f09da7c1adb69e29695c58f0392bc12515/cramjam-2.11.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7ba5e38c9fbd06f086f4a5a64a1a5b7b417cd3f8fc07a20e5c03651f72f36100", size = 3554141, upload-time = "2025-07-27T21:23:17.938Z" }, + { url = "https://files.pythonhosted.org/packages/74/66/58487d2e16ef3d04f51a7c7f0e69823e806744b4c21101e89da4873074bc/cramjam-2.11.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b8adeee57b41fe08e4520698a4b0bd3cc76dbd81f99424b806d70a5256a391d3", size = 1860353, upload-time = "2025-07-27T21:23:19.593Z" }, + { url = "https://files.pythonhosted.org/packages/67/b4/67f6254d166ffbcc9d5fa1b56876eaa920c32ebc8e9d3d525b27296b693b/cramjam-2.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b96a74fa03a636c8a7d76f700d50e9a8bc17a516d6a72d28711225d641e30968", size = 1693832, upload-time = "2025-07-27T21:23:21.185Z" }, + { url = "https://files.pythonhosted.org/packages/55/a3/4e0b31c0d454ae70c04684ed7c13d3c67b4c31790c278c1e788cb804fa4a/cramjam-2.11.0-cp314-cp314-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c3811a56fa32e00b377ef79121c0193311fd7501f0fb378f254c7f083cc1fbe0", size = 2027080, upload-time = "2025-07-27T21:23:23.303Z" }, + { url = "https://files.pythonhosted.org/packages/d9/c7/5e8eed361d1d3b8be14f38a54852c5370cc0ceb2c2d543b8ba590c34f080/cramjam-2.11.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5d927e87461f8a0d448e4ab5eb2bca9f31ca5d8ea86d70c6f470bb5bc666d7e", size = 1761543, upload-time = "2025-07-27T21:23:24.991Z" }, + { url = "https://files.pythonhosted.org/packages/09/0c/06b7f8b0ce9fde89470505116a01fc0b6cb92d406c4fb1e46f168b5d3fa5/cramjam-2.11.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f1f5c450121430fd89cb5767e0a9728ecc65997768fd4027d069cb0368af62f9", size = 1854636, upload-time = "2025-07-27T21:23:26.987Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c6/6ebc02c9d5acdf4e5f2b1ec6e1252bd5feee25762246798ae823b3347457/cramjam-2.11.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:724aa7490be50235d97f07e2ca10067927c5d7f336b786ddbc868470e822aa25", size = 2032715, upload-time = "2025-07-27T21:23:28.603Z" }, + { url = "https://files.pythonhosted.org/packages/a2/77/a122971c23f5ca4b53e4322c647ac7554626c95978f92d19419315dddd05/cramjam-2.11.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54c4637122e7cfd7aac5c1d3d4c02364f446d6923ea34cf9d0e8816d6e7a4936", size = 2069039, upload-time = "2025-07-27T21:23:30.319Z" }, + { url = "https://files.pythonhosted.org/packages/19/0f/f6121b90b86b9093c066889274d26a1de3f29969d45c2ed1ecbe2033cb78/cramjam-2.11.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17eb39b1696179fb471eea2de958fa21f40a2cd8bf6b40d428312d5541e19dc4", size = 1979566, upload-time = "2025-07-27T21:23:32.002Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a3/f95bc57fd7f4166ce6da816cfa917fb7df4bb80e669eb459d85586498414/cramjam-2.11.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:36aa5a798aa34e11813a80425a30d8e052d8de4a28f27bfc0368cfc454d1b403", size = 2030905, upload-time = "2025-07-27T21:23:33.696Z" }, + { url = "https://files.pythonhosted.org/packages/fc/52/e429de4e8bc86ee65e090dae0f87f45abd271742c63fb2d03c522ffde28a/cramjam-2.11.0-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:449fca52774dc0199545fbf11f5128933e5a6833946707885cf7be8018017839", size = 2155592, upload-time = "2025-07-27T21:23:35.375Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6c/65a7a0207787ad39ad804af4da7f06a60149de19481d73d270b540657234/cramjam-2.11.0-cp314-cp314-musllinux_1_1_i686.whl", hash = "sha256:d87d37b3d476f4f7623c56a232045d25bd9b988314702ea01bd9b4a94948a778", size = 2170839, upload-time = "2025-07-27T21:23:37.197Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c5/5c5db505ba692bc844246b066e23901d5905a32baf2f33719c620e65887f/cramjam-2.11.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:26cb45c47d71982d76282e303931c6dd4baee1753e5d48f9a89b3a63e690b3a3", size = 2157236, upload-time = "2025-07-27T21:23:38.854Z" }, + { url = "https://files.pythonhosted.org/packages/b0/22/88e6693e60afe98901e5bbe91b8dea193e3aa7f42e2770f9c3339f5c1065/cramjam-2.11.0-cp314-cp314-win32.whl", hash = "sha256:4efe919d443c2fd112fe25fe636a52f9628250c9a50d9bddb0488d8a6c09acc6", size = 1604136, upload-time = "2025-07-27T21:23:40.56Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f8/01618801cd59ccedcc99f0f96d20be67d8cfc3497da9ccaaad6b481781dd/cramjam-2.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:ccec3524ea41b9abd5600e3e27001fd774199dbb4f7b9cb248fcee37d4bda84c", size = 1710272, upload-time = "2025-07-27T21:23:42.236Z" }, + { url = "https://files.pythonhosted.org/packages/40/81/6cdb3ed222d13ae86bda77aafe8d50566e81a1169d49ed195b6263610704/cramjam-2.11.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:966ac9358b23d21ecd895c418c048e806fd254e46d09b1ff0cdad2eba195ea3e", size = 3559671, upload-time = "2025-07-27T21:23:44.504Z" }, + { url = "https://files.pythonhosted.org/packages/cb/43/52b7e54fe5ba1ef0270d9fdc43dabd7971f70ea2d7179be918c997820247/cramjam-2.11.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:387f09d647a0d38dcb4539f8a14281f8eb6bb1d3e023471eb18a5974b2121c86", size = 1867876, upload-time = "2025-07-27T21:23:46.987Z" }, + { url = "https://files.pythonhosted.org/packages/9d/28/30d5b8d10acd30db3193bc562a313bff722888eaa45cfe32aa09389f2b24/cramjam-2.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:665b0d8fbbb1a7f300265b43926457ec78385200133e41fef19d85790fc1e800", size = 1695562, upload-time = "2025-07-27T21:23:48.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/86/ec806f986e01b896a650655024ea52a13e25c3ac8a3a382f493089483cdc/cramjam-2.11.0-cp314-cp314t-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ca905387c7a371531b9622d93471be4d745ef715f2890c3702479cd4fc85aa51", size = 2025056, upload-time = "2025-07-27T21:23:50.404Z" }, + { url = "https://files.pythonhosted.org/packages/09/43/c2c17586b90848d29d63181f7d14b8bd3a7d00975ad46e3edf2af8af7e1f/cramjam-2.11.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c1aa56aef2c8af55a21ed39040a94a12b53fb23beea290f94d19a76027e2ffb", size = 1764084, upload-time = "2025-07-27T21:23:52.265Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a9/68bc334fadb434a61df10071dc8606702aa4f5b6cdb2df62474fc21d2845/cramjam-2.11.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e5db59c1cdfaa2ab85cc988e602d6919495f735ca8a5fd7603608eb1e23c26d5", size = 1854859, upload-time = "2025-07-27T21:23:54.085Z" }, + { url = "https://files.pythonhosted.org/packages/5b/4e/b48e67835b5811ec5e9cb2e2bcba9c3fd76dab3e732569fe801b542c6ca9/cramjam-2.11.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1f893014f00fe5e89a660a032e813bf9f6d91de74cd1490cdb13b2b59d0c9a3", size = 2035970, upload-time = "2025-07-27T21:23:55.758Z" }, + { url = "https://files.pythonhosted.org/packages/c4/70/d2ac33d572b4d90f7f0f2c8a1d60fb48f06b128fdc2c05f9b49891bb0279/cramjam-2.11.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c26a1eb487947010f5de24943bd7c422dad955b2b0f8650762539778c380ca89", size = 2069320, upload-time = "2025-07-27T21:23:57.494Z" }, + { url = "https://files.pythonhosted.org/packages/1d/4c/85cec77af4a74308ba5fca8e296c4e2f80ec465c537afc7ab1e0ca2f9a00/cramjam-2.11.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d5c8bfb438d94e7b892d1426da5fc4b4a5370cc360df9b8d9d77c33b896c37e", size = 1982668, upload-time = "2025-07-27T21:23:59.126Z" }, + { url = "https://files.pythonhosted.org/packages/55/45/938546d1629e008cc3138df7c424ef892719b1796ff408a2ab8550032e5e/cramjam-2.11.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:cb1fb8c9337ab0da25a01c05d69a0463209c347f16512ac43be5986f3d1ebaf4", size = 2034028, upload-time = "2025-07-27T21:24:00.865Z" }, + { url = "https://files.pythonhosted.org/packages/01/76/b5a53e20505555f1640e66dcf70394bcf51a1a3a072aa18ea35135a0f9ed/cramjam-2.11.0-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:1f6449f6de52dde3e2f1038284910c8765a397a25e2d05083870f3f5e7fc682c", size = 2155513, upload-time = "2025-07-27T21:24:02.92Z" }, + { url = "https://files.pythonhosted.org/packages/84/12/8d3f6ceefae81bbe45a347fdfa2219d9f3ac75ebc304f92cd5fcb4fbddc5/cramjam-2.11.0-cp314-cp314t-musllinux_1_1_i686.whl", hash = "sha256:382dec4f996be48ed9c6958d4e30c2b89435d7c2c4dbf32480b3b8886293dd65", size = 2170035, upload-time = "2025-07-27T21:24:04.558Z" }, + { url = "https://files.pythonhosted.org/packages/4b/85/3be6f0a1398f976070672be64f61895f8839857618a2d8cc0d3ab529d3dc/cramjam-2.11.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:d388bd5723732c3afe1dd1d181e4213cc4e1be210b080572e7d5749f6e955656", size = 2160229, upload-time = "2025-07-27T21:24:06.729Z" }, + { url = "https://files.pythonhosted.org/packages/57/5e/66cfc3635511b20014bbb3f2ecf0095efb3049e9e96a4a9e478e4f3d7b78/cramjam-2.11.0-cp314-cp314t-win32.whl", hash = "sha256:0a70ff17f8e1d13f322df616505550f0f4c39eda62290acb56f069d4857037c8", size = 1610267, upload-time = "2025-07-27T21:24:08.428Z" }, + { url = "https://files.pythonhosted.org/packages/ce/c6/c71e82e041c95ffe6a92ac707785500aa2a515a4339c2c7dd67e3c449249/cramjam-2.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:028400d699442d40dbda02f74158c73d05cb76587a12490d0bfedd958fd49188", size = 1713108, upload-time = "2025-07-27T21:24:10.147Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/82e35ec3c5387f1864f46b3c24bce89a07af8bb3ef242ae47281db2c1848/cramjam-2.11.0-pp310-pypy310_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:37bed927abc4a7ae2d2669baa3675e21904d8a038ed8e4313326ea7b3be62b2b", size = 3573104, upload-time = "2025-07-27T21:24:40.069Z" }, + { url = "https://files.pythonhosted.org/packages/f0/4e/0c821918080a32ba1e52c040e12dd02dada67728f07305c5f778b808a807/cramjam-2.11.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:50e4a58635fa8c6897d84847d6e065eb69f92811670fc5e9f2d9e3b6279a02b6", size = 1873441, upload-time = "2025-07-27T21:24:42.333Z" }, + { url = "https://files.pythonhosted.org/packages/a8/fd/848d077bf6abc4ce84273d8e3f3a70d61a2240519a339462f699d8acf829/cramjam-2.11.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d1ba626dd5f81f7f09bbf59f70b534e2b75e0d6582b056b7bd31b397f1c13e9", size = 1702589, upload-time = "2025-07-27T21:24:44.305Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1c/899818999bbdb59c601756b413e87d37fd65875d1315346c10e367bb3505/cramjam-2.11.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c71e140d5eb3145d61d59d0be0bf72f07cc4cf4b32cb136b09f712a3b1040f5f", size = 1773646, upload-time = "2025-07-27T21:24:46.495Z" }, + { url = "https://files.pythonhosted.org/packages/5f/26/c2813c5422c43b3dcd8b6645bc359f08870737c44325ee4accc18f24eee0/cramjam-2.11.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a6ed7926a5cca28edebad7d0fedd2ad492710ae3524d25fc59a2b20546d9ce1", size = 1994179, upload-time = "2025-07-27T21:24:49.131Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4f/af984f8d7f963f0301812cdd620ddcfd8276461ed7a786c0f89e82b14739/cramjam-2.11.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5eb4ed3cea945b164b0513fd491884993acac2153a27b93a84019c522e8eda82", size = 1714790, upload-time = "2025-07-27T21:24:51.045Z" }, + { url = "https://files.pythonhosted.org/packages/81/da/b3301962ccd6fce9fefa1ecd8ea479edaeaa38fadb1f34d5391d2587216a/cramjam-2.11.0-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:52d5db3369f95b27b9f3c14d067acb0b183333613363ed34268c9e04560f997f", size = 3573546, upload-time = "2025-07-27T21:24:52.944Z" }, + { url = "https://files.pythonhosted.org/packages/b6/c2/410ddb8ad4b9dfb129284666293cb6559479645da560f7077dc19d6bee9e/cramjam-2.11.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4820516366d455b549a44d0e2210ee7c4575882dda677564ce79092588321d54", size = 1873654, upload-time = "2025-07-27T21:24:54.958Z" }, + { url = "https://files.pythonhosted.org/packages/d5/99/f68a443c64f7ce7aff5bed369b0aa5b2fac668fa3dfd441837e316e97a1f/cramjam-2.11.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d9e5db525dc0a950a825202f84ee68d89a072479e07da98795a3469df942d301", size = 1702846, upload-time = "2025-07-27T21:24:57.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/02/0ff358ab773def1ee3383587906c453d289953171e9c92db84fdd01bf172/cramjam-2.11.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62ab4971199b2270005359cdc379bc5736071dc7c9a228581c5122d9ffaac50c", size = 1773683, upload-time = "2025-07-27T21:24:59.28Z" }, + { url = "https://files.pythonhosted.org/packages/e9/31/3298e15f87c9cf2aabdbdd90b153d8644cf989cb42a45d68a1b71e1f7aaf/cramjam-2.11.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24758375cc5414d3035ca967ebb800e8f24604ececcba3c67d6f0218201ebf2d", size = 1994136, upload-time = "2025-07-27T21:25:01.565Z" }, + { url = "https://files.pythonhosted.org/packages/c7/90/20d1747255f1ee69a412e319da51ea594c18cca195e7a4d4c713f045eff5/cramjam-2.11.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6c2eea545fef1065c7dd4eda991666fd9c783fbc1d226592ccca8d8891c02f23", size = 1714982, upload-time = "2025-07-27T21:25:05.79Z" }, +] + +[[package]] +name = "csvkit" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "agate" }, + { name = "agate-dbf" }, + { name = "agate-excel" }, + { name = "agate-sql" }, + { name = "openpyxl" }, + { name = "sqlalchemy" }, + { name = "xlrd" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/ae/df3f0a1d55a93eeae5be6e1537ecebc4e2c2ca038311e60e8b2e358a1221/csvkit-1.5.0.tar.gz", hash = "sha256:967a8be8fc58edf5621225b5a6a697b0e8730b962ea68085916a91860b22211c", size = 3811034, upload-time = "2024-03-28T15:27:22.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/aa/6d15ccff35e6cbfbfca0a4bbb8b6fa266a667561a9c9571bda8c6247ad5d/csvkit-1.5.0-py2.py3-none-any.whl", hash = "sha256:3f81e6f9af1774688ee30f4bdf8abd7f927995c85cad6491cf7478c658cfe7be", size = 44158, upload-time = "2024-03-28T15:27:20.926Z" }, +] + +[[package]] +name = "cuda-bindings" +version = "13.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/21/8464d133752951c154feafb3b65c297e7d80f301183d220bec4c830f1441/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:120fcc53d57903df529c3486962c56528cba5b7d6c57c99537320ed9922c8b86", size = 6073403, upload-time = "2026-05-29T23:11:36.22Z" }, + { url = "https://files.pythonhosted.org/packages/a8/1f/5ef51f5fbaa5d4d3201bb3d7555af028ec1aa4416275ccbf73c9e34e3d2d/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9851b0caa8bfd3bc6fa054eaf57bea7c8e9c3a62db2d2621224677f49f3c53d0", size = 6675244, upload-time = "2026-05-29T23:11:38.664Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/457ca12dad3ee9bfcc9a545cfd6b64b359ba49de40f776f6e028e678f262/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5879712accf6e14bb01aa5e67440eb84998b8d104b509cc7a6dc0b8f656a474", size = 6053539, upload-time = "2026-05-29T23:11:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/95/7a/c5e3c34a409b148f5c0f5a4ea374158f95d488862c1dffedf9aa5c639df9/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04436a9364059c84b8f9636f359eccda1cf814341f5b670c71d80d2f79dbc708", size = 6674166, upload-time = "2026-05-29T23:11:45.478Z" }, + { url = "https://files.pythonhosted.org/packages/ce/67/5e7dba1ba576dd73da5dee894ca076ca5e959450dfff66d6d510a255d1f7/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7855c4868aabc0cfae28abbe83d56734bdfbd08f08fc234ac1912a12858bf49", size = 6025351, upload-time = "2026-05-29T23:11:49.685Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/6d2e9047d1fb243dbaa364b01e0297534b9ed7fd27dba1c9f361519cf69b/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32d08f71ebcdf00f0f41eab2eb37e8da94c8ed411cc9f7f7a019ce6b34abe3a", size = 6657965, upload-time = "2026-05-29T23:11:52.227Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/2394f8163360f8391f8f1b7e72d300a82724edb81a7b7084c799fbd4c91f/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9efb21c1ee64981e184b9e0ba5eb3179e5ba3d4b51665a6cb52b8ef3d01a7cbf", size = 5920504, upload-time = "2026-05-29T23:11:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/34/c2/ef9b6a63f7dc432712a462c816662e662e00d38caa9b861c8c2588195d03/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2732904099e0a4d4db774a5fc6d91ee95fae065b4d2ecabb4968c5fe2406c9d7", size = 6476660, upload-time = "2026-05-29T23:11:59.188Z" }, + { url = "https://files.pythonhosted.org/packages/b1/81/bff68ce829999c1e4209c761bbf903b1c06ec570416ddb25020864ad5907/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ab2f74ed65bfef4163ba07a8db16f1085e0729291db12a2423aff84ee8278b8", size = 6013639, upload-time = "2026-05-29T23:12:03.509Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e0/c8a1f0c8f9ffdea4f5fe6dbab89b326cef4d85caf489dad39e209da89416/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd4c814d311ec08c981f6dded1dbe7d4b371067ee4f6c14cccec4bde9590f80", size = 6534419, upload-time = "2026-05-29T23:12:05.633Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/83b1f563925b290f2d11a01a77a84013ba56052fe3653a5bef3ccfbb43d6/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3c772dfff49681541d59630c90f858e173ac926b9c593a2b7123f2a1043cc76", size = 5809771, upload-time = "2026-05-29T23:12:10.422Z" }, + { url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c8/26f2e4aae92f11522a96043892ba39a90eac610d5242523aa863212bc1c7/cuda_pathfinder-1.5.5-py3-none-any.whl", hash = "sha256:0228c023f95d1480f143ef5c8922d27a2ab052087a942e81dc289c9eb8f91689", size = 51671, upload-time = "2026-05-27T01:21:25.413Z" }, +] + +[[package]] +name = "cuda-toolkit" +version = "13.0.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" }, +] + +[package.optional-dependencies] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "sys_platform == 'linux'" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +curand = [ + { name = "nvidia-curand", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cusolver = [ + { name = "nvidia-cusolver", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, +] + +[[package]] +name = "dbfread" +version = "2.0.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/ae/a5891681f5012724d062a4ca63ec2ff539c73d5804ba594e7e0e72099d3f/dbfread-2.0.7.tar.gz", hash = "sha256:07c8a9af06ffad3f6f03e8fe91ad7d2733e31a26d2b72c4dd4cfbae07ee3b73d", size = 33212, upload-time = "2016-11-25T11:25:01.408Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/94/51349e43503e30ed7b4ecfe68a8809cdb58f722c0feb79d18b1f1e36fe74/dbfread-2.0.7-py2.py3-none-any.whl", hash = "sha256:f604def58c59694fa0160d7be5d0b8d594467278d2bb6a47d46daf7162c84cec", size = 20018, upload-time = "2016-11-25T11:27:36.001Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload-time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload-time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "fastparquet" +version = "2024.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cramjam" }, + { name = "fsspec" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pandas", version = "3.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b4/66/862da14f5fde4eff2cedc0f51a8dc34ba145088e5041b45b2d57ac54f922/fastparquet-2024.11.0.tar.gz", hash = "sha256:e3b1fc73fd3e1b70b0de254bae7feb890436cb67e99458b88cb9bd3cc44db419", size = 467192, upload-time = "2024-11-15T19:30:10.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/56/476f5b83476a256489879b78513bee737691a80905e246a2daa30ebcc362/fastparquet-2024.11.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:60ccf587410f0979105e17036df61bb60e1c2b81880dc91895cdb4ee65b71e7f", size = 910272, upload-time = "2024-11-12T20:37:19.594Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ad/4ce73440df874479f7205fe5445090f71ed4e9bd77fdb3b740253ce82703/fastparquet-2024.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5ad5fc14b0567e700bea3cd528a0bd45a6f9371370b49de8889fb3d10a6574a", size = 684095, upload-time = "2024-11-12T20:37:22.957Z" }, + { url = "https://files.pythonhosted.org/packages/20/37/c3164261d6183d529a59afef2749821b262c8581d837faa91043837c6f76/fastparquet-2024.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b74333914f454344458dab9d1432fda9b70d62e28dc7acb1512d937ef1424ee", size = 1700355, upload-time = "2024-11-12T20:37:25.792Z" }, + { url = "https://files.pythonhosted.org/packages/e6/95/cf4b175c22160ec21e4664830763bfaa80b2cf05133ef854c3f436d01c16/fastparquet-2024.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41d1610130b5cb1ce36467766191c5418cba8631e2bfe3affffaf13f9be4e7a8", size = 1714663, upload-time = "2024-11-12T20:37:28.369Z" }, + { url = "https://files.pythonhosted.org/packages/2c/31/b6c8cdb6d5df964a192e4e8c8ecd979718afb9ca7e2dc9243a4368b370e9/fastparquet-2024.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d281edd625c33628ba028d3221180283d6161bc5ceb55eae1f0ca1678f864f26", size = 1666729, upload-time = "2024-11-12T20:37:30.243Z" }, + { url = "https://files.pythonhosted.org/packages/31/e5/8a0575c46a7973849f8f2a88af16618b9c7efe98f249f03e3e3de69c2b86/fastparquet-2024.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fa56b19a29008c34cfe8831e810f770080debcbffc69aabd1df4d47572181f9c", size = 1741669, upload-time = "2024-11-12T20:37:32.067Z" }, + { url = "https://files.pythonhosted.org/packages/bb/6a/669f8c9cf2fc6e30c9353832f870e5a2e170b458d12c5080837f742d963d/fastparquet-2024.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5914ecfa766b7763201b9f49d832a5e89c2dccad470ca4f9c9b228d9a8349756", size = 1782359, upload-time = "2024-11-12T20:37:33.806Z" }, + { url = "https://files.pythonhosted.org/packages/70/c0/1374cb43924739f4542e39d972481c1f4c7dd96808a1947450808e4e7df7/fastparquet-2024.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:561202e8f0e859ccc1aa77c4aaad1d7901b2d50fd6f624ca018bae4c3c7a62ce", size = 670700, upload-time = "2024-11-12T20:37:35.312Z" }, + { url = "https://files.pythonhosted.org/packages/7c/51/e0d6e702523ac923ede6c05e240f4a02533ccf2cea9fec7a43491078e920/fastparquet-2024.11.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:374cdfa745aa7d5188430528d5841cf823eb9ad16df72ad6dadd898ccccce3be", size = 909934, upload-time = "2024-11-12T20:37:37.049Z" }, + { url = "https://files.pythonhosted.org/packages/0a/c8/5c0fb644c19a8d80b2ae4d8aa7d90c2d85d0bd4a948c5c700bea5c2802ea/fastparquet-2024.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c8401bfd86cccaf0ab7c0ade58c91ae19317ff6092e1d4ad96c2178197d8124", size = 683844, upload-time = "2024-11-12T20:37:38.456Z" }, + { url = "https://files.pythonhosted.org/packages/33/4a/1e532fd1a0d4d8af7ffc7e3a8106c0bcd13ed914a93a61e299b3832dd3d2/fastparquet-2024.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9cca4c6b5969df5561c13786f9d116300db1ec22c7941e237cfca4ce602f59b", size = 1791698, upload-time = "2024-11-12T20:37:41.101Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e8/e1ede861bea68394a755d8be1aa2e2d60a3b9f6b551bfd56aeca74987e2e/fastparquet-2024.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a9387e77ac608d8978774caaf1e19de67eaa1386806e514dcb19f741b19cfe5", size = 1804289, upload-time = "2024-11-12T20:37:43.08Z" }, + { url = "https://files.pythonhosted.org/packages/4f/1e/957090cccaede805583ca3f3e46e2762d0f9bf8860ecbce65197e47d84c1/fastparquet-2024.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6595d3771b3d587a31137e985f751b4d599d5c8e9af9c4858e373fdf5c3f8720", size = 1753638, upload-time = "2024-11-12T20:37:45.498Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/344787c685fd1531f07ae712a855a7c34d13deaa26c3fd4a9231bea7dbab/fastparquet-2024.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:053695c2f730b78a2d3925df7cd5c6444d6c1560076af907993361cc7accf3e2", size = 1814407, upload-time = "2024-11-12T20:37:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ec/ab9d5685f776a1965797eb68c4364c72edf57cd35beed2df49b34425d1df/fastparquet-2024.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0a52eecc6270ae15f0d51347c3f762703dd667ca486f127dc0a21e7e59856ae5", size = 1874462, upload-time = "2024-11-12T20:37:49.755Z" }, + { url = "https://files.pythonhosted.org/packages/90/4f/7a4ea9a7ddf0a3409873f0787f355806f9e0b73f42f2acecacdd9a8eff0a/fastparquet-2024.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:e29ff7a367fafa57c6896fb6abc84126e2466811aefd3e4ad4070b9e18820e54", size = 671023, upload-time = "2024-11-12T20:37:51.461Z" }, + { url = "https://files.pythonhosted.org/packages/08/76/068ac7ec9b4fc783be21a75a6a90b8c0654da4d46934d969e524ce287787/fastparquet-2024.11.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dbad4b014782bd38b58b8e9f514fe958cfa7a6c4e187859232d29fd5c5ddd849", size = 915968, upload-time = "2024-11-12T20:37:52.861Z" }, + { url = "https://files.pythonhosted.org/packages/c7/9e/6d3b4188ad64ed51173263c07109a5f18f9c84a44fa39ab524fca7420cda/fastparquet-2024.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:403d31109d398b6be7ce84fa3483fc277c6a23f0b321348c0a505eb098a041cb", size = 685399, upload-time = "2024-11-12T20:37:54.899Z" }, + { url = "https://files.pythonhosted.org/packages/8f/6c/809220bc9fbe83d107df2d664c3fb62fb81867be8f5218ac66c2e6b6a358/fastparquet-2024.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbbb9057a26acf0abad7adf58781ee357258b7708ee44a289e3bee97e2f55d42", size = 1758557, upload-time = "2024-11-12T20:37:56.553Z" }, + { url = "https://files.pythonhosted.org/packages/e0/2c/b3b3e6ca2e531484289024138cd4709c22512b3fe68066d7f9849da4a76c/fastparquet-2024.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63e0e416e25c15daa174aad8ba991c2e9e5b0dc347e5aed5562124261400f87b", size = 1781052, upload-time = "2024-11-12T20:37:58.339Z" }, + { url = "https://files.pythonhosted.org/packages/21/fe/97ed45092d0311c013996dae633122b7a51c5d9fe8dcbc2c840dc491201e/fastparquet-2024.11.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2d7f02f57231e6c86d26e9ea71953737202f20e948790e5d4db6d6a1a150dc", size = 1715797, upload-time = "2024-11-12T20:38:00.694Z" }, + { url = "https://files.pythonhosted.org/packages/24/df/02fa6aee6c0d53d1563b5bc22097076c609c4c5baa47056b0b4bed456fcf/fastparquet-2024.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbe4468146b633d8f09d7b196fea0547f213cb5ce5f76e9d1beb29eaa9593a93", size = 1795682, upload-time = "2024-11-12T20:38:02.38Z" }, + { url = "https://files.pythonhosted.org/packages/b0/25/f4f87557589e1923ee0e3bebbc84f08b7c56962bf90f51b116ddc54f2c9f/fastparquet-2024.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:29d5c718817bcd765fc519b17f759cad4945974421ecc1931d3bdc3e05e57fa9", size = 1857842, upload-time = "2024-11-12T20:38:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f9/98cd0c39115879be1044d59c9b76e8292776e99bb93565bf990078fd11c4/fastparquet-2024.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:74a0b3c40ab373442c0fda96b75a36e88745d8b138fcc3a6143e04682cbbb8ca", size = 673269, upload-time = "2024-12-11T21:22:48.073Z" }, + { url = "https://files.pythonhosted.org/packages/47/e3/e7db38704be5db787270d43dde895eaa1a825ab25dc245e71df70860ec12/fastparquet-2024.11.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:59e5c5b51083d5b82572cdb7aed0346e3181e3ac9d2e45759da2e804bdafa7ee", size = 912523, upload-time = "2024-11-12T20:38:06.003Z" }, + { url = "https://files.pythonhosted.org/packages/d3/66/e3387c99293dae441634e7724acaa425b27de19a00ee3d546775dace54a9/fastparquet-2024.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdadf7b6bad789125b823bfc5b0a719ba5c4a2ef965f973702d3ea89cff057f6", size = 683779, upload-time = "2024-11-12T20:38:07.442Z" }, + { url = "https://files.pythonhosted.org/packages/0a/21/d112d0573d086b578bf04302a502e9a7605ea8f1244a7b8577cd945eec78/fastparquet-2024.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46b2db02fc2a1507939d35441c8ab211d53afd75d82eec9767d1c3656402859b", size = 1751113, upload-time = "2024-11-12T20:38:09.36Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a7/040507cee3a7798954e8fdbca21d2dbc532774b02b882d902b8a4a6849ef/fastparquet-2024.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3afdef2895c9f459135a00a7ed3ceafebfbce918a9e7b5d550e4fae39c1b64d", size = 1780496, upload-time = "2024-11-12T20:38:11.022Z" }, + { url = "https://files.pythonhosted.org/packages/bc/75/d0d9f7533d780ec167eede16ad88073ee71696150511126c31940e7f73aa/fastparquet-2024.11.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36b5c9bd2ffaaa26ff45d59a6cefe58503dd748e0c7fad80dd905749da0f2b9e", size = 1713608, upload-time = "2024-11-12T20:38:12.848Z" }, + { url = "https://files.pythonhosted.org/packages/30/fa/1d95bc86e45e80669c4f374b2ca26a9e5895a1011bb05d6341b4a7414693/fastparquet-2024.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6b7df5d3b61a19d76e209fe8d3133759af1c139e04ebc6d43f3cc2d8045ef338", size = 1792779, upload-time = "2024-11-12T20:38:14.5Z" }, + { url = "https://files.pythonhosted.org/packages/13/3d/c076beeb926c79593374c04662a9422a76650eef17cd1c8e10951340764a/fastparquet-2024.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b35823ac7a194134e5f82fa4a9659e42e8f9ad1f2d22a55fbb7b9e4053aabbb", size = 1851322, upload-time = "2024-11-12T20:38:16.231Z" }, + { url = "https://files.pythonhosted.org/packages/09/5a/1d0d47e64816002824d4a876644e8c65540fa23f91b701f0daa726931545/fastparquet-2024.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:d20632964e65530374ff7cddd42cc06aa0a1388934903693d6d22592a5ba827b", size = 673266, upload-time = "2024-11-12T20:38:17.661Z" }, +] + +[[package]] +name = "filelock" +version = "3.29.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/f5/3557bf28e0f1943e4849154c821533706e6dea010f96fb6aa0b6949037d1/filelock-3.29.3.tar.gz", hash = "sha256:7fc1b3f39cf172fd8203812043c57b8a65aef9969f38b6704f628b881f761a84", size = 61956, upload-time = "2026-06-10T17:37:11.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/8f/b61d427c4f49a8bdadc93f4e7e74df8a6df6f77ee6e26bf0df53d3925363/filelock-3.29.3-py3-none-any.whl", hash = "sha256:e58333029cc9b925f39aad59b1d8f0a1ad836af4e60d7217f4a4dba87461261d", size = 42324, upload-time = "2026-06-10T17:37:10.37Z" }, +] + +[[package]] +name = "flatbuffers" +version = "25.12.19" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/2d/d2a548598be01649e2d46231d151a6c56d10b964d94043a335ae56ea2d92/flatbuffers-25.12.19-py2.py3-none-any.whl", hash = "sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4", size = 26661, upload-time = "2025-12-19T23:16:13.622Z" }, +] + +[[package]] +name = "fsspec" +version = "2026.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/8d/1c51c094345df128ca4a990d633fe1a0ff28726c9e6b3c41ba65087bba1d/fsspec-2026.4.0.tar.gz", hash = "sha256:301d8ac70ae90ef3ad05dcf94d6c3754a097f9b5fe4667d2787aa359ec7df7e4", size = 312760, upload-time = "2026-04-29T20:42:38.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", hash = "sha256:11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2", size = 203402, upload-time = "2026-04-29T20:42:36.842Z" }, +] + +[[package]] +name = "greenlet" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/6e/802acd792aebb2256fbbee8cacf2727faaeb6f240ac11008f09eae4414bc/greenlet-3.5.1.tar.gz", hash = "sha256:5a56aeb7d5d9cc4b3a735efb5095bd4b4f6f0e4f93e5ca876d0e2315137b7829", size = 197356, upload-time = "2026-05-20T15:05:03.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/21/117c8710abb7f146d804a124c07eb5964a60b90d02b72452885aecc18efa/greenlet-3.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:7eacb17a9d41538a2bc4912eba5ef13823c83cb69e4d141d0813debe7163187f", size = 283510, upload-time = "2026-05-20T13:12:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f7/6762a56fa5f6c2295c449c6524e10ce481e381c994cc44d9d03aef0700fb/greenlet-3.5.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e5cc9606aa5f4e0bde0d3bd502b44f743864c3ffa5cfa1011b1e30f5aa02366f", size = 599696, upload-time = "2026-05-20T14:00:02.906Z" }, + { url = "https://files.pythonhosted.org/packages/0f/05/85a511e68ee109aff0aa00b4b497806091dd2d82ce209e49c6e801bd5d92/greenlet-3.5.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3d35f87c7253b715d13d679e0783d845910144f282cb939fe1ba4ac8616269c", size = 612618, upload-time = "2026-05-20T14:05:39.202Z" }, + { url = "https://files.pythonhosted.org/packages/89/b8/8b83d18ae07c46c019617f35afd7b47aab7f9b4fbb12fc637d681e10bdd8/greenlet-3.5.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:540dae7b956209af4d70a3be35927b4055f617763771e5e84a5255bea934d2f5", size = 612947, upload-time = "2026-05-20T13:14:23.469Z" }, + { url = "https://files.pythonhosted.org/packages/5d/14/ad1f9fc9b82384c010212464a3702bd911f95dab2f1180bc6fbcfb1f958c/greenlet-3.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed8cdb691169715a9a492844a83246f090182247d1a5031dc78a403f68ba1e97", size = 1571425, upload-time = "2026-05-20T14:02:22.671Z" }, + { url = "https://files.pythonhosted.org/packages/46/1c/43b8203cf10f4292c9e3d270e9e5f5ade79115a0a0ca5ea6f1be5f8915a7/greenlet-3.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9d59e840387076a51016777a9328b3f2c427c6f9208a6e958bad251be50a648d", size = 1638688, upload-time = "2026-05-20T13:14:30.026Z" }, + { url = "https://files.pythonhosted.org/packages/ac/6e/0344b1e99f58f71715456e46492101fd2daa408957b8186ade0a4b515da7/greenlet-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:b9152fca4a6466e114aaec745ae61cba739903a109754a9d4e1262f01e9259b1", size = 237763, upload-time = "2026-05-20T13:11:35.659Z" }, + { url = "https://files.pythonhosted.org/packages/42/3c/ff890b466eaba2b0f5e6bdfff025f8c75f41b8ffdc3dbc3d24ad261e764a/greenlet-3.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:73f78f9b9f0a5c06e5c946ba1e8e36f5114923b6be109ee618c54f079c3ea14f", size = 284764, upload-time = "2026-05-20T13:09:10.204Z" }, + { url = "https://files.pythonhosted.org/packages/81/0e/5e5457be3d256918f6a4756f073548a3f0190836e2cc94aa6d0d617a940b/greenlet-3.5.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a0cbed8bb44e23c5b199f888f4e4ce096b45ad9f25ff74a7ad0213875e936bb2", size = 603479, upload-time = "2026-05-20T14:00:04.757Z" }, + { url = "https://files.pythonhosted.org/packages/6d/e1/f89a21d58d308298e6f275f13a1b472ed96c680b601a371b08be6a725989/greenlet-3.5.1-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a203a8bd0acb0701653d3bbb26e404854a68674139ed5cbb778830f42b09bb33", size = 615495, upload-time = "2026-05-20T14:05:40.87Z" }, + { url = "https://files.pythonhosted.org/packages/75/de/af6cef182862d2ccd6975440d21c9058a77c3f9b469abf94e322dfd2e0e3/greenlet-3.5.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a271fcd66c74615cda6a964fda3f304267a12e50a084472218a39bb0376f563", size = 614754, upload-time = "2026-05-20T13:14:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c6/50e520283a9f19388a7326b05f9e8637e566003475eacaadad04f558c68d/greenlet-3.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ded7b068c7c31c1a8657d4fd42d886b3e051ae29f88b80c5ff9d502257b0f071", size = 1574097, upload-time = "2026-05-20T14:02:24.003Z" }, + { url = "https://files.pythonhosted.org/packages/21/1c/13abd1f4860d987fa5e1170a01930d6e6cd40d328de487a3c9fdaff0ffd0/greenlet-3.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0932b81d72f552ded9d810d00021b64d89f2195a91ce115b893f943b7a4ab3c", size = 1641058, upload-time = "2026-05-20T13:14:31.83Z" }, + { url = "https://files.pythonhosted.org/packages/f5/56/5f332b7705545eac2dc01b4e9254d24a793f2656d55d5cc6b94ee59d22ae/greenlet-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:88e300d136eac057b2397aa1cfd7328b4c87c7eb66a09c7bc6a1292234db474e", size = 238089, upload-time = "2026-05-20T13:14:03.229Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a9/a3c2fa886c5b94863fb0e61b3bc14610b7aa94cf4f17f8741b11708305fc/greenlet-3.5.1-cp311-cp311-win_arm64.whl", hash = "sha256:cc6ab7e555c8a112ad3a76e368e86e12a2754bcae1652a5602e133ec7b635523", size = 234989, upload-time = "2026-05-20T13:08:27.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/37/4549f149c9797c21b32c2683c33522af22522099de128b2406672526d005/greenlet-3.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:fa4f98af3a528f0c3fd592a26df7f376f93329c8f4d987f6bb979057af8bf5e2", size = 286220, upload-time = "2026-05-20T13:07:28.463Z" }, + { url = "https://files.pythonhosted.org/packages/38/ff/a4f436709716965eaab9f36ea7b906c8a927fbe32fb1372a2071d964f6b1/greenlet-3.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ffea73584b216150eab159b6d12348fb253e68757974de1e2c40d8a318ac89ed", size = 601585, upload-time = "2026-05-20T14:00:06.141Z" }, + { url = "https://files.pythonhosted.org/packages/65/ad/54bc3fcee3ad368a61b19b67d88117f7a8c29727bf71fffdeda81fbd946e/greenlet-3.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1072b4f9edcc1e192d9283a66a3e68d6b84c561de33a83d7858beb9ba1effe10", size = 614215, upload-time = "2026-05-20T14:05:42.675Z" }, + { url = "https://files.pythonhosted.org/packages/40/69/b91cda0647df839483201545913514c2827ebea5e5ccdf931842763bc127/greenlet-3.5.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:add5217d68b31130f0beca584d7fef4878327d2e31642b66618a14eef312b63b", size = 611358, upload-time = "2026-05-20T13:14:26.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/90/3cf77e080350cd02fa307bb2abf05df48f4482c240275bbd2c203ba8bb1c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a5ea42a752d47a145eae922b605cd1634665ac3d5ec1e72402d5048e8d60d207", size = 1570475, upload-time = "2026-05-20T14:02:25.29Z" }, + { url = "https://files.pythonhosted.org/packages/65/2c/18cece62045e74598c3c393f70dce4a63f56222015ba29a5d4eeb04f764c/greenlet-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5551170cf4f5ff5623e9af81323751979fee2c731e2287b61f73cd27257b823", size = 1635625, upload-time = "2026-05-20T13:14:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/30/f5/310d104ddf41eb5a70f4c268d22508dfb0c3c8e86fec152be34d0d2ed819/greenlet-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c8bb982ad117d29478ef8f5533e97df21f1e2befd17a299257b0c96d1371c0b", size = 238791, upload-time = "2026-05-20T13:10:39.018Z" }, + { url = "https://files.pythonhosted.org/packages/62/90/ceca11f504cd23a8047a3dea31919adc48df9b626dd0c13f0d858734fdfd/greenlet-3.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:80eb4b04dadc4e67df3fae179a32c4706a3f495bc7f22fc8a81115d5f5512188", size = 235580, upload-time = "2026-05-20T13:08:45.056Z" }, + { url = "https://files.pythonhosted.org/packages/27/69/7f7e5372d998b81001899b1c0823c957aa413ba0f2662e65821611cc31e4/greenlet-3.5.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:51518ff74664078fc51bffcc6fc529b0df5ae58da192691cee765d45ce944a2b", size = 285060, upload-time = "2026-05-20T13:08:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/b1/bf/387f9b6b865fd2ae0d0be09e0004827295a01b71be76ed350dd1e28a91a4/greenlet-3.5.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ffdb3c0bb002c99cd8f298957e046c3dbf6006b5b7cdf11a4e19194624a0a0a", size = 604370, upload-time = "2026-05-20T14:00:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/32/f5/169ce3d4e4c67291bd18f8cbe0299c9f3e45102c7f1fb3c14780c93e4532/greenlet-3.5.1-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7715a5a2c3378ba602c3a440558261e13a820bb53a82693aacd7b7f6d964e283", size = 616987, upload-time = "2026-05-20T14:05:44.237Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e5/7f2e41d5273be07e77560d61ea4e56485b4d6c316d2a84518c62d1364061/greenlet-3.5.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc71ff466927a201b08305acac451ebe1aedfcea002f62f1f2f2ac2ac1e6a135", size = 613911, upload-time = "2026-05-20T13:14:27.539Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a4/fbdc67579b73615a1f91615e814303cc71e06128f7baaba87be79b8fb90c/greenlet-3.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cd443683db272ebaaca03af98c0b063ab30db70ea8a31a1559f35e3f7b744ccd", size = 1570689, upload-time = "2026-05-20T14:02:27.225Z" }, + { url = "https://files.pythonhosted.org/packages/e6/b4/77abbe35078be39718a46cd49caf16bceb35662f97a34101dca28aa98e47/greenlet-3.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:089fff7a6ce8d9316d1f65ebc00273a56be258c1725b32b94de90a3a979557e1", size = 1635602, upload-time = "2026-05-20T13:14:36.344Z" }, + { url = "https://files.pythonhosted.org/packages/37/f7/129f27ca700845b8ee8ca88ce7f43435a1239c2eddb7677fc938822762cf/greenlet-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:110a1ca7b49b014b097f6078272c3f4ed31af45b254de5228b79adba879f6af9", size = 238683, upload-time = "2026-05-20T13:11:50.57Z" }, + { url = "https://files.pythonhosted.org/packages/6d/5c/a485a36e87df8d8fd0632ee01511244f5156a20ed3746cc6599340326395/greenlet-3.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f16ba1efc0715b680a18b8123d90dad887c6112ae3555b4b5c32c149540c6b4e", size = 235499, upload-time = "2026-05-20T13:12:42.028Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/c62454606daf5640369c94d8a9dd540599b1bfc090e2d2180cb77f4038d2/greenlet-3.5.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d8ab31c9de8651a2facdd5c5bb0011f2380dd1a7af78ce2adf4b56095294fc07", size = 285579, upload-time = "2026-05-20T13:08:56.396Z" }, + { url = "https://files.pythonhosted.org/packages/ec/71/c4270398c2eba968a6071af1dfbdcaeee6ec1c24bc8b435b8cc452700da6/greenlet-3.5.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e300185139abc337ade480c327183adf42a875ac7181bfe66d7d4efea31fbea", size = 651106, upload-time = "2026-05-20T14:00:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ab/71e34b78a44ec271fb5f550c17bc46d301ddc5953890d935f270b0dcdb5a/greenlet-3.5.1-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7ffdb990dcaa0234cf9845aead5df2e3c3a8b6507d409274dd87e0d5ab05ffc2", size = 663478, upload-time = "2026-05-20T14:05:45.88Z" }, + { url = "https://files.pythonhosted.org/packages/77/96/4efd6fa5c62c85426a0c19077a586258ebc3a2a146ff2493e4312a697a22/greenlet-3.5.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f82b3597e9d83b63408affed0b48fd0f54935edac4302237b9a837be0dae33c", size = 660800, upload-time = "2026-05-20T13:14:29.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e0/6c71401a25cac7000261304e866a2f2cc04dc74810d40e2f118aa4799495/greenlet-3.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c0141e37414c10164e702b8fb1473304221ad98f71600850c6ef7ff4880feba0", size = 1617518, upload-time = "2026-05-20T14:02:28.662Z" }, + { url = "https://files.pythonhosted.org/packages/41/26/c5c06643e8c0af9e7bf18e16cb51d0ab7625155f0392e1c9015d66d556cd/greenlet-3.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:50ae25a67bea74ea41fb14b960bc532df73eb713417b2d61892dced82fe8d3bc", size = 1681593, upload-time = "2026-05-20T13:14:39.417Z" }, + { url = "https://files.pythonhosted.org/packages/8a/bd/e11a108317485075e68af9d23039619b86b28130c3b50d227d42edece64b/greenlet-3.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:8a17c42330e261299766b75ac1ea32caa437a9453c8f65d16a13140db378ecd3", size = 239800, upload-time = "2026-05-20T13:09:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/8e8e8417b7bf28639a5a56356ef934d0375e1d0c70a57e04d7701e870ffe/greenlet-3.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:7b5f5fae05b8ac6d176a61b60c394a8cbdc2b5b91b81793066e68745cf165e54", size = 236862, upload-time = "2026-05-20T13:09:10.498Z" }, + { url = "https://files.pythonhosted.org/packages/90/12/41bf27fde4d3605d3773ae57751eda182b8be2f5398011c041173b1d9534/greenlet-3.5.1-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:ea8da1e900d758d078810d4255d8c6aa572181896a31ec79d779eb79c3adc9ad", size = 293637, upload-time = "2026-05-20T13:12:35.529Z" }, + { url = "https://files.pythonhosted.org/packages/44/44/ba14b23e9757707050c2f397d305bbcae62e5d7cad122f8b6baec5ae4a1f/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a19570c52a21420dcbc94e661994bc325c0b5b11304540fed514586da5dc8f2e", size = 650840, upload-time = "2026-05-20T14:00:11.079Z" }, + { url = "https://files.pythonhosted.org/packages/a8/37/5ddc2b686a6844f91abecef43411842426da2e1573f60b49ecf2547f4ae1/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3d955c89b75eeca4723d7cc14135f393cd47c32e2a6cb4a8e4c6e760a26b0986", size = 656416, upload-time = "2026-05-20T14:05:47.118Z" }, + { url = "https://files.pythonhosted.org/packages/e1/f0/d17510297c35a2992712f0bf84de3779749999f7d3d63aa1f09db7c62dbe/greenlet-3.5.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2daaaebd1a5aa88c49045b6baf9310b3263796bd88db713edf37cf53e7bb4e", size = 654397, upload-time = "2026-05-20T13:14:30.696Z" }, + { url = "https://files.pythonhosted.org/packages/37/eb/147387705bb89092645b012586e7273cb5ed3c90ef7eaf3a69173eaf0209/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bfbd69cc349e43bf3a8ae1c85548ff0718efc887615c2db16c3833d7b0b072d", size = 1614469, upload-time = "2026-05-20T14:02:30.192Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4e/37ee0da7732b7aa9896f17e15579a9df34b9fcb9dd494f0adfa749af6623/greenlet-3.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4378720dd888136c27215a0214d32a4d37c3852765d45bc37aad0623423cfd78", size = 1675115, upload-time = "2026-05-20T13:14:40.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/f3/97dfcf4a6eb5077f8a672234216fb5923eb89f2cab7081cb10b2cf75b605/greenlet-3.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:45718441607f9325d948db98cbc691276059316d0358c188c246da4e1d4d23d2", size = 245246, upload-time = "2026-05-20T13:12:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/5d/73/d7f72e34b582f694f4a9b248162db7b09cc458a259ba8f0c0bfa1a34ea7d/greenlet-3.5.1-cp315-cp315-macosx_11_0_universal2.whl", hash = "sha256:2baee5ca02031757ffe8cc3d69f0cc0aec7065ce362622da74f32d3bcab1c541", size = 285575, upload-time = "2026-05-20T13:12:07.043Z" }, + { url = "https://files.pythonhosted.org/packages/df/59/fa9c6e87dc8ad27a95dabe2f29f372b733d05a8a67470f6c901ed9975655/greenlet-3.5.1-cp315-cp315-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b1ec3274918a81d3ea778b9e75b56b72b33f300edb6cf7f3a7fe1dae56683de", size = 656428, upload-time = "2026-05-20T14:00:12.556Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f9/e753408871eaa61dfe35e619cfc67512b036fde99893685d50eea9e07146/greenlet-3.5.1-cp315-cp315-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:111e2390ffffc47d5840b01711dd7fac07d4c09283d0283e7f3264b14e284c64", size = 667064, upload-time = "2026-05-20T14:05:48.662Z" }, + { url = "https://files.pythonhosted.org/packages/96/27/5565b5b40389f1c7753003a07e21892fda8660926787036d5bc0308b8113/greenlet-3.5.1-cp315-cp315-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e630136e905fe5ff43e86945ae41220b6d1470956a39220e708110ac48d01ea5", size = 665697, upload-time = "2026-05-20T13:14:32.943Z" }, + { url = "https://files.pythonhosted.org/packages/cf/82/e7de4178c0c2d1c9a5a3be3cc0b33e46a85b3ee4a77c071bf7ad8600e079/greenlet-3.5.1-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:975eac34b44a7077ca4d421348455b94f0f518246a7f14bc6d2fdcfe5b584368", size = 1621256, upload-time = "2026-05-20T14:02:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/00/10/f2dddcf7dacac17dfc68691809589adad06135eb28930429cf58a6467a2f/greenlet-3.5.1-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:9ab3c3a0b2ae6198e67c898dad5215a49f9ae0d0081b3c3ec59f333e39eeca26", size = 1685956, upload-time = "2026-05-20T13:14:42.55Z" }, + { url = "https://files.pythonhosted.org/packages/22/17/4a232b32133230ada52f70e9d7f5b65b0caef8772f01849bd8d149e7e4ca/greenlet-3.5.1-cp315-cp315-win_amd64.whl", hash = "sha256:cbfc69be86e10dcfef5b1e6269d1d6926552aa89ee39e1de3353360c1b6989ab", size = 239802, upload-time = "2026-05-20T13:13:15.481Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ae/4e623a7e6d4d2a5f4cb8e4c82de4169fc637942caae68d6e676b8a128ac5/greenlet-3.5.1-cp315-cp315-win_arm64.whl", hash = "sha256:92fd6d44ac5e5a887c8a5dc4a8ba0ba908527c31c12f78c6bc7dcfe8aab279f6", size = 236853, upload-time = "2026-05-20T13:15:37.301Z" }, + { url = "https://files.pythonhosted.org/packages/7a/57/816d9cff29119da3505b3d6a5e14a8af89006ac36f47f891ff293ee05af1/greenlet-3.5.1-cp315-cp315t-macosx_11_0_universal2.whl", hash = "sha256:a6fdf2433a5441ef9a95464f7c3e674775da1c8c1177fff311cee1acad4626ed", size = 293877, upload-time = "2026-05-20T13:10:19.078Z" }, + { url = "https://files.pythonhosted.org/packages/23/a1/59b0a7c7d140ff1a75626680b9a9899b79a9176cab298b394968fb023295/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7546556f0d649f99f6a361098a55f761181bb2ea12ff150bb16d26092ad88244", size = 655333, upload-time = "2026-05-20T14:00:14.758Z" }, + { url = "https://files.pythonhosted.org/packages/72/1b/5efe127597625042218939d01855109f352779050768b670b52edcc16a6c/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d5ee3ea898009fa898f85f9982255d35278c477bebe185beca249cab42d4526c", size = 659443, upload-time = "2026-05-20T14:05:50.159Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6d/c404246ea4d22d097a7426d0efb5b781bd7eb67715f09e79001bd552ab18/greenlet-3.5.1-cp315-cp315t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5c81f74d204d3edd136ebfd50dce53acbb776995d721a0fe801626cfc93b8cd", size = 658356, upload-time = "2026-05-20T13:14:35.091Z" }, + { url = "https://files.pythonhosted.org/packages/51/02/f8ee37fb6d2219329f350af241c27fcf12df57e723d11f6fc6d3bacdadaa/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:2c18ef16bf6d4dd410e4dd52996888ea1497be26892fe5bbc73580aba4287b8e", size = 1619216, upload-time = "2026-05-20T14:02:33.403Z" }, + { url = "https://files.pythonhosted.org/packages/93/c5/3dc9475ace2c7a3680da12372cddd7f1ac874eb410a1ac48d3e9dab83782/greenlet-3.5.1-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:17d86354f0ae6b61bf9be5148d0dd34e06c3cb7c602c671f79f29ac3b150e659", size = 1678427, upload-time = "2026-05-20T13:14:43.71Z" }, + { url = "https://files.pythonhosted.org/packages/df/4e/750c15c317a41ffb36f0bf40b933e3d744a7dede61889f74443ea69690cf/greenlet-3.5.1-cp315-cp315t-win_amd64.whl", hash = "sha256:e7516cf6ae6b8a582c2770a0caed47b8a48373ed732c33d69a72913ae6ac923e", size = 245225, upload-time = "2026-05-20T13:13:59.366Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/d3baea2eeb7b617efd47e87ca06e2ec2c6118d303aa9e918e0ce16eadc10/greenlet-3.5.1-cp315-cp315t-win_arm64.whl", hash = "sha256:5028648bf2253ec4745add746129d3904121fa7fe871a76bed23c5720573ce0a", size = 239590, upload-time = "2026-05-20T13:13:37.382Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "leather" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/09/849cf129d7eae1e42f873f2dbd60323267c738390b686a7384fb3fb289ad/leather-0.4.1.tar.gz", hash = "sha256:67119c2aee93be821f077193bd8534e296c05b38bd174d9c5a80c4aa31d1a4d3", size = 44072, upload-time = "2025-12-15T19:01:42.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/d4/c4dcb02ed11f8884e169b3350fc40aa4c08edf8bed77a8f0f267542e6452/leather-0.4.1-py3-none-any.whl", hash = "sha256:ec61cba1ca3ccb96ed90e38b116fc58757d97d352171006b3288c47ce3fbd183", size = 30340, upload-time = "2025-12-15T19:01:40.823Z" }, +] + +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" }, +] + +[[package]] +name = "mako" +version = "1.3.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/62/791b31e69ae182791ec67f04850f2f062716bbd205483d63a215f3e062d3/mako-1.3.12.tar.gz", hash = "sha256:9f778e93289bd410bb35daadeb4fc66d95a746f0b75777b942088b7fd7af550a", size = 400219, upload-time = "2026-04-28T19:01:08.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/b1/a0ec7a5a9db730a08daef1fdfb8090435b82465abbf758a596f0ea88727e/mako-1.3.12-py3-none-any.whl", hash = "sha256:8f61569480282dbf557145ce441e4ba888be453c30989f879f0d652e39f53ea9", size = 78521, upload-time = "2026-04-28T19:01:10.393Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, + { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, + { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, + { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, + { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, + { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, + { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, + { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, + { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, + { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, + { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, + { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "ml-dtypes" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/3a/c5b855752a70267ff729c349e650263adb3c206c29d28cc8ea7ace30a1d5/ml_dtypes-0.5.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b95e97e470fe60ed493fd9ae3911d8da4ebac16bd21f87ffa2b7c588bf22ea2c", size = 679735, upload-time = "2025-11-17T22:31:31.367Z" }, + { url = "https://files.pythonhosted.org/packages/41/79/7433f30ee04bd4faa303844048f55e1eb939131c8e5195a00a96a0939b64/ml_dtypes-0.5.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4b801ebe0b477be666696bda493a9be8356f1f0057a57f1e35cd26928823e5a", size = 5051883, upload-time = "2025-11-17T22:31:33.658Z" }, + { url = "https://files.pythonhosted.org/packages/10/b1/8938e8830b0ee2e167fc75a094dea766a1152bde46752cd9bfc57ee78a82/ml_dtypes-0.5.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:388d399a2152dd79a3f0456a952284a99ee5c93d3e2f8dfe25977511e0515270", size = 5030369, upload-time = "2025-11-17T22:31:35.595Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a3/51886727bd16e2f47587997b802dd56398692ce8c6c03c2e5bb32ecafe26/ml_dtypes-0.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:4ff7f3e7ca2972e7de850e7b8fcbb355304271e2933dd90814c1cb847414d6e2", size = 210738, upload-time = "2025-11-17T22:31:37.43Z" }, + { url = "https://files.pythonhosted.org/packages/c6/5e/712092cfe7e5eb667b8ad9ca7c54442f21ed7ca8979745f1000e24cf8737/ml_dtypes-0.5.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6c7ecb74c4bd71db68a6bea1edf8da8c34f3d9fe218f038814fd1d310ac76c90", size = 679734, upload-time = "2025-11-17T22:31:39.223Z" }, + { url = "https://files.pythonhosted.org/packages/4f/cf/912146dfd4b5c0eea956836c01dcd2fce6c9c844b2691f5152aca196ce4f/ml_dtypes-0.5.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc11d7e8c44a65115d05e2ab9989d1e045125d7be8e05a071a48bc76eb6d6040", size = 5056165, upload-time = "2025-11-17T22:31:41.071Z" }, + { url = "https://files.pythonhosted.org/packages/a9/80/19189ea605017473660e43762dc853d2797984b3c7bf30ce656099add30c/ml_dtypes-0.5.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:19b9a53598f21e453ea2fbda8aa783c20faff8e1eeb0d7ab899309a0053f1483", size = 5034975, upload-time = "2025-11-17T22:31:42.758Z" }, + { url = "https://files.pythonhosted.org/packages/b4/24/70bd59276883fdd91600ca20040b41efd4902a923283c4d6edcb1de128d2/ml_dtypes-0.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:7c23c54a00ae43edf48d44066a7ec31e05fdc2eee0be2b8b50dd1903a1db94bb", size = 210742, upload-time = "2025-11-17T22:31:44.068Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c9/64230ef14e40aa3f1cb254ef623bf812735e6bec7772848d19131111ac0d/ml_dtypes-0.5.4-cp311-cp311-win_arm64.whl", hash = "sha256:557a31a390b7e9439056644cb80ed0735a6e3e3bb09d67fd5687e4b04238d1de", size = 160709, upload-time = "2025-11-17T22:31:46.557Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b8/3c70881695e056f8a32f8b941126cf78775d9a4d7feba8abcb52cb7b04f2/ml_dtypes-0.5.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a174837a64f5b16cab6f368171a1a03a27936b31699d167684073ff1c4237dac", size = 676927, upload-time = "2025-11-17T22:31:48.182Z" }, + { url = "https://files.pythonhosted.org/packages/54/0f/428ef6881782e5ebb7eca459689448c0394fa0a80bea3aa9262cba5445ea/ml_dtypes-0.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a7f7c643e8b1320fd958bf098aa7ecf70623a42ec5154e3be3be673f4c34d900", size = 5028464, upload-time = "2025-11-17T22:31:50.135Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cb/28ce52eb94390dda42599c98ea0204d74799e4d8047a0eb559b6fd648056/ml_dtypes-0.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ad459e99793fa6e13bd5b7e6792c8f9190b4e5a1b45c63aba14a4d0a7f1d5ff", size = 5009002, upload-time = "2025-11-17T22:31:52.001Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f0/0cfadd537c5470378b1b32bd859cf2824972174b51b873c9d95cfd7475a5/ml_dtypes-0.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:c1a953995cccb9e25a4ae19e34316671e4e2edaebe4cf538229b1fc7109087b7", size = 212222, upload-time = "2025-11-17T22:31:53.742Z" }, + { url = "https://files.pythonhosted.org/packages/16/2e/9acc86985bfad8f2c2d30291b27cd2bb4c74cea08695bd540906ed744249/ml_dtypes-0.5.4-cp312-cp312-win_arm64.whl", hash = "sha256:9bad06436568442575beb2d03389aa7456c690a5b05892c471215bfd8cf39460", size = 160793, upload-time = "2025-11-17T22:31:55.358Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a1/4008f14bbc616cfb1ac5b39ea485f9c63031c4634ab3f4cf72e7541f816a/ml_dtypes-0.5.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c760d85a2f82e2bed75867079188c9d18dae2ee77c25a54d60e9cc79be1bc48", size = 676888, upload-time = "2025-11-17T22:31:56.907Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b7/dff378afc2b0d5a7d6cd9d3209b60474d9819d1189d347521e1688a60a53/ml_dtypes-0.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce756d3a10d0c4067172804c9cc276ba9cc0ff47af9078ad439b075d1abdc29b", size = 5036993, upload-time = "2025-11-17T22:31:58.497Z" }, + { url = "https://files.pythonhosted.org/packages/eb/33/40cd74219417e78b97c47802037cf2d87b91973e18bb968a7da48a96ea44/ml_dtypes-0.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:533ce891ba774eabf607172254f2e7260ba5f57bdd64030c9a4fcfbd99815d0d", size = 5010956, upload-time = "2025-11-17T22:31:59.931Z" }, + { url = "https://files.pythonhosted.org/packages/e1/8b/200088c6859d8221454825959df35b5244fa9bdf263fd0249ac5fb75e281/ml_dtypes-0.5.4-cp313-cp313-win_amd64.whl", hash = "sha256:f21c9219ef48ca5ee78402d5cc831bd58ea27ce89beda894428bc67a52da5328", size = 212224, upload-time = "2025-11-17T22:32:01.349Z" }, + { url = "https://files.pythonhosted.org/packages/8f/75/dfc3775cb36367816e678f69a7843f6f03bd4e2bcd79941e01ea960a068e/ml_dtypes-0.5.4-cp313-cp313-win_arm64.whl", hash = "sha256:35f29491a3e478407f7047b8a4834e4640a77d2737e0b294d049746507af5175", size = 160798, upload-time = "2025-11-17T22:32:02.864Z" }, + { url = "https://files.pythonhosted.org/packages/4f/74/e9ddb35fd1dd43b1106c20ced3f53c2e8e7fc7598c15638e9f80677f81d4/ml_dtypes-0.5.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:304ad47faa395415b9ccbcc06a0350800bc50eda70f0e45326796e27c62f18b6", size = 702083, upload-time = "2025-11-17T22:32:04.08Z" }, + { url = "https://files.pythonhosted.org/packages/74/f5/667060b0aed1aa63166b22897fdf16dca9eb704e6b4bbf86848d5a181aa7/ml_dtypes-0.5.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a0df4223b514d799b8a1629c65ddc351b3efa833ccf7f8ea0cf654a61d1e35d", size = 5354111, upload-time = "2025-11-17T22:32:05.546Z" }, + { url = "https://files.pythonhosted.org/packages/40/49/0f8c498a28c0efa5f5c95a9e374c83ec1385ca41d0e85e7cf40e5d519a21/ml_dtypes-0.5.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:531eff30e4d368cb6255bc2328d070e35836aa4f282a0fb5f3a0cd7260257298", size = 5366453, upload-time = "2025-11-17T22:32:07.115Z" }, + { url = "https://files.pythonhosted.org/packages/8c/27/12607423d0a9c6bbbcc780ad19f1f6baa2b68b18ce4bddcdc122c4c68dc9/ml_dtypes-0.5.4-cp313-cp313t-win_amd64.whl", hash = "sha256:cb73dccfc991691c444acc8c0012bee8f2470da826a92e3a20bb333b1a7894e6", size = 225612, upload-time = "2025-11-17T22:32:08.615Z" }, + { url = "https://files.pythonhosted.org/packages/e5/80/5a5929e92c72936d5b19872c5fb8fc09327c1da67b3b68c6a13139e77e20/ml_dtypes-0.5.4-cp313-cp313t-win_arm64.whl", hash = "sha256:3bbbe120b915090d9dd1375e4684dd17a20a2491ef25d640a908281da85e73f1", size = 164145, upload-time = "2025-11-17T22:32:09.782Z" }, + { url = "https://files.pythonhosted.org/packages/72/4e/1339dc6e2557a344f5ba5590872e80346f76f6cb2ac3dd16e4666e88818c/ml_dtypes-0.5.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2b857d3af6ac0d39db1de7c706e69c7f9791627209c3d6dedbfca8c7e5faec22", size = 673781, upload-time = "2025-11-17T22:32:11.364Z" }, + { url = "https://files.pythonhosted.org/packages/04/f9/067b84365c7e83bda15bba2b06c6ca250ce27b20630b1128c435fb7a09aa/ml_dtypes-0.5.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:805cef3a38f4eafae3a5bf9ebdcdb741d0bcfd9e1bd90eb54abd24f928cd2465", size = 5036145, upload-time = "2025-11-17T22:32:12.783Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/82c7dcf38070b46172a517e2334e665c5bf374a262f99a283ea454bece7c/ml_dtypes-0.5.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14a4fd3228af936461db66faccef6e4f41c1d82fcc30e9f8d58a08916b1d811f", size = 5010230, upload-time = "2025-11-17T22:32:14.38Z" }, + { url = "https://files.pythonhosted.org/packages/e9/93/2bfed22d2498c468f6bcd0d9f56b033eaa19f33320389314c19ef6766413/ml_dtypes-0.5.4-cp314-cp314-win_amd64.whl", hash = "sha256:8c6a2dcebd6f3903e05d51960a8058d6e131fe69f952a5397e5dbabc841b6d56", size = 221032, upload-time = "2025-11-17T22:32:15.763Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/9c912fe6ea747bb10fe2f8f54d027eb265db05dfb0c6335e3e063e74e6e8/ml_dtypes-0.5.4-cp314-cp314-win_arm64.whl", hash = "sha256:5a0f68ca8fd8d16583dfa7793973feb86f2fbb56ce3966daf9c9f748f52a2049", size = 163353, upload-time = "2025-11-17T22:32:16.932Z" }, + { url = "https://files.pythonhosted.org/packages/cd/02/48aa7d84cc30ab4ee37624a2fd98c56c02326785750cd212bc0826c2f15b/ml_dtypes-0.5.4-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:bfc534409c5d4b0bf945af29e5d0ab075eae9eecbb549ff8a29280db822f34f9", size = 702085, upload-time = "2025-11-17T22:32:18.175Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e7/85cb99fe80a7a5513253ec7faa88a65306be071163485e9a626fce1b6e84/ml_dtypes-0.5.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2314892cdc3fcf05e373d76d72aaa15fda9fb98625effa73c1d646f331fcecb7", size = 5355358, upload-time = "2025-11-17T22:32:19.7Z" }, + { url = "https://files.pythonhosted.org/packages/79/2b/a826ba18d2179a56e144aef69e57fb2ab7c464ef0b2111940ee8a3a223a2/ml_dtypes-0.5.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d2ffd05a2575b1519dc928c0b93c06339eb67173ff53acb00724502cda231cf", size = 5366332, upload-time = "2025-11-17T22:32:21.193Z" }, + { url = "https://files.pythonhosted.org/packages/84/44/f4d18446eacb20ea11e82f133ea8f86e2bf2891785b67d9da8d0ab0ef525/ml_dtypes-0.5.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4381fe2f2452a2d7589689693d3162e876b3ddb0a832cde7a414f8e1adf7eab1", size = 236612, upload-time = "2025-11-17T22:32:22.579Z" }, + { url = "https://files.pythonhosted.org/packages/ad/3f/3d42e9a78fe5edf792a83c074b13b9b770092a4fbf3462872f4303135f09/ml_dtypes-0.5.4-cp314-cp314t-win_arm64.whl", hash = "sha256:11942cbf2cf92157db91e5022633c0d9474d4dfd813a909383bd23ce828a4b7d", size = 168825, upload-time = "2025-11-17T22:32:23.766Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "narwhals" +version = "2.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/3c/c4ef2164a71c1a63d7f1ae411c4082c5fa872405106db60a4b7114989ad7/narwhals-2.22.1.tar.gz", hash = "sha256:d62920805a0a43b7ff8b54b0c0d3142d796f8a9301836ada37e573d6a33cbcd9", size = 647493, upload-time = "2026-06-05T12:34:34.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl", hash = "sha256:60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53", size = 454815, upload-time = "2026-06-05T12:34:32.289Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 's390x'", + "python_full_version < '3.11' and platform_machine == 's390x'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 's390x'", + "python_full_version < '3.11' and platform_machine == 's390x'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/49/ec46835a70be8fa6446c495126ac84fdb28cb2558e1620ffb87a10c8b64c/numpy-2.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4", size = 16969194, upload-time = "2026-05-18T23:33:13.503Z" }, + { url = "https://files.pythonhosted.org/packages/0e/0d/f5957185c0ee2f3e12f78715aa9e3b353fd83633316c8532b38faa37e3f6/numpy-2.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d", size = 14964111, upload-time = "2026-05-18T23:33:17.795Z" }, + { url = "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8", size = 5469159, upload-time = "2026-05-18T23:33:20.654Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/f9a8046535cb21deae82f8d03de9617e08882d274fad2539630761888228/numpy-2.4.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538", size = 6798936, upload-time = "2026-05-18T23:33:22.987Z" }, + { url = "https://files.pythonhosted.org/packages/33/a8/6fa8c1a345a8c85dbb21932c447bee07c30a2c2a3f31e369c0a84b300147/numpy-2.4.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47", size = 15966692, upload-time = "2026-05-18T23:33:26.62Z" }, + { url = "https://files.pythonhosted.org/packages/02/03/74fe2a4cb3817d94d86402f2506554130a2f01414e299b5a843e5a8a957f/numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93", size = 16918164, upload-time = "2026-05-18T23:33:29.955Z" }, + { url = "https://files.pythonhosted.org/packages/c5/80/3615be3313f7e7696609bc194b9f0101da809df79e859bdb84e0cd043f46/numpy-2.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8", size = 17322877, upload-time = "2026-05-18T23:33:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ac/a691e0fe2675e370d0e08ff905adc49a1c8830e8cae03efe4477e92cd55d/numpy-2.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6", size = 18651487, upload-time = "2026-05-18T23:33:38.217Z" }, + { url = "https://files.pythonhosted.org/packages/15/a7/9bc1cd626d7bf6869bfedf27b91b6ab5dd607758bf8e959d6fa80c6a59cb/numpy-2.4.6-cp311-cp311-win32.whl", hash = "sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8", size = 6233945, upload-time = "2026-05-18T23:33:41.331Z" }, + { url = "https://files.pythonhosted.org/packages/c5/31/7fc6239c12bce7e931463251cca4426c465e1876ba3cc785402ef4dd8f4e/numpy-2.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147", size = 12608406, upload-time = "2026-05-18T23:33:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/27/83/140f85a466595a16382996a1bf06b2b54bcd597488921b0c9daaeeda72af/numpy-2.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577", size = 10479528, upload-time = "2026-05-18T23:33:50.725Z" }, + { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" }, + { url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" }, + { url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" }, + { url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" }, + { url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" }, + { url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" }, + { url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" }, + { url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" }, + { url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" }, + { url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" }, + { url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" }, + { url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" }, + { url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" }, + { url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" }, + { url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" }, + { url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" }, + { url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" }, + { url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" }, + { url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" }, + { url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" }, + { url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" }, + { url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" }, + { url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" }, + { url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" }, + { url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" }, + { url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" }, + { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/de/12/b422cc84439adc0d00de605bf4a308890ae5c26f2c71fbd73e5d08fbb0dd/numpy-2.4.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662", size = 16847511, upload-time = "2026-05-18T23:36:50.673Z" }, + { url = "https://files.pythonhosted.org/packages/44/53/f481bef68011740f8849418d82db07230e825013f31f4eef5ba5b805316a/numpy-2.4.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7", size = 14889064, upload-time = "2026-05-18T23:36:53.879Z" }, + { url = "https://files.pythonhosted.org/packages/7f/57/42ed575c10ced8af951d426bc4e1f8aff16fd851db33f067036215a7f860/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f", size = 5394157, upload-time = "2026-05-18T23:36:57.194Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ef/f66cc724fcc36c1e364c67f51ae9146090b8b584f27d58b97fdae3edd737/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c", size = 6708728, upload-time = "2026-05-18T23:36:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/9c/c531f2293b91265d8b48e9b329f54fdd7ffae73cb4134ea10cca4237e9cc/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0", size = 15798374, upload-time = "2026-05-18T23:37:02.674Z" }, + { url = "https://files.pythonhosted.org/packages/1a/b0/413077f6b1153ed3cba361401c6783bbad6114804a000cc22eb71c13e190/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02", size = 16747286, upload-time = "2026-05-18T23:37:06.327Z" }, + { url = "https://files.pythonhosted.org/packages/15/ce/e5ec180bc41812edcd8daeb8639d205622c0e8c02259d8ab25a0201b3c2a/numpy-2.4.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73", size = 12504263, upload-time = "2026-05-18T23:37:09.715Z" }, +] + +[[package]] +name = "nvidia-cublas" +version = "13.1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cuda-nvrtc" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758, upload-time = "2026-04-08T18:46:58.655Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime" +version = "13.0.96" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu13" +version = "9.20.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" }, +] + +[[package]] +name = "nvidia-cufft" +version = "12.0.0.61" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, +] + +[[package]] +name = "nvidia-cufile" +version = "1.15.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, +] + +[[package]] +name = "nvidia-curand" +version = "10.4.0.35" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, +] + +[[package]] +name = "nvidia-cusolver" +version = "12.0.4.66" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas" }, + { name = "nvidia-cusparse" }, + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, +] + +[[package]] +name = "nvidia-cusparse" +version = "12.6.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu13" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" }, + { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" }, +] + +[[package]] +name = "nvidia-nccl-cu13" +version = "2.29.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" }, + { url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" }, +] + +[[package]] +name = "nvidia-nvjitlink" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu13" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, +] + +[[package]] +name = "nvidia-nvtx" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, +] + +[[package]] +name = "olefile" +version = "0.47" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/1b/077b508e3e500e1629d366249c3ccb32f95e50258b231705c09e3c7a4366/olefile-0.47.zip", hash = "sha256:599383381a0bf3dfbd932ca0ca6515acd174ed48870cbf7fee123d698c192c1c", size = 112240, upload-time = "2023-12-01T16:22:53.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/d3/b64c356a907242d719fc668b71befd73324e47ab46c8ebbbede252c154b2/olefile-0.47-py2.py3-none-any.whl", hash = "sha256:543c7da2a7adadf21214938bb79c83ea12b473a4b6ee4ad4bf854e7715e13d1f", size = 114565, upload-time = "2023-12-01T16:22:51.518Z" }, +] + +[[package]] +name = "onnx" +version = "1.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "protobuf" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/93/942d2a0f6a70538eea042ce0445c8aefd46559ad153469986f29a743c01c/onnx-1.21.0.tar.gz", hash = "sha256:4d8b67d0aaec5864c87633188b91cc520877477ec0254eda122bef8be43cd764", size = 12074608, upload-time = "2026-03-27T21:33:36.118Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/28/a14b1845bf9302c3a787221e8f37cde4e7f930e10d95a8e22dd910aeb41d/onnx-1.21.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e0c21cc5c7a41d1a509828e2b14fe9c30e807c6df611ec0fd64a47b8d4b16abd", size = 17966899, upload-time = "2026-03-27T21:32:15.53Z" }, + { url = "https://files.pythonhosted.org/packages/41/7b/788881bf022a4cfb7b0843782f88415ea51c805cee4a909dcf2e49bb8129/onnx-1.21.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1931bfcc222a4c9da6475f2ffffb84b97ab3876041ec639171c11ce802bee6a", size = 17534297, upload-time = "2026-03-27T21:32:18.343Z" }, + { url = "https://files.pythonhosted.org/packages/16/51/eb64d4f2ec6caa98909aab5fbcfa24be9c059081e804bbb0012cc549ef89/onnx-1.21.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9b56ad04039fac6b028c07e54afa1ec7f75dd340f65311f2c292e41ed7aa4d9", size = 17616697, upload-time = "2026-03-27T21:32:21Z" }, + { url = "https://files.pythonhosted.org/packages/d2/4e/6b1f7800dae3407dc850e7e59d591ed8c83e9b3401e4cd57a1f612e400c6/onnx-1.21.0-cp310-cp310-win32.whl", hash = "sha256:3abd09872523c7e0362d767e4e63bd7c6bac52a5e2c3edbf061061fe540e2027", size = 16288893, upload-time = "2026-03-27T21:32:23.864Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a8/89273e581d3943e20314af19b1596ab4d763f9c2eb07d4eaf4fb0593219b/onnx-1.21.0-cp310-cp310-win_amd64.whl", hash = "sha256:f2c7c234c568402e10db74e33d787e4144e394ae2bcbbf11000fbfe2e017ad68", size = 16443416, upload-time = "2026-03-27T21:32:26.655Z" }, + { url = "https://files.pythonhosted.org/packages/45/48/32e383aa6bc40b72a9fd419937aaa647078190c9bfccdc97b316d2dee687/onnx-1.21.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:2aca19949260875c14866fc77ea0bc37e4e809b24976108762843d328c92d3ce", size = 17968053, upload-time = "2026-03-27T21:32:29.558Z" }, + { url = "https://files.pythonhosted.org/packages/e2/26/5726e8df7d36e96bb3c679912d1a86af42f393d77aa17d6b98a97d4289ce/onnx-1.21.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82aa6ab51144df07c58c4850cb78d4f1ae969d8c0bf657b28041796d49ba6974", size = 17534821, upload-time = "2026-03-27T21:32:32.351Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2b/021dcd2dd50c3c71b7959d7368526da384a295c162fb4863f36057973f78/onnx-1.21.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10c3185a232089335581fabb98fba4e86d3e8246b8140f2e406082438100ebda", size = 17616664, upload-time = "2026-03-27T21:32:34.921Z" }, + { url = "https://files.pythonhosted.org/packages/12/00/afa32a46fa122a7ed42df1cfe8796922156a3725ba8fc581c4779c96e2fc/onnx-1.21.0-cp311-cp311-win32.whl", hash = "sha256:f53b3c15a3b539c16b99655c43c365622046d68c49b680c48eba4da2a4fb6f27", size = 16289035, upload-time = "2026-03-27T21:32:37.783Z" }, + { url = "https://files.pythonhosted.org/packages/73/8d/483cc980a24d4c0131d0af06d0ff6a37fb08ae90a7848ece8cef645194f1/onnx-1.21.0-cp311-cp311-win_amd64.whl", hash = "sha256:5f78c411743db317a76e5d009f84f7e3d5380411a1567a868e82461a1e5c775d", size = 16443748, upload-time = "2026-03-27T21:32:40.337Z" }, + { url = "https://files.pythonhosted.org/packages/38/78/9d06fd5aaaed1ec9cb8a3b70fbbf00c1bdc18db610771e96379f0ed58112/onnx-1.21.0-cp311-cp311-win_arm64.whl", hash = "sha256:ab6a488dabbb172eebc9f3b3e7ac68763f32b0c571626d4a5004608f866cc83d", size = 16406123, upload-time = "2026-03-27T21:32:45.159Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ae/cb644ec84c25e63575d9d8790fdcc5d1a11d67d3f62f872edb35fa38d158/onnx-1.21.0-cp312-abi3-macosx_12_0_universal2.whl", hash = "sha256:fc2635400fe39ff37ebc4e75342cc54450eadadf39c540ff132c319bf4960095", size = 17965930, upload-time = "2026-03-27T21:32:48.089Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b6/eeb5903586645ef8a49b4b7892580438741acc3df91d7a5bd0f3a59ea9cb/onnx-1.21.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9003d5206c01fa2ff4b46311566865d8e493e1a6998d4009ec6de39843f1b59b", size = 17531344, upload-time = "2026-03-27T21:32:50.837Z" }, + { url = "https://files.pythonhosted.org/packages/a7/00/4823f06357892d1e60d6f34e7299d2ba4ed2108c487cc394f7ce85a3ff14/onnx-1.21.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a9261bd580fb8548c9c37b3c6750387eb8f21ea43c63880d37b2c622e1684285", size = 17613697, upload-time = "2026-03-27T21:32:54.222Z" }, + { url = "https://files.pythonhosted.org/packages/23/1d/391f3c567ae068c8ac4f1d1316bae97c9eb45e702f05975fe0e17ad441f0/onnx-1.21.0-cp312-abi3-win32.whl", hash = "sha256:9ea4e824964082811938a9250451d89c4ec474fe42dd36c038bfa5df31993d1e", size = 16287200, upload-time = "2026-03-27T21:32:57.277Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a6/5eefbe5b40ea96de95a766bd2e0e751f35bdea2d4b951991ec9afaa69531/onnx-1.21.0-cp312-abi3-win_amd64.whl", hash = "sha256:458d91948ad9a7729a347550553b49ab6939f9af2cddf334e2116e45467dc61f", size = 16441045, upload-time = "2026-03-27T21:33:00.081Z" }, + { url = "https://files.pythonhosted.org/packages/63/c4/0ed8dc037a39113d2a4d66e0005e07751c299c46b993f1ad5c2c35664c20/onnx-1.21.0-cp312-abi3-win_arm64.whl", hash = "sha256:ca14bc4842fccc3187eb538f07eabeb25a779b39388b006db4356c07403a7bbb", size = 16403134, upload-time = "2026-03-27T21:33:03.987Z" }, + { url = "https://files.pythonhosted.org/packages/f8/89/0e1a9beb536401e2f45ac88735e123f2735e12fc7b56ff6c11727e097526/onnx-1.21.0-cp313-cp313t-macosx_12_0_universal2.whl", hash = "sha256:257d1d1deb6a652913698f1e3f33ef1ca0aa69174892fe38946d4572d89dd94f", size = 17975430, upload-time = "2026-03-27T21:33:07.005Z" }, + { url = "https://files.pythonhosted.org/packages/ec/46/e6dc71a7b3b317265591b20a5f71d0ff5c0d26c24e52283139dc90c66038/onnx-1.21.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cd7cb8f6459311bdb557cbf6c0ccc6d8ace11c304d1bba0a30b4a4688e245f8", size = 17537435, upload-time = "2026-03-27T21:33:09.765Z" }, + { url = "https://files.pythonhosted.org/packages/49/2e/27affcac63eaf2ef183a44fd1a1354b11da64a6c72fe6f3fdcf5571bcee5/onnx-1.21.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b58a4cfec8d9311b73dc083e4c1fa362069267881144c05139b3eba5dc3a840", size = 17617687, upload-time = "2026-03-27T21:33:12.619Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5c/ac8ed15e941593a3672ce424280b764979026317811f2e8508432bfc3429/onnx-1.21.0-cp313-cp313t-win_amd64.whl", hash = "sha256:1a9baf882562c4cebf79589bebb7cd71a20e30b51158cac3e3bbaf27da6163bd", size = 16449402, upload-time = "2026-03-27T21:33:15.555Z" }, + { url = "https://files.pythonhosted.org/packages/0e/aa/d2231e0dcaad838217afc64c306c8152a080134d2034e247cc973d577674/onnx-1.21.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bba12181566acf49b35875838eba49536a327b2944664b17125577d230c637ad", size = 16408273, upload-time = "2026-03-27T21:33:18.599Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0a/8905b14694def6ad23edf1011fdd581500384062f8c4c567e114be7aa272/onnx-1.21.0-cp314-cp314t-macosx_12_0_universal2.whl", hash = "sha256:7ee9d8fd6a4874a5fa8b44bbcabea104ce752b20469b88bc50c7dcf9030779ad", size = 17975331, upload-time = "2026-03-27T21:33:21.69Z" }, + { url = "https://files.pythonhosted.org/packages/61/28/f4e401e5199d1b9c8b76c7e7ae1169e050515258e877b58fa8bb49d3bdcc/onnx-1.21.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5489f25fe461e7f32128218251a466cabbeeaf1eaa791c79daebf1a80d5a2cc9", size = 17537430, upload-time = "2026-03-27T21:33:24.547Z" }, + { url = "https://files.pythonhosted.org/packages/cf/cf/5d13320eb3660d5af360ea3b43aa9c63a70c92a9b4d1ea0d34501a32fcb8/onnx-1.21.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:db17fc0fec46180b6acbd1d5d8650a04e5527c02b09381da0b5b888d02a204c8", size = 17617662, upload-time = "2026-03-27T21:33:27.418Z" }, + { url = "https://files.pythonhosted.org/packages/4d/50/3eaa1878338247be021e6423696813d61e77e534dccbd15a703a144e703d/onnx-1.21.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19d9971a3e52a12968ae6c70fd0f86c349536de0b0c33922ecdbe52d1972fe60", size = 16463688, upload-time = "2026-03-27T21:33:30.229Z" }, + { url = "https://files.pythonhosted.org/packages/a7/48/38d46b43bbb525e0b6a4c2c4204cc6795d67e45687a2f7403e06d8e7053d/onnx-1.21.0-cp314-cp314t-win_arm64.whl", hash = "sha256:efba467efb316baf2a9452d892c2f982b9b758c778d23e38c7f44fa211b30bb9", size = 16423387, upload-time = "2026-03-27T21:33:33.446Z" }, +] + +[[package]] +name = "onnx-ir" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "onnx" }, + { name = "sympy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/e6/672fefb2f108d077f58181a7babf4c0f8d1182a30353ffc9c79c63afc5ee/onnx_ir-0.2.1.tar.gz", hash = "sha256:8b8b10a93f43e65962104de6070c43c5dacb0e3cdfefc7c8059dd83c9db64f35", size = 144279, upload-time = "2026-04-20T20:21:47.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/aa/f7a53321c60b9ad9ee184b6018292ed6b5389947592a2c8c09c736bb7f9e/onnx_ir-0.2.1-py3-none-any.whl", hash = "sha256:c7285da889312f91882de2092e298a9eeeefbfc1d1951c49d983992967eb09a7", size = 166792, upload-time = "2026-04-20T20:21:46.357Z" }, +] + +[[package]] +name = "onnxruntime" +version = "1.24.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 's390x'", + "python_full_version < '3.11' and platform_machine == 's390x'", +] +dependencies = [ + { name = "flatbuffers", marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "protobuf", marker = "python_full_version < '3.11'" }, + { name = "sympy", marker = "python_full_version < '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/41/3253db975a90c3ce1d475e2a230773a21cd7998537f0657947df6fb79861/onnxruntime-1.24.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3e6456801c66b095c5cd68e690ca25db970ea5202bd0c5b84a2c3ef7731c5a3c", size = 17332766, upload-time = "2026-03-05T17:18:59.714Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c5/3af6b325f1492d691b23844d88ed26844c1164620860c5efe95c0e22782d/onnxruntime-1.24.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b2ebc54c6d8281dccff78d4b06e47d4cf07535937584ab759448390a70f4978", size = 15130330, upload-time = "2026-03-05T16:34:53.831Z" }, + { url = "https://files.pythonhosted.org/packages/03/4b/f96b46c1866a293ed23ca2cf5e5a63d413ad3a951da60dd877e3c56cbbca/onnxruntime-1.24.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb56575d7794bf0781156955610c9e651c9504c64d42ec880784b6106244882d", size = 17213247, upload-time = "2026-03-05T17:17:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/36/13/27cf4d8df2578747584e8758aeb0b673b60274048510257f1f084b15e80e/onnxruntime-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:c958222ef9eff54018332beecd32d5d94a3ab079d8821937b333811bf4da0d39", size = 12595530, upload-time = "2026-03-05T17:18:49.356Z" }, + { url = "https://files.pythonhosted.org/packages/19/8c/6d9f31e6bae72a8079be12ed8ba36c4126a571fad38ded0a1b96f60f6896/onnxruntime-1.24.3-cp311-cp311-win_arm64.whl", hash = "sha256:a8f761857ebaf58a85b9e42422d03207f1d39e6bb8fecfdbf613bac5b9710723", size = 12261715, upload-time = "2026-03-05T17:18:39.699Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/dfdc4e52600fde4c02d59bfe98c4b057931c1114b701e175aee311a9bc11/onnxruntime-1.24.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:0d244227dc5e00a9ae15a7ac1eba4c4460d7876dfecafe73fb00db9f1d914d91", size = 17342578, upload-time = "2026-03-05T17:19:02.403Z" }, + { url = "https://files.pythonhosted.org/packages/1c/dc/1f5489f7b21817d4ad352bf7a92a252bd5b438bcbaa7ad20ea50814edc79/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a9847b870b6cb462652b547bc98c49e0efb67553410a082fde1918a38707452", size = 15150105, upload-time = "2026-03-05T16:34:56.897Z" }, + { url = "https://files.pythonhosted.org/packages/28/7c/fd253da53594ab8efbefdc85b3638620ab1a6aab6eb7028a513c853559ce/onnxruntime-1.24.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b354afce3333f2859c7e8706d84b6c552beac39233bcd3141ce7ab77b4cabb5d", size = 17237101, upload-time = "2026-03-05T17:18:02.561Z" }, + { url = "https://files.pythonhosted.org/packages/71/5f/eaabc5699eeed6a9188c5c055ac1948ae50138697a0428d562ac970d7db5/onnxruntime-1.24.3-cp312-cp312-win_amd64.whl", hash = "sha256:44ea708c34965439170d811267c51281d3897ecfc4aa0087fa25d4a4c3eb2e4a", size = 12597638, upload-time = "2026-03-05T17:18:52.141Z" }, + { url = "https://files.pythonhosted.org/packages/cc/5c/d8066c320b90610dbeb489a483b132c3b3879b2f93f949fb5d30cfa9b119/onnxruntime-1.24.3-cp312-cp312-win_arm64.whl", hash = "sha256:48d1092b44ca2ba6f9543892e7c422c15a568481403c10440945685faf27a8d8", size = 12270943, upload-time = "2026-03-05T17:18:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/51/8d/487ece554119e2991242d4de55de7019ac6e47ee8dfafa69fcf41d37f8ed/onnxruntime-1.24.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:34a0ea5ff191d8420d9c1332355644148b1bf1a0d10c411af890a63a9f662aa7", size = 17342706, upload-time = "2026-03-05T16:35:10.813Z" }, + { url = "https://files.pythonhosted.org/packages/dd/25/8b444f463c1ac6106b889f6235c84f01eec001eaf689c3eff8c69cf48fae/onnxruntime-1.24.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fd2ec7bb0fabe42f55e8337cfc9b1969d0d14622711aac73d69b4bd5abb5ed7", size = 15149956, upload-time = "2026-03-05T16:34:59.264Z" }, + { url = "https://files.pythonhosted.org/packages/34/fc/c9182a3e1ab46940dd4f30e61071f59eee8804c1f641f37ce6e173633fb6/onnxruntime-1.24.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df8e70e732fe26346faaeec9147fa38bef35d232d2495d27e93dd221a2d473a9", size = 17237370, upload-time = "2026-03-05T17:18:05.258Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/3b549e1f4538514118bff98a1bcd6481dd9a17067f8c9af77151621c9a5c/onnxruntime-1.24.3-cp313-cp313-win_amd64.whl", hash = "sha256:2d3706719be6ad41d38a2250998b1d87758a20f6ea4546962e21dc79f1f1fd2b", size = 12597939, upload-time = "2026-03-05T17:18:54.772Z" }, + { url = "https://files.pythonhosted.org/packages/80/41/9696a5c4631a0caa75cc8bc4efd30938fd483694aa614898d087c3ee6d29/onnxruntime-1.24.3-cp313-cp313-win_arm64.whl", hash = "sha256:b082f3ba9519f0a1a1e754556bc7e635c7526ef81b98b3f78da4455d25f0437b", size = 12270705, upload-time = "2026-03-05T17:18:44.774Z" }, + { url = "https://files.pythonhosted.org/packages/b7/65/a26c5e59e3b210852ee04248cf8843c81fe7d40d94cf95343b66efe7eec9/onnxruntime-1.24.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72f956634bc2e4bd2e8b006bef111849bd42c42dea37bd0a4c728404fdaf4d34", size = 15161796, upload-time = "2026-03-05T16:35:02.871Z" }, + { url = "https://files.pythonhosted.org/packages/f3/25/2035b4aa2ccb5be6acf139397731ec507c5f09e199ab39d3262b22ffa1ac/onnxruntime-1.24.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78d1f25eed4ab9959db70a626ed50ee24cf497e60774f59f1207ac8556399c4d", size = 17240936, upload-time = "2026-03-05T17:18:09.534Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a4/b3240ea84b92a3efb83d49cc16c04a17ade1ab47a6a95c4866d15bf0ac35/onnxruntime-1.24.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a6b4bce87d96f78f0a9bf5cefab3303ae95d558c5bfea53d0bf7f9ea207880a8", size = 17344149, upload-time = "2026-03-05T16:35:13.382Z" }, + { url = "https://files.pythonhosted.org/packages/bb/4a/4b56757e51a56265e8c56764d9c36d7b435045e05e3b8a38bedfc5aedba3/onnxruntime-1.24.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d48f36c87b25ab3b2b4c88826c96cf1399a5631e3c2c03cc27d6a1e5d6b18eb4", size = 15151571, upload-time = "2026-03-05T16:35:05.679Z" }, + { url = "https://files.pythonhosted.org/packages/cf/14/c6fb84980cec8f682a523fcac7c2bdd6b311e7f342c61ce48d3a9cb87fc6/onnxruntime-1.24.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e104d33a409bf6e3f30f0e8198ec2aaf8d445b8395490a80f6e6ad56da98e400", size = 17238951, upload-time = "2026-03-05T17:18:12.394Z" }, + { url = "https://files.pythonhosted.org/packages/57/14/447e1400165aca8caf35dabd46540eb943c92f3065927bb4d9bcbc91e221/onnxruntime-1.24.3-cp314-cp314-win_amd64.whl", hash = "sha256:e785d73fbd17421c2513b0bb09eb25d88fa22c8c10c3f5d6060589efa5537c5b", size = 12903820, upload-time = "2026-03-05T17:18:57.123Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ec/6b2fa5702e4bbba7339ca5787a9d056fc564a16079f8833cc6ba4798da1c/onnxruntime-1.24.3-cp314-cp314-win_arm64.whl", hash = "sha256:951e897a275f897a05ffbcaa615d98777882decaeb80c9216c68cdc62f849f53", size = 12594089, upload-time = "2026-03-05T17:18:47.169Z" }, + { url = "https://files.pythonhosted.org/packages/12/dc/cd06cba3ddad92ceb17b914a8e8d49836c79e38936e26bde6e368b62c1fe/onnxruntime-1.24.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4d4e70ce578aa214c74c7a7a9226bc8e229814db4a5b2d097333b81279ecde36", size = 15162789, upload-time = "2026-03-05T16:35:08.282Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d6/413e98ab666c6fb9e8be7d1c6eb3bd403b0bea1b8d42db066dab98c7df07/onnxruntime-1.24.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02aaf6ddfa784523b6873b4176a79d508e599efe12ab0ea1a3a6e7314408b7aa", size = 17240738, upload-time = "2026-03-05T17:18:15.203Z" }, +] + +[[package]] +name = "onnxruntime" +version = "1.26.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "flatbuffers", marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "protobuf", marker = "python_full_version >= '3.11'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/81/29a9eb470994a75eb7b3ccf32be314d7c66675a00ac7b50294816cc2db27/onnxruntime-1.26.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ee1109ef4ef27cad90e823399e61e03b3c6c7bfe0fb820b4baf3678c15be8b3c", size = 18005108, upload-time = "2026-05-08T19:08:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/66/c7/73efa6c8a4000c38fcc14947d84f234a17e5d66f203b37b7f1ad4a7b46eb/onnxruntime-1.26.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35c7c7b0ac2e02001d28fab6c9fc24e9abc5e6faa35e6e19c63cecf1406ba89f", size = 16043752, upload-time = "2026-05-08T19:07:10.707Z" }, + { url = "https://files.pythonhosted.org/packages/b6/3f/8de630f595daf6ce884d4dd95afd2a60e70ec6572e52bfee3aa2229befab/onnxruntime-1.26.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11a8df4dcfe9ad5ff0bd71a7571dbed019fabc7594676c89fe8b86ea029c246f", size = 18176043, upload-time = "2026-05-08T19:07:33.735Z" }, + { url = "https://files.pythonhosted.org/packages/9c/21/9f041de20787cd85498bd48e0ec4d098bf2a6c486e25b24b8dae1bf492b2/onnxruntime-1.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:e6456718125fd777c673f3b78d4a9ab58d6adea641e9afae85ee6444f0e0e9a9", size = 13023165, upload-time = "2026-05-08T19:08:00.633Z" }, + { url = "https://files.pythonhosted.org/packages/0e/82/3b9fe0ead2557cc3adf74c74c141bd1c7c4c6a9548c610af37df199f4512/onnxruntime-1.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:cd920e45b730e4a87833e2910d8ca375aaca9da6ccc09e24bce463b3356d637f", size = 12789514, upload-time = "2026-05-08T19:07:49.433Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/d111b1df656761f980d9e298a60039a9cb66036b1d039e777537743d0ac3/onnxruntime-1.26.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05b028781b322ad74b57ce5b50aa5280bb1fe96ceec334628ade681e0b24c1ac", size = 18016624, upload-time = "2026-05-12T00:41:01.735Z" }, + { url = "https://files.pythonhosted.org/packages/f6/a0/3f9d896a0385a36bd04345d6d0b802821a5782adde562e7e135f6bb71c73/onnxruntime-1.26.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91f2bb870a4b9224eba0a6728c1fa7a9e552b8e59e1083c51fbbc3d013f2b5c0", size = 16052692, upload-time = "2026-05-08T19:07:13.829Z" }, + { url = "https://files.pythonhosted.org/packages/7c/43/2a4e04f8dbeffad19bbcced4bcd4289bf478921518437404d6b92bdf213b/onnxruntime-1.26.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b6dd70599005bd1bf29779f04a91978b92b5e719c11a20068a8f8e535f725b6", size = 18185439, upload-time = "2026-05-08T19:07:36.299Z" }, + { url = "https://files.pythonhosted.org/packages/44/fc/026d0a7162b9c2153dac292baea9e027c42304dc1d9dc6f8ff5b4cfbaedd/onnxruntime-1.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:a26374dc7fbcaae593601086b242120e13f2310558df0991da6dd8b8fac00414", size = 13026427, upload-time = "2026-05-08T19:08:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/3e/27/1dcf88e45e4c69db5f7b106f2dacc3801ba98994e082ca03e1dfdf7bfe57/onnxruntime-1.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:54a8053410fd31fd66469bd754fcfe8a4df9f7eb44756b4b5479bf50c842d948", size = 12796647, upload-time = "2026-05-08T19:07:52.108Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a2/c801242685e0ce48a4ca51dfafbb588765e0446397e123be53ba5598f3f5/onnxruntime-1.26.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:ccce19c5f771b8268902f77d9fed9e88f9499465d6780808faa6611a789d33f0", size = 18016563, upload-time = "2026-05-08T19:07:28.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/64/0492c0b1db04e29b2630c87cfa36f9d6872b1ca8614b90c5cad58fac7d76/onnxruntime-1.26.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdbed8cf3b672b66acb032f33a253bc27f42bce6ece48ae3fab4fa483a5e96e0", size = 16052634, upload-time = "2026-05-08T19:07:16.885Z" }, + { url = "https://files.pythonhosted.org/packages/3d/26/4d09ddc755a84fc8d5e192991626b0e0680e8f6c5d58f4f1d05c42bc48cf/onnxruntime-1.26.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c07af6fc6d5557835f2b6ee7a96d8b3235d0c57a8e230efdedaee106a8a3cbc6", size = 18185632, upload-time = "2026-05-08T19:07:38.756Z" }, + { url = "https://files.pythonhosted.org/packages/77/89/3e52249aa08fa301e217ecba07b5246a8338fa2b401e109326e3fc5be0f9/onnxruntime-1.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:61bec80655efa460591c2bc655392d57d2650ce85533a6b9b3b7a790d7ea7916", size = 13026751, upload-time = "2026-05-08T19:08:06.2Z" }, + { url = "https://files.pythonhosted.org/packages/06/b3/c1c8782b14af6797c303de132d6eef26a9fb80dfacd3750ce57911d11c6b/onnxruntime-1.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:a6677545ff451e3539a02746d2f207d8c5baa4a0a818886bb9d6a6eb9511ee89", size = 12796807, upload-time = "2026-05-08T19:07:54.879Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f5/47b0676408abec652c14b84d7173e389837832d850c24f87184277313e8d/onnxruntime-1.26.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e016edc15d3c19f36807e1c6b10be5b27807688c32720f91b5ae480a95215d0", size = 16057265, upload-time = "2026-05-08T19:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/3b/45/33ab6deeef010ca844c877dd618cebc079590bbe52d2a3678e7223b1b908/onnxruntime-1.26.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f5fc48a91a046a6a5c9b147f83fb41d65d24d24923373b222cdd248f0f4f4aac", size = 18197590, upload-time = "2026-05-08T19:07:41.422Z" }, + { url = "https://files.pythonhosted.org/packages/40/89/17546c1c20f6bfc3ae41c22152378a26edfea918af3129e2139dcd7c99f3/onnxruntime-1.26.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:33a791f31432a3af1a96db5e54818b37aba5e5eefc2e6af5794c10a9118a9993", size = 18019724, upload-time = "2026-05-08T19:07:30.723Z" }, + { url = "https://files.pythonhosted.org/packages/bb/24/89457a35f6af29538a76647f2c18c3a28277e6c19234c847e7b4b7c19860/onnxruntime-1.26.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e90c00732c4553618103149d93f688e8c3063017938f8983e21a71d9f3b6d22e", size = 16054821, upload-time = "2026-05-08T19:07:22.348Z" }, + { url = "https://files.pythonhosted.org/packages/12/f9/15b2e1815cf570d238e0135529f80d2dce64e8e8818a1489cae83823c5c6/onnxruntime-1.26.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01498e80ba8988428d08c2d51b1338f89e3de2a93e6ffe555f79c68f26a5c06b", size = 18185815, upload-time = "2026-05-08T19:07:44.179Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/2e11055faf015e4b07f45b513fa49b391baf2e19d92d77d73ebee13c1004/onnxruntime-1.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:7ead61450d8405167c87dd3a31d8da1d576b490a57dab1aa8b82a7da6825f5aa", size = 13349887, upload-time = "2026-05-08T19:08:08.671Z" }, + { url = "https://files.pythonhosted.org/packages/19/e4/0f9d1a5718b1781c610c1e354765a3820597081754277a6a9a2b50705702/onnxruntime-1.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:31d71a53490e46910877d0902b5ad99c69a5955e5c7ea6c82863519410e1ba7c", size = 13140121, upload-time = "2026-05-08T19:07:57.804Z" }, + { url = "https://files.pythonhosted.org/packages/1c/42/3b8e635f067d06d9f45bede470b8d539d101a4166c272213158dfd08b6ce/onnxruntime-1.26.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d7b6d258fb78fdfcf049795bcfaa74dcb90ae7baa277afd21e6fd28b83f2c496", size = 16057240, upload-time = "2026-05-08T19:07:25.163Z" }, + { url = "https://files.pythonhosted.org/packages/93/99/f2be40a31b908d96b861ae0ce98582fa376c18a7f816b9d5eb4cd6aa0a4c/onnxruntime-1.26.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4eefd386a45202aefb7a5132b94f32df9d506c9edcc7faf2fc60d65183f4b183", size = 18197382, upload-time = "2026-05-08T19:07:46.965Z" }, +] + +[[package]] +name = "onnxscript" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "onnx" }, + { name = "onnx-ir" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/99/fd948eba63ba65b52265a4cd09a14f96bb9f5b730fcef58876c4358bf406/onnxscript-0.7.0.tar.gz", hash = "sha256:c95ed7b339b02cface56ee27689565c46612e1fc542c562298dddfdad5268dc5", size = 612032, upload-time = "2026-04-20T17:09:19.775Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/ce/2ed92575cc3be4ea1db5f38f16f20765f9b20b69b14d6c1d9972658a8ee9/onnxscript-0.7.0-py3-none-any.whl", hash = "sha256:5b356907d4501e9919f8599c91d8da967406a37b1fac2b40caa55a49acf242ea", size = 714842, upload-time = "2026-04-20T17:09:22.089Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "optuna" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alembic" }, + { name = "colorlog" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "sqlalchemy" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/aa/05f5e3f662cc96a4c478fc3446b8ed6359825a2b504ecb614a9ac84e4a4d/optuna-4.9.0.tar.gz", hash = "sha256:b322e5cbdf1655fb84c37646c4a7a1f391de1b47806bbe222e015825d0a82b87", size = 485834, upload-time = "2026-06-01T06:23:30.424Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/f3/e5fcd5d9b15771ed6dc10e3a7eeddc672e418f4f4c4653d216cc1d857e2d/optuna-4.9.0-py3-none-any.whl", hash = "sha256:f52f3be6148654850c92a5860d398fd88ec6b2c84ab68d9c3d07dcff02e7afee", size = 425553, upload-time = "2026-06-01T06:23:28.804Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and platform_machine != 's390x'", + "python_full_version < '3.11' and platform_machine == 's390x'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "python-dateutil", marker = "python_full_version < '3.11'" }, + { name = "pytz", marker = "python_full_version < '3.11'" }, + { name = "tzdata", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + +[[package]] +name = "pandas" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, + { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/87/4341c6252d1c47b08768c3d25ac487362bf403f0313ddae4a2a26c9b1b4c/pandas-3.0.3.tar.gz", hash = "sha256:696a4a00a2a2a35d4e5deb3fc946641b96c944f02230e4f76137fe35d806c4fc", size = 4651414, upload-time = "2026-05-11T18:54:29.21Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/16/b5c76b838fd9bf6ce84d3a53346b8874ec05c5f0040d75ef2c320100cd2a/pandas-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:455f6f8139d4282188f526868dbc3c828470e88a3d9d59a891bd46a455f21b98", size = 10338495, upload-time = "2026-05-11T18:52:11.558Z" }, + { url = "https://files.pythonhosted.org/packages/5a/b0/a4ffc4ae74d2d822200dcc46898987d8eb6032d1e2b219cae39da6f5cbcc/pandas-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4e15135e2ee5df1063313e2425ceef8ac0f4ae775893815b0923651b806a5639", size = 9938250, upload-time = "2026-05-11T18:52:17.005Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b2/3323601a52caee42c019e370090ca4544b241437240ca04f786cce82b0cf/pandas-3.0.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:05f1f1752b8533ea03f7f39a9c15b1a058d067bb48f4748948e7a8691e0510f2", size = 10770558, upload-time = "2026-05-11T18:52:19.865Z" }, + { url = "https://files.pythonhosted.org/packages/32/f1/bbecd2f867b97abebe0f9b53d750f862251b40337e061b36676ded3d920f/pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a1e45c80cceb3b4a21bc5939d52e8cbd8d9b7305309219d59e9754d9ce09e27", size = 11274611, upload-time = "2026-05-11T18:52:22.622Z" }, + { url = "https://files.pythonhosted.org/packages/7f/4f/eafabf2d5fae5adf143b4d18d3706c5efdc368a7c4eb1ee8a3eddabbd0f6/pandas-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:14da8316da4d0c5a77618425996bfb1248ca87fc2c1486e6fde4652bd18b5824", size = 11784670, upload-time = "2026-05-11T18:52:25.4Z" }, + { url = "https://files.pythonhosted.org/packages/49/44/1eb20389301b57b19cc099a1c2f662501f72f08a65f912d05822613c1532/pandas-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a55066a0505dae0ba2b50a46637db34b46f9094c65c5d4800794ef6335010938", size = 12353708, upload-time = "2026-05-11T18:52:28.139Z" }, + { url = "https://files.pythonhosted.org/packages/eb/62/c321f13b5ba1819fc8dca456c7fce578da2dcfecff1abbf0eaddf8406c0f/pandas-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6674ab18ad8c57802867264b00e15e7bb904700cdd9046e3b2fa1fce237439ea", size = 9907609, upload-time = "2026-05-11T18:52:30.982Z" }, + { url = "https://files.pythonhosted.org/packages/53/85/1b7f563ebc6357c27233a02a96b589bcce1fa9c6eb89fb4f0e56421d277e/pandas-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:5cc09a68b3120e0f54870dede8287a7bb1fa463907e4fcec1ea77cab6179bf7a", size = 9165596, upload-time = "2026-05-11T18:52:33.334Z" }, + { url = "https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fed2ff7fd9779120e388e285fc029bd5cf9490cdd2e4166a9ee22c0e49a9ab09", size = 10357846, upload-time = "2026-05-11T18:52:36.143Z" }, + { url = "https://files.pythonhosted.org/packages/cf/3d/b16412745651e855f357e5e66930248688378853a6e2698a214e331fba1f/pandas-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b168fc218fd80a6cbdbdbc1a97ddc7889ed057d7eb45f50d866ceab5f39904c4", size = 9899550, upload-time = "2026-05-11T18:52:38.976Z" }, + { url = "https://files.pythonhosted.org/packages/31/a8/fa2535168fffcedf67f4f6de28d2dd903a747ca7c8ea6989451aaeb3a92f/pandas-3.0.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0383c72c75cdcca61a9e116e611143902dbfd08bff356829c2f6d1cf40a9ca8c", size = 10412965, upload-time = "2026-05-11T18:52:41.915Z" }, + { url = "https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6dc0b3fd2169c9157deed50b4d519553a3655c8c6a96027136d654592be973a9", size = 10894600, upload-time = "2026-05-11T18:52:45.02Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a4/2eb28f2fccb4ced4a2c79ab2a5dee9ade1ebf44922ebad6fea158c9f95d4/pandas-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e65d5407dc0b394f509699650e4a2ec01c0514f21850f453fa60f3be79a5dbf", size = 11422824, upload-time = "2026-05-11T18:52:48.058Z" }, + { url = "https://files.pythonhosted.org/packages/f8/45/830bb57f533a4604b355e07edcb8ea18cf88b5f94e5fca92f27052d7c597/pandas-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f8894dc474d648fe7b6ff0ca9b0bd73950d19952bc1a6534540762c5d79d305c", size = 11950889, upload-time = "2026-05-11T18:52:50.905Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c5/fc1b368f303087d20e8c9bf3d6ceb186263cfac0ade735cd938538bea839/pandas-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:c7be265b62cef88e253a941e4698604973736dcfe242fdb5198f0f7bc473cdcc", size = 9755463, upload-time = "2026-05-11T18:52:53.386Z" }, + { url = "https://files.pythonhosted.org/packages/86/bd/fda8f9705b1b09c6ebe14bfc0fa0e4ec8584d54ea673628f157ff55131af/pandas-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:557409bc4178e70ee8d9ddb494798e51ebf6ea59330f6be22c51bab2a7db6c49", size = 9066158, upload-time = "2026-05-11T18:52:56.038Z" }, + { url = "https://files.pythonhosted.org/packages/c5/90/62d8302883c44308c477e222c3daf7c813a34c8e96985882fbd53d964352/pandas-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:67b3b64c11910cfa29f4e94a14d3bff9ee693b6fc76055e7cad549cee0aec5fa", size = 10331071, upload-time = "2026-05-11T18:52:58.838Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ae/6a6493c783a101f165e4356953ba3c74d6f77f0042fa7d753da9dfbb640c/pandas-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39436b377d56d2a2e52d0395bdbee171f01068e99af5250509aceeb929f765c7", size = 9875690, upload-time = "2026-05-11T18:53:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/62/7c/5df8e9f56c69a2769fbe9382a5ef8f2658c007e376434e1e2cbb57ad895f/pandas-3.0.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4be06d68f9ddcfc645b87534911da79a8fbffc7573c80e0edcf42a5020624d8", size = 10381634, upload-time = "2026-05-11T18:53:04.393Z" }, + { url = "https://files.pythonhosted.org/packages/99/68/1237369725aa617bb358263d535803e3053fdbc593513ec5ed9c9896b5b6/pandas-3.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a4eeb6830daf35a71cc09649bd823e2b542dac246cdee9614c6e4bd65028cd6a", size = 10891243, upload-time = "2026-05-11T18:53:07.643Z" }, + { url = "https://files.pythonhosted.org/packages/25/93/77d108e8af7222b4a503ebde0e30215b1c2e4f8e53a526431890f22d5586/pandas-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1928e07221f82db493cd4af1e23c1bfca524a19a4699887975bff68f49a72bfb", size = 11388659, upload-time = "2026-05-11T18:53:10.634Z" }, + { url = "https://files.pythonhosted.org/packages/d0/bd/eff5b4399f332ac386c853f6cd2bd3fa2ca0061b9f36ecd9c4d7c4265649/pandas-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51b1fe551acb77dac643c6fda86084d8d446c10fe64b06a9cc29c4cc8540e7f2", size = 11942880, upload-time = "2026-05-11T18:53:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/2c/20/559ace4200982c3887d0b86bfd0d856a2143ef8ddab63cc07934951a964c/pandas-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:a82d532a3351d435432cd913edbccaf8b8e01d4dd0e5ced5a8d2e8ecd94c7e44", size = 9757091, upload-time = "2026-05-11T18:53:16.306Z" }, + { url = "https://files.pythonhosted.org/packages/3a/66/69055a09fe200f29f922a3eeec4804611900b95f52d932ece3393c3c0c19/pandas-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:275c14e0fce14a2ec20eee474aecd305478ea3c1e6f6a9d8fe219a165542717e", size = 9057282, upload-time = "2026-05-11T18:53:18.768Z" }, + { url = "https://files.pythonhosted.org/packages/57/0e/efe801b0e6811e8e650cd21b7f2608e30f08a7067e2bf6e8752b0d56ee3c/pandas-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:46997386d528eb40376ecd6b033cf4a8a1e5282580f68f43de875b78cba2199d", size = 10767016, upload-time = "2026-05-11T18:53:21.227Z" }, + { url = "https://files.pythonhosted.org/packages/ea/dc/eb55135a1d5f0f0519f28da1f609a206d2cad1f9c35c32d51e38dd7261ae/pandas-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:261e308dfb22448384b7580cf719d2f998fe2966c92893c3e77d14008af1f066", size = 10420210, upload-time = "2026-05-11T18:53:23.982Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3e/b1d5d955ce33ffecb407465a60bc32769d74fcf68224b7ae67ae11d4dea4/pandas-3.0.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dd1a5d1def6a46002e964510bdc67c368aa0951df5d1d9f8365336f5a1f490cd", size = 10336126, upload-time = "2026-05-11T18:53:26.731Z" }, + { url = "https://files.pythonhosted.org/packages/f5/76/a01261711ab60a22d71b862f0de20e4c504bf80457270ad8cb42110f6abc/pandas-3.0.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d72828c20c6d6e83e1e22a6a3b47b326b71664112fa9705dcbccfd7a39b62085", size = 10728051, upload-time = "2026-05-11T18:53:29.125Z" }, + { url = "https://files.pythonhosted.org/packages/e9/21/ea191195e587b18cf682e97f433f81b2d0fbe341380e80a3e0d6e4403c8e/pandas-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d26cbe1fcfc12e8fd900e2454163e466b2d3af84f7c75481df7683ffc073d870", size = 11350796, upload-time = "2026-05-11T18:53:32.056Z" }, + { url = "https://files.pythonhosted.org/packages/64/69/f0eaaf54939f0e8c6768fd06be9af2cef9b36048b96dfb9e1b2c685a807e/pandas-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3e91cec1879ada0624fc3dc9953c5cbd60208e59c0db28f540c5d6d47502422f", size = 11799741, upload-time = "2026-05-11T18:53:34.985Z" }, + { url = "https://files.pythonhosted.org/packages/45/a4/865e0e510cae5fc2194de4db28be638952de942571ba9125934fd9c01d47/pandas-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:08d789b41f87e0905880e293cedf6197ce71fe67cc081358b1e148a491b9bd13", size = 10499958, upload-time = "2026-05-11T18:53:37.857Z" }, + { url = "https://files.pythonhosted.org/packages/86/54/effdcc3c0ff7a08037889200e148ebe94c16c4f653be078c7b3675955df1/pandas-3.0.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3650109c0f22879df8bd6179ab9ee3d7f1d1d4e7e0094a3f0032d9f51e2e64ac", size = 10336065, upload-time = "2026-05-11T18:53:41.099Z" }, + { url = "https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bab900348131a7db1f69a7309ef141fd5680f1487094193bcbbb61791573bf8f", size = 9926101, upload-time = "2026-05-11T18:53:43.515Z" }, + { url = "https://files.pythonhosted.org/packages/ae/e9/e35cf11c8a136e757b956f5f0efdcaa50aecde85ea055f1898dfc68262f3/pandas-3.0.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba7e08b9ac1d54569cd1e256e3668975ed624d6826f7b68df0342b012007bddb", size = 10457553, upload-time = "2026-05-11T18:53:46.394Z" }, + { url = "https://files.pythonhosted.org/packages/58/3b/1cdec6772bdbaf7b25dab360c59f03cadf05492dd724c6540af905389b07/pandas-3.0.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d71c63ae4ebdbf70209742096f1fc46a83a0613c99d4b23766cced9ff8cd62a", size = 10914065, upload-time = "2026-05-11T18:53:49.134Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c2/1ef644445fcd72e3627bceec77e3560636f87ddce4ed841afe76b83b5bf9/pandas-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e3a2ec42c98ffa2565a67e08e218d06d72576d758d90facb7c00805194d8f360", size = 11459188, upload-time = "2026-05-11T18:53:52.527Z" }, + { url = "https://files.pythonhosted.org/packages/7e/49/4d8d4f42cbc9c4adc7a1870f269c02cbd6cd40d059622c06fb298addcbad/pandas-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:335f62418ed562cfc3c49e9e196375c28b729dcef8543abf4f9438e381bf3c76", size = 11982966, upload-time = "2026-05-11T18:53:55.043Z" }, + { url = "https://files.pythonhosted.org/packages/38/55/792619469bab9882d8bbd5865d45a72f6478762d04a9af4bf0d08c503e95/pandas-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:3c20a521bbb85902f79f7270c80a59e1b5452d96d170c034f207181870f97ac5", size = 9876755, upload-time = "2026-05-11T18:53:58.067Z" }, + { url = "https://files.pythonhosted.org/packages/2a/af/33c469653b0ba03b50c3a98192d4c07f0c75c66b263ceb097fce0ee97d31/pandas-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:a2d2dff8a04f3917b55ab3910c32990f8ddf7eceba114947838cefa976a68977", size = 9198658, upload-time = "2026-05-11T18:54:00.733Z" }, + { url = "https://files.pythonhosted.org/packages/a2/fa/b8c257bd76b8bd060c3a9151c1fca05e9b9c5e3af5d0f549c0356f6d143d/pandas-3.0.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:0d589105b3c14645af1738ff279b2995102d8f7a03b0a66dc8d95550eb513e04", size = 10787242, upload-time = "2026-05-11T18:54:03.564Z" }, + { url = "https://files.pythonhosted.org/packages/54/eb/f19206ffb0bf1919002969aa448b4702c6594845156a6f8050674855aac3/pandas-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:13fc1e853d9e04743d11ba75a985ccbc2a317fe07d8af61e445a6fd24dacd6a6", size = 10436369, upload-time = "2026-05-11T18:54:06.311Z" }, + { url = "https://files.pythonhosted.org/packages/fd/24/c7c39fb4fe22b71a0c2d78bf0c585c600092d85f94f086d2b3b2f6ca27e2/pandas-3.0.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:819959dab7bbd0049c15623fbac4e29a191b9528160a61fb1032242d8ced2d9c", size = 10358306, upload-time = "2026-05-11T18:54:09.085Z" }, + { url = "https://files.pythonhosted.org/packages/16/ec/dd2a9eb7fa1204df88c0864164e35b228ac581062ac612ba0a67fd812e4c/pandas-3.0.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:60ae316d3fd75d1858d450d0db0103ea2be3e7d4a95ec2f064f7e2ae63f7b028", size = 10758394, upload-time = "2026-05-11T18:54:11.956Z" }, + { url = "https://files.pythonhosted.org/packages/95/6e/00c61ea8e85b4f6d8d35e11852a1a4998fc7fafc91c6a602d1cc9c972d64/pandas-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bd3a518890b400d32f9023722dc9a9a5c969f00b415419a3c06c043f09bb5d7d", size = 11375717, upload-time = "2026-05-11T18:54:14.539Z" }, + { url = "https://files.pythonhosted.org/packages/31/89/8fc1c268969fac43688d65fd92e67df24bd128d53cb4d2eee534cd307399/pandas-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9c39be2d709d01fa972a0cabc522389fceca4f3969332ba25a7d6c5802cf976a", size = 11828897, upload-time = "2026-05-11T18:54:17.146Z" }, + { url = "https://files.pythonhosted.org/packages/56/3b/e7d20dea247a3e6dc0bd8a6953854afbedc03951def4e7371e05e7263e25/pandas-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4db8c527972a821cf5286b40ccc57642a39bc62e62022b42f99f8a67fca8c3a1", size = 10900855, upload-time = "2026-05-11T18:54:19.72Z" }, + { url = "https://files.pythonhosted.org/packages/0f/54/68a0978d1ef8502b8492099beaa6e7a0c1b32e3b5d4f677f5810cb08711c/pandas-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b2c95f8bfc1ee412bf482605d7bfd30c12d1d26bd59fdd91efeef1d4718decb1", size = 9466464, upload-time = "2026-05-11T18:54:22.754Z" }, +] + +[[package]] +name = "parsedatetime" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/20/cb587f6672dbe585d101f590c3871d16e7aec5a576a1694997a3777312ac/parsedatetime-2.6.tar.gz", hash = "sha256:4cb368fbb18a0b7231f4d76119165451c8d2e35951455dfee97c62a87b04d455", size = 60114, upload-time = "2020-05-31T23:50:57.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/a4/3dd804926a42537bf69fb3ebb9fd72a50ba84f807d95df5ae016606c976c/parsedatetime-2.6-py3-none-any.whl", hash = "sha256:cb96edd7016872f58479e35879294258c71437195760746faffedb692aef000b", size = 42548, upload-time = "2020-05-31T23:50:56.315Z" }, +] + +[[package]] +name = "plotly" +version = "6.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "narwhals" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/fd/d72c292d78aadb93d1a9bcd76bf3c678271040c7cf10abe5788b33040a39/plotly-6.8.0.tar.gz", hash = "sha256:e088e7ddc68d4f70e3d66659224727a45296d71d2b8284181862d3d8f1f0d88f", size = 6915161, upload-time = "2026-06-03T18:33:40.226Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/14/abe5ce876ab5b66ee3c691bf537fcd43d037aea55d447aacf74630a8f31e/plotly-6.8.0-py3-none-any.whl", hash = "sha256:13c5c4a0f70b74cab1913eda0de49b826df5931708eb6f9c3010040614700ec8", size = 9902055, upload-time = "2026-06-03T18:33:34.26Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "polars" +version = "1.41.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "polars-runtime-32" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/f9/aeda46259b0669247a160315d2d51269de9504b9dd2f70acadbcb22f46b7/polars-1.41.2.tar.gz", hash = "sha256:256d6731162371b77f3f29a55eacb8c0fc740ddb1a293a01d2ef5b5393c5c708", size = 737996, upload-time = "2026-05-29T17:39:15.604Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/22/28f62d24f7db56ac4343588f9362d49b7b4177e55ac47a466fe696b0099b/polars-1.41.2-py3-none-any.whl", hash = "sha256:23ce9a2910b6e3e8d4258770bf44aa17170958df7af6e85feedf4458a04d8d29", size = 833445, upload-time = "2026-05-29T17:37:05.576Z" }, +] + +[[package]] +name = "polars-runtime-32" +version = "1.41.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/56/54e3ea0e9b64f327179049e4742241cc6b1d3e8fa414b05a057dd26df367/polars_runtime_32-1.41.2.tar.gz", hash = "sha256:7af09ec1ab053da2c9669e8d15f809a4083a29be05db57111688b8051062af56", size = 2989474, upload-time = "2026-05-29T17:39:17.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/9b/fe72a3811c0357cdb06c67bdc7695fa1623ad47948fc523195f5ac31037f/polars_runtime_32-1.41.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:95a08346dac337357cdb825c8076df7d36da54c4caa59a5cb41d0a30691c5edd", size = 52265283, upload-time = "2026-05-29T17:37:09.407Z" }, + { url = "https://files.pythonhosted.org/packages/0a/93/fab9da803fd80d9e83ef88c20932f637a10bc611b20415fc322eec84bc44/polars_runtime_32-1.41.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:dedfaeec2c7f995298da7319dd9431d662e5dd1d0ec51b1459df4a0234ceff52", size = 46571222, upload-time = "2026-05-29T17:37:13.698Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2a/8843f34a8ac57acd058a39b87b03b580dd352a490e9dae0415e02033bdd4/polars_runtime_32-1.41.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18eea22c5cc34e27f8a60950458ad81e6a9ea75e89363ca1367e14e7e7f781fc", size = 50409372, upload-time = "2026-05-29T17:37:17.875Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c6/92b352fe88cf51bd0a19fb99e1c0cbe46aa26c14dcf7995b89869cd932ae/polars_runtime_32-1.41.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2630540dfdfb0f36f9b04a07c7c2e3f50bf2ad384113263c1c812007ee9141e0", size = 56405484, upload-time = "2026-05-29T17:37:22.684Z" }, + { url = "https://files.pythonhosted.org/packages/74/c4/bae3174c3b02f6b441d2e58594387abcd509f67a098f682a83b195f08966/polars_runtime_32-1.41.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:20e969e08f9b137e233c04cc04de73d9795f89eb77d34854e40a025965a43763", size = 50603512, upload-time = "2026-05-29T17:37:27.422Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ed/f2d26ae02d92c2689056838ed59e2a626326ad23c2831d58637d25f6c82a/polars_runtime_32-1.41.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e7016a3deb641b64a31447abbbee0f34bd020a6a9ae34ee6b743837def15e2a4", size = 54328561, upload-time = "2026-05-29T17:37:32.587Z" }, + { url = "https://files.pythonhosted.org/packages/9b/c4/9c3831cc885dc7769e59abf8f583821a5fb4403fd0e4eba0ccc6d47a3d4b/polars_runtime_32-1.41.2-cp310-abi3-win_amd64.whl", hash = "sha256:1e5e5377c315e0dcafdfb2a31adc546abbaeb3f9cb1864e6536523d2af473265", size = 51978643, upload-time = "2026-05-29T17:37:37.443Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c6/79e9f3f270270d7ed5575d92b7bfef49f01abd9275447161275b23b553a8/polars_runtime_32-1.41.2-cp310-abi3-win_arm64.whl", hash = "sha256:843d96f69d18eca53429c1198e58891db7f18111f83b9c419bb45ad9d73eaed5", size = 46006901, upload-time = "2026-05-29T17:37:42.522Z" }, +] + +[[package]] +name = "protobuf" +version = "7.35.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/01/9ef0afd7999eb9badb3a768b4aedd78c86d4c65cfaf1958ab276199e76b4/protobuf-7.35.1.tar.gz", hash = "sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a", size = 458717, upload-time = "2026-06-11T21:55:40.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/03/8aeeb7458d22546bf64b5250ca1daeb5ff757d900e8e4a7476c6f0db843e/protobuf-7.35.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6", size = 433226, upload-time = "2026-06-11T21:55:31.719Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/dfb89eb0e652a1ff073c39a59fb5e3a83cfe9b57a2c83fa6d78270101767/protobuf-7.35.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799", size = 328847, upload-time = "2026-06-11T21:55:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/0f/58/dc12f2cd484951524af6e3382c785869b9b3fb5e52ee95ae23add53ee8f9/protobuf-7.35.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4", size = 344030, upload-time = "2026-06-11T21:55:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/e4/be/5b3cfe508bfab6761414ff944e3366eb13be4fd71efcd69450f89ba39f43/protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4", size = 327130, upload-time = "2026-06-11T21:55:35.921Z" }, + { url = "https://files.pythonhosted.org/packages/d8/bc/6d6c7ba8709c85f8f2c390b2b118d6fb08a783676a572271851bf45a7d22/protobuf-7.35.1-cp310-abi3-win32.whl", hash = "sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30", size = 428945, upload-time = "2026-06-11T21:55:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/8d0cb6f20a1ef7b18f1c8986ad5783f22f84cce39c6ce9a6e645ea55192e/protobuf-7.35.1-cp310-abi3-win_amd64.whl", hash = "sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87", size = 439996, upload-time = "2026-06-11T21:55:38.123Z" }, + { url = "https://files.pythonhosted.org/packages/19/c7/5f7c636ec43e0c545e28d1f1db71990108306f7bdcb89f069ba97e428e7f/protobuf-7.35.1-py3-none-any.whl", hash = "sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9", size = 171659, upload-time = "2026-06-11T21:55:39.155Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "pyarrow" +version = "24.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/13/13e1069b351bdc3881266e11147ffccf687505dbb0ea74036237f5d454a5/pyarrow-24.0.0.tar.gz", hash = "sha256:85fe721a14dd823aca09127acbb06c3ca723efbd436c004f16bca601b04dcc83", size = 1180261, upload-time = "2026-04-21T10:51:25.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/bf/a34fee1d624152124fa8355c42f34195ad5fe5233ce5bb87946432047d52/pyarrow-24.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:7c2b98645d576a0b9616892ead22b64a83a5f043c5e2ca15ebcefcb5b70c80cb", size = 35076681, upload-time = "2026-04-21T08:51:46.845Z" }, + { url = "https://files.pythonhosted.org/packages/1d/41/64180033d7027afce12dc96d0fe1f504c6fa112190582b458acea2399530/pyarrow-24.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:644a246325b8c69c595ad1dd4b463eba4b0cdb731370e4a86137d433208d6147", size = 36684260, upload-time = "2026-04-21T08:51:53.642Z" }, + { url = "https://files.pythonhosted.org/packages/57/02/9b9320e673dd8a99411fac78690f3df92f6dd6f59754c750110bca66d64e/pyarrow-24.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3a577bd840ca83f646f0a625dbc571dba7044c43c2d1503afc378b570954345c", size = 45698566, upload-time = "2026-04-21T10:46:02.133Z" }, + { url = "https://files.pythonhosted.org/packages/67/33/f75e91b9a64c3f33c787e263c93b871ad91b8a4a68c1d5cebddd9840e835/pyarrow-24.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e3268e43984d0b1a185c89b4cfff282a7ead12fc93f56cfd7088bdbcbe727041", size = 48835562, upload-time = "2026-04-21T10:46:10.278Z" }, + { url = "https://files.pythonhosted.org/packages/a5/63/097510448e47e4091faa41c43ba92f97cecaab8f4535b56a3d149578f634/pyarrow-24.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2392d954fcb920f42d230284b677605e4e2fbb11f2821e823e642abd67fbb491", size = 49394997, upload-time = "2026-04-21T10:46:18.08Z" }, + { url = "https://files.pythonhosted.org/packages/60/6b/c047d6222ab279024a062742d1807e2fbaf27bba88a98637299ff47b9236/pyarrow-24.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bec9373df11544592b0ba7ec2af0e35059e5f0e7647c6183a854dedd193298f1", size = 51911424, upload-time = "2026-04-21T10:46:25.347Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ba/464cc70761c2a525d97ebd84e21c31ebd47f3ef4bdcee117009f51c46f24/pyarrow-24.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:c42ab9439498270139cc63e18847a02afe5c8b3ed9c931266533cfe378bd3591", size = 27251730, upload-time = "2026-04-21T10:46:30.913Z" }, + { url = "https://files.pythonhosted.org/packages/62/c9/a47ab7ece0d86cbe6678418a0fbd1ac4bb493b9184a3891dfa0e7f287ae0/pyarrow-24.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b0e131f880cda8d04e076cee175a46fc0e8bc8b65c99c6c09dff6669335fde74", size = 35068898, upload-time = "2026-04-21T10:46:36.599Z" }, + { url = "https://files.pythonhosted.org/packages/d1/bc/8db86617a9a58008acf8913d6fed68ea2a46acb6de928db28d724c891a68/pyarrow-24.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1b2fe7f9a5566401a0ef2571f197eb92358925c1f0c8dba305d6e43ea0871bb3", size = 36679915, upload-time = "2026-04-21T10:46:42.602Z" }, + { url = "https://files.pythonhosted.org/packages/eb/8e/fb178720400ef69db251eb4a9c3ccf4af269bc1feb5055529b8fc87170d1/pyarrow-24.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0b3537c00fb8d384f15ac1e79b6eb6db04a16514c8c1d22e59a9b95c8ba42868", size = 45697931, upload-time = "2026-04-21T10:46:48.403Z" }, + { url = "https://files.pythonhosted.org/packages/f3/27/99c42abe8e21b44f4917f62631f3aa31404882a2c41d8a4cd5c110e13d52/pyarrow-24.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:14e31a3c9e35f1ab6356c6378f6f72830e6d2d5f1791df3774a7b097d18a6a1e", size = 48837449, upload-time = "2026-04-21T10:46:55.329Z" }, + { url = "https://files.pythonhosted.org/packages/36/b6/333749e2666e9032891125bf9c691146e92901bece62030ac1430e2e7c88/pyarrow-24.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b7d9a514e73bc42711e6a35aaccf3587c520024fe0a25d830a1a8a27c15f4f57", size = 49395949, upload-time = "2026-04-21T10:47:01.869Z" }, + { url = "https://files.pythonhosted.org/packages/17/25/c5201706a2dd374e8ba6ee3fd7a8c89fb7ffc16eed5217a91fd2bd7f7626/pyarrow-24.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b196eb3f931862af3fa84c2a253514d859c08e0d8fe020e07be12e75a5a9780c", size = 51912986, upload-time = "2026-04-21T10:47:09.872Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d2/4d1bbba65320b21a49678d6fbdc6ff7c649251359fdcfc03568c4136231d/pyarrow-24.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:35405aecb474e683fb36af650618fd5340ee5471fc65a21b36076a18bbc6c981", size = 27255371, upload-time = "2026-04-21T10:47:15.943Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a9/9686d9f07837f91f775e8932659192e02c74f9d8920524b480b85212cc68/pyarrow-24.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:6233c9ed9ab9d1db47de57d9753256d9dcffbf42db341576099f0fd9f6bf4810", size = 34981559, upload-time = "2026-04-21T10:47:22.17Z" }, + { url = "https://files.pythonhosted.org/packages/80/b6/0ddf0e9b6ead3474ab087ae598c76b031fc45532bf6a63f3a553440fb258/pyarrow-24.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:f7616236ec1bc2b15bfdec22a71ab38851c86f8f05ff64f379e1278cf20c634a", size = 36663654, upload-time = "2026-04-21T10:47:28.315Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3b/926382efe8ce27ba729071d3566ade6dfb86bdf112f366000196b2f5780a/pyarrow-24.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:1617043b99bd33e5318ae18eb2919af09c71322ef1ca46566cdafc6e6712fb66", size = 45679394, upload-time = "2026-04-21T10:47:34.821Z" }, + { url = "https://files.pythonhosted.org/packages/b3/7a/829f7d9dfd37c207206081d6dad474d81dde29952401f07f2ba507814818/pyarrow-24.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6165461f55ef6314f026de6638d661188e3455d3ec49834556a0ebbdbace18bb", size = 48863122, upload-time = "2026-04-21T10:47:42.056Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e8/f88ce625fe8babaae64e8db2d417c7653adb3019b08aae85c5ed787dc816/pyarrow-24.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3b13dedfe76a0ad2d1d859b0811b53827a4e9d93a0bcb05cf59333ab4980cc7e", size = 49376032, upload-time = "2026-04-21T10:47:48.967Z" }, + { url = "https://files.pythonhosted.org/packages/36/7a/82c363caa145fff88fb475da50d3bf52bb024f61917be5424c3392eaf878/pyarrow-24.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:25ea65d868eb04015cd18e6df2fbe98f07e5bda2abefabcb88fce39a947716f6", size = 51929490, upload-time = "2026-04-21T10:47:55.981Z" }, + { url = "https://files.pythonhosted.org/packages/66/1c/e3e72c8014ad2743ca64a701652c733cc5cbcee15c0463a32a8c55518d9e/pyarrow-24.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:295f0a7f2e242dabd513737cf076007dc5b2d59237e3eca37b05c0c6446f3826", size = 27355660, upload-time = "2026-04-21T10:48:01.718Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d3/a1abf004482026ddc17f4503db227787fa3cfe41ec5091ff20e4fea55e57/pyarrow-24.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:02b001b3ed4723caa44f6cd1af2d5c86aa2cf9971dacc2ffa55b21237713dfba", size = 34976759, upload-time = "2026-04-21T10:48:07.258Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4a/34f0a36d28a2dd32225301b79daad44e243dc1a2bb77d43b60749be255c4/pyarrow-24.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:04920d6a71aabd08a0417709efce97d45ea8e6fb733d9ca9ecffb13c67839f68", size = 36658471, upload-time = "2026-04-21T10:48:13.347Z" }, + { url = "https://files.pythonhosted.org/packages/1f/78/543b94712ae8bb1a6023bcc1acf1a740fbff8286747c289cd9468fced2a5/pyarrow-24.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:a964266397740257f16f7bb2e4f08a0c81454004beab8ff59dd531b73610e9f2", size = 45675981, upload-time = "2026-04-21T10:48:20.201Z" }, + { url = "https://files.pythonhosted.org/packages/84/9f/8fb7c222b100d314137fa40ec050de56cd8c6d957d1cfff685ce72f15b17/pyarrow-24.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6f066b179d68c413374294bc1735f68475457c933258df594443bb9d88ddc2a0", size = 48859172, upload-time = "2026-04-21T10:48:27.541Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/1ea72538e6c8b3b475ed78d1049a2c518e655761ea50fe1171fc855fcab7/pyarrow-24.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1183baeb14c5f587b1ec52831e665718ce632caab84b7cd6b85fd44f96114495", size = 49385733, upload-time = "2026-04-21T10:48:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/c3/be/c3d8b06a1ba35f2260f8e1f771abbee7d5e345c0937aab90675706b1690a/pyarrow-24.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:806f24b4085453c197a5078218d1ee08783ebbba271badd153d1ae22a3ee804f", size = 51934335, upload-time = "2026-04-21T10:48:42.099Z" }, + { url = "https://files.pythonhosted.org/packages/9c/62/89e07a1e7329d2cde3e3c6994ba0839a24977a2beda8be6005ea3d860b99/pyarrow-24.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e4505fc6583f7b05ab854934896bcac8253b04ac1171a77dfb73efef92076d91", size = 27271748, upload-time = "2026-04-21T10:49:42.532Z" }, + { url = "https://files.pythonhosted.org/packages/17/1a/cff3a59f80b5b1658549d46611b67163f65e0664431c076ad728bf9d5af4/pyarrow-24.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:1a4e45017efbf115032e4475ee876d525e0e36c742214fbe405332480ecd6275", size = 35238554, upload-time = "2026-04-21T10:48:48.526Z" }, + { url = "https://files.pythonhosted.org/packages/a8/99/cce0f42a327bfef2c420fb6078a3eb834826e5d6697bf3009fe11d2ad051/pyarrow-24.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:7986f1fa71cee060ad00758bcc79d3a93bab8559bf978fab9e53472a2e25a17b", size = 36782301, upload-time = "2026-04-21T10:48:55.181Z" }, + { url = "https://files.pythonhosted.org/packages/2a/66/8e560d5ff6793ca29aca213c53eec0dd482dd46cb93b2819e5aab52e4252/pyarrow-24.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:d3e0b61e8efb24ed38898e5cdc5fffa9124be480008d401a1f8071500494ae42", size = 45721929, upload-time = "2026-04-21T10:49:03.676Z" }, + { url = "https://files.pythonhosted.org/packages/27/0c/a26e25505d030716e078d9f16eb74973cbf0b33b672884e9f9da1c83b871/pyarrow-24.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:55a3bc1e3df3b5567b7d27ef551b2283f0c68a5e86f1cd56abc569da4f31335b", size = 48825365, upload-time = "2026-04-21T10:49:11.714Z" }, + { url = "https://files.pythonhosted.org/packages/5f/eb/771f9ecb0c65e73fe9dccdd1717901b9594f08c4515d000c7c62df573811/pyarrow-24.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:641f795b361874ac9da5294f8f443dfdbee355cf2bd9e3b8d97aaac2306b9b37", size = 49451819, upload-time = "2026-04-21T10:49:21.474Z" }, + { url = "https://files.pythonhosted.org/packages/48/da/61ae89a88732f5a785646f3ec6125dbb640fa98a540eb2b9889caa561403/pyarrow-24.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8adc8e6ce5fccf5dc707046ae4914fd537def529709cc0d285d37a7f9cd442ca", size = 51909252, upload-time = "2026-04-21T10:49:31.164Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1a/8dd5cafab7b66573fa91c03d06d213356ad4edd71813aa75e08ce2b3a844/pyarrow-24.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:9b18371ad2f44044b81a8d23bc2d8a9b6a6226dca775e8e16cfee640473d6c5d", size = 27388127, upload-time = "2026-04-21T10:49:37.334Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/d022a34ff05d2cbedd8ccf841fc1f532ecfa9eb5ed1711b56d0e0ea71fc9/pyarrow-24.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:1cc9057f0319e26333b357e17f3c2c022f1a83739b48a88b25bfd5fa2dc18838", size = 35007997, upload-time = "2026-04-21T10:49:48.796Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ff/f01485fda6f4e5d441afb8dd5e7681e4db18826c1e271852f5d3957d6a80/pyarrow-24.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e6f1278ee4785b6db21229374a1c9e54ec7c549de5d1efc9630b6207de7e170b", size = 36678720, upload-time = "2026-04-21T10:49:55.858Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c2/2d2d5fea814237923f71b36495211f20b43a1576f9a4d6da7e751a64ec6f/pyarrow-24.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:adbbedc55506cbdabb830890444fb856bfb0060c46c6f8026c6c2f2cf86ae795", size = 45741852, upload-time = "2026-04-21T10:50:04.624Z" }, + { url = "https://files.pythonhosted.org/packages/8e/3a/28ba9c1c1ebdbb5f1b94dfebb46f207e52e6a554b7fe4132540fde29a3a0/pyarrow-24.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:ae8a1145af31d903fa9bb166824d7abe9b4681a000b0159c9fb99c11bc11ad26", size = 48889852, upload-time = "2026-04-21T10:50:12.293Z" }, + { url = "https://files.pythonhosted.org/packages/df/51/4a389acfd31dca009f8fb82d7f510bb4130f2b3a8e18cf00194d0687d8ac/pyarrow-24.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d7027eba1df3b2069e2e8d80f644fa0918b68c46432af3d088ddd390d063ecde", size = 49445207, upload-time = "2026-04-21T10:50:20.677Z" }, + { url = "https://files.pythonhosted.org/packages/19/4b/0bab2b23d2ae901b1b9a03c0efd4b2d070256f8ce3fc43f6e58c167b2081/pyarrow-24.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e56a1ffe9bf7b727432b89104cc0849c21582949dd7bdcb34f17b2001a351a76", size = 51954117, upload-time = "2026-04-21T10:50:29.14Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/f4e9145da0417b3d2c12035a8492b35ff4a3dbc653e614fcfb51d9dedb38/pyarrow-24.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:38be1808cdd068605b787e6ca9119b27eb275a0234e50212c3492331680c3b1e", size = 28001155, upload-time = "2026-04-21T10:51:22.337Z" }, + { url = "https://files.pythonhosted.org/packages/79/4f/46a49a63f43526da895b1a45bbb51d5baf8e4d77159f8528fc3e5490007f/pyarrow-24.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:418e48ce50a45a6a6c73c454677203a9c75c966cb1e92ca3370959185f197a05", size = 35250387, upload-time = "2026-04-21T10:50:35.552Z" }, + { url = "https://files.pythonhosted.org/packages/a0/da/d5e0cd5ef00796922404806d5f00325cdadc3441ce2c13fe7115f2df9a64/pyarrow-24.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:2f16197705a230a78270cdd4ea8a1d57e86b2fdcbc34a1f6aebc72e65c986f9a", size = 36797102, upload-time = "2026-04-21T10:50:42.417Z" }, + { url = "https://files.pythonhosted.org/packages/34/c7/5904145b0a593a05236c882933d439b5720f0a145381179063722fbfc123/pyarrow-24.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:fb24ac194bfc5e86839d7dcd52092ee31e5fe6733fe11f5e3b06ef0812b20072", size = 45745118, upload-time = "2026-04-21T10:50:49.324Z" }, + { url = "https://files.pythonhosted.org/packages/13/d3/cca42fe166d1c6e4d5b80e530b7949104d10e17508a90ae202dac205ce2a/pyarrow-24.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:9700ebd9a51f5895ce75ff4ac4b3c47a7d4b42bc618be8e713e5d56bacf5f931", size = 48844765, upload-time = "2026-04-21T10:50:55.579Z" }, + { url = "https://files.pythonhosted.org/packages/b0/49/942c3b79878ba928324d1e17c274ed84581db8c0a749b24bcf4cbdf15bd3/pyarrow-24.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d8ddd2768da81d3ee08cfea9b597f4abb4e8e1dc8ae7e204b608d23a0d3ab699", size = 49471890, upload-time = "2026-04-21T10:51:02.439Z" }, + { url = "https://files.pythonhosted.org/packages/76/97/ff71431000a75d84135a1ace5ca4ba11726a231a8007bbb320a4c54075d5/pyarrow-24.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:61a3d7eaa97a14768b542f3d284dc6400dd2470d9f080708b13cd46b6ae18136", size = 51932250, upload-time = "2026-04-21T10:51:10.576Z" }, + { url = "https://files.pythonhosted.org/packages/51/be/6f79d55816d5c22557cf27533543d5d70dfe692adfbee4b99f2760674f38/pyarrow-24.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:c91d00057f23b8d353039520dc3a6c09d8608164c692e9f59a175a42b2ae0c19", size = 28131282, upload-time = "2026-04-21T10:51:16.815Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/08/f1ba952f1c8ae5581c70fa9c6da89f247b83e3dd8c09c035d5d7931fc23d/pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4", size = 2113146, upload-time = "2026-05-06T13:37:36.537Z" }, + { url = "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5", size = 1949769, upload-time = "2026-05-06T13:37:46.365Z" }, + { url = "https://files.pythonhosted.org/packages/64/ba/bfb1d928fd5b49e1258935ff104ae356e9fd89384a55bf9f847e9193ad40/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba", size = 1974958, upload-time = "2026-05-06T13:37:28.611Z" }, + { url = "https://files.pythonhosted.org/packages/4e/74/76223bfb117b64af743c9b6670d1364516f5c0604f96b48f3272f6af6cc6/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b", size = 2042118, upload-time = "2026-05-06T13:36:55.216Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7b/848732968bc8f48f3187542f08358b9d842db564147b256669426ebb1652/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c", size = 2222876, upload-time = "2026-05-06T13:38:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e90b63ee2e14bd8d3db8f705a6d75d64e6ee1b7c2c8833747ce706e1e0ce/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50", size = 2286703, upload-time = "2026-05-06T13:37:53.304Z" }, + { url = "https://files.pythonhosted.org/packages/ba/1e/acc4d70f88a0a277e4a1fa77ebb985ceabaf900430f875bf9338e11c9420/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd", size = 2092042, upload-time = "2026-05-06T13:38:46.981Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/0a422b57bf8504102bf3c4ccea9c41bab5a5cee6a54650acf8faf67f5a24/pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01", size = 2117231, upload-time = "2026-05-06T13:39:23.146Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2a/2ac13c3af305843e23c5078c53d135656b3f05a2fd78cb7bbbb12e97b473/pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d", size = 2168388, upload-time = "2026-05-06T13:40:08.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/04/2beacf7e1607e93eefe4aed1b4709f079b905fb77530179d4f7c71745f22/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4", size = 2184769, upload-time = "2026-05-06T13:38:13.901Z" }, + { url = "https://files.pythonhosted.org/packages/9e/29/d2b9fd9f539133548eaf622c06a4ce176cb46ac59f32d0359c4abc0de047/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f", size = 2319312, upload-time = "2026-05-06T13:39:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/0f7a5b85fec6075bea96e3ef9187de38fccced0de92c1e7feda8d5cc7bb9/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39", size = 2361817, upload-time = "2026-05-06T13:38:43.2Z" }, + { url = "https://files.pythonhosted.org/packages/25/a4/73363fec545fd3ec025490bdda2743c56d0dd5b6266b1a53bbe9e4265375/pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d", size = 1987085, upload-time = "2026-05-06T13:39:25.497Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/62f082da2c91fac1c234bc9ee0066257ce83f0604abd72e4c9d5991f2d84/pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf", size = 2074311, upload-time = "2026-05-06T13:39:59.922Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, +] + +[[package]] +name = "pytest" +version = "7.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116, upload-time = "2023-12-31T12:00:18.035Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287, upload-time = "2023-12-31T12:00:13.963Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, +] + +[[package]] +name = "pytimeparse" +version = "1.1.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/5d/231f5f33c81e09682708fb323f9e4041408d8223e2f0fb9742843328778f/pytimeparse-1.1.8.tar.gz", hash = "sha256:e86136477be924d7e670646a98561957e8ca7308d44841e21f5ddea757556a0a", size = 9403, upload-time = "2018-05-18T17:40:42.76Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/b4/afd75551a3b910abd1d922dbd45e49e5deeb4d47dc50209ce489ba9844dd/pytimeparse-1.1.8-py2.py3-none-any.whl", hash = "sha256:04b7be6cc8bd9f5647a6325444926c3ac34ee6bc7e69da4367ba282f076036bd", size = 9969, upload-time = "2018-05-18T17:40:41.28Z" }, +] + +[[package]] +name = "pytorch-ranger" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "torch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/32/9269ee5981995e760c3bf51d6cf7f84a2ce051eca2315753910585bce50d/pytorch_ranger-0.1.1.tar.gz", hash = "sha256:aa7115431cef11b57d7dd7bc86e7302a911dae467f62ec5d0b10e1ff744875db", size = 7865, upload-time = "2020-03-30T07:37:22.194Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/70/12256257d861bbc3e176130d25be1de085ce7a9e60594064888a950f2154/pytorch_ranger-0.1.1-py3-none-any.whl", hash = "sha256:1e69156c9cc8439185cb8ba4725b18c91947fbe72743e25aca937da8aeb0c8ec", size = 14436, upload-time = "2020-03-30T07:37:21.198Z" }, +] + +[[package]] +name = "pytz" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/46/dd499ec9038423421951e4fad73051febaa13d2df82b4064f87af8b8c0c3/pytz-2026.2.tar.gz", hash = "sha256:0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a", size = 320861, upload-time = "2026-05-04T01:35:29.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", hash = "sha256:04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126", size = 510141, upload-time = "2026-05-04T01:35:27.408Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "sequifier" +version = "2.0.0.0" +source = { editable = "." } +dependencies = [ + { name = "beartype" }, + { name = "csvkit" }, + { name = "fastparquet" }, + { name = "loguru" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "onnx" }, + { name = "onnxruntime", version = "1.24.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "onnxruntime", version = "1.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "onnxscript" }, + { name = "optuna" }, + { name = "plotly" }, + { name = "polars" }, + { name = "psutil" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "torch" }, + { name = "torch-optimizer" }, +] + +[package.optional-dependencies] +test = [ + { name = "plotly" }, + { name = "pytest" }, +] + +[package.metadata] +requires-dist = [ + { name = "beartype", specifier = ">=0.18.5,<0.19.0" }, + { name = "csvkit", specifier = ">=1.0,<2.0" }, + { name = "fastparquet", specifier = ">=2024.2.0,<2025.0.0" }, + { name = "loguru", specifier = ">=0.7.3,<1.0.0" }, + { name = "numpy", specifier = ">=1.23" }, + { name = "onnx", specifier = ">=1.15.0,<2.0.0" }, + { name = "onnxruntime", specifier = ">=1.17" }, + { name = "onnxscript", specifier = ">=0.5.4" }, + { name = "optuna", specifier = ">=2.10.0" }, + { name = "plotly", specifier = ">=4.0.0" }, + { name = "plotly", marker = "extra == 'test'", specifier = ">=6.0,<7.0" }, + { name = "polars", specifier = ">=1.0.0,<2.0.0" }, + { name = "polars", specifier = ">=1.31.0,<2.0" }, + { name = "psutil", specifier = ">=7.0.0,<8.0.0" }, + { name = "pyarrow", specifier = ">=16.1" }, + { name = "pydantic", specifier = ">=2.0,<3.0" }, + { name = "pytest", marker = "extra == 'test'", specifier = ">=7.2,<8.0" }, + { name = "pyyaml", specifier = ">=6.0,<7.0" }, + { name = "torch", specifier = ">=2.4" }, + { name = "torch-optimizer", specifier = ">=0.3.0,<0.4.0" }, +] +provides-extras = ["test"] + +[[package]] +name = "setuptools" +version = "81.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/da/6fbf010c8ebb347679d0d100b22fe9ba5e13fd04046c5df7280d2f0bf706/sqlalchemy-2.0.50.tar.gz", hash = "sha256:af5607d11ef90fd6a5c0549fe0045dce1663d427426bcfb506dcb5346a85a3b9", size = 9907424, upload-time = "2026-05-24T19:20:04.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/a9/812a775bd8c1af0966d660238d005baf25e9bced1f038c8e71f00aa637a7/sqlalchemy-2.0.50-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7af6eeb84985bf840ba779018ff9424d61ff69b52e66b8789d3c8da7bf5341b2", size = 2161617, upload-time = "2026-05-24T20:00:00.761Z" }, + { url = "https://files.pythonhosted.org/packages/d5/74/5a6bc5496e9be8f740fbf80f9e6bd4ab965c8a80870eb07ab015e360957a/sqlalchemy-2.0.50-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fe7822866f3a9fc5f3db21a290ce8961a53050115f05edf9402b6a5feb92a9f", size = 3244104, upload-time = "2026-05-24T20:07:38.158Z" }, + { url = "https://files.pythonhosted.org/packages/81/55/b260d8df2adc9bb0bf294f67b5f802ff0d84d99442b536b9efd0ea72d447/sqlalchemy-2.0.50-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8e1b0f6a4dcd9b4839e2320afb5df37a6981cbc20ff9c423ae11c5537bdbd21", size = 3243039, upload-time = "2026-05-24T20:14:23.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/6d/58714005cbf370f16c3f30d30324a43be10069efcfe764f7236a2e851947/sqlalchemy-2.0.50-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e195687f1af431c9515416288373b323b6eb599f774409814e89e9d603a56e39", size = 3195017, upload-time = "2026-05-24T20:07:40.086Z" }, + { url = "https://files.pythonhosted.org/packages/30/e8/67527fee039bd3e1a6ce3f03d2b62fd87ab9099c17052810d79496727b66/sqlalchemy-2.0.50-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ea1a8a2db4b2217d456c8d7a873bfc605f06fe3584d315264ea18c2a17585d0b", size = 3215308, upload-time = "2026-05-24T20:14:26.034Z" }, + { url = "https://files.pythonhosted.org/packages/94/b2/dd3155a6a6706cb89adecf5ee6e0512f7b0ee5cf3e6f4cde67d3c20ebfda/sqlalchemy-2.0.50-cp310-cp310-win32.whl", hash = "sha256:68b154b08088b4ec32bb4d2958bfbb50e57549f91a4cd3e7f928e3553ed69031", size = 2121637, upload-time = "2026-05-24T20:08:06.401Z" }, + { url = "https://files.pythonhosted.org/packages/93/a1/a09c463ee3e7764b5ce5bd19a7f0b6eefbde62e637439ab58498cdbd6b47/sqlalchemy-2.0.50-cp310-cp310-win_amd64.whl", hash = "sha256:66e374271ecb7101273f57af1a62446a953d327eec4f8089147de57c591bbacc", size = 2144673, upload-time = "2026-05-24T20:08:07.936Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5d/3172686af1770e4de2805f919a51441085f589ddadf3dd76ec582f84f497/sqlalchemy-2.0.50-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1aa6e403663a9c43c8fef7ce4bdb4cf48bcd8d352e91deda2a99f963270bd508", size = 2161366, upload-time = "2026-05-24T20:00:02.061Z" }, + { url = "https://files.pythonhosted.org/packages/0f/90/e98dedea3c3e663a17afcd003a34ba45efdac2cea3b6f2e4585e2b1e2537/sqlalchemy-2.0.50-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51b637a84f9fa35ae1f9017e786cb142974a25305085e1b378b3647a67f65ad3", size = 3318926, upload-time = "2026-05-24T20:07:42.369Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4f/501308c2babb62c11753ecb4ee88ba9eef019419a4d6cbf7cb13e2bad353/sqlalchemy-2.0.50-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2dab927761d9108550f0cf8e66ff21af56f907a0ce0a689793db615e2b55f62c", size = 3319199, upload-time = "2026-05-24T20:14:28.551Z" }, + { url = "https://files.pythonhosted.org/packages/ac/39/d88996c5e03ed6248c3a788d20f0b8d8b376b9f8a495e4bab9df7c72d2f8/sqlalchemy-2.0.50-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:545eae198d37bcf837a10ede3684e2af32458d6f35c597c35c2de7502dc38fc4", size = 3270301, upload-time = "2026-05-24T20:07:44.917Z" }, + { url = "https://files.pythonhosted.org/packages/42/1b/1ae0e65161b51cc43e5ca75430ef79d80e23b5042d645586c2c342c3b92e/sqlalchemy-2.0.50-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fec460e18cdbb4c7773531122ce9a27e96c6ca17af3933941d94da475ad2c86", size = 3293465, upload-time = "2026-05-24T20:14:30.501Z" }, + { url = "https://files.pythonhosted.org/packages/83/29/17c0003f2c0dfa6d1b97672475707e3ec5980db09defd7fa20beb6833bbd/sqlalchemy-2.0.50-cp311-cp311-win32.whl", hash = "sha256:e6e814658818fd165e749e3d8490ef16cc7f379a118c37ada8b0589ffbaaac22", size = 2120694, upload-time = "2026-05-24T20:08:09.237Z" }, + { url = "https://files.pythonhosted.org/packages/c9/18/280d00654cc19d1fccf236fa5070f6dd04b84dde6f1b2e637bde0ff340a7/sqlalchemy-2.0.50-cp311-cp311-win_amd64.whl", hash = "sha256:1c5f858fe79c9f5d8fda065c06186356acb7f8df3cd52dbd5ee3f200e4b144f5", size = 2145315, upload-time = "2026-05-24T20:08:10.952Z" }, + { url = "https://files.pythonhosted.org/packages/be/b0/a9d19b43f38f878b1278bca5b00b909f7540d41494396dd2561f9ad0956d/sqlalchemy-2.0.50-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae23d8b9d344d30d0a92f06d45825024a5790f1c1dd4cf452636a50d3e58cb", size = 2159807, upload-time = "2026-05-24T19:27:53.086Z" }, + { url = "https://files.pythonhosted.org/packages/f5/2c/191dd58a248fd2cfd4780fa82c375c505e4ad98c8b522fa69ec492130d77/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47b71b933e7b4ebad407c8fdfd70d2c4f08b78b3238bb30eebdd6eb32ca51b89", size = 3343358, upload-time = "2026-05-24T20:09:29.279Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2b/514fce8a7df81cf5bad7ff7865de7ac0c5776a38cc043475c4703eb7fe8b/sqlalchemy-2.0.50-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:110fdac56ace278949f00de805edacbd6141e382d992f9ba28238b3a0827a600", size = 3357994, upload-time = "2026-05-24T20:17:13.495Z" }, + { url = "https://files.pythonhosted.org/packages/35/a6/a0e283f5494f92b0d77e319ff77e437b1ffe4a051ba67c81d53234825475/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5e4ac70e9e757f6b3e87c0491ff034442ecd8dfd36d041a50564c322dafc0e", size = 3289399, upload-time = "2026-05-24T20:09:32.239Z" }, + { url = "https://files.pythonhosted.org/packages/b7/96/1b07325ba71752d6a028b77d07bed1483ad545f794e8b1dc89b3ba3b3c68/sqlalchemy-2.0.50-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:724f3dcbe53dd0151e3cb5e7ec4ba4c620bede579caacd16275dc35ce06e8615", size = 3321216, upload-time = "2026-05-24T20:17:15.581Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8e/bad6ed253e8a99edfc99af02f7173ec48a1d3ed1b9b35a1b8bc1700900cc/sqlalchemy-2.0.50-cp312-cp312-win32.whl", hash = "sha256:1208050441471d003b7c8cb4054fb084f185cf35ac3f0ea270803865bca9939a", size = 2119194, upload-time = "2026-05-24T19:50:04.943Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2d/314a6690dda4b9cfc571eab1a63cf6fe6e1470aa3759ccda6aa016ee0f5a/sqlalchemy-2.0.50-cp312-cp312-win_amd64.whl", hash = "sha256:9d1af51558029a156a70986b7df88f042b3d158d7c8d8fb5072912d4b32d89c7", size = 2146186, upload-time = "2026-05-24T19:50:06.74Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c4/c42356b527296e9862f67990efce31ef78b4cf69cd3f80873a528a060320/sqlalchemy-2.0.50-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:06a9210bdc5f4298cff0781087e2ff45683922252dacc452846373a58761f093", size = 2156697, upload-time = "2026-05-24T19:27:54.764Z" }, + { url = "https://files.pythonhosted.org/packages/60/a1/b1a70e3c4365ac7fe9e347f3710f19b562c866fb96d45e3c891588789a7b/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b53784972ade4f8174b9aa661f31a06f8a936d2cfdd602913ff3c6dd40ae873", size = 3284260, upload-time = "2026-05-24T20:09:34.195Z" }, + { url = "https://files.pythonhosted.org/packages/3f/4a/f3ac3caa19f263d57b0a47f8c91bbf56583dc2d3fc63acfbf644abb24fe0/sqlalchemy-2.0.50-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31648fa14460537e768a7303b078e4344d208e0d23e06867c1f376a227ed82db", size = 3302280, upload-time = "2026-05-24T20:17:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/66/55/ccada3e3d62254587819749a0bc69f41173eb48a6e385d10e66d32a9c88e/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:03f4323c980ad0e918cc9e5369b015f759f4e534db5bbaf4dc36832c10d05064", size = 3231580, upload-time = "2026-05-24T20:09:36.406Z" }, + { url = "https://files.pythonhosted.org/packages/05/f6/6809349130a2de0e109e7f00fd7d431da9565b9b2868b32ee684754f672b/sqlalchemy-2.0.50-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2b9dcc43afef8ac157cd92fce96985d6b8b0cfbd3df4d666f66b4d55a75d202f", size = 3269375, upload-time = "2026-05-24T20:17:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/48/84/278a811ef4e07be9c89dc5cdd7be833268509a66a68c4897cf585e67428f/sqlalchemy-2.0.50-cp313-cp313-win32.whl", hash = "sha256:60922d6599065ddca2c6f376b9aa2f41a6b85a271725e0909490bbc50b1998a5", size = 2117229, upload-time = "2026-05-24T19:50:08.215Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1c/067cc6187ed32d2ec222fe6d2643acc1659a6d0659f8a7cbc5ad3ae83280/sqlalchemy-2.0.50-cp313-cp313-win_amd64.whl", hash = "sha256:287086e67275a212c4582d166a6fb03a65ccc5551d80866270ce0dd9f34eccd3", size = 2143126, upload-time = "2026-05-24T19:50:09.691Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/10ac51b4be7cdecd7e93d069251c86dfbf70b7adbd7c67b48ccea6c49e1c/sqlalchemy-2.0.50-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c966932507a4d7d0a37314927dbfcd89720e3f37d2a1e3352e7ae7939fa8e8a0", size = 2158519, upload-time = "2026-05-24T19:27:56.472Z" }, + { url = "https://files.pythonhosted.org/packages/5a/76/e703d2f7681d7d66c4c891af3f07c7ccf4c76ad7f18351de035b5eda007a/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:faffef4bcc20a1892e65e155293d99d60855bbbc79250ab712819cfd56a8e6bb", size = 3282063, upload-time = "2026-05-24T20:09:38.57Z" }, + { url = "https://files.pythonhosted.org/packages/31/26/ef168b184a25701f9995e8fb7e503fafd7a99c1c77cda1bc1a26ea2ed486/sqlalchemy-2.0.50-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c206aec519a2e7bd08abbfb33436e325fd22c632d9c21a9047e376ce241646e", size = 3287069, upload-time = "2026-05-24T20:17:21.942Z" }, + { url = "https://files.pythonhosted.org/packages/c2/15/765acc2bc693bccc43ca4a95d5b69750da8aaf6db1b5c616536e087f8920/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bef4ac756363227ef6402a75fee025a4bc690f92328e825868939b3b3a446a6d", size = 3230453, upload-time = "2026-05-24T20:09:40.398Z" }, + { url = "https://files.pythonhosted.org/packages/63/61/08e03c3adbf5db0087a0b6816746fec8f3032fb2f7fc899a9bb9b2a48ce4/sqlalchemy-2.0.50-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:96fbee6b19c19cd1556c8bf9419447cf2ec149ffcab7ab64348c23e54ef8547f", size = 3252413, upload-time = "2026-05-24T20:17:24.067Z" }, + { url = "https://files.pythonhosted.org/packages/03/0c/370a1f2db38436c615e10134c8a37de3688e74084792380695f3f5083860/sqlalchemy-2.0.50-cp314-cp314-win32.whl", hash = "sha256:8f00e3eb43ba30eb1b238ee03a8a62309486d1321eda3328bb611e0340033ad8", size = 2120063, upload-time = "2026-05-24T19:50:11.08Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a0/fe92bb9817863bc13ba093bda931979a26cc2ca69f8e8f26d07add3d7c6f/sqlalchemy-2.0.50-cp314-cp314-win_amd64.whl", hash = "sha256:15708c613cd5005b7dffe1f66ee6a63ee8f5e46799f71c70ebad74178c676a39", size = 2145830, upload-time = "2026-05-24T19:50:12.452Z" }, + { url = "https://files.pythonhosted.org/packages/cc/ff/e5640a98a0b2f491eb8fde10fb6c773621a2e44340de231fafcc9370f4a9/sqlalchemy-2.0.50-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3699dac4be410e97049a1658e9480da9cde956594aa0f3aebc60b88f21c5ba70", size = 2178435, upload-time = "2026-05-24T19:42:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/337116e186f1236375b5fb70c21cfac98e8e8ab0d3a47be838dc47a59e08/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f96233858e3df43932ac11589e22520da6e8aeb624b03fedfeebb0e8ea213086", size = 3566059, upload-time = "2026-05-24T20:01:20.848Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/bb0e190e161c3c2c24314a65add57218be14a4a9486886b7f5047c1ff7c8/sqlalchemy-2.0.50-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c4e70c46fad30c3bcc6a4708bc0130a3173e11a5b25f0ea4a9d8911b450f1f52", size = 3535366, upload-time = "2026-05-24T20:03:56.768Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/a7f759f97e4fd499c5d4e4488c760d5a7fbecf3028b465a04274fcd52384/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1918a3cf564d16d95bca7301005f41ab2ad50b07cd3b9da50d3ed986db148d6a", size = 3474879, upload-time = "2026-05-24T20:01:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/2907ea38eb60687d297bf9c39e5ee58053c87b57fe8a9cae97090cecbf10/sqlalchemy-2.0.50-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b00098cdbdbd38c7be3d568b0c9c3122b8c0ec62b911b57cd5e6e0254d60a76d", size = 3486117, upload-time = "2026-05-24T20:03:59.052Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/5aa06f167559f8c0bdae487e297d23ba548150ab016a3418265d617a4985/sqlalchemy-2.0.50-cp314-cp314t-win32.whl", hash = "sha256:1fbd55a969d7ac44a98e3dec75016074f809fa08f871585ace58dde110d1bf3e", size = 2150823, upload-time = "2026-05-24T20:08:58.644Z" }, + { url = "https://files.pythonhosted.org/packages/65/9b/112fb8f977582d7489d036e409e3723948bcf5320b3ac465f3c481bbe8f9/sqlalchemy-2.0.50-cp314-cp314t-win_amd64.whl", hash = "sha256:c5c3cdb753a9004183e1ccb634b41611654c989e61bc68617ce878e46d6f1e51", size = 2185794, upload-time = "2026-05-24T20:09:00.319Z" }, + { url = "https://files.pythonhosted.org/packages/d0/10/f7220e9b784d295d241c86ed99aeb537f92afcd469a64861f2717e9bb077/sqlalchemy-2.0.50-py3-none-any.whl", hash = "sha256:92064363517a3ff8212b5a93b8c62876579d8dfd1ca5b561335f30152d884fa9", size = 1943861, upload-time = "2026-05-24T19:59:01.119Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + +[[package]] +name = "torch" +version = "2.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "nvidia-cublas", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" }, + { name = "setuptools" }, + { name = "sympy" }, + { name = "triton", marker = "sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/b7/53fe0436586716ab7aecff41e26b9302d57c85ded481fd83a2cd741e6b4e/torch-2.12.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1834bd984f8a2f4f16bdfbeecca9146184b220aa46276bf5756735b5dae12812", size = 87981887, upload-time = "2026-05-13T14:55:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/34/60/d930eac44c30de06ed16f6d1ba4e785e1632532b50d8f0bf9bf699a4d0c7/torch-2.12.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:d4d029801cb7b6df858804a2a21b00cc2aa0bf0ee5d2ab18d343c9e9e5681f35", size = 426355000, upload-time = "2026-05-13T14:54:31.944Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0c/c76b6a087820bab55705b94dfc074e520de9ae91f5ef90da2ecbf2a3ef12/torch-2.12.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:d47e7dee68ac4cd7a068b26bcd6b989935427709fae1c8f7bd0019978f829e15", size = 532144998, upload-time = "2026-05-13T14:56:05.523Z" }, + { url = "https://files.pythonhosted.org/packages/4a/64/8a0d036e166a6aa85ee09bef072f3655d1ba5d5486a68d1b03b6813c01b3/torch-2.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:cf9839790285dd472e7a16aafcb4a4e6bf58ec1b494045044b0eefb0eb4bd1f2", size = 122949877, upload-time = "2026-05-13T14:55:46.841Z" }, + { url = "https://files.pythonhosted.org/packages/18/62/131124fb95df03811b8260d1d43dcc5ee85ea1a344b964613d7efe77fb08/torch-2.12.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:10802fd383bbfed646212e765a72c37d2185205d4f26eb197a254e8ac7ddcb25", size = 87990344, upload-time = "2026-05-13T14:55:42.154Z" }, + { url = "https://files.pythonhosted.org/packages/12/9c/dda0dbd547dc549839824135f223792fd0e725f28ed0715dda366b7acaa2/torch-2.12.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c12592630aef72feaf18bd3f197ef587bbfa21131b31c38b23ab2e55fce92e36", size = 426362932, upload-time = "2026-05-13T14:54:15.295Z" }, + { url = "https://files.pythonhosted.org/packages/e2/d2/a7dd5a3f9bdaa7842124e8e2359202b317c48d47d2fc5816fafdf2049adb/torch-2.12.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:415c1b8d0412f67551c8e89a2daca0fb3e56694af0281ba155eaa9da481f58b4", size = 532170085, upload-time = "2026-05-13T14:55:20.788Z" }, + { url = "https://files.pythonhosted.org/packages/12/1b/a61ce2004f9ab0ea8964a6e6168133a127795667639e2ff4f8f2bdb16a65/torch-2.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:dd37188ea325042cb1f6cafa56822b11ada2520c04791a52629b0af25bdfbfd9", size = 122953128, upload-time = "2026-05-13T14:54:52.744Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/285d643f254731294c9b595a007eac39db4600a98682d7bca688f42ca164/torch-2.12.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b41339df93d491435e790ff8bcbae1c0ce777175889bfd1281d119862793e6a2", size = 88010197, upload-time = "2026-05-13T14:55:35.414Z" }, + { url = "https://files.pythonhosted.org/packages/79/81/76debf1db1343bd929bbb5d74c89fb437c2ed88eb144712557e7bd3eea45/torch-2.12.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8fbef9f108a863e7722a73740998967e3b074742a834fc5be3a535a2befa7057", size = 426376751, upload-time = "2026-05-13T14:55:03.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/f0/80026028b603c4650ff270fc3785bdef4bd6738765a9cc5a0f5a637d65a2/torch-2.12.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4b4f64c2c2b11f7510d93dd6412b87025ff6eddd6bb61c3b5a3d892ea20c4756", size = 532261691, upload-time = "2026-05-13T14:52:54.453Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c2/64b06cbb7830fb3cd9be13e1158b31a3f36b68e6a209105ee3c9d9480be0/torch-2.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:8b958caff4a14d3a3b0b2dfc6a378f64dda9728a9dad28c08a0db9ce4dafb549", size = 122988114, upload-time = "2026-05-13T14:54:42.153Z" }, + { url = "https://files.pythonhosted.org/packages/86/ca/01896c80ba921676aa45886b2c5b8d774912de2a1f719de48169c6f755cd/torch-2.12.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:90dd587a5f61bfe1307148b581e2084fc5bc4a06e2b90a20e9a36b81087ff16b", size = 88009511, upload-time = "2026-05-13T14:54:47.411Z" }, + { url = "https://files.pythonhosted.org/packages/a5/04/52bdaf4787eab6ac7d7f5851dff934e4def0bc8ead9c8fd2b69b3e529699/torch-2.12.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:864392c73b7654f4d2b3ae712f607937d0dbb1101c4555fbb41848106b297f39", size = 426383231, upload-time = "2026-05-13T14:53:32.129Z" }, + { url = "https://files.pythonhosted.org/packages/49/8a/94bdecd13f5aaa90d45920b89789d9fe7c6f4af8c3cdd7ce01fcb59908fc/torch-2.12.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5d6b560dfa7d56291c07d615c3bb73e8d9943d9b6d87f76cd0d9d570c4797fa6", size = 532269288, upload-time = "2026-05-13T14:53:49.423Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2f/bdbaaa267de519ef1b73054bf590d8c93c37a266c9a4e24a01bd38b6918f/torch-2.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:3fee918902090ade827643e758e98363278815de583c75d111fdd665ebffde9f", size = 122987706, upload-time = "2026-05-13T14:54:00.335Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ad/e95e822f3538171e22640a7fbe839a1fdb666600bf6487025de2ff03b11a/torch-2.12.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:10ee1448a9f304d3b987eb4656f664ba6e4d7b410ca7a5a7c642199777a2cf88", size = 88319556, upload-time = "2026-05-13T14:54:05.574Z" }, + { url = "https://files.pythonhosted.org/packages/b7/07/055d06d985b445d67422d25b033c11cf55bbb81785d4c4e68e28bca5820e/torch-2.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:af68dbf403439cae9ceaeaaf92f8352b460787dcd27b92aa05c40dd4a19c0f1e", size = 426397656, upload-time = "2026-05-13T14:52:38.84Z" }, + { url = "https://files.pythonhosted.org/packages/43/94/b0b4fdc3014122e0a7302fb90086d352aa48f2576f0b252561ebb38c01a8/torch-2.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:a6a2eebb237d3b1d9ad3b378e86d9b9e0782afdea8b1e0eba6a13646b9b49c07", size = 532183124, upload-time = "2026-05-13T14:53:16.178Z" }, + { url = "https://files.pythonhosted.org/packages/d8/c8/052405e6ad05d3237bfe5a4df78f917773956f8e17813a2d44c059068b74/torch-2.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2140e373e9a51a3e22ef62e8d14366d0b470d18f0adf19fdc757368077133a34", size = 123232462, upload-time = "2026-05-13T14:52:27.26Z" }, + { url = "https://files.pythonhosted.org/packages/67/dc/ac069f8d6e8be701535921141055293b0d4819d3d7f224a4612cf157c7f9/torch-2.12.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7dfae4a519197dfa050e98d8e36378a0fb5899625a875c2b54445005a2e404e", size = 88027282, upload-time = "2026-05-13T14:53:05.258Z" }, + { url = "https://files.pythonhosted.org/packages/33/c3/1c1eb00e34555b536dddf792676026a988d710ed36981aa00499b36b0620/torch-2.12.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:891c769072637c74e9a5a77a3bc782894696d8ffec83b938df8536dee7f0ba78", size = 426386961, upload-time = "2026-05-13T14:51:28.406Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d4/7e730dba0c7032a4154dc9056b76cf9625515e030e269cfbf8098fcfee7d/torch-2.12.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:e2ad3eb85d39c3cab62dfa93ed5a73516e6a53c6713cb97d004004fe089f0f1f", size = 532272265, upload-time = "2026-05-13T14:51:59.308Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b4/92c80d1bbfee1c0036c06d1d2155a3065bd2423134c83bf8a47e65cd6b9b/torch-2.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:c66696857e987efb8bc1777a37357ec4f60ab5e8af6250b83d6034437fa2d8f3", size = 122987138, upload-time = "2026-05-13T14:51:45.942Z" }, + { url = "https://files.pythonhosted.org/packages/7b/78/2e12b37ce50a19a037d7bc62d652a5a8f27385a7b05859d6bc9204f20cfe/torch-2.12.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:b4556715c8572758625d62b6e0ae3b1f76c440221913a6fb5e100f321fb4fb02", size = 88320100, upload-time = "2026-05-13T14:51:39.955Z" }, + { url = "https://files.pythonhosted.org/packages/56/5e/83c450ec7b0bb40a7b74611c1b5440f9260e33c54c90d556fd4a1f0fd955/torch-2.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:a43ac605a5e13116c72b64c359644cce0229f213dde48d2ae0ae5eb5becf7feb", size = 426391871, upload-time = "2026-05-13T14:52:14.989Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e9/1a0b575d98d0afedd8f157d23fa3d2759421483660448e60d0a4b10b6daa/torch-2.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6a7512adfdd7f6732e40de1c620831e3c75b39b98cef60b11d0c5f0a76473ec5", size = 532192241, upload-time = "2026-05-13T14:51:07.795Z" }, + { url = "https://files.pythonhosted.org/packages/88/21/afadd25ecd81b3cea1e11c73cf1ab41a983a50271548c3ec7ec3b9efc3e9/torch-2.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:5f96b63f8287f66a005dd1b5a6abba2920f11156c5e5c4d815f3e2050fd1aa16", size = 123231092, upload-time = "2026-05-13T14:51:18.854Z" }, +] + +[[package]] +name = "torch-optimizer" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytorch-ranger" }, + { name = "torch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/13/c4c0a206131e978d8ceaa095ad1e3153d7daf48efad207b6057efe3491a2/torch-optimizer-0.3.0.tar.gz", hash = "sha256:b2180629df9d6cd7a2aeabe71fa4a872bba938e8e275965092568cd9931b924c", size = 54409, upload-time = "2021-10-31T03:00:22.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/54/bbb1b4c15afc2dac525c8359c340ade685542113394fd4c6564ee3c71da3/torch_optimizer-0.3.0-py3-none-any.whl", hash = "sha256:7de8e57315e43561cdd0370a1b67303cc8ef1b053f9b5573de629a62390f2af9", size = 61897, upload-time = "2021-10-31T03:00:19.812Z" }, +] + +[[package]] +name = "tqdm" +version = "4.68.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/05/0d5260f1f1ca784f4a4a0def9cbe6affe587f5b4025328d446c3d67765f4/tqdm-4.68.2.tar.gz", hash = "sha256:89c230e8dbc67c7615c142487111222f878c77427ea09549960f62389e258add", size = 171923, upload-time = "2026-06-09T13:26:42.539Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl", hash = "sha256:d4240441fb5353290b87d6a85968c9decc131a99b8c7faa28269d829de669ede", size = 78578, upload-time = "2026-06-09T13:26:40.731Z" }, +] + +[[package]] +name = "triton" +version = "3.7.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/97/dcd1f2a0f8336691bff74abc59b2ed9c69a0c0f8f65cd77109c49e05f068/triton-3.7.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223ac302091491436c248a34ee1e6c47a1026486579103c906ffd805be50cb89", size = 188367104, upload-time = "2026-05-07T19:04:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/c2ac4fd2d8809b7579d4a820a0f9e5de62a9bc8a757ed4b3abf4f7ee964a/triton-3.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c631b65668d4951213b948a413c0564184305b77bb45cc9d686d3e1ecc4701a3", size = 201313191, upload-time = "2026-05-07T18:45:58.444Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c1/5d842314bb6c78442cc60437928781701c6050b8d479bc2a1aed691d37ca/triton-3.7.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a9e71fc392675fac364e0ecf4ef3f76f85b7f5433a16f4c3c5fe5f05a52c85fe", size = 188480277, upload-time = "2026-05-07T19:05:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/13/31/8315ea5f8dd18e60970b3022e3a8b93fd37e0b784fbbef86e10c8e6e5ca1/triton-3.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22bacffce443f54593dd20f05294d5a40622e0ea9ab632816f87154504356221", size = 201415942, upload-time = "2026-05-07T18:46:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/f7/13/ec05adfcd87311d532ba61e3af143e8be59fcd26675884c4682841406a20/triton-3.7.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4bf49b00a7a377a68a6da603a876e797614e6455a80e9021669c476a953ad9a", size = 188505104, upload-time = "2026-05-07T19:05:09.843Z" }, + { url = "https://files.pythonhosted.org/packages/62/7b/468a576e35beef1426e0828e28e9ba9e65f5474d496f16ee126c15646324/triton-3.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f111161d49bf903c0eaedde3962353a3d841c08a836839b7cc1025b8426efcf", size = 201457567, upload-time = "2026-05-07T18:46:13.505Z" }, + { url = "https://files.pythonhosted.org/packages/01/e1/a59a583de59b8f62c495d67c80ee3ea97d09e91ac80c4c6e76456ed8d8ac/triton-3.7.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abdf6beaa89b1bcfb9a43cd990536ce66091a997841a4814b260b7bee4c88c3c", size = 188503209, upload-time = "2026-05-07T19:05:17.935Z" }, + { url = "https://files.pythonhosted.org/packages/30/b1/b7507bb9815d403927c8dd51d4158ed2e11751a92dbc118a044f247b6848/triton-3.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a35d7afe3f3f058e7ec49fcce09794049e0ffc5c59019ac25ec3413741b8c4e7", size = 201453566, upload-time = "2026-05-07T18:46:20.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8f/0bea7a6a0c989315c9135a1d7fb37e41905cfb3a17cbc1f10044ebd4cc3a/triton-3.7.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc1d61c172d257db80ddf42595131fb196ad2e9bdd751e90fe2ef13531734e8b", size = 188612899, upload-time = "2026-05-07T19:05:24.955Z" }, + { url = "https://files.pythonhosted.org/packages/e1/02/d96f57828d0912aec733b9bc7e0e7dbfd2c6f079a8fa433ac25cb93d1a30/triton-3.7.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70fb9bbdc9f400afc54bbf6eb2670af28829a6ae3996863317964783141daf56", size = 201553816, upload-time = "2026-05-07T18:46:27.49Z" }, + { url = "https://files.pythonhosted.org/packages/40/fb/82a802dac4689f2a2fb2e69302e6a138eecc3e175bbe976ba3cfc717683a/triton-3.7.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a44a8476d0d3571eac4e4d1048e1ff75aad81a09ff4602ccfc56c6dea1672e", size = 188507879, upload-time = "2026-05-07T19:05:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/8f/af/9904ec6d3c93d9b24e5ec360445bbdf758b7f00bfbeedb89cb0eb64eb8bb/triton-3.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b9b85e72968a9d8bba5ddb24e9b64aaabaf48affb042f2755cb7cfa92b7531ce", size = 201460637, upload-time = "2026-05-07T18:46:34.749Z" }, + { url = "https://files.pythonhosted.org/packages/a1/f9/4835a8ea746b88727d8899f4e3ccce4f9cacb38abfc3bb0a638266c53111/triton-3.7.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18a160de426fd99f92b0baf509045360afbd3bfaa0b4a5171dde800ec9f09684", size = 188608706, upload-time = "2026-05-07T19:05:39.218Z" }, + { url = "https://files.pythonhosted.org/packages/c1/68/fa86e5a39608000f645535b2c124920126327ab731f8c4fafd5b07ff8d4b/triton-3.7.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce061073102714b725f3660ec6939d94a1da7984b3aa99c921417cae273672f5", size = 201546766, upload-time = "2026-05-07T18:46:42.088Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2026.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, +] + +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" }, +] + +[[package]] +name = "xlrd" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload-time = "2025-06-14T08:46:39.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload-time = "2025-06-14T08:46:37.766Z" }, +] From bd6890844c50558866325d40c5e2cfdd475d19d6 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 15:20:00 +0200 Subject: [PATCH 51/81] Separate storage and modelling window size --- README.md | 2 +- documentation/configs/infer.md | 2 +- documentation/configs/preprocess.md | 8 +- documentation/configs/train.md | 2 +- documentation/consolidated-docs.md | 14 +- .../config/hyperparameter_search_config.py | 45 ++-- src/sequifier/config/infer_config.py | 55 +++-- src/sequifier/config/preprocess_config.py | 12 +- src/sequifier/config/train_config.py | 55 +++-- src/sequifier/helpers.py | 203 +++++++++--------- src/sequifier/hyperparameter_search.py | 10 +- src/sequifier/infer.py | 92 +++----- .../io/sequifier_dataset_from_file.py | 15 +- .../sequifier_dataset_from_folder_parquet.py | 43 ++-- ...uifier_dataset_from_folder_parquet_lazy.py | 36 +--- .../io/sequifier_dataset_from_folder_pt.py | 32 +-- .../sequifier_dataset_from_folder_pt_lazy.py | 32 +-- src/sequifier/io/yaml.py | 5 +- src/sequifier/make.py | 7 +- src/sequifier/preprocess.py | 97 ++++----- src/sequifier/train.py | 11 +- tests/configs/hyperparameter-search-bert.yaml | 1 - ...infer-test-categorical-autoregression.yaml | 1 - ...infer-test-categorical-bert-embedding.yaml | 1 - .../configs/infer-test-categorical-bert.yaml | 1 - .../infer-test-categorical-embedding.yaml | 1 - .../infer-test-categorical-inf-size-1.yaml | 1 - ...test-categorical-inf-size-3-embedding.yaml | 1 - .../infer-test-categorical-inf-size-3.yaml | 1 - .../infer-test-categorical-multitarget.yaml | 1 - tests/configs/infer-test-categorical.yaml | 1 - .../infer-test-distributed-parquet.yaml | 1 - tests/configs/infer-test-distributed.yaml | 1 - tests/configs/infer-test-lazy.yaml | 1 - .../infer-test-real-autoregression.yaml | 1 - tests/configs/infer-test-real.yaml | 1 - .../preprocess-test-categorical-exact-pt.yaml | 3 +- .../preprocess-test-categorical-exact.yaml | 3 +- ...eprocess-test-categorical-interrupted.yaml | 3 +- ...eprocess-test-categorical-lookahead-0.yaml | 4 +- ...eprocess-test-categorical-multitarget.yaml | 3 +- ...ategorical-precomputed-stats-negative.yaml | 3 +- ...ss-test-categorical-precomputed-stats.yaml | 3 +- .../configs/preprocess-test-categorical.yaml | 3 +- tests/configs/preprocess-test-multi-file.yaml | 3 +- tests/configs/preprocess-test-real.yaml | 3 +- .../configs/train-test-categorical-bert.yaml | 2 - .../train-test-categorical-inf-size-1.yaml | 2 - .../train-test-categorical-inf-size-3.yaml | 2 - ...in-test-categorical-multitarget-eager.yaml | 2 - .../train-test-categorical-multitarget.yaml | 2 - tests/configs/train-test-categorical.yaml | 2 - .../train-test-distributed-lazy-parquet.yaml | 2 - tests/configs/train-test-distributed.yaml | 2 - tests/configs/train-test-lazy.yaml | 2 - tests/configs/train-test-real-bert.yaml | 2 - tests/configs/train-test-real.yaml | 2 - tests/configs/train-test-resume-epoch.yaml | 2 - .../configs/train-test-resume-mid-epoch.yaml | 2 - .../integration/test_hyperparameter_search.py | 9 +- tests/integration/test_make.py | 4 +- tests/integration/test_onnx_export.py | 24 ++- tests/integration/test_preprocessing.py | 13 +- .../preprocess-manifest.json | 7 +- ...uifier_dataset_from_folder_parquet_lazy.py | 22 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 22 +- tests/unit/test_helpers.py | 57 +++-- tests/unit/test_infer.py | 38 ++-- tests/unit/test_preprocess.py | 41 ++-- tests/unit/test_train.py | 57 +++-- 70 files changed, 564 insertions(+), 580 deletions(-) diff --git a/README.md b/README.md index 8aa1c7f9..183d05bd 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `context_length + max_lookahead` (`max_lookahead` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_width` and `future_capacity`; training and inference choose the model-facing `context_length` from that stored capacity: |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| diff --git a/documentation/configs/infer.md b/documentation/configs/infer.md index 6a80934e..b4c63f53 100644 --- a/documentation/configs/infer.md +++ b/documentation/configs/infer.md @@ -40,7 +40,7 @@ These fields tell the inference engine which columns to extract from the new dat | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `model_type` | `str` | **Yes** | - | `generative` (predict next value) or `embedding` (extract vector representation). | -| `context_length` | `int` | **Yes** | - | The context window size. Must match training. | +| `context_length` | `int` | **Yes** | - | The model context window size. It must match the trained model view and fit inside the stored metadata capacity. | | `prediction_length` | `int` | No | `1` | Number of steps to predict *simultaneously*. **Must be 1** if `autoregression: true`. | | `inference_batch_size`| `int` | **Yes** | - | Number of sequences to process at once. | | `autoregression` | `bool` | No | `false` | If `true`, feeds predictions back into the model to predict further into the future. | diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index 8185baec..a9ee943e 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -45,10 +45,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `context_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | -| `max_lookahead` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `context_length + max_lookahead`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | +| `stored_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | +| `future_capacity` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[context_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[stored_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -76,7 +76,7 @@ This controls data augmentation and redundancy. * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `context_length: 48`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_width: 49`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` diff --git a/documentation/configs/train.md b/documentation/configs/train.md index 48df255a..4a66e7ca 100644 --- a/documentation/configs/train.md +++ b/documentation/configs/train.md @@ -30,7 +30,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `context_length` | `int` | **Yes** | - | Must match the `context_length` used in preprocessing. | +| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_width` with the stored `future_capacity`. | ### 3\. Model Architecture (`model_spec`) diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 0baf670c..d8a0b1a6 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Each stored window has width `context_length + max_lookahead` (`max_lookahead` defaults to `1`; set it to `0` for BERT-style same-width inputs and targets): +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_width` and `future_capacity`; training and inference choose the model-facing `context_length` from that stored capacity: |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| @@ -253,10 +253,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `context_length` | `int` | **Yes** | - | The length of the context window (history) fed into the model. | -| `max_lookahead` | `int` | No | `1` | Number of future items retained after the input context. The stored window width is `context_length + max_lookahead`. Use `0` for BERT-style preprocessing where inputs and targets have the same width; keep `1` for legacy causal next-item training. | +| `stored_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | +| `future_capacity` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[context_length]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[stored_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -284,7 +284,7 @@ This controls data augmentation and redundancy. * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `context_length: 48`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_width: 49`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` @@ -379,7 +379,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `context_length` | `int` | **Yes** | - | Must match the `context_length` used in preprocessing. | +| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_width` with the stored `future_capacity`. | ### 3\. Model Architecture (`model_spec`) @@ -604,7 +604,7 @@ These fields tell the inference engine which columns to extract from the new dat | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `model_type` | `str` | **Yes** | - | `generative` (predict next value) or `embedding` (extract vector representation). | -| `context_length` | `int` | **Yes** | - | The context window size. Must match training. | +| `context_length` | `int` | **Yes** | - | The model context window size. It must match the trained model view and fit inside the stored metadata capacity. | | `prediction_length` | `int` | No | `1` | Number of steps to predict *simultaneously*. **Must be 1** if `autoregression: true`. | | `inference_batch_size`| `int` | **Yes** | - | Number of sequences to process at once. | | `autoregression` | `bool` | No | `false` | If `true`, feeds predictions back into the model to predict further into the future. | diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index c2b6c5ff..f097e507 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -18,9 +18,11 @@ TrainModel, ) from sequifier.helpers import ( - SequenceLayout, + ModelWindowView, + StoredWindowLayout, normalize_path, - sequence_layout_from_metadata, + resolve_window_view, + stored_window_layout_from_metadata, try_catch_excess_keys, ) from sequifier.special_tokens import validate_special_token_ids @@ -207,18 +209,14 @@ def load_hyperparameter_search_config( "n_classes", metadata_config["n_classes"] ) - sequence_layout = sequence_layout_from_metadata(metadata_config) - if sequence_layout.sequence_layout_version != 2: + storage_layout = stored_window_layout_from_metadata(metadata_config) + if storage_layout.version != 2: raise ValueError( - "Hyperparameter search requires metadata sequence_layout_version=2, " - f"got {sequence_layout.sequence_layout_version}." + "Hyperparameter search requires metadata stored_window_layout_version=2, " + f"got {storage_layout.version}." ) - config_values["max_lookahead"] = sequence_layout.max_lookahead - config_values["sample_length"] = sequence_layout.sample_length - config_values["sequence_layout_version"] = ( - sequence_layout.sequence_layout_version - ) + config_values["storage_layout"] = storage_layout config_values["training_data_path"] = normalize_path( config_values.get("training_data_path", metadata_config["split_paths"][0]), @@ -718,9 +716,7 @@ class HyperparameterSearchConfig(BaseModel): id_maps: dict[str, dict[str | int, int]] context_length: list[int] - max_lookahead: int = Field(default=1, ge=0) - sample_length: int - sequence_layout_version: int + storage_layout: StoredWindowLayout n_classes: dict[str, int] inference_batch_size: int @@ -743,10 +739,13 @@ class HyperparameterSearchConfig(BaseModel): @model_validator(mode="after") def validate_sequence_layout(self): for cl in self.context_length: - if cl + self.max_lookahead > self.sample_length: + if ( + cl + self.storage_layout.future_capacity + > self.storage_layout.stored_width + ): raise ValueError( - f"Sample length mismatch: context_length ({cl}) + max_lookahead " - f"({self.max_lookahead}) > stored sample_length ({self.sample_length}). " + f"Window capacity mismatch: context_length ({cl}) + future_capacity " + f"({self.storage_layout.future_capacity}) > stored_width ({self.storage_layout.stored_width}). " "Model inputs cannot exceed the preprocessed sequence length." ) return self @@ -856,12 +855,13 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: context_length = trial.suggest_categorical( "context_length", self.context_length ) - layout = SequenceLayout( + training_spec = self.training_hyperparameter_sampling.sample_trial(trial) + window_view = ModelWindowView( context_length=context_length, - max_lookahead=self.max_lookahead, - sequence_layout_version=self.sequence_layout_version, + objective=training_spec.training_objective, + target_shift=0 if training_spec.training_objective == "bert" else 1, ) - training_spec = self.training_hyperparameter_sampling.sample_trial(trial) + resolve_window_view(self.storage_layout, window_view) logger.info(f"{input_columns_index = } - {context_length = }") @@ -879,7 +879,8 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: target_columns=self.target_columns, target_column_types=self.target_column_types, id_maps=self.id_maps, - layout=layout, + storage_layout=self.storage_layout, + window_view=window_view, n_classes=self.n_classes, inference_batch_size=self.inference_batch_size, seed=101, diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 92a63b9e..77deaee1 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -15,9 +15,11 @@ ) from sequifier.helpers import ( - SequenceLayout, + ModelWindowView, + StoredWindowLayout, normalize_path, - sequence_layout_from_metadata, + resolve_window_view, + stored_window_layout_from_metadata, try_catch_excess_keys, ) from sequifier.special_tokens import validate_special_token_ids @@ -56,18 +58,31 @@ def load_inferer_config( metadata_config["special_token_ids"], source=f"metadata config '{metadata_config_path}'", ) - sequence_layout = sequence_layout_from_metadata(metadata_config) - if sequence_layout.sequence_layout_version != 2: + storage_layout = stored_window_layout_from_metadata(metadata_config) + if storage_layout.version != 2: raise ValueError( - "Inference requires metadata sequence_layout_version=2, " - f"got {sequence_layout.sequence_layout_version}." + "Inference requires metadata stored_window_layout_version=2, " + f"got {storage_layout.version}." ) - config_values["layout"] = sequence_layout + training_objective = config_values["training_objective"] + target_shift = ( + 0 + if training_objective == "bert" + else int(config_values.pop("target_shift", 1)) + ) + window_view = ModelWindowView( + context_length=int(config_values.pop("context_length")), + objective=training_objective, + target_shift=target_shift, + ) + resolve_window_view(storage_layout, window_view) + config_values["storage_layout"] = storage_layout + config_values["window_view"] = window_view for key in ( - "context_length", - "max_lookahead", - "sample_length", - "sequence_layout_version", + "target_shift", + "stored_width", + "future_capacity", + "stored_window_layout_version", ): config_values.pop(key, None) @@ -161,7 +176,8 @@ class InfererModel(BaseModel): map_to_id: bool = Field(default=True) seed: int device: str - layout: SequenceLayout + storage_layout: StoredWindowLayout + window_view: ModelWindowView prediction_length: Optional[int] = None inference_batch_size: int @@ -172,18 +188,25 @@ class InfererModel(BaseModel): @model_validator(mode="after") def normalize_prediction_length(self): + if self.window_view.objective != self.training_objective: + raise ValueError( + "window_view objective must match training_objective " + f"({self.window_view.objective} != {self.training_objective})." + ) if self.prediction_length is None: self.prediction_length = ( - self.layout.context_length if self.training_objective == "bert" else 1 + self.window_view.context_length + if self.training_objective == "bert" + else 1 ) if self.training_objective == "bert": - if self.prediction_length != self.layout.context_length: + if self.prediction_length != self.window_view.context_length: raise ValueError( "For BERT inference, prediction_length must be equal to context_length " - f"(got prediction_length={self.prediction_length}, context_length={self.layout.context_length})." + f"(got prediction_length={self.prediction_length}, context_length={self.window_view.context_length})." ) else: - self.layout.get_target_offset(self.training_objective) + resolve_window_view(self.storage_layout, self.window_view) return self @field_validator("training_objective") diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index ed1aa518..da53eb8b 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -54,8 +54,8 @@ class PreprocessorModel(BaseModel): selected_columns: A list of columns to be included in the preprocessing. If None, all columns are used. split_ratios: A list of floats that define the relative sizes of data splits (e.g., for train, validation, test). The sum of proportions must be 1.0. - context_length: The sequence length for the model inputs. - max_lookahead: The maximum retained target offset after the model input window. + stored_width: The physical serialized window width. + future_capacity: The number of future items retained after the input window. stride_by_split: A list of step sizes for creating subsequences within each data split. max_rows: The maximum number of input rows to process. If None, all rows are processed. seed: A random seed for reproducibility. @@ -78,8 +78,8 @@ class PreprocessorModel(BaseModel): selected_columns: Optional[list[str]] = None split_ratios: list[float] - context_length: int - max_lookahead: int = Field(default=1, ge=0) + stored_width: int = Field(gt=0) + future_capacity: int = Field(default=1, ge=0) stride_by_split: Optional[list[int]] = None max_rows: Optional[int] = None seed: int @@ -194,10 +194,12 @@ def validate_mask_column_requires_metadata(self) -> "PreprocessorModel": raise ValueError("metadata_config_path must be set when mask_column is set") if self.mask_column in ("sequenceId", "itemPosition"): raise ValueError("mask_column cannot be sequenceId or itemPosition") + if self.future_capacity >= self.stored_width: + raise ValueError("future_capacity must be smaller than stored_width") return self def __init__(self, **kwargs): - default_stride_for_split = [kwargs["context_length"]] * len( + default_stride_for_split = [kwargs["stored_width"]] * len( kwargs["split_ratios"] ) kwargs["stride_by_split"] = kwargs.get( diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index eabfaa2f..34409a69 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -23,9 +23,11 @@ import sequifier from sequifier.config.probabilities import ProbabilityDistribution from sequifier.helpers import ( - SequenceLayout, + ModelWindowView, + StoredWindowLayout, normalize_path, - sequence_layout_from_metadata, + resolve_window_view, + stored_window_layout_from_metadata, try_catch_excess_keys, ) from sequifier.special_tokens import SPECIAL_TOKEN_IDS, validate_special_token_ids @@ -63,21 +65,36 @@ def load_train_config( ) as f: metadata_config = json.loads(f.read()) - sequence_layout = sequence_layout_from_metadata(metadata_config) - if sequence_layout.sequence_layout_version != 2: + storage_layout = stored_window_layout_from_metadata(metadata_config) + if storage_layout.version != 2: raise ValueError( - "Training requires metadata sequence_layout_version=2, " - f"got {sequence_layout.sequence_layout_version}." + "Training requires metadata stored_window_layout_version=2, " + f"got {storage_layout.version}." ) - config_values["layout"] = sequence_layout + training_objective = config_values["training_spec"]["training_objective"] + target_shift = ( + 0 + if training_objective == "bert" + else int(config_values.pop("target_shift", 1)) + ) + window_view = ModelWindowView( + context_length=int(config_values.pop("context_length")), + objective=training_objective, + target_shift=target_shift, + ) + resolve_window_view(storage_layout, window_view) + config_values["storage_layout"] = storage_layout + config_values["window_view"] = window_view + for key in ("stored_width", "future_capacity", "stored_window_layout_version"): + config_values.pop(key, None) for key in ( - "context_length", - "max_lookahead", - "sample_length", - "sequence_layout_version", + "target_shift", + "stored_width", + "future_capacity", + "stored_window_layout_version", ): config_values.pop(key, None) - for key in ("max_lookahead", "sample_length"): + for key in ("target_shift", "stored_width", "future_capacity"): config_values.get("training_spec", {}).pop(key, None) split_paths = metadata_config["split_paths"] @@ -576,7 +593,8 @@ class TrainModel(BaseModel): default_factory=lambda: SPECIAL_TOKEN_IDS.ids_by_label ) - layout: SequenceLayout + storage_layout: StoredWindowLayout + window_view: ModelWindowView n_classes: dict[str, int] inference_batch_size: int seed: int @@ -597,14 +615,19 @@ def validate_special_token_ids_match_runtime(cls, v): @model_validator(mode="after") def validate_bert_prediction_length_matches_context_length(self): - self.layout.get_target_offset(self.training_spec.training_objective) + if self.window_view.objective != self.training_spec.training_objective: + raise ValueError( + "window_view objective must match training_spec.training_objective " + f"({self.window_view.objective} != {self.training_spec.training_objective})." + ) + resolve_window_view(self.storage_layout, self.window_view) if ( self.training_spec.training_objective == "bert" - and self.model_spec.prediction_length != self.layout.context_length + and self.model_spec.prediction_length != self.window_view.context_length ): raise ValueError( "For BERT training, model_spec.prediction_length must be equal to context_length " - f"(got prediction_length={self.model_spec.prediction_length}, context_length={self.layout.context_length})." + f"(got prediction_length={self.model_spec.prediction_length}, context_length={self.window_view.context_length})." ) return self diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index ae7f4022..a94967f1 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -44,95 +44,116 @@ @dataclass(frozen=True) -class SequenceLayout: +class StoredWindowLayout: + stored_width: int + future_capacity: int + version: int + + def __post_init__(self) -> None: + if self.stored_width < 1: + raise ValueError("stored_width must be a positive integer") + if self.future_capacity < 0: + raise ValueError("future_capacity must be non-negative") + if self.future_capacity >= self.stored_width: + raise ValueError("future_capacity must be smaller than stored_width") + + +@dataclass(frozen=True) +class ModelWindowView: context_length: int - max_lookahead: int - sequence_layout_version: int + objective: str + target_shift: int = 1 def __post_init__(self) -> None: if self.context_length < 1: raise ValueError("context_length must be a positive integer") - if self.max_lookahead < 0: - raise ValueError("max_lookahead must be non-negative") - - @property - def sample_length(self) -> int: - return self.context_length + self.max_lookahead - - @property - def input_offset(self) -> int: - return self.max_lookahead - - def get_target_offset(self, training_objective: str) -> int: - if training_objective == "bert": - return self.max_lookahead - if training_objective == "causal": - if self.max_lookahead < 1: - raise ValueError( - "Causal training requires data preprocessed with max_lookahead >= 1" - ) - return self.max_lookahead - 1 - raise ValueError( - f"Only 'causal' and 'bert' are allowed, found {training_objective}" - ) + if self.objective not in {"causal", "bert"}: + raise ValueError( + f"Only 'causal' and 'bert' are allowed, found {self.objective}" + ) + if self.target_shift < 0: + raise ValueError("target_shift must be non-negative") + if self.objective == "bert" and self.target_shift != 0: + raise ValueError("BERT views require target_shift=0") + if self.objective == "causal" and self.target_shift < 1: + raise ValueError("Causal views require target_shift >= 1") -@beartype -def sequence_column_names(context_length: int, offset: int) -> list[str]: - if offset < 0: - raise ValueError("offset must be non-negative") - return [str(i) for i in range(context_length - 1 + offset, offset - 1, -1)] +@dataclass(frozen=True) +class ResolvedWindowView: + storage: StoredWindowLayout + view: ModelWindowView + required_width: int + input_slice: slice + target_slice: slice + + def build_masks(self, left_pad_lengths: Tensor) -> dict[str, Tensor]: + """Build explicit input-attention and target-validity masks for this view.""" + return { + "attention_valid_mask": build_valid_mask( + left_pad_lengths, self.storage.stored_width, self.input_slice + ), + "target_valid_mask": build_valid_mask( + left_pad_lengths, self.storage.stored_width, self.target_slice + ), + } @beartype -def slice_window(tensor: Tensor, context_length: int, offset: int) -> Tensor: - if offset < 0: - raise ValueError("offset must be non-negative") +def _right_aligned_slice(width: int, length: int, offset: int) -> slice: + start = width - (length + offset) + stop = width - offset if offset else width + return slice(start, stop) - end = -offset if offset else None - result = tensor[:, -(context_length + offset) : end] - if result.shape[1] != context_length: +@beartype +def resolve_window_view( + storage: StoredWindowLayout, view: ModelWindowView +) -> ResolvedWindowView: + if view.target_shift > storage.future_capacity: raise ValueError( - f"Stored window width {tensor.shape[1]} cannot provide " - f"context_length={context_length} at offset={offset}" + f"Model target_shift={view.target_shift} exceeds stored " + f"future_capacity={storage.future_capacity}." ) - return result - -@beartype -def validate_stored_window_width(tensor: Tensor, sample_length: int) -> None: - if tensor.shape[1] != sample_length: + input_offset = storage.future_capacity + target_offset = storage.future_capacity - view.target_shift + required_width = view.context_length + max(input_offset, target_offset) + if required_width > storage.stored_width: raise ValueError( - f"Stored window width {tensor.shape[1]} does not match " - f"metadata sample_length={sample_length}." + f"Model view requires width {required_width}, but storage only has " + f"stored_width={storage.stored_width}." ) + return ResolvedWindowView( + storage=storage, + view=view, + required_width=required_width, + input_slice=_right_aligned_slice( + storage.stored_width, view.context_length, input_offset + ), + target_slice=_right_aligned_slice( + storage.stored_width, view.context_length, target_offset + ), + ) -@beartype -def sequence_layout_from_metadata(metadata: dict) -> SequenceLayout: - metadata_context_length = int(metadata["context_length"]) - max_lookahead = int(metadata["max_lookahead"]) - sample_length = int(metadata["sample_length"]) - if sample_length != metadata_context_length + max_lookahead: +@beartype +def validate_stored_window_width(tensor: Tensor, stored_width: int) -> None: + if tensor.shape[1] != stored_width: raise ValueError( - "Invalid sequence layout metadata: sample_length must equal " - "context_length + max_lookahead " - f"({sample_length} != {metadata_context_length} + {max_lookahead})." + f"Stored window width {tensor.shape[1]} does not match " + f"metadata stored_width={stored_width}." ) - layout = SequenceLayout( - context_length=metadata_context_length, - max_lookahead=max_lookahead, - sequence_layout_version=int(metadata["sequence_layout_version"]), + +@beartype +def stored_window_layout_from_metadata(metadata: dict) -> StoredWindowLayout: + return StoredWindowLayout( + stored_width=int(metadata["stored_width"]), + future_capacity=int(metadata["future_capacity"]), + version=int(metadata["stored_window_layout_version"]), ) - if layout.sample_length != sample_length: - raise ValueError( - f"Resolved layout sample_length={layout.sample_length} does not match " - f"metadata sample_length={sample_length}." - ) - return layout # Check an environment variable to see if we are in a testing context @@ -331,10 +352,7 @@ def numpy_to_pytorch( data: pl.DataFrame, column_types: dict[str, torch.dtype], all_columns: list[str], - context_length: int, - sample_length: int, - data_offset: int, - target_offset: int, + resolved_view: ResolvedWindowView, ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: """Converts a long-format Polars DataFrame to a dict of sequence tensors. @@ -370,8 +388,12 @@ def numpy_to_pytorch( (e.g., `{'price': , 'price_target': }`). - a metadata dictionary containing any explicit masks. """ - input_seq_cols = sequence_column_names(context_length, data_offset) - target_seq_cols = sequence_column_names(context_length, target_offset) + input_seq_cols = columns_from_slice( + resolved_view.input_slice, resolved_view.storage.stored_width + ) + target_seq_cols = columns_from_slice( + resolved_view.target_slice, resolved_view.storage.stored_width + ) # We will create a unified dictionary unified_tensors = {} @@ -397,13 +419,7 @@ def numpy_to_pytorch( unified_tensors[f"{col_name}_target"] = target_tensor left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(data) - metadata = generate_padding_masks( - left_pad_lengths, - context_length, - sample_length, - data_offset, - target_offset, - ) + metadata = resolved_view.build_masks(left_pad_lengths) return unified_tensors, metadata @@ -412,8 +428,7 @@ def numpy_to_pytorch( def build_valid_mask( left_pad_lengths: Tensor, full_length: int, - offset: int, - context_length: int, + view_slice: slice, ) -> Tensor: """Builds a boolean validity mask from explicit left-padding metadata.""" @@ -422,7 +437,14 @@ def build_valid_mask( ) full_valid = full_positions[None, :] >= left_pad_lengths[:, None] - return full_valid[:, -(context_length + offset) : (-offset if offset > 0 else None)] + return full_valid[:, view_slice] + + +@beartype +def columns_from_slice(view_slice: slice, stored_width: int) -> list[str]: + if view_slice.start is None or view_slice.stop is None: + raise ValueError("Resolved window slices must have concrete bounds") + return [str(stored_width - 1 - i) for i in range(view_slice.start, view_slice.stop)] @beartype @@ -445,25 +467,6 @@ def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Tensor: return torch.tensor(lengths.to_numpy(), dtype=torch.int64) -@beartype -def generate_padding_masks( - left_pad_lengths: Tensor, - context_length: int, - sample_length: int, - data_offset: int, - target_offset: int, -) -> dict[str, Tensor]: - """Generates explicit attention and target masks as a metadata dictionary.""" - return { - "attention_valid_mask": build_valid_mask( - left_pad_lengths, sample_length, data_offset, context_length - ), - "target_valid_mask": build_valid_mask( - left_pad_lengths, sample_length, target_offset, context_length - ), - } - - @beartype def normalize_path(path: str, project_root: str) -> str: """Normalizes a path to be relative to a project path, then joins them. diff --git a/src/sequifier/hyperparameter_search.py b/src/sequifier/hyperparameter_search.py index 7948b682..d39028cb 100644 --- a/src/sequifier/hyperparameter_search.py +++ b/src/sequifier/hyperparameter_search.py @@ -58,8 +58,16 @@ def objective(trial: optuna.Trial, config) -> Union[float, tuple[float, ...]]: config.project_root, config.model_config_write_path, f"{run_name}.yaml" ) os.makedirs(os.path.dirname(config_path), exist_ok=True) + + run_config_dict = run_config.model_dump() + run_config_dict["context_length"] = run_config_dict["window_view"]["context_length"] + run_config_dict["target_shift"] = run_config_dict["window_view"]["target_shift"] + + del run_config_dict["window_view"] + del run_config_dict["storage_layout"] + with open(config_path, "w") as f: - yaml.dump(run_config, f, Dumper=TrainModelDumper, sort_keys=False) + yaml.dump(run_config_dict, f, Dumper=TrainModelDumper, sort_keys=False) os.environ["SEQUIFIER_HYPERPARAMETER_SEARCH_RUN"] = "1" diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 4514ab76..804eca47 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -17,10 +17,9 @@ PANDAS_TO_TORCH_TYPES, configure_determinism, construct_index_maps, - generate_padding_masks, normalize_path, numpy_to_pytorch, - slice_window, + resolve_window_view, subset_to_input_columns, validate_stored_window_width, write_data, @@ -221,7 +220,10 @@ def infer_worker( f"Unsupported input type or read format: {config.read_format}" ) - default_prediction_length = {"causal": 1, "bert": config.layout.context_length} + default_prediction_length = { + "causal": 1, + "bert": config.window_view.context_length, + } prediction_length = ( config.prediction_length if config.prediction_length is not None @@ -361,13 +363,8 @@ def _bert_target_valid_mask_from_preprocessed_data( left_pad_lengths = torch.tensor( reference_rows.get_column("leftPadLength").to_numpy(), dtype=torch.int64 ) - metadata = generate_padding_masks( - left_pad_lengths, - config.layout.context_length, - config.layout.sample_length, - data_offset=config.layout.input_offset, - target_offset=config.layout.get_target_offset(config.training_objective), - ) + resolved_view = resolve_window_view(config.storage_layout, config.window_view) + metadata = resolved_view.build_masks(left_pad_lengths) return _flatten_bert_target_valid_mask(config, metadata, prediction_length) return None @@ -495,17 +492,12 @@ def infer_embedding( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.layout.sample_length) + validate_stored_window_width(tensor, config.storage_layout.stored_width) - metadata = generate_padding_masks( - left_pad_lengths_tensor, - config.layout.context_length, - config.layout.sample_length, - data_offset=config.layout.input_offset, - target_offset=config.layout.get_target_offset( - config.training_objective - ), + resolved_view = resolve_window_view( + config.storage_layout, config.window_view ) + metadata = resolved_view.build_masks(left_pad_lengths_tensor) embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata ) @@ -523,8 +515,8 @@ def infer_embedding( # Step 2: Calculate absolute positions and repeat IDs # (e.g., for seq_len=50, inf_size=5, offsets are [45, 46, 47, 48, 49]) base_offsets = np.arange( - config.layout.context_length - prediction_length, - config.layout.context_length, + config.window_view.context_length - prediction_length, + config.window_view.context_length, ) # Tile these offsets for each sample in the batch @@ -671,7 +663,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.layout.context_length, + config.window_view.context_length, prediction_length, config.training_objective, ) @@ -688,7 +680,7 @@ def infer_generative( inferer, data, column_types, - config.layout.context_length, + config.window_view.context_length, ) ) elif config.read_format == "parquet" and is_folder_input: @@ -726,7 +718,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.layout.context_length, + config.window_view.context_length, prediction_length, config.training_objective, ) @@ -742,7 +734,7 @@ def infer_generative( inferer, data, column_types, - config.layout.context_length, + config.window_view.context_length, ) ) elif config.read_format == "pt": @@ -754,30 +746,23 @@ def infer_generative( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.layout.sample_length) + validate_stored_window_width(tensor, config.storage_layout.stored_width) total_steps = ( 1 if config.autoregression_total_steps is None else config.autoregression_total_steps ) + resolved_view = resolve_window_view( + config.storage_layout, config.window_view + ) sequences_dict = { - key: slice_window( - tensor, config.layout.context_length, config.layout.input_offset - ) + key: tensor[:, resolved_view.input_slice] for key, tensor in sequences_dict.items() if key in config.input_columns } - metadata = generate_padding_masks( - left_pad_lengths_tensor, - config.layout.context_length, - config.layout.sample_length, - data_offset=config.layout.input_offset, - target_offset=config.layout.get_target_offset( - config.training_objective - ), - ) + metadata = resolved_view.build_masks(left_pad_lengths_tensor) probs, preds = get_probs_preds_from_dict( config, inferer, sequences_dict, metadata, total_steps @@ -800,7 +785,7 @@ def infer_generative( # Invoke the unified positioning engine item_positions_for_preds = calculate_item_positions( item_positions_base_raw, - config.layout.context_length, + config.window_view.context_length, prediction_length, config.training_objective, ) @@ -810,10 +795,10 @@ def infer_generative( sequence_ids_tensor.numpy(), total_steps ) item_position_boundaries = zip( - list(start_positions_tensor + config.layout.context_length), + list(start_positions_tensor + config.window_view.context_length), list( start_positions_tensor - + config.layout.context_length + + config.window_view.context_length + total_steps ), ) @@ -959,12 +944,11 @@ def get_embeddings_pt( Returns: A NumPy array containing the computed embeddings for the batch. """ + resolved_view = resolve_window_view(config.storage_layout, config.window_view) for tensor in data.values(): - validate_stored_window_width(tensor, config.layout.sample_length) + validate_stored_window_width(tensor, config.storage_layout.stored_width) X = { - key: slice_window( - val, config.layout.context_length, config.layout.input_offset - ).numpy() + key: val[:, resolved_view.input_slice].numpy() for key, val in data.items() if key in config.input_columns } @@ -1114,14 +1098,12 @@ def get_embeddings( A NumPy array containing the computed embeddings for the batch. """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) + resolved_view = resolve_window_view(config.storage_layout, config.window_view) X, metadata = numpy_to_pytorch( data, column_types, all_columns, - config.layout.context_length, - config.layout.sample_length, - config.layout.input_offset, - config.layout.get_target_offset(config.training_objective), + resolved_view, ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} @@ -1163,14 +1145,12 @@ def get_probs_preds_from_df( """ all_columns = sorted(list(set(config.input_columns + config.target_columns))) + resolved_view = resolve_window_view(config.storage_layout, config.window_view) X, metadata = numpy_to_pytorch( data, column_types, all_columns, - config.layout.context_length, - config.layout.sample_length, - config.layout.input_offset, - config.layout.get_target_offset(config.training_objective), + resolved_view, ) X = {col: X_col.numpy() for col, X_col in X.items()} metadata_np = {col: metadata_col.numpy() for col, metadata_col in metadata.items()} @@ -1289,14 +1269,12 @@ def get_probs_preds_autoregression( + context_length ) + resolved_view = resolve_window_view(config.storage_layout, config.window_view) head_data, metadata = numpy_to_pytorch( head_data_df, column_types, config.input_columns, - context_length, - config.layout.sample_length, - data_offset=config.layout.input_offset, - target_offset=0, + resolved_view, ) # Run the autoregressive PyTorch inference diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index 71ce10ac..6dc03b16 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -7,7 +7,12 @@ from torch.utils.data import IterableDataset from sequifier.config.train_config import TrainModel -from sequifier.helpers import PANDAS_TO_TORCH_TYPES, numpy_to_pytorch, read_data +from sequifier.helpers import ( + PANDAS_TO_TORCH_TYPES, + numpy_to_pytorch, + read_data, + resolve_window_view, +) from sequifier.io.batch import SequifierBatch @@ -42,16 +47,12 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): } # self.all_tensors now holds both inputs and targets + resolved_view = resolve_window_view(config.storage_layout, config.window_view) all_tensors, metadata_tensors = numpy_to_pytorch( data=data_df, column_types=column_types, all_columns=all_columns, - context_length=config.layout.context_length, - sample_length=config.layout.sample_length, - data_offset=config.layout.input_offset, - target_offset=config.layout.get_target_offset( - config.training_spec.training_objective - ), + resolved_view=resolved_view, ) self.n_samples = all_tensors[all_columns[0]].shape[0] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 6eebda70..24fe6e12 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -12,11 +12,11 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, - generate_padding_masks, + columns_from_slice, get_left_pad_lengths_from_preprocessed_data, normalize_path, - sequence_column_names, - sequence_layout_from_metadata, + resolve_window_view, + stored_window_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch @@ -49,12 +49,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.layout.sample_length: - raise ValueError( - f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.layout.sample_length}." - ) + self.folder_layout = stored_window_layout_from_metadata(metadata) + self.resolved_view = resolve_window_view(self.folder_layout, config.window_view) self.n_samples = metadata["total_samples"] @@ -68,15 +64,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): } # Sequence formatting structures matching long-format schema boundaries - train_seq_len = self.config.layout.context_length - input_seq_cols = sequence_column_names( - train_seq_len, self.config.layout.input_offset + input_seq_cols = columns_from_slice( + self.resolved_view.input_slice, self.folder_layout.stored_width ) - target_seq_cols = sequence_column_names( - train_seq_len, - self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ), + target_seq_cols = columns_from_slice( + self.resolved_view.target_slice, self.folder_layout.stored_width ) all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in config.input_columns @@ -211,29 +203,20 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Extract and pass unified data frames - train_seq_len = self.config.layout.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] data_batch = { - key: tensor[batch_indices, -train_seq_len:] - for key, tensor in self.sequences.items() + key: tensor[batch_indices] for key, tensor in self.sequences.items() } targets_batch = { - key: tensor[batch_indices, -train_seq_len:] - for key, tensor in self.targets.items() + key: tensor[batch_indices] for key, tensor in self.targets.items() } metadata_batch = {} if self.left_pad_lengths is not None: - metadata_batch = generate_padding_masks( - self.left_pad_lengths[batch_indices], - train_seq_len, - self.config.layout.sample_length, - self.config.layout.input_offset, - self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ), + metadata_batch = self.resolved_view.build_masks( + self.left_pad_lengths[batch_indices] ) yield SequifierBatch( diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 496fbf6c..7f2e5bcc 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -13,11 +13,11 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, - generate_padding_masks, + columns_from_slice, get_left_pad_lengths_from_preprocessed_data, normalize_path, - sequence_column_names, - sequence_layout_from_metadata, + resolve_window_view, + stored_window_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch @@ -65,12 +65,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.layout.sample_length: - raise ValueError( - f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.layout.sample_length}." - ) + self.folder_layout = stored_window_layout_from_metadata(metadata) + self.resolved_view = resolve_window_view(self.folder_layout, config.window_view) self.batch_files_info = metadata["batch_files"] self.total_samples = metadata["total_samples"] @@ -219,17 +215,13 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.layout.context_length global_file_start_sample = 0 - input_seq_cols = sequence_column_names( - train_seq_len, self.config.layout.input_offset + input_seq_cols = columns_from_slice( + self.resolved_view.input_slice, self.folder_layout.stored_width ) - target_seq_cols = sequence_column_names( - train_seq_len, - self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ), + target_seq_cols = columns_from_slice( + self.resolved_view.target_slice, self.folder_layout.stored_width ) # Initialize cross-file buffers @@ -313,15 +305,7 @@ def __iter__( f"Missing required column {col_name} in Parquet partition" ) - new_meta = generate_padding_masks( - left_pad_lengths[worker_indices], - train_seq_len, - self.config.layout.sample_length, - self.config.layout.input_offset, - self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ), - ) + new_meta = self.resolved_view.build_masks(left_pad_lengths[worker_indices]) del df diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index a1647fea..e60ea981 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -10,10 +10,9 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( - generate_padding_masks, normalize_path, - sequence_layout_from_metadata, - slice_window, + resolve_window_view, + stored_window_layout_from_metadata, validate_stored_window_width, ) from sequifier.io.batch import SequifierBatch @@ -47,12 +46,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.layout.sample_length: - raise ValueError( - f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.layout.sample_length}." - ) + self.folder_layout = stored_window_layout_from_metadata(metadata) + self.resolved_view = resolve_window_view(self.folder_layout, config.window_view) self.n_samples = metadata["total_samples"] @@ -78,7 +73,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in all_sequences.keys(): if col in sequences_batch: validate_stored_window_width( - sequences_batch[col], config.layout.sample_length + sequences_batch[col], self.folder_layout.stored_width ) all_sequences[col].append(sequences_batch[col]) all_left_pad_lengths.append(left_pad_lengths_batch) @@ -169,33 +164,24 @@ def __iter__( indices_for_worker = indices_for_rank[worker_id::num_workers] # 5. Yield full batches - train_seq_len = self.config.layout.context_length for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] - data_offset = self.config.layout.input_offset - target_offset = self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ) data_batch = { - key: slice_window(tensor[batch_indices], train_seq_len, data_offset) + key: tensor[batch_indices, self.resolved_view.input_slice] for key, tensor in self.sequences.items() if key in self.config.input_columns } targets_batch = { - key: slice_window(tensor[batch_indices], train_seq_len, target_offset) + key: tensor[batch_indices, self.resolved_view.target_slice] for key, tensor in self.sequences.items() if key in self.config.target_columns } metadata_batch = {} if self.left_pad_lengths is not None: - metadata_batch = generate_padding_masks( - self.left_pad_lengths[batch_indices], - train_seq_len, - self.config.layout.sample_length, - data_offset, - target_offset, + metadata_batch = self.resolved_view.build_masks( + self.left_pad_lengths[batch_indices] ) yield SequifierBatch( diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 4c50e903..df67ee66 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -11,10 +11,9 @@ from sequifier.config.train_config import TrainModel from sequifier.helpers import ( - generate_padding_masks, normalize_path, - sequence_layout_from_metadata, - slice_window, + resolve_window_view, + stored_window_layout_from_metadata, validate_stored_window_width, ) from sequifier.io.batch import SequifierBatch @@ -63,12 +62,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): with open(metadata_path, "r") as f: metadata = json.load(f) - folder_layout = sequence_layout_from_metadata(metadata) - if folder_layout.sample_length != config.layout.sample_length: - raise ValueError( - f"Preprocessed folder sample_length={folder_layout.sample_length} " - f"does not match config sample_length={config.layout.sample_length}." - ) + self.folder_layout = stored_window_layout_from_metadata(metadata) + self.resolved_view = resolve_window_view(self.folder_layout, config.window_view) self.batch_files_info = metadata["batch_files"] self.total_samples = metadata["total_samples"] @@ -212,7 +207,6 @@ def __iter__( # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 - train_seq_len = self.config.layout.context_length global_file_start_sample = 0 # Initialize cross-file buffers @@ -244,7 +238,7 @@ def __iter__( left_pad_lengths_batch, ) = torch.load(file_path, map_location="cpu", weights_only=False) for tensor in sequences_batch.values(): - validate_stored_window_width(tensor, self.config.layout.sample_length) + validate_stored_window_width(tensor, self.folder_layout.stored_width) # Generate indices for the whole file indices = torch.arange(file_samples) @@ -265,27 +259,19 @@ def __iter__( continue # Extract the data subset for this worker (Advanced indexing copies the data) - data_offset = self.config.layout.input_offset - target_offset = self.config.layout.get_target_offset( - self.config.training_spec.training_objective - ) new_seq = { - k: slice_window(v[worker_indices], train_seq_len, data_offset) + k: v[worker_indices, self.resolved_view.input_slice] for k, v in sequences_batch.items() if k in self.config.input_columns } new_tgt = { - k: slice_window(v[worker_indices], train_seq_len, target_offset) + k: v[worker_indices, self.resolved_view.target_slice] for k, v in sequences_batch.items() if k in self.config.target_columns } - new_meta = generate_padding_masks( - left_pad_lengths_batch[worker_indices], - train_seq_len, - self.config.layout.sample_length, - data_offset, - target_offset, + new_meta = self.resolved_view.build_masks( + left_pad_lengths_batch[worker_indices] ) # Free the large file immediately to keep RAM down diff --git a/src/sequifier/io/yaml.py b/src/sequifier/io/yaml.py index b35497b4..934f40bf 100644 --- a/src/sequifier/io/yaml.py +++ b/src/sequifier/io/yaml.py @@ -8,7 +8,7 @@ TrainingSpecModel, TrainModel, ) -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout def represent_sequifier_object(dumper, data): @@ -79,7 +79,8 @@ def increase_indent(self, flow=False, indentless=False): TrainModelDumper.add_representer(TrainModel, represent_sequifier_object) TrainModelDumper.add_representer(ModelSpecModel, represent_sequifier_object) TrainModelDumper.add_representer(TrainingSpecModel, represent_sequifier_object) -TrainModelDumper.add_representer(SequenceLayout, represent_sequifier_object) +TrainModelDumper.add_representer(StoredWindowLayout, represent_sequifier_object) +TrainModelDumper.add_representer(ModelWindowView, represent_sequifier_object) TrainModelDumper.add_multi_representer(BaseModel, represent_sequifier_object) TrainModelDumper.add_representer(DotDict, represent_dot_dict) TrainModelDumper.add_representer(numpy.float64, represent_numpy_float) diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 8f27cf17..79d5cc42 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -11,8 +11,8 @@ - 0.8 - 0.1 - 0.1 -context_length: 48 -max_lookahead: 1 +stored_width: 49 +future_capacity: 1 stride_by_split: - 1 - 1 @@ -31,7 +31,6 @@ EXAMPLE_TARGET_COLUMN_NAME: real context_length: 48 -sample_length: 49 inference_batch_size: 10 export_generative_model: PLEASE FILL # true or false @@ -49,7 +48,6 @@ num_layers: 3 prediction_length: 1 training_spec: - sample_length: 49 training_objective: causal device: cuda epochs: 10 @@ -91,7 +89,6 @@ map_to_id: true device: cpu context_length: 48 -sample_length: 49 inference_batch_size: 10 autoregression: true diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 8232688a..4172ce18 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -18,7 +18,7 @@ from sequifier.config.preprocess_config import load_preprocessor_config from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, - SequenceLayout, + StoredWindowLayout, read_data, write_data, ) @@ -31,7 +31,7 @@ INPUT_METADATA_COLUMNS = ("sequenceId", "itemPosition") REAL_MASK_VALUE = 0.0 -CURRENT_SEQUENCE_LAYOUT_VERSION = 2 +CURRENT_STORED_WINDOW_LAYOUT_VERSION = 2 @beartype @@ -86,7 +86,7 @@ def __init__( merge_output: bool, selected_columns: Optional[list[str]], split_ratios: list[float], - context_length: int, + stored_width: int, stride_by_split: list[int], max_rows: Optional[int], seed: int, @@ -96,7 +96,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], - max_lookahead: int = 1, + future_capacity: int = 1, mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -109,8 +109,8 @@ def __init__( merge_output: Whether to combine the output into a single file. selected_columns: A list of columns to be included in the preprocessing. split_ratios: A list of floats that define the relative sizes of data splits. - context_length: The sequence length for the model inputs. - max_lookahead: The maximum target horizon retained after each input window. + stored_width: The physical serialized window width. + future_capacity: The number of future items retained after each input window. stride_by_split: A list of step sizes for creating subsequences. max_rows: The maximum number of input rows to process. seed: A random seed for reproducibility. @@ -145,10 +145,10 @@ def __init__( np.random.seed(seed) self.n_cores = n_cores or multiprocessing.cpu_count() self.continue_preprocessing = continue_preprocessing - self.layout = SequenceLayout( - context_length, - max_lookahead, - sequence_layout_version=CURRENT_SEQUENCE_LAYOUT_VERSION, + self.storage_layout = StoredWindowLayout( + stored_width=stored_width, + future_capacity=future_capacity, + version=CURRENT_STORED_WINDOW_LAYOUT_VERSION, ) self._setup_directories() @@ -251,7 +251,7 @@ def __init__( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, self.layout.sample_length) + schema = self._create_schema(col_types, self.storage_layout.stored_width) data = data.sort(["sequenceId", "itemPosition"]) n_batches = _process_batches_single_file( @@ -260,7 +260,7 @@ def __init__( data, schema, self.n_cores, - self.layout, + self.storage_layout, stride_by_split, data_columns, col_types, @@ -347,7 +347,7 @@ def __init__( self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, self.layout.sample_length) + schema = self._create_schema(col_types, self.storage_layout.stored_width) self._process_batches_multiple_files( files_to_process, @@ -356,7 +356,7 @@ def __init__( max_rows, schema, self.n_cores, - self.layout, + self.storage_layout, stride_by_split, data_columns, n_classes, @@ -373,7 +373,7 @@ def __init__( @beartype def _create_schema( - self, col_types: dict[str, str], sample_length: int + self, col_types: dict[str, str], stored_width: int ) -> dict[str, Any]: """Creates the Polars schema for the intermediate sequence DataFrame. @@ -385,7 +385,7 @@ def _create_schema( Args: col_types: A dictionary mapping data column names to their Polars string representations (e.g., "Int64", "Float64"). - sample_length: The number of items stored for each extracted window. + stored_width: The number of items stored for each extracted window. Returns: A dictionary defining the Polars schema. Keys are column names @@ -415,7 +415,7 @@ def _create_schema( sequence_position_type = pl.Float64 schema.update( - {str(i): sequence_position_type for i in range(sample_length - 1, -1, -1)} + {str(i): sequence_position_type for i in range(stored_width - 1, -1, -1)} ) return schema @@ -618,7 +618,7 @@ def _process_batches_multiple_files( max_rows: Optional[int], schema: Any, n_cores: int, - layout: SequenceLayout, + layout: StoredWindowLayout, stride_by_split: list[int], data_columns: list[str], n_classes: dict[str, int], @@ -817,10 +817,9 @@ def _cleanup(self, write_format: str) -> None: @beartype def _layout_metadata(self) -> dict[str, int]: return { - "context_length": self.layout.context_length, - "max_lookahead": self.layout.max_lookahead, - "sample_length": self.layout.sample_length, - "sequence_layout_version": self.layout.sequence_layout_version, + "stored_width": self.storage_layout.stored_width, + "future_capacity": self.storage_layout.future_capacity, + "stored_window_layout_version": self.storage_layout.version, } @beartype @@ -1465,7 +1464,7 @@ def _process_batches_multiple_files_inner( max_rows: Optional[int], schema: Any, n_cores: int, - layout: SequenceLayout, + layout: StoredWindowLayout, stride_by_split: list[int], data_columns: list[str], n_classes: dict[str, int], @@ -1623,7 +1622,7 @@ def _process_batches_single_file( data: pl.DataFrame, schema: Any, n_cores: Optional[int], - layout: SequenceLayout, + layout: StoredWindowLayout, stride_by_split: list[int], data_columns: list[str], col_types: dict[str, str], @@ -1902,7 +1901,7 @@ def get_group_bounds(data_subset: pl.DataFrame, split_ratios: list[float]): @beartype def process_and_write_data_pt( data: pl.DataFrame, - sample_length: int, + stored_width: int, path: str, column_types: dict[str, str], ): @@ -1915,13 +1914,13 @@ def process_and_write_data_pt( It then converts these lists into NumPy arrays and stores one full sequence tensor per feature. Each tensor has shape - `(batch_size, sample_length)`. The final five-element tuple + `(batch_size, stored_width)`. The final five-element tuple `(sequences_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, left_pad_lengths_tensor)` is saved to a .pt file using `torch.save`. Args: data: The long-format Polars DataFrame of extracted sequences. - sample_length: The stored serialized window width. + stored_width: The stored serialized window width. path: The output file path (e.g., "data/batch_0.pt"). column_types: A dictionary mapping column names to their string data types, used to determine the correct torch dtype. @@ -1929,7 +1928,7 @@ def process_and_write_data_pt( if data.is_empty(): return - sequence_cols = [str(c) for c in range(sample_length - 1, -1, -1)] + sequence_cols = [str(c) for c in range(stored_width - 1, -1, -1)] all_feature_cols = data.get_column("inputCol").unique().to_list() @@ -1998,7 +1997,7 @@ def _write_accumulated_sequences( process_id: int, file_index_str: str, target_dir: str, - layout: SequenceLayout, + layout: StoredWindowLayout, col_types: dict[str, str], ): """Helper to write a batch of accumulated sequences to a single .pt file. @@ -2029,9 +2028,7 @@ def _write_accumulated_sequences( out_path = insert_top_folder(split_path_batch_seq, target_dir) if write_format == "pt": - process_and_write_data_pt( - combined_df, layout.sample_length, out_path, col_types - ) + process_and_write_data_pt(combined_df, layout.stored_width, out_path, col_types) elif write_format == "parquet": combined_df.write_parquet(out_path) @@ -2044,7 +2041,7 @@ def preprocess_batch( batch: pl.DataFrame, schema: Any, split_paths: list[str], - layout: SequenceLayout, + layout: StoredWindowLayout, stride_by_split: list[int], data_columns: list[str], col_types: dict[str, str], @@ -2183,7 +2180,7 @@ def preprocess_batch( def extract_sequences( data: pl.DataFrame, schema: Any, - layout: SequenceLayout, + layout: StoredWindowLayout, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2225,7 +2222,7 @@ def extract_sequences( subsequences, left_pad_lengths, subsequence_starts = extract_subsequences( in_seq_lists_only, - layout.sample_length, + layout.stored_width, stride_for_split, columns, subsequence_start_mode, @@ -2241,7 +2238,7 @@ def extract_sequences( left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] - expected_row_length = 5 + layout.sample_length + expected_row_length = 5 + layout.stored_width if len(row) != expected_row_length: raise RuntimeError( f"Row length mismatch. Expected {expected_row_length}, got {len(row)}. Row: {row}" @@ -2259,21 +2256,21 @@ def extract_sequences( @beartype def get_subsequence_starts( in_context_length: int, - sample_length: int, + stored_width: int, stride_for_split: int, subsequence_start_mode: str, ) -> np.ndarray: """Calculates the start indices for extracting subsequences. This function determines the starting indices for sliding a window of - `sample_length` over an input sequence of `in_context_length`. It aims to + `stored_width` over an input sequence of `in_context_length`. It aims to use `stride_for_split`, but adjusts the step size slightly to ensure that the windows are distributed as evenly as possible and cover the full sequence from the beginning to the end. Args: in_context_length: The length of the original input sequence. - sample_length: The stored window length to extract. + stored_width: The stored window length to extract. stride_for_split: The *desired* step size between subsequences. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2286,7 +2283,7 @@ def get_subsequence_starts( ) if subsequence_start_mode == "distribute": - last_available_start = in_context_length - sample_length + last_available_start = in_context_length - stored_width raw_starts = np.arange( 0, last_available_start + stride_for_split, stride_for_split ) @@ -2297,11 +2294,11 @@ def get_subsequence_starts( return np.unique(starts) if subsequence_start_mode == "exact": - if (in_context_length - sample_length) % stride_for_split != 0: + if (in_context_length - stored_width) % stride_for_split != 0: raise ValueError( - f"'exact' mode requires sequence length alignment, i.e. if: (in_context_length - sample_length) % stride_for_split == 0, {in_context_length = }, {sample_length = }, {stride_for_split = }" + f"'exact' mode requires sequence length alignment, i.e. if: (in_context_length - stored_width) % stride_for_split == 0, {in_context_length = }, {stored_width = }, {stride_for_split = }" ) - last_possible_start = in_context_length - sample_length + last_possible_start = in_context_length - stored_width return np.arange(0, last_possible_start + 1, stride_for_split) return np.array([]) @@ -2309,7 +2306,7 @@ def get_subsequence_starts( @beartype def extract_subsequences( in_seq: dict[str, list], - sample_length: int, + stored_width: int, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2319,14 +2316,14 @@ def extract_subsequences( This function takes a dictionary `in_seq` where keys are column names and values are lists of items for a single full sequence. It first pads the sequences with 0s at the beginning if they are - shorter than `sample_length`. Then, it calculates the subsequence + shorter than `stored_width`. Then, it calculates the subsequence start indices using `get_subsequence_starts` and extracts all subsequences. Args: in_seq: A dictionary mapping column names to lists of items (e.g., `{'col_A': [1, 2, 3, 4, 5], 'col_B': [6, 7, 8, 9, 10]}`). - sample_length: The stored window length to extract. + stored_width: The stored window length to extract. stride_for_split: The desired step size between subsequences. columns: A list of the column names (keys in `in_seq`) to process. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2337,13 +2334,13 @@ def extract_subsequences( """ in_seq_len = len(in_seq[columns[0]]) pad_len = 0 - if in_seq_len < sample_length: - pad_len = sample_length - in_seq_len + if in_seq_len < stored_width: + pad_len = stored_width - in_seq_len in_seq = {col: ([0] * pad_len) + in_seq[col] for col in columns} in_context_length = len(in_seq[columns[0]]) subsequence_starts = get_subsequence_starts( - in_context_length, sample_length, stride_for_split, subsequence_start_mode + in_context_length, stored_width, stride_for_split, subsequence_start_mode ) subsequence_starts_diff = subsequence_starts[1:] - subsequence_starts[:-1] if not np.all(subsequence_starts_diff <= stride_for_split): @@ -2352,7 +2349,7 @@ def extract_subsequences( ) result = { - col: [list(in_seq[col][i : i + sample_length]) for i in subsequence_starts] + col: [list(in_seq[col][i : i + stored_width]) for i in subsequence_starts] for col in columns } left_pad_lengths = [pad_len] * len(subsequence_starts) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index f6b58150..bb78c930 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -97,14 +97,14 @@ def create_dummy_data_and_metadata( for col in config.input_columns: dtype = torch.int64 if col in config.categorical_columns else torch.float32 dummy_data[col] = torch.ones( - (config.training_spec.batch_size, config.layout.context_length), + (config.training_spec.batch_size, config.window_view.context_length), dtype=dtype, device=local_rank, ) dummy_metadata = { "attention_valid_mask": torch.ones( - (config.training_spec.batch_size, config.layout.context_length), + (config.training_spec.batch_size, config.window_view.context_length), dtype=torch.bool, device=local_rank, ) @@ -613,8 +613,9 @@ def __init__( self.target_columns = hparams.target_columns self.target_column_types = hparams.target_column_types self.loss_weights = hparams.training_spec.loss_weights - self.layout = hparams.layout - self.context_length = hparams.layout.context_length + self.storage_layout = hparams.storage_layout + self.window_view = hparams.window_view + self.context_length = hparams.window_view.context_length self.n_classes = hparams.n_classes self.inference_batch_size = hparams.inference_batch_size self.log_interval = hparams.training_spec.log_interval @@ -691,7 +692,7 @@ def __init__( hparams.model_spec.n_head, hparams.model_spec.dim_feedforward, hparams.training_spec.dropout, - hparams.layout.context_length, + hparams.window_view.context_length, ) for _ in range(hparams.model_spec.num_layers) ] diff --git a/tests/configs/hyperparameter-search-bert.yaml b/tests/configs/hyperparameter-search-bert.yaml index b4490817..99a4024e 100644 --- a/tests/configs/hyperparameter-search-bert.yaml +++ b/tests/configs/hyperparameter-search-bert.yaml @@ -8,7 +8,6 @@ target_columns: [itemId] target_column_types: itemId: categorical context_length: [8] -max_lookahead: 0 inference_batch_size: 10 search_strategy: sample diff --git a/tests/configs/infer-test-categorical-autoregression.yaml b/tests/configs/infer-test-categorical-autoregression.yaml index 842cd2ea..7112cd9e 100644 --- a/tests/configs/infer-test-categorical-autoregression.yaml +++ b/tests/configs/infer-test-categorical-autoregression.yaml @@ -17,7 +17,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml index b74491a0..61724d81 100644 --- a/tests/configs/infer-test-categorical-bert-embedding.yaml +++ b/tests/configs/infer-test-categorical-bert-embedding.yaml @@ -17,7 +17,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml index ca23aba1..5a459841 100644 --- a/tests/configs/infer-test-categorical-bert.yaml +++ b/tests/configs/infer-test-categorical-bert.yaml @@ -17,7 +17,6 @@ output_probabilities: true map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 prediction_length: null enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-embedding.yaml b/tests/configs/infer-test-categorical-embedding.yaml index 2c2bac57..e8ce1543 100644 --- a/tests/configs/infer-test-categorical-embedding.yaml +++ b/tests/configs/infer-test-categorical-embedding.yaml @@ -17,7 +17,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-1.yaml b/tests/configs/infer-test-categorical-inf-size-1.yaml index 89af4da8..8c8c14b9 100644 --- a/tests/configs/infer-test-categorical-inf-size-1.yaml +++ b/tests/configs/infer-test-categorical-inf-size-1.yaml @@ -16,7 +16,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml index 25f9f86e..61732fa0 100644 --- a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml @@ -19,7 +19,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-inf-size-3.yaml b/tests/configs/infer-test-categorical-inf-size-3.yaml index 014e53a4..6bdad176 100644 --- a/tests/configs/infer-test-categorical-inf-size-3.yaml +++ b/tests/configs/infer-test-categorical-inf-size-3.yaml @@ -19,7 +19,6 @@ output_probabilities: true map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 prediction_length: 3 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical-multitarget.yaml b/tests/configs/infer-test-categorical-multitarget.yaml index ec7064f4..9202b7ed 100644 --- a/tests/configs/infer-test-categorical-multitarget.yaml +++ b/tests/configs/infer-test-categorical-multitarget.yaml @@ -19,7 +19,6 @@ output_probabilities: true map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-categorical.yaml b/tests/configs/infer-test-categorical.yaml index 72214fba..dafe686e 100644 --- a/tests/configs/infer-test-categorical.yaml +++ b/tests/configs/infer-test-categorical.yaml @@ -17,7 +17,6 @@ output_probabilities: true map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed-parquet.yaml b/tests/configs/infer-test-distributed-parquet.yaml index a7f2d423..52ce0a4e 100644 --- a/tests/configs/infer-test-distributed-parquet.yaml +++ b/tests/configs/infer-test-distributed-parquet.yaml @@ -18,7 +18,6 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/infer-test-distributed.yaml b/tests/configs/infer-test-distributed.yaml index a89c17c8..61f43431 100644 --- a/tests/configs/infer-test-distributed.yaml +++ b/tests/configs/infer-test-distributed.yaml @@ -20,5 +20,4 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-lazy.yaml b/tests/configs/infer-test-lazy.yaml index 20bf3ec5..3429ecf5 100644 --- a/tests/configs/infer-test-lazy.yaml +++ b/tests/configs/infer-test-lazy.yaml @@ -18,5 +18,4 @@ output_probabilities: false map_to_id: true device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 2 diff --git a/tests/configs/infer-test-real-autoregression.yaml b/tests/configs/infer-test-real-autoregression.yaml index 79896d4c..07d3b21f 100644 --- a/tests/configs/infer-test-real-autoregression.yaml +++ b/tests/configs/infer-test-real-autoregression.yaml @@ -17,7 +17,6 @@ output_probabilities: false map_to_id: false device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: false diff --git a/tests/configs/infer-test-real.yaml b/tests/configs/infer-test-real.yaml index e8610c0c..74b40e23 100644 --- a/tests/configs/infer-test-real.yaml +++ b/tests/configs/infer-test-real.yaml @@ -15,7 +15,6 @@ output_probabilities: false map_to_id: false device: cpu context_length: 8 -sample_length: 9 inference_batch_size: 10 enforce_determinism: true diff --git a/tests/configs/preprocess-test-categorical-exact-pt.yaml b/tests/configs/preprocess-test-categorical-exact-pt.yaml index 905eaf7e..0d6f82c1 100644 --- a/tests/configs/preprocess-test-categorical-exact-pt.yaml +++ b/tests/configs/preprocess-test-categorical-exact-pt.yaml @@ -7,7 +7,8 @@ selected_columns: null split_ratios: - 1.0 -context_length: 5 +stored_width: 6 +future_capacity: 1 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-exact.yaml b/tests/configs/preprocess-test-categorical-exact.yaml index d0cb1349..b448ef32 100644 --- a/tests/configs/preprocess-test-categorical-exact.yaml +++ b/tests/configs/preprocess-test-categorical-exact.yaml @@ -7,7 +7,8 @@ selected_columns: null split_ratios: - 1.0 -context_length: 5 +stored_width: 6 +future_capacity: 1 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-interrupted.yaml b/tests/configs/preprocess-test-categorical-interrupted.yaml index 16487d15..6d244e94 100644 --- a/tests/configs/preprocess-test-categorical-interrupted.yaml +++ b/tests/configs/preprocess-test-categorical-interrupted.yaml @@ -9,7 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-lookahead-0.yaml b/tests/configs/preprocess-test-categorical-lookahead-0.yaml index 520f4b8d..be13f25a 100644 --- a/tests/configs/preprocess-test-categorical-lookahead-0.yaml +++ b/tests/configs/preprocess-test-categorical-lookahead-0.yaml @@ -9,8 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -context_length: 8 -max_lookahead: 0 +stored_width: 8 +future_capacity: 0 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-multitarget.yaml b/tests/configs/preprocess-test-categorical-multitarget.yaml index b90646c8..1fc95074 100644 --- a/tests/configs/preprocess-test-categorical-multitarget.yaml +++ b/tests/configs/preprocess-test-categorical-multitarget.yaml @@ -9,7 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml index 3a088619..24c12914 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml @@ -8,7 +8,8 @@ selected_columns: null split_ratios: - 1.0 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml index 4c730a1e..8e7fd362 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml @@ -7,7 +7,8 @@ selected_columns: null split_ratios: - 1.0 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical.yaml b/tests/configs/preprocess-test-categorical.yaml index c9ff762b..7ca2774b 100644 --- a/tests/configs/preprocess-test-categorical.yaml +++ b/tests/configs/preprocess-test-categorical.yaml @@ -9,7 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-multi-file.yaml b/tests/configs/preprocess-test-multi-file.yaml index 4ac995c6..a7792689 100644 --- a/tests/configs/preprocess-test-multi-file.yaml +++ b/tests/configs/preprocess-test-multi-file.yaml @@ -12,7 +12,8 @@ split_ratios: - 0.8 - 0.1 - 0.1 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-real.yaml b/tests/configs/preprocess-test-real.yaml index 3265dccc..f0015e26 100644 --- a/tests/configs/preprocess-test-real.yaml +++ b/tests/configs/preprocess-test-real.yaml @@ -8,7 +8,8 @@ selected_columns: null split_ratios: - 0.5 - 0.5 -context_length: 8 +stored_width: 9 +future_capacity: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml index af929462..c6b4187c 100644 --- a/tests/configs/train-test-categorical-bert.yaml +++ b/tests/configs/train-test-categorical-bert.yaml @@ -9,7 +9,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +32,6 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-categorical-inf-size-1.yaml b/tests/configs/train-test-categorical-inf-size-1.yaml index bc3a78f5..5c915af2 100644 --- a/tests/configs/train-test-categorical-inf-size-1.yaml +++ b/tests/configs/train-test-categorical-inf-size-1.yaml @@ -9,7 +9,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -32,7 +31,6 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-inf-size-3.yaml b/tests/configs/train-test-categorical-inf-size-3.yaml index 9e0e1ebc..93165300 100644 --- a/tests/configs/train-test-categorical-inf-size-3.yaml +++ b/tests/configs/train-test-categorical-inf-size-3.yaml @@ -11,7 +11,6 @@ target_column_types: supCat2: categorical context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -39,7 +38,6 @@ model_spec: n_kv_heads: 1 rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget-eager.yaml b/tests/configs/train-test-categorical-multitarget-eager.yaml index 4439f4e4..2dfbd2c5 100644 --- a/tests/configs/train-test-categorical-multitarget-eager.yaml +++ b/tests/configs/train-test-categorical-multitarget-eager.yaml @@ -10,7 +10,6 @@ target_column_types: supCat1: categorical supReal3: real context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -39,7 +38,6 @@ model_spec: rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical-multitarget.yaml b/tests/configs/train-test-categorical-multitarget.yaml index f7594939..4f1a83c1 100644 --- a/tests/configs/train-test-categorical-multitarget.yaml +++ b/tests/configs/train-test-categorical-multitarget.yaml @@ -11,7 +11,6 @@ target_column_types: supCat1: categorical supReal3: real context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -40,7 +39,6 @@ model_spec: rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml index 018226c2..e10b673f 100644 --- a/tests/configs/train-test-categorical.yaml +++ b/tests/configs/train-test-categorical.yaml @@ -9,7 +9,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +32,6 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/configs/train-test-distributed-lazy-parquet.yaml b/tests/configs/train-test-distributed-lazy-parquet.yaml index ba63aaec..1e50b40f 100644 --- a/tests/configs/train-test-distributed-lazy-parquet.yaml +++ b/tests/configs/train-test-distributed-lazy-parquet.yaml @@ -9,7 +9,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -26,7 +25,6 @@ model_spec: prediction_length: 1 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-distributed.yaml b/tests/configs/train-test-distributed.yaml index 3c0bb02d..ea0efe24 100644 --- a/tests/configs/train-test-distributed.yaml +++ b/tests/configs/train-test-distributed.yaml @@ -11,7 +11,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -28,7 +27,6 @@ model_spec: prediction_length: 1 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-lazy.yaml b/tests/configs/train-test-lazy.yaml index 6367027d..348c1ada 100644 --- a/tests/configs/train-test-lazy.yaml +++ b/tests/configs/train-test-lazy.yaml @@ -11,7 +11,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 2 export_generative_model: true @@ -28,7 +27,6 @@ model_spec: prediction_length: 1 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-real-bert.yaml b/tests/configs/train-test-real-bert.yaml index 4a8ef116..89ec8ad2 100644 --- a/tests/configs/train-test-real-bert.yaml +++ b/tests/configs/train-test-real-bert.yaml @@ -9,7 +9,6 @@ target_column_types: itemValue: real context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +32,6 @@ model_spec: n_kv_heads: 2 rope_theta: 10000.0 training_spec: - sample_length: 9 training_objective: bert bert_spec: masking_probability: 0.5 diff --git a/tests/configs/train-test-real.yaml b/tests/configs/train-test-real.yaml index 33a0c67d..e44db6a1 100644 --- a/tests/configs/train-test-real.yaml +++ b/tests/configs/train-test-real.yaml @@ -9,7 +9,6 @@ target_column_types: itemValue: real context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +32,6 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: - sample_length: 9 training_objective: causal device: cpu torch_compile: "inner" diff --git a/tests/configs/train-test-resume-epoch.yaml b/tests/configs/train-test-resume-epoch.yaml index f229fb1d..1ab8bc7f 100644 --- a/tests/configs/train-test-resume-epoch.yaml +++ b/tests/configs/train-test-resume-epoch.yaml @@ -9,7 +9,6 @@ target_column_types: itemValue: real context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: false @@ -33,7 +32,6 @@ model_spec: rope_theta: 10000.0 prediction_length: 1 training_spec: - sample_length: 9 training_objective: causal device: cpu epochs: 3 diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml index b43c8c2b..7f4e6c2c 100644 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ b/tests/configs/train-test-resume-mid-epoch.yaml @@ -9,7 +9,6 @@ target_column_types: itemId: categorical context_length: 8 -sample_length: 9 inference_batch_size: 10 export_generative_model: true @@ -33,7 +32,6 @@ model_spec: n_kv_heads: 1 rope_theta: 1000.0 training_spec: - sample_length: 9 training_objective: causal device: cpu torch_compile: "outer" diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 991205fd..1beeeb51 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -40,8 +40,13 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): assert generated_config["metadata_config_path"].endswith( "test-data-categorical-1-lookahead-0.json" ) - assert generated_config["layout"]["max_lookahead"] == 0 - assert generated_config["layout"]["sequence_layout_version"] == 2 + assert generated_config["metadata_config_path"].endswith( + "test-data-categorical-1-lookahead-0.json" + ) + assert "storage_layout" not in generated_config + assert "window_view" not in generated_config + assert generated_config["target_shift"] == 0 + assert generated_config["training_spec"]["training_objective"] == "bert" def test_hp_search_bayesian_outputs(run_hp_search, project_root): diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py index 471de7a0..47eaad7e 100644 --- a/tests/integration/test_make.py +++ b/tests/integration/test_make.py @@ -54,7 +54,7 @@ def adapt_configs(config_strings): "selected_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "selected_columns: " ) .replace("input_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "input_columns: ") - .replace("context_length: 48", "context_length: 10") + .replace("stored_width: 49", "stored_width: 11") .replace("max_rows: null", "max_rows: null\nn_cores: 1") ) @@ -88,7 +88,6 @@ def adapt_configs(config_strings): .replace("epochs: 10", "epochs: 3") .replace("device: cuda", "device: cpu") .replace("context_length: 48", "context_length: 10") - .replace("sample_length: 49", "sample_length: 11") .replace("total_steps: PLEASE FILL", "total_steps: 10000") ) @@ -119,7 +118,6 @@ def adapt_configs(config_strings): .replace("[EXAMPLE_INPUT_COLUMN_NAME]", "[itemId]") .replace("[EXAMPLE_TARGET_COLUMN_NAME]", "[itemId]") .replace("context_length: 48", "context_length: 10") - .replace("sample_length: 49", "sample_length: 11") .replace("autoregression: true", "autoregression: false") .replace("EXAMPLE_TARGET_COLUMN_NAME: real", "itemId: categorical") ) diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index d3c0839b..0036de9c 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -4,7 +4,7 @@ import onnxruntime from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.train import TransformerModel @@ -28,10 +28,15 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): real_columns=["real_col"], id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, n_classes={"cat_col": 6}, - layout=SequenceLayout( + storage_layout=StoredWindowLayout( + stored_width=context_length + 1, + future_capacity=1, + version=2, + ), + window_view=ModelWindowView( context_length=context_length, - max_lookahead=1, - sequence_layout_version=2, + objective="bert", + target_shift=0, ), inference_batch_size=inference_batch_size, seed=42, @@ -130,10 +135,15 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): "cat10": {"x": 3, "y": 4, "z": 5}, }, n_classes={"cat2": 7, "cat10": 6}, - layout=SequenceLayout( + storage_layout=StoredWindowLayout( + stored_width=context_length + 1, + future_capacity=1, + version=2, + ), + window_view=ModelWindowView( context_length=context_length, - max_lookahead=1, - sequence_layout_version=2, + objective="causal", + target_shift=1, ), inference_batch_size=inference_batch_size, seed=42, diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 9eeb3069..67508669 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -31,16 +31,15 @@ def test_metadata_config(metadata_configs): "split_paths", "column_types", "selected_columns_statistics", - "context_length", - "max_lookahead", - "sample_length", - "sequence_layout_version", + "stored_width", + "future_capacity", + "stored_window_layout_version", ] for file_name, metadata_config in metadata_configs.items(): print(f"Verifying metadata_config for: {file_name}") assert list(metadata_config.keys()) == expected_metadata_keys - assert metadata_config["sequence_layout_version"] == 2 + assert metadata_config["stored_window_layout_version"] == 2 assert metadata_config["special_token_ids"] == { "[unknown]": 0, "[other]": 1, @@ -273,8 +272,8 @@ def test_preprocessed_data_categorical_lookahead_0(run_preprocessing, project_ro with open(metadata_path, "r") as f: metadata_config = json.load(f) - assert metadata_config["max_lookahead"] == 0 - assert metadata_config["sample_length"] == metadata_config["context_length"] + assert metadata_config["future_capacity"] == 0 + assert metadata_config["stored_width"] == 8 for split in range(3): data = read_preprocessing_outputs( diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json index 03a72927..1ec4aee0 100644 --- a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json +++ b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json @@ -1,8 +1,7 @@ { - "context_length": 8, - "max_lookahead": 1, - "sample_length": 9, - "sequence_layout_version": 2, + "stored_width": 9, + "future_capacity": 1, + "stored_window_layout_version": 2, "selected_columns": null, "data_columns": [ "itemId" diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 3cbe5f33..24ae734b 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -5,24 +5,23 @@ import pytest import torch -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.io.sequifier_dataset_from_folder_parquet_lazy import ( SequifierDatasetFromFolderParquetLazy, ) CONTEXT_LENGTH = 2 -MAX_LOOKAHEAD = 1 -SAMPLE_LENGTH = CONTEXT_LENGTH + MAX_LOOKAHEAD +FUTURE_CAPACITY = 1 +STORED_WIDTH = CONTEXT_LENGTH + FUTURE_CAPACITY def _folder_metadata(total_samples, batch_files): return { "total_samples": total_samples, "batch_files": batch_files, - "context_length": CONTEXT_LENGTH, - "max_lookahead": MAX_LOOKAHEAD, - "sample_length": SAMPLE_LENGTH, - "sequence_layout_version": 2, + "stored_width": STORED_WIDTH, + "future_capacity": FUTURE_CAPACITY, + "stored_window_layout_version": 2, } @@ -31,10 +30,11 @@ def mock_config(): config = MagicMock() config.project_root = "." config.seed = 42 - config.layout = SequenceLayout( - context_length=CONTEXT_LENGTH, - max_lookahead=MAX_LOOKAHEAD, - sequence_layout_version=2, + config.storage_layout = StoredWindowLayout( + stored_width=STORED_WIDTH, future_capacity=FUTURE_CAPACITY, version=2 + ) + config.window_view = ModelWindowView( + context_length=CONTEXT_LENGTH, objective="causal", target_shift=1 ) config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 3eed7bcd..2b62d861 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -4,24 +4,23 @@ import pytest import torch -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.io.sequifier_dataset_from_folder_pt_lazy import ( SequifierDatasetFromFolderPtLazy, ) CONTEXT_LENGTH = 5 -MAX_LOOKAHEAD = 1 -SAMPLE_LENGTH = CONTEXT_LENGTH + MAX_LOOKAHEAD +FUTURE_CAPACITY = 1 +STORED_WIDTH = CONTEXT_LENGTH + FUTURE_CAPACITY def _folder_metadata(total_samples, batch_files): return { "total_samples": total_samples, "batch_files": batch_files, - "context_length": CONTEXT_LENGTH, - "max_lookahead": MAX_LOOKAHEAD, - "sample_length": SAMPLE_LENGTH, - "sequence_layout_version": 2, + "stored_width": STORED_WIDTH, + "future_capacity": FUTURE_CAPACITY, + "stored_window_layout_version": 2, } @@ -35,10 +34,11 @@ def mock_config(tmp_path): config.training_spec.sampling_strategy = "exact" config.training_spec.num_workers = 0 config.seed = 42 - config.layout = SequenceLayout( - context_length=CONTEXT_LENGTH, - max_lookahead=MAX_LOOKAHEAD, - sequence_layout_version=2, + config.storage_layout = StoredWindowLayout( + stored_width=STORED_WIDTH, future_capacity=FUTURE_CAPACITY, version=2 + ) + config.window_view = ModelWindowView( + context_length=CONTEXT_LENGTH, objective="causal", target_shift=1 ) config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index 2b9f6b0e..635669d1 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -4,11 +4,13 @@ import torch from sequifier.helpers import ( + ModelWindowView, + StoredWindowLayout, apply_bert_masking, build_valid_mask, construct_index_maps, numpy_to_pytorch, - slice_window, + resolve_window_view, ) # ========================================== @@ -88,16 +90,16 @@ def test_numpy_to_pytorch_shapes_and_shifting(): column_types = {"A": torch.float32} all_columns = ["A"] - context_length = 3 + resolved_view = resolve_window_view( + StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_shift=1), + ) tensors, metadata = numpy_to_pytorch( data, column_types, all_columns, - context_length, - context_length + 1, - data_offset=1, - target_offset=0, + resolved_view, ) # 1. Check Keys @@ -149,10 +151,10 @@ def test_numpy_to_pytorch_dtypes(): data_int, {"int_col": torch.int64}, ["int_col"], - context_length=1, - sample_length=2, - data_offset=1, - target_offset=0, + resolve_window_view( + StoredWindowLayout(stored_width=2, future_capacity=1, version=2), + ModelWindowView(context_length=1, objective="causal", target_shift=1), + ), ) assert tensors_int["int_col"].dtype == torch.int64 @@ -172,10 +174,10 @@ def test_numpy_to_pytorch_dtypes(): data_float, {"float_col": torch.float32}, ["float_col"], - context_length=1, - sample_length=2, - data_offset=1, - target_offset=0, + resolve_window_view( + StoredWindowLayout(stored_width=2, future_capacity=1, version=2), + ModelWindowView(context_length=1, objective="causal", target_shift=1), + ), ) assert tensors_float["float_col"].dtype == torch.float32 @@ -183,11 +185,15 @@ def test_numpy_to_pytorch_dtypes(): def test_build_valid_mask_from_left_pad_lengths(): left_pad_lengths = torch.tensor([0, 2, 5], dtype=torch.int64) + resolved_view = resolve_window_view( + StoredWindowLayout(stored_width=6, future_capacity=1, version=2), + ModelWindowView(context_length=5, objective="causal", target_shift=1), + ) input_mask = build_valid_mask( - left_pad_lengths, full_length=6, offset=1, context_length=5 + left_pad_lengths, full_length=6, view_slice=resolved_view.input_slice ) target_mask = build_valid_mask( - left_pad_lengths, full_length=6, offset=0, context_length=5 + left_pad_lengths, full_length=6, view_slice=resolved_view.target_slice ) assert torch.equal( @@ -212,15 +218,20 @@ def test_build_valid_mask_from_left_pad_lengths(): ) -def test_slice_window_validates_stored_width(): +def test_resolve_window_view_slices_tensors(): tensor = torch.arange(8).reshape(2, 4) + resolved_view = resolve_window_view( + StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_shift=1), + ) assert torch.equal( - slice_window(tensor, context_length=3, offset=1), + tensor[:, resolved_view.input_slice], torch.tensor([[0, 1, 2], [4, 5, 6]]), ) assert torch.equal( - slice_window(tensor[:, :3], context_length=3, offset=0), tensor[:, :3] + tensor[:, resolved_view.target_slice], + torch.tensor([[1, 2, 3], [5, 6, 7]]), ) @@ -243,10 +254,10 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): data, {"A": torch.float32}, ["A"], - context_length=3, - sample_length=4, - data_offset=1, - target_offset=0, + resolve_window_view( + StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_shift=1), + ), ) assert torch.equal( diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 97ba2fb8..92f86dc3 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -8,7 +8,7 @@ import yaml from sequifier.config.infer_config import InfererModel, load_inferer_config -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.infer import ( Inferer, calculate_item_positions, @@ -174,16 +174,15 @@ def test_infer_config_defaults_bert_prediction_length_to_context_length(): seed=42, device="cpu", prediction_length=None, - layout=SequenceLayout( - context_length=3, max_lookahead=1, sequence_layout_version=2 - ), + storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + window_view=ModelWindowView(context_length=3, objective="bert", target_shift=0), inference_batch_size=2, output_probabilities=False, map_to_id=False, autoregression=False, ) - assert config.prediction_length == config.layout.context_length + assert config.prediction_length == config.window_view.context_length def test_infer_config_defaults_causal_prediction_length_to_one(): @@ -203,8 +202,9 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): seed=42, device="cpu", prediction_length=None, - layout=SequenceLayout( - context_length=3, max_lookahead=1, sequence_layout_version=2 + storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + window_view=ModelWindowView( + context_length=3, objective="causal", target_shift=1 ), inference_batch_size=2, output_probabilities=False, @@ -233,8 +233,11 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): seed=42, device="cpu", prediction_length=1, - layout=SequenceLayout( - context_length=3, max_lookahead=1, sequence_layout_version=2 + storage_layout=StoredWindowLayout( + stored_width=4, future_capacity=1, version=2 + ), + window_view=ModelWindowView( + context_length=3, objective="bert", target_shift=0 ), inference_batch_size=2, output_probabilities=False, @@ -253,10 +256,9 @@ def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_p json.dumps( { "split_paths": [str(data_path)], - "context_length": 3, - "max_lookahead": 1, - "sample_length": 4, - "sequence_layout_version": 2, + "stored_width": 4, + "future_capacity": 1, + "stored_window_layout_version": 2, "column_types": {"target_col": "int64"}, "id_maps": {"target_col": {"A": 3}}, "selected_columns_statistics": {}, @@ -399,9 +401,8 @@ def _bert_inference_config(tmp_path, model_type="generative"): seed=42, device="cpu", prediction_length=None, - layout=SequenceLayout( - context_length=3, max_lookahead=1, sequence_layout_version=2 - ), + storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + window_view=ModelWindowView(context_length=3, objective="bert", target_shift=0), inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -616,8 +617,9 @@ def ar_config(): seed=42, device="cpu", prediction_length=1, - layout=SequenceLayout( - context_length=3, max_lookahead=1, sequence_layout_version=2 + storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + window_view=ModelWindowView( + context_length=3, objective="causal", target_shift=1 ), inference_batch_size=2, output_probabilities=False, diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index a90ae1c8..eb2a6281 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -7,7 +7,7 @@ from pydantic import ValidationError from sequifier.config.preprocess_config import PreprocessorModel -from sequifier.helpers import SequenceLayout +from sequifier.helpers import StoredWindowLayout from sequifier.preprocess import ( Preprocessor, _apply_column_statistics, @@ -61,7 +61,7 @@ def test_extract_subsequences_bert_width(): result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - sample_length=context_length, + stored_width=context_length, stride_for_split=stride, columns=columns, subsequence_start_mode="distribute", @@ -75,14 +75,14 @@ def test_extract_subsequences_bert_width(): def test_extract_subsequences_padding(): """Tests that sequences shorter than context_length are padded with 0s.""" input_data = {"col1": [1, 2]} # Length 2 - sample_length = 5 + stored_width = 5 stride = 1 columns = ["col1"] # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, sample_length, stride, columns, subsequence_start_mode="distribute" + input_data, stored_width, stride, columns, subsequence_start_mode="distribute" ) assert len(result["col1"]) == 1 @@ -93,7 +93,7 @@ def test_extract_subsequences_returns_left_pad_lengths_when_requested(): input_data = {"col1": [0.0, 1.5]} result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - sample_length=5, + stored_width=5, stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -127,7 +127,7 @@ def test_extract_sequences_persists_left_pad_length_metadata(): sequences = extract_sequences( data, schema, - layout=SequenceLayout(4, 1, 2), + layout=StoredWindowLayout(stored_width=5, future_capacity=1, version=2), stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -154,7 +154,7 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): process_and_write_data_pt( data, - sample_length=4, + stored_width=4, path=str(out_path), column_types={"col1": "Float64"}, ) @@ -218,10 +218,9 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): "selected_columns_statistics": { "itemValue": {"mean": 60.0, "std": 10.0} }, - "context_length": 2, - "max_lookahead": 1, - "sample_length": 3, - "sequence_layout_version": 2, + "stored_width": 3, + "future_capacity": 1, + "stored_window_layout_version": 2, "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, } ) @@ -246,7 +245,8 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): merge_output=True, selected_columns=["itemId", "itemValue"], split_ratios=[1.0], - context_length=2, + stored_width=3, + future_capacity=1, stride_by_split=[1], max_rows=None, seed=1010, @@ -383,7 +383,8 @@ def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): merge_output=True, selected_columns=["itemId"], split_ratios=[1.0], - context_length=1, + stored_width=2, + future_capacity=1, stride_by_split=[1], max_rows=None, seed=1010, @@ -412,7 +413,8 @@ def test_preprocessor_config_defaults_mask_column_to_none(tmp_path): project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - context_length=1, + stored_width=2, + future_capacity=1, seed=1010, ) @@ -440,7 +442,8 @@ def test_preprocessor_config_requires_metadata_config_for_mask_column( project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - context_length=1, + stored_width=2, + future_capacity=1, seed=1010, mask_column=RESERVED_MASK_COLUMN, ) @@ -454,14 +457,14 @@ def test_extract_subsequences_modes(mode): # exact: strictly adheres to stride, throws error if misalignment. input_data = {"col1": list(range(10))} context_length = 2 - sample_length = context_length + 1 + stored_width = context_length + 1 columns = ["col1"] if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, sample_length, stride, columns, mode + input_data, stored_width, stride, columns, mode ) assert len(result["col1"]) > 0 @@ -471,13 +474,13 @@ def test_extract_subsequences_modes(mode): ) # Testing a failing exact case with pytest.raises(ValueError): - extract_subsequences(input_data, sample_length, 4, columns, mode) + extract_subsequences(input_data, stored_width, 4, columns, mode) # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data_exact, sample_length, 4, columns, mode + input_data_exact, stored_width, 4, columns, mode ) assert len(result["col1"]) > 0 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index f6bedbc4..42be51f8 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -15,7 +15,7 @@ TrainModel, load_train_config, ) -from sequifier.helpers import SequenceLayout +from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.special_tokens import SPECIAL_TOKEN_IDS from sequifier.train import TransformerModel @@ -77,7 +77,7 @@ def test_training_spec_model_dump_excludes_runtime_offsets(): assert "data_offset" not in dumped assert "target_offset" not in dumped - assert "sample_length" not in dumped + assert "stored_width" not in dumped assert "max_lookahead" not in dumped @@ -136,8 +136,11 @@ def model_config(tmp_path): # id_maps is needed for constructing index_maps in model init id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, n_classes={"cat_col": 5}, # 0 + 4 classes - layout=SequenceLayout( - context_length=10, max_lookahead=1, sequence_layout_version=2 + storage_layout=StoredWindowLayout( + stored_width=11, future_capacity=1, version=2 + ), + window_view=ModelWindowView( + context_length=10, objective="causal", target_shift=1 ), inference_batch_size=4, seed=42, @@ -166,12 +169,17 @@ def causal_model(model_config): def bert_model(model_config): config_values = model_config.model_dump() config_values["model_spec"]["prediction_length"] = ( - model_config.layout.context_length + model_config.window_view.context_length ) config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), ) + config_values["window_view"] = { + **config_values["window_view"], + "objective": "bert", + "target_shift": 0, + } config = TrainModel(**config_values) return TransformerModel(config) @@ -221,12 +229,17 @@ def test_train_model_requires_bert_prediction_length_to_equal_context_length( ): config_values = model_config.model_dump() config_values["model_spec"]["prediction_length"] = ( - model_config.layout.context_length - 1 + model_config.window_view.context_length - 1 ) config_values["training_spec"] = _training_spec_kwargs( training_objective="bert", bert_spec=_bert_spec(), ) + config_values["window_view"] = { + **config_values["window_view"], + "objective": "bert", + "target_shift": 0, + } with pytest.raises(ValidationError, match="prediction_length must be equal"): TrainModel(**config_values) @@ -252,16 +265,17 @@ def test_load_train_config_rejects_mismatched_metadata_special_token_ids( config_values = model_config.model_dump() config_values["project_root"] = str(tmp_path) config_values["metadata_config_path"] = metadata_path.name - layout = config_values["layout"] + storage_layout = config_values.pop("storage_layout") + config_values.pop("window_view") + config_values["context_length"] = model_config.window_view.context_length config_path.write_text(yaml.safe_dump(config_values)) metadata_path.write_text( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "context_length": layout["context_length"], - "max_lookahead": layout["max_lookahead"], - "sample_length": layout["context_length"] + layout["max_lookahead"], - "sequence_layout_version": layout["sequence_layout_version"], + "stored_width": storage_layout["stored_width"], + "future_capacity": storage_layout["future_capacity"], + "stored_window_layout_version": storage_layout["version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -286,16 +300,17 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( config_values = model_config.model_dump() config_values["project_root"] = str(tmp_path) config_values["metadata_config_path"] = metadata_path.name - layout = config_values["layout"] + storage_layout = config_values.pop("storage_layout") + config_values.pop("window_view") + config_values["context_length"] = model_config.window_view.context_length config_path.write_text(yaml.safe_dump(config_values)) metadata_path.write_text( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "context_length": layout["context_length"], - "max_lookahead": layout["max_lookahead"], - "sample_length": layout["context_length"] + layout["max_lookahead"], - "sequence_layout_version": layout["sequence_layout_version"], + "stored_width": storage_layout["stored_width"], + "future_capacity": storage_layout["future_capacity"], + "stored_window_layout_version": storage_layout["version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], @@ -312,7 +327,7 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.layout.context_length + seq_len = model_config.window_view.context_length # Create dummy inputs # Categorical: (batch, seq_len) integers @@ -343,7 +358,7 @@ def test_forward_train_shapes(model, model_config): def test_forward_inference_shapes(model, model_config): """Tests the output shapes of the forward (inference) method.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.layout.context_length + seq_len = model_config.window_view.context_length prediction_length = model_config.model_spec.prediction_length # 1 x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -376,7 +391,7 @@ def test_forward_inference_shapes(model, model_config): def test_calculate_loss(model, model_config): """Tests that loss calculation returns a scalar tensor.""" batch_size = model_config.training_spec.batch_size - seq_len = model_config.layout.context_length + seq_len = model_config.window_view.context_length # Inputs x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) @@ -465,7 +480,7 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): def test_padding_keys_are_masked(bert_model): - seq_len = bert_model.layout.context_length + seq_len = bert_model.window_view.context_length valid_mask = torch.ones( 2, @@ -494,7 +509,7 @@ def test_padding_keys_are_masked(bert_model): def test_causal_and_padding_masks_are_combined(causal_model): - seq_len = causal_model.layout.context_length + seq_len = causal_model.window_view.context_length valid_mask = torch.ones( 1, From 6da8f270d456f503b8712f0a436815d8a0db5bbc Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 15:42:02 +0200 Subject: [PATCH 52/81] Rename params --- README.md | 2 +- documentation/configs/preprocess.md | 8 +- documentation/configs/train.md | 2 +- documentation/consolidated-docs.md | 12 +-- .../config/hyperparameter_search_config.py | 10 +-- src/sequifier/config/infer_config.py | 12 +-- src/sequifier/config/preprocess_config.py | 16 ++-- src/sequifier/config/train_config.py | 20 +++-- src/sequifier/helpers.py | 75 +++++++++-------- src/sequifier/hyperparameter_search.py | 2 +- src/sequifier/infer.py | 10 ++- .../sequifier_dataset_from_folder_parquet.py | 4 +- ...uifier_dataset_from_folder_parquet_lazy.py | 4 +- .../io/sequifier_dataset_from_folder_pt.py | 2 +- .../sequifier_dataset_from_folder_pt_lazy.py | 4 +- src/sequifier/make.py | 4 +- src/sequifier/preprocess.py | 82 +++++++++++-------- .../preprocess-test-categorical-exact-pt.yaml | 4 +- .../preprocess-test-categorical-exact.yaml | 4 +- ...eprocess-test-categorical-interrupted.yaml | 4 +- ...eprocess-test-categorical-lookahead-0.yaml | 4 +- ...eprocess-test-categorical-multitarget.yaml | 4 +- ...ategorical-precomputed-stats-negative.yaml | 4 +- ...ss-test-categorical-precomputed-stats.yaml | 4 +- .../configs/preprocess-test-categorical.yaml | 4 +- tests/configs/preprocess-test-multi-file.yaml | 4 +- tests/configs/preprocess-test-real.yaml | 4 +- .../integration/test_hyperparameter_search.py | 2 +- tests/integration/test_make.py | 2 +- tests/integration/test_onnx_export.py | 12 +-- tests/integration/test_preprocessing.py | 8 +- .../preprocess-manifest.json | 4 +- ...uifier_dataset_from_folder_parquet_lazy.py | 8 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 8 +- tests/unit/test_helpers.py | 24 +++--- tests/unit/test_infer.py | 36 +++++--- tests/unit/test_preprocess.py | 46 ++++++----- tests/unit/test_train.py | 20 ++--- 38 files changed, 264 insertions(+), 215 deletions(-) diff --git a/README.md b/README.md index 183d05bd..10cb0085 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_width` and `future_capacity`; training and inference choose the model-facing `context_length` from that stored capacity: +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_context_width` and `max_target_offset`; training and inference choose the model-facing `context_length` from that stored capacity: |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index a9ee943e..8837d3f0 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -45,10 +45,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `stored_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | -| `future_capacity` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | +| `stored_context_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | +| `max_target_offset` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[stored_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[stored_context_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -76,7 +76,7 @@ This controls data augmentation and redundancy. * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_width: 49`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_context_width: 49`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` diff --git a/documentation/configs/train.md b/documentation/configs/train.md index 4a66e7ca..63d986d1 100644 --- a/documentation/configs/train.md +++ b/documentation/configs/train.md @@ -30,7 +30,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_width` with the stored `future_capacity`. | +| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_context_width` with the stored `max_target_offset`. | ### 3\. Model Architecture (`model_spec`) diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index d8a0b1a6..c02aa5bf 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -97,7 +97,7 @@ Let's start with the data format expected by sequifier. The basic data format th The two columns "sequenceId" and "itemPosition" have to be present, and then there must be at least one feature column. There can also be many feature columns, and these can be categorical or real valued. -Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_width` and `future_capacity`; training and inference choose the model-facing `context_length` from that stored capacity: +Data of this input format can be transformed into the format that is used for model training and inference using `sequifier preprocess`. Preprocessing defines the physical `stored_context_width` and `max_target_offset`; training and inference choose the model-facing `context_length` from that stored capacity: |sequenceId|subsequenceId|startItemPosition|leftPadLength|inputCol|[Window Length - 1]|[Window Length - 2]|...|0| |----------|-------------|-----------------|-------------|--------|-------------------|-------------------| - |-| @@ -253,10 +253,10 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | -| `stored_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | -| `future_capacity` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | +| `stored_context_width` | `int` | **Yes** | - | The physical serialized window width written to preprocessed data. | +| `max_target_offset` | `int` | No | `1` | Number of future items retained after the model input window. Use `0` for BERT-style same-width inputs and targets; use `1` for causal next-item training. | | `split_ratios` | `list[float]`| **Yes** | - | Proportions for data splits (e.g., `[0.8, 0.1, 0.1]` for train/val/test). Must sum to 1.0. | -| `stride_by_split` | `list[int]` | No | `[stored_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | +| `stride_by_split` | `list[int]` | No | `[stored_context_width]*N` | The step size used to slide the window for each split. Corresponds to `split_ratios`. | | `subsequence_start_mode`| `str` | No | `distribute` | Strategy for selecting start indices (`distribute` or `exact`). | ### 4\. Performance & System @@ -284,7 +284,7 @@ This controls data augmentation and redundancy. * **Stride = `context_length` (Non-overlapping):** The model sees every data point exactly once as a target. Training is faster, but the model might miss patterns that cross the window boundary. * **Stride = 1 (Maximum Overlap):** Maximizes data volume. The model sees every possible sequence. This yields the highest accuracy but significantly increases the size of the preprocessed data and training time. * **Hybrid Approach:** It is common practice to set a large stride for the training and validation splits (index 0) to reduce the size on disk of the dataset, and a stride=1 for the test split to evaluate the model on each point in the test set. This supposes that the test split value is low. - * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_width: 49`). + * *Example:* `stride_by_split: [24, 24, 1]` (assuming `stored_context_width: 49`). ### 3\. `subsequence_start_mode`: `distribute` vs `exact` @@ -379,7 +379,7 @@ The configuration is defined in a YAML file (e.g., `train.yaml`). The file is st | `target_columns` | `list[str]`| **Yes** | - | The specific column(s) the model should learn to predict. | | `target_column_types`| `dict` | **Yes** | - | Map of target columns to their type: `'categorical'` or `'real'`. The key order in target_column_types must exactly match the list order in target_columns | | `input_columns` | `list[str]`| No | All | Subset of columns to use as input features. Defaults to all available in metadata. | -| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_width` with the stored `future_capacity`. | +| `context_length` | `int` | **Yes** | - | Model input context length. It must fit inside the metadata `stored_context_width` with the stored `max_target_offset`. | ### 3\. Model Architecture (`model_spec`) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index f097e507..b93c8ea5 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -740,12 +740,12 @@ class HyperparameterSearchConfig(BaseModel): def validate_sequence_layout(self): for cl in self.context_length: if ( - cl + self.storage_layout.future_capacity - > self.storage_layout.stored_width + cl + self.storage_layout.max_target_offset + > self.storage_layout.stored_context_width ): raise ValueError( - f"Window capacity mismatch: context_length ({cl}) + future_capacity " - f"({self.storage_layout.future_capacity}) > stored_width ({self.storage_layout.stored_width}). " + f"Window capacity mismatch: context_length ({cl}) + max_target_offset " + f"({self.storage_layout.max_target_offset}) > stored_context_width ({self.storage_layout.stored_context_width}). " "Model inputs cannot exceed the preprocessed sequence length." ) return self @@ -859,7 +859,7 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: window_view = ModelWindowView( context_length=context_length, objective=training_spec.training_objective, - target_shift=0 if training_spec.training_objective == "bert" else 1, + target_offset=0 if training_spec.training_objective == "bert" else 1, ) resolve_window_view(self.storage_layout, window_view) diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 77deaee1..84fa6e8e 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -65,23 +65,23 @@ def load_inferer_config( f"got {storage_layout.version}." ) training_objective = config_values["training_objective"] - target_shift = ( + target_offset = ( 0 if training_objective == "bert" - else int(config_values.pop("target_shift", 1)) + else int(config_values.pop("target_offset", 1)) ) window_view = ModelWindowView( context_length=int(config_values.pop("context_length")), objective=training_objective, - target_shift=target_shift, + target_offset=target_offset, ) resolve_window_view(storage_layout, window_view) config_values["storage_layout"] = storage_layout config_values["window_view"] = window_view for key in ( - "target_shift", - "stored_width", - "future_capacity", + "target_offset", + "stored_context_width", + "max_target_offset", "stored_window_layout_version", ): config_values.pop(key, None) diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index da53eb8b..5745ead0 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -54,8 +54,8 @@ class PreprocessorModel(BaseModel): selected_columns: A list of columns to be included in the preprocessing. If None, all columns are used. split_ratios: A list of floats that define the relative sizes of data splits (e.g., for train, validation, test). The sum of proportions must be 1.0. - stored_width: The physical serialized window width. - future_capacity: The number of future items retained after the input window. + stored_context_width: The physical serialized window width. + max_target_offset: The number of future items retained after the input window. stride_by_split: A list of step sizes for creating subsequences within each data split. max_rows: The maximum number of input rows to process. If None, all rows are processed. seed: A random seed for reproducibility. @@ -78,8 +78,8 @@ class PreprocessorModel(BaseModel): selected_columns: Optional[list[str]] = None split_ratios: list[float] - stored_width: int = Field(gt=0) - future_capacity: int = Field(default=1, ge=0) + stored_context_width: int = Field(gt=0) + max_target_offset: int = Field(default=1, ge=0) stride_by_split: Optional[list[int]] = None max_rows: Optional[int] = None seed: int @@ -194,12 +194,14 @@ def validate_mask_column_requires_metadata(self) -> "PreprocessorModel": raise ValueError("metadata_config_path must be set when mask_column is set") if self.mask_column in ("sequenceId", "itemPosition"): raise ValueError("mask_column cannot be sequenceId or itemPosition") - if self.future_capacity >= self.stored_width: - raise ValueError("future_capacity must be smaller than stored_width") + if self.max_target_offset >= self.stored_context_width: + raise ValueError( + "max_target_offset must be smaller than stored_context_width" + ) return self def __init__(self, **kwargs): - default_stride_for_split = [kwargs["stored_width"]] * len( + default_stride_for_split = [kwargs["stored_context_width"]] * len( kwargs["split_ratios"] ) kwargs["stride_by_split"] = kwargs.get( diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 34409a69..b8886d71 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -72,29 +72,33 @@ def load_train_config( f"got {storage_layout.version}." ) training_objective = config_values["training_spec"]["training_objective"] - target_shift = ( + target_offset = ( 0 if training_objective == "bert" - else int(config_values.pop("target_shift", 1)) + else int(config_values.pop("target_offset", 1)) ) window_view = ModelWindowView( context_length=int(config_values.pop("context_length")), objective=training_objective, - target_shift=target_shift, + target_offset=target_offset, ) resolve_window_view(storage_layout, window_view) config_values["storage_layout"] = storage_layout config_values["window_view"] = window_view - for key in ("stored_width", "future_capacity", "stored_window_layout_version"): + for key in ( + "stored_context_width", + "max_target_offset", + "stored_window_layout_version", + ): config_values.pop(key, None) for key in ( - "target_shift", - "stored_width", - "future_capacity", + "target_offset", + "stored_context_width", + "max_target_offset", "stored_window_layout_version", ): config_values.pop(key, None) - for key in ("target_shift", "stored_width", "future_capacity"): + for key in ("target_offset", "stored_context_width", "max_target_offset"): config_values.get("training_spec", {}).pop(key, None) split_paths = metadata_config["split_paths"] diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index a94967f1..5f3a52fb 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -45,24 +45,26 @@ @dataclass(frozen=True) class StoredWindowLayout: - stored_width: int - future_capacity: int + stored_context_width: int + max_target_offset: int version: int def __post_init__(self) -> None: - if self.stored_width < 1: - raise ValueError("stored_width must be a positive integer") - if self.future_capacity < 0: - raise ValueError("future_capacity must be non-negative") - if self.future_capacity >= self.stored_width: - raise ValueError("future_capacity must be smaller than stored_width") + if self.stored_context_width < 1: + raise ValueError("stored_context_width must be a positive integer") + if self.max_target_offset < 0: + raise ValueError("max_target_offset must be non-negative") + if self.max_target_offset >= self.stored_context_width: + raise ValueError( + "max_target_offset must be smaller than stored_context_width" + ) @dataclass(frozen=True) class ModelWindowView: context_length: int objective: str - target_shift: int = 1 + target_offset: int def __post_init__(self) -> None: if self.context_length < 1: @@ -71,12 +73,12 @@ def __post_init__(self) -> None: raise ValueError( f"Only 'causal' and 'bert' are allowed, found {self.objective}" ) - if self.target_shift < 0: - raise ValueError("target_shift must be non-negative") - if self.objective == "bert" and self.target_shift != 0: - raise ValueError("BERT views require target_shift=0") - if self.objective == "causal" and self.target_shift < 1: - raise ValueError("Causal views require target_shift >= 1") + if self.target_offset < 0: + raise ValueError("target_offset must be non-negative") + if self.objective == "bert" and self.target_offset != 0: + raise ValueError("BERT views require target_offset=0") + if self.objective == "causal" and self.target_offset < 1: + raise ValueError("Causal views require target_offset >= 1") @dataclass(frozen=True) @@ -91,10 +93,10 @@ def build_masks(self, left_pad_lengths: Tensor) -> dict[str, Tensor]: """Build explicit input-attention and target-validity masks for this view.""" return { "attention_valid_mask": build_valid_mask( - left_pad_lengths, self.storage.stored_width, self.input_slice + left_pad_lengths, self.storage.stored_context_width, self.input_slice ), "target_valid_mask": build_valid_mask( - left_pad_lengths, self.storage.stored_width, self.target_slice + left_pad_lengths, self.storage.stored_context_width, self.target_slice ), } @@ -110,19 +112,19 @@ def _right_aligned_slice(width: int, length: int, offset: int) -> slice: def resolve_window_view( storage: StoredWindowLayout, view: ModelWindowView ) -> ResolvedWindowView: - if view.target_shift > storage.future_capacity: + if view.target_offset > storage.max_target_offset: raise ValueError( - f"Model target_shift={view.target_shift} exceeds stored " - f"future_capacity={storage.future_capacity}." + f"Model target_offset={view.target_offset} exceeds stored " + f"max_target_offset={storage.max_target_offset}." ) - input_offset = storage.future_capacity - target_offset = storage.future_capacity - view.target_shift + input_offset = storage.max_target_offset + target_offset = storage.max_target_offset - view.target_offset required_width = view.context_length + max(input_offset, target_offset) - if required_width > storage.stored_width: + if required_width > storage.stored_context_width: raise ValueError( f"Model view requires width {required_width}, but storage only has " - f"stored_width={storage.stored_width}." + f"stored_context_width={storage.stored_context_width}." ) return ResolvedWindowView( @@ -130,28 +132,28 @@ def resolve_window_view( view=view, required_width=required_width, input_slice=_right_aligned_slice( - storage.stored_width, view.context_length, input_offset + storage.stored_context_width, view.context_length, input_offset ), target_slice=_right_aligned_slice( - storage.stored_width, view.context_length, target_offset + storage.stored_context_width, view.context_length, target_offset ), ) @beartype -def validate_stored_window_width(tensor: Tensor, stored_width: int) -> None: - if tensor.shape[1] != stored_width: +def validate_stored_window_width(tensor: Tensor, stored_context_width: int) -> None: + if tensor.shape[1] != stored_context_width: raise ValueError( f"Stored window width {tensor.shape[1]} does not match " - f"metadata stored_width={stored_width}." + f"metadata stored_context_width={stored_context_width}." ) @beartype def stored_window_layout_from_metadata(metadata: dict) -> StoredWindowLayout: return StoredWindowLayout( - stored_width=int(metadata["stored_width"]), - future_capacity=int(metadata["future_capacity"]), + stored_context_width=int(metadata["stored_context_width"]), + max_target_offset=int(metadata["max_target_offset"]), version=int(metadata["stored_window_layout_version"]), ) @@ -389,10 +391,10 @@ def numpy_to_pytorch( - a metadata dictionary containing any explicit masks. """ input_seq_cols = columns_from_slice( - resolved_view.input_slice, resolved_view.storage.stored_width + resolved_view.input_slice, resolved_view.storage.stored_context_width ) target_seq_cols = columns_from_slice( - resolved_view.target_slice, resolved_view.storage.stored_width + resolved_view.target_slice, resolved_view.storage.stored_context_width ) # We will create a unified dictionary @@ -441,10 +443,13 @@ def build_valid_mask( @beartype -def columns_from_slice(view_slice: slice, stored_width: int) -> list[str]: +def columns_from_slice(view_slice: slice, stored_context_width: int) -> list[str]: if view_slice.start is None or view_slice.stop is None: raise ValueError("Resolved window slices must have concrete bounds") - return [str(stored_width - 1 - i) for i in range(view_slice.start, view_slice.stop)] + return [ + str(stored_context_width - 1 - i) + for i in range(view_slice.start, view_slice.stop) + ] @beartype diff --git a/src/sequifier/hyperparameter_search.py b/src/sequifier/hyperparameter_search.py index d39028cb..0fe83532 100644 --- a/src/sequifier/hyperparameter_search.py +++ b/src/sequifier/hyperparameter_search.py @@ -61,7 +61,7 @@ def objective(trial: optuna.Trial, config) -> Union[float, tuple[float, ...]]: run_config_dict = run_config.model_dump() run_config_dict["context_length"] = run_config_dict["window_view"]["context_length"] - run_config_dict["target_shift"] = run_config_dict["window_view"]["target_shift"] + run_config_dict["target_offset"] = run_config_dict["window_view"]["target_offset"] del run_config_dict["window_view"] del run_config_dict["storage_layout"] diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 804eca47..18a8c3ad 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -492,7 +492,9 @@ def infer_embedding( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.storage_layout.stored_width) + validate_stored_window_width( + tensor, config.storage_layout.stored_context_width + ) resolved_view = resolve_window_view( config.storage_layout, config.window_view @@ -746,7 +748,9 @@ def infer_generative( left_pad_lengths_tensor, ) = data for tensor in sequences_dict.values(): - validate_stored_window_width(tensor, config.storage_layout.stored_width) + validate_stored_window_width( + tensor, config.storage_layout.stored_context_width + ) total_steps = ( 1 if config.autoregression_total_steps is None @@ -946,7 +950,7 @@ def get_embeddings_pt( """ resolved_view = resolve_window_view(config.storage_layout, config.window_view) for tensor in data.values(): - validate_stored_window_width(tensor, config.storage_layout.stored_width) + validate_stored_window_width(tensor, config.storage_layout.stored_context_width) X = { key: val[:, resolved_view.input_slice].numpy() for key, val in data.items() diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 24fe6e12..e1d060a7 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -65,10 +65,10 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): # Sequence formatting structures matching long-format schema boundaries input_seq_cols = columns_from_slice( - self.resolved_view.input_slice, self.folder_layout.stored_width + self.resolved_view.input_slice, self.folder_layout.stored_context_width ) target_seq_cols = columns_from_slice( - self.resolved_view.target_slice, self.folder_layout.stored_width + self.resolved_view.target_slice, self.folder_layout.stored_context_width ) all_sequences: Dict[str, list[torch.Tensor]] = { col: [] for col in config.input_columns diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 7f2e5bcc..06ee64bb 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -218,10 +218,10 @@ def __iter__( global_file_start_sample = 0 input_seq_cols = columns_from_slice( - self.resolved_view.input_slice, self.folder_layout.stored_width + self.resolved_view.input_slice, self.folder_layout.stored_context_width ) target_seq_cols = columns_from_slice( - self.resolved_view.target_slice, self.folder_layout.stored_width + self.resolved_view.target_slice, self.folder_layout.stored_context_width ) # Initialize cross-file buffers diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index e60ea981..a3f93d73 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -73,7 +73,7 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in all_sequences.keys(): if col in sequences_batch: validate_stored_window_width( - sequences_batch[col], self.folder_layout.stored_width + sequences_batch[col], self.folder_layout.stored_context_width ) all_sequences[col].append(sequences_batch[col]) all_left_pad_lengths.append(left_pad_lengths_batch) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index df67ee66..f11fe985 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -238,7 +238,9 @@ def __iter__( left_pad_lengths_batch, ) = torch.load(file_path, map_location="cpu", weights_only=False) for tensor in sequences_batch.values(): - validate_stored_window_width(tensor, self.folder_layout.stored_width) + validate_stored_window_width( + tensor, self.folder_layout.stored_context_width + ) # Generate indices for the whole file indices = torch.arange(file_samples) diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 79d5cc42..5b7da268 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -11,8 +11,8 @@ - 0.8 - 0.1 - 0.1 -stored_width: 49 -future_capacity: 1 +stored_context_width: 49 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 4172ce18..9f8964f7 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -86,7 +86,7 @@ def __init__( merge_output: bool, selected_columns: Optional[list[str]], split_ratios: list[float], - stored_width: int, + stored_context_width: int, stride_by_split: list[int], max_rows: Optional[int], seed: int, @@ -96,7 +96,7 @@ def __init__( subsequence_start_mode: str, use_precomputed_maps: Optional[list[str]], metadata_config_path: Optional[str], - future_capacity: int = 1, + max_target_offset: int = 1, mask_column: Optional[str] = None, ): """Initializes the Preprocessor with the given parameters. @@ -109,8 +109,8 @@ def __init__( merge_output: Whether to combine the output into a single file. selected_columns: A list of columns to be included in the preprocessing. split_ratios: A list of floats that define the relative sizes of data splits. - stored_width: The physical serialized window width. - future_capacity: The number of future items retained after each input window. + stored_context_width: The physical serialized window width. + max_target_offset: The number of future items retained after each input window. stride_by_split: A list of step sizes for creating subsequences. max_rows: The maximum number of input rows to process. seed: A random seed for reproducibility. @@ -146,8 +146,8 @@ def __init__( self.n_cores = n_cores or multiprocessing.cpu_count() self.continue_preprocessing = continue_preprocessing self.storage_layout = StoredWindowLayout( - stored_width=stored_width, - future_capacity=future_capacity, + stored_context_width=stored_context_width, + max_target_offset=max_target_offset, version=CURRENT_STORED_WINDOW_LAYOUT_VERSION, ) self._setup_directories() @@ -251,7 +251,9 @@ def __init__( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, self.storage_layout.stored_width) + schema = self._create_schema( + col_types, self.storage_layout.stored_context_width + ) data = data.sort(["sequenceId", "itemPosition"]) n_batches = _process_batches_single_file( @@ -347,7 +349,9 @@ def __init__( self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics ) - schema = self._create_schema(col_types, self.storage_layout.stored_width) + schema = self._create_schema( + col_types, self.storage_layout.stored_context_width + ) self._process_batches_multiple_files( files_to_process, @@ -373,7 +377,7 @@ def __init__( @beartype def _create_schema( - self, col_types: dict[str, str], stored_width: int + self, col_types: dict[str, str], stored_context_width: int ) -> dict[str, Any]: """Creates the Polars schema for the intermediate sequence DataFrame. @@ -385,7 +389,7 @@ def _create_schema( Args: col_types: A dictionary mapping data column names to their Polars string representations (e.g., "Int64", "Float64"). - stored_width: The number of items stored for each extracted window. + stored_context_width: The number of items stored for each extracted window. Returns: A dictionary defining the Polars schema. Keys are column names @@ -415,7 +419,10 @@ def _create_schema( sequence_position_type = pl.Float64 schema.update( - {str(i): sequence_position_type for i in range(stored_width - 1, -1, -1)} + { + str(i): sequence_position_type + for i in range(stored_context_width - 1, -1, -1) + } ) return schema @@ -817,8 +824,8 @@ def _cleanup(self, write_format: str) -> None: @beartype def _layout_metadata(self) -> dict[str, int]: return { - "stored_width": self.storage_layout.stored_width, - "future_capacity": self.storage_layout.future_capacity, + "stored_context_width": self.storage_layout.stored_context_width, + "max_target_offset": self.storage_layout.max_target_offset, "stored_window_layout_version": self.storage_layout.version, } @@ -1901,7 +1908,7 @@ def get_group_bounds(data_subset: pl.DataFrame, split_ratios: list[float]): @beartype def process_and_write_data_pt( data: pl.DataFrame, - stored_width: int, + stored_context_width: int, path: str, column_types: dict[str, str], ): @@ -1914,13 +1921,13 @@ def process_and_write_data_pt( It then converts these lists into NumPy arrays and stores one full sequence tensor per feature. Each tensor has shape - `(batch_size, stored_width)`. The final five-element tuple + `(batch_size, stored_context_width)`. The final five-element tuple `(sequences_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, left_pad_lengths_tensor)` is saved to a .pt file using `torch.save`. Args: data: The long-format Polars DataFrame of extracted sequences. - stored_width: The stored serialized window width. + stored_context_width: The stored serialized window width. path: The output file path (e.g., "data/batch_0.pt"). column_types: A dictionary mapping column names to their string data types, used to determine the correct torch dtype. @@ -1928,7 +1935,7 @@ def process_and_write_data_pt( if data.is_empty(): return - sequence_cols = [str(c) for c in range(stored_width - 1, -1, -1)] + sequence_cols = [str(c) for c in range(stored_context_width - 1, -1, -1)] all_feature_cols = data.get_column("inputCol").unique().to_list() @@ -2028,7 +2035,9 @@ def _write_accumulated_sequences( out_path = insert_top_folder(split_path_batch_seq, target_dir) if write_format == "pt": - process_and_write_data_pt(combined_df, layout.stored_width, out_path, col_types) + process_and_write_data_pt( + combined_df, layout.stored_context_width, out_path, col_types + ) elif write_format == "parquet": combined_df.write_parquet(out_path) @@ -2222,7 +2231,7 @@ def extract_sequences( subsequences, left_pad_lengths, subsequence_starts = extract_subsequences( in_seq_lists_only, - layout.stored_width, + layout.stored_context_width, stride_for_split, columns, subsequence_start_mode, @@ -2238,7 +2247,7 @@ def extract_sequences( left_pad_lengths[subsequence_id], col, ] + subseqs[subsequence_id] - expected_row_length = 5 + layout.stored_width + expected_row_length = 5 + layout.stored_context_width if len(row) != expected_row_length: raise RuntimeError( f"Row length mismatch. Expected {expected_row_length}, got {len(row)}. Row: {row}" @@ -2256,21 +2265,21 @@ def extract_sequences( @beartype def get_subsequence_starts( in_context_length: int, - stored_width: int, + stored_context_width: int, stride_for_split: int, subsequence_start_mode: str, ) -> np.ndarray: """Calculates the start indices for extracting subsequences. This function determines the starting indices for sliding a window of - `stored_width` over an input sequence of `in_context_length`. It aims to + `stored_context_width` over an input sequence of `in_context_length`. It aims to use `stride_for_split`, but adjusts the step size slightly to ensure that the windows are distributed as evenly as possible and cover the full sequence from the beginning to the end. Args: in_context_length: The length of the original input sequence. - stored_width: The stored window length to extract. + stored_context_width: The stored window length to extract. stride_for_split: The *desired* step size between subsequences. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2283,7 +2292,7 @@ def get_subsequence_starts( ) if subsequence_start_mode == "distribute": - last_available_start = in_context_length - stored_width + last_available_start = in_context_length - stored_context_width raw_starts = np.arange( 0, last_available_start + stride_for_split, stride_for_split ) @@ -2294,11 +2303,11 @@ def get_subsequence_starts( return np.unique(starts) if subsequence_start_mode == "exact": - if (in_context_length - stored_width) % stride_for_split != 0: + if (in_context_length - stored_context_width) % stride_for_split != 0: raise ValueError( - f"'exact' mode requires sequence length alignment, i.e. if: (in_context_length - stored_width) % stride_for_split == 0, {in_context_length = }, {stored_width = }, {stride_for_split = }" + f"'exact' mode requires sequence length alignment, i.e. if: (in_context_length - stored_context_width) % stride_for_split == 0, {in_context_length = }, {stored_context_width = }, {stride_for_split = }" ) - last_possible_start = in_context_length - stored_width + last_possible_start = in_context_length - stored_context_width return np.arange(0, last_possible_start + 1, stride_for_split) return np.array([]) @@ -2306,7 +2315,7 @@ def get_subsequence_starts( @beartype def extract_subsequences( in_seq: dict[str, list], - stored_width: int, + stored_context_width: int, stride_for_split: int, columns: list[str], subsequence_start_mode: str, @@ -2316,14 +2325,14 @@ def extract_subsequences( This function takes a dictionary `in_seq` where keys are column names and values are lists of items for a single full sequence. It first pads the sequences with 0s at the beginning if they are - shorter than `stored_width`. Then, it calculates the subsequence + shorter than `stored_context_width`. Then, it calculates the subsequence start indices using `get_subsequence_starts` and extracts all subsequences. Args: in_seq: A dictionary mapping column names to lists of items (e.g., `{'col_A': [1, 2, 3, 4, 5], 'col_B': [6, 7, 8, 9, 10]}`). - stored_width: The stored window length to extract. + stored_context_width: The stored window length to extract. stride_for_split: The desired step size between subsequences. columns: A list of the column names (keys in `in_seq`) to process. subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". @@ -2334,13 +2343,16 @@ def extract_subsequences( """ in_seq_len = len(in_seq[columns[0]]) pad_len = 0 - if in_seq_len < stored_width: - pad_len = stored_width - in_seq_len + if in_seq_len < stored_context_width: + pad_len = stored_context_width - in_seq_len in_seq = {col: ([0] * pad_len) + in_seq[col] for col in columns} in_context_length = len(in_seq[columns[0]]) subsequence_starts = get_subsequence_starts( - in_context_length, stored_width, stride_for_split, subsequence_start_mode + in_context_length, + stored_context_width, + stride_for_split, + subsequence_start_mode, ) subsequence_starts_diff = subsequence_starts[1:] - subsequence_starts[:-1] if not np.all(subsequence_starts_diff <= stride_for_split): @@ -2349,7 +2361,9 @@ def extract_subsequences( ) result = { - col: [list(in_seq[col][i : i + stored_width]) for i in subsequence_starts] + col: [ + list(in_seq[col][i : i + stored_context_width]) for i in subsequence_starts + ] for col in columns } left_pad_lengths = [pad_len] * len(subsequence_starts) diff --git a/tests/configs/preprocess-test-categorical-exact-pt.yaml b/tests/configs/preprocess-test-categorical-exact-pt.yaml index 0d6f82c1..2e233b9b 100644 --- a/tests/configs/preprocess-test-categorical-exact-pt.yaml +++ b/tests/configs/preprocess-test-categorical-exact-pt.yaml @@ -7,8 +7,8 @@ selected_columns: null split_ratios: - 1.0 -stored_width: 6 -future_capacity: 1 +stored_context_width: 6 +max_target_offset: 1 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-exact.yaml b/tests/configs/preprocess-test-categorical-exact.yaml index b448ef32..3e58bef4 100644 --- a/tests/configs/preprocess-test-categorical-exact.yaml +++ b/tests/configs/preprocess-test-categorical-exact.yaml @@ -7,8 +7,8 @@ selected_columns: null split_ratios: - 1.0 -stored_width: 6 -future_capacity: 1 +stored_context_width: 6 +max_target_offset: 1 stride_by_split: - 5 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-interrupted.yaml b/tests/configs/preprocess-test-categorical-interrupted.yaml index 6d244e94..7dae9dcf 100644 --- a/tests/configs/preprocess-test-categorical-interrupted.yaml +++ b/tests/configs/preprocess-test-categorical-interrupted.yaml @@ -9,8 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-lookahead-0.yaml b/tests/configs/preprocess-test-categorical-lookahead-0.yaml index be13f25a..c9653bea 100644 --- a/tests/configs/preprocess-test-categorical-lookahead-0.yaml +++ b/tests/configs/preprocess-test-categorical-lookahead-0.yaml @@ -9,8 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -stored_width: 8 -future_capacity: 0 +stored_context_width: 8 +max_target_offset: 0 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-multitarget.yaml b/tests/configs/preprocess-test-categorical-multitarget.yaml index 1fc95074..0dca4827 100644 --- a/tests/configs/preprocess-test-categorical-multitarget.yaml +++ b/tests/configs/preprocess-test-categorical-multitarget.yaml @@ -9,8 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml index 24c12914..7372bc0e 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml @@ -8,8 +8,8 @@ selected_columns: null split_ratios: - 1.0 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml index 8e7fd362..1f565c32 100644 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml @@ -7,8 +7,8 @@ selected_columns: null split_ratios: - 1.0 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 max_rows: null diff --git a/tests/configs/preprocess-test-categorical.yaml b/tests/configs/preprocess-test-categorical.yaml index 7ca2774b..4767f7e6 100644 --- a/tests/configs/preprocess-test-categorical.yaml +++ b/tests/configs/preprocess-test-categorical.yaml @@ -9,8 +9,8 @@ split_ratios: - 0.6 - 0.2 - 0.2 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-multi-file.yaml b/tests/configs/preprocess-test-multi-file.yaml index a7792689..cc76ee4c 100644 --- a/tests/configs/preprocess-test-multi-file.yaml +++ b/tests/configs/preprocess-test-multi-file.yaml @@ -12,8 +12,8 @@ split_ratios: - 0.8 - 0.1 - 0.1 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/tests/configs/preprocess-test-real.yaml b/tests/configs/preprocess-test-real.yaml index f0015e26..538ba285 100644 --- a/tests/configs/preprocess-test-real.yaml +++ b/tests/configs/preprocess-test-real.yaml @@ -8,8 +8,8 @@ selected_columns: null split_ratios: - 0.5 - 0.5 -stored_width: 9 -future_capacity: 1 +stored_context_width: 9 +max_target_offset: 1 stride_by_split: - 1 - 1 diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index 1beeeb51..ebe52dd2 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -45,7 +45,7 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): ) assert "storage_layout" not in generated_config assert "window_view" not in generated_config - assert generated_config["target_shift"] == 0 + assert generated_config["target_offset"] == 0 assert generated_config["training_spec"]["training_objective"] == "bert" diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py index 47eaad7e..5b09d088 100644 --- a/tests/integration/test_make.py +++ b/tests/integration/test_make.py @@ -54,7 +54,7 @@ def adapt_configs(config_strings): "selected_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "selected_columns: " ) .replace("input_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "input_columns: ") - .replace("stored_width: 49", "stored_width: 11") + .replace("stored_context_width: 49", "stored_context_width: 11") .replace("max_rows: null", "max_rows: null\nn_cores: 1") ) diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index 0036de9c..4a4be821 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -29,14 +29,14 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, n_classes={"cat_col": 6}, storage_layout=StoredWindowLayout( - stored_width=context_length + 1, - future_capacity=1, + stored_context_width=context_length + 1, + max_target_offset=1, version=2, ), window_view=ModelWindowView( context_length=context_length, objective="bert", - target_shift=0, + target_offset=0, ), inference_batch_size=inference_batch_size, seed=42, @@ -136,14 +136,14 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): }, n_classes={"cat2": 7, "cat10": 6}, storage_layout=StoredWindowLayout( - stored_width=context_length + 1, - future_capacity=1, + stored_context_width=context_length + 1, + max_target_offset=1, version=2, ), window_view=ModelWindowView( context_length=context_length, objective="causal", - target_shift=1, + target_offset=1, ), inference_batch_size=inference_batch_size, seed=42, diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 67508669..708dc24d 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -31,8 +31,8 @@ def test_metadata_config(metadata_configs): "split_paths", "column_types", "selected_columns_statistics", - "stored_width", - "future_capacity", + "stored_context_width", + "max_target_offset", "stored_window_layout_version", ] @@ -272,8 +272,8 @@ def test_preprocessed_data_categorical_lookahead_0(run_preprocessing, project_ro with open(metadata_path, "r") as f: metadata_config = json.load(f) - assert metadata_config["future_capacity"] == 0 - assert metadata_config["stored_width"] == 8 + assert metadata_config["max_target_offset"] == 0 + assert metadata_config["stored_context_width"] == 8 for split in range(3): data = read_preprocessing_outputs( diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json index 1ec4aee0..f578cde1 100644 --- a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json +++ b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json @@ -1,6 +1,6 @@ { - "stored_width": 9, - "future_capacity": 1, + "stored_context_width": 9, + "max_target_offset": 1, "stored_window_layout_version": 2, "selected_columns": null, "data_columns": [ diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 24ae734b..6fb7b0b5 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -19,8 +19,8 @@ def _folder_metadata(total_samples, batch_files): return { "total_samples": total_samples, "batch_files": batch_files, - "stored_width": STORED_WIDTH, - "future_capacity": FUTURE_CAPACITY, + "stored_context_width": STORED_WIDTH, + "max_target_offset": FUTURE_CAPACITY, "stored_window_layout_version": 2, } @@ -31,10 +31,10 @@ def mock_config(): config.project_root = "." config.seed = 42 config.storage_layout = StoredWindowLayout( - stored_width=STORED_WIDTH, future_capacity=FUTURE_CAPACITY, version=2 + stored_context_width=STORED_WIDTH, max_target_offset=FUTURE_CAPACITY, version=2 ) config.window_view = ModelWindowView( - context_length=CONTEXT_LENGTH, objective="causal", target_shift=1 + context_length=CONTEXT_LENGTH, objective="causal", target_offset=1 ) config.column_types = {"item": "Float64"} config.training_spec.batch_size = 5 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 2b62d861..215ddc99 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -18,8 +18,8 @@ def _folder_metadata(total_samples, batch_files): return { "total_samples": total_samples, "batch_files": batch_files, - "stored_width": STORED_WIDTH, - "future_capacity": FUTURE_CAPACITY, + "stored_context_width": STORED_WIDTH, + "max_target_offset": FUTURE_CAPACITY, "stored_window_layout_version": 2, } @@ -35,10 +35,10 @@ def mock_config(tmp_path): config.training_spec.num_workers = 0 config.seed = 42 config.storage_layout = StoredWindowLayout( - stored_width=STORED_WIDTH, future_capacity=FUTURE_CAPACITY, version=2 + stored_context_width=STORED_WIDTH, max_target_offset=FUTURE_CAPACITY, version=2 ) config.window_view = ModelWindowView( - context_length=CONTEXT_LENGTH, objective="causal", target_shift=1 + context_length=CONTEXT_LENGTH, objective="causal", target_offset=1 ) config.input_columns = ["col1"] config.target_columns = ["col1", "tgt1"] diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index 635669d1..46bea614 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -91,8 +91,8 @@ def test_numpy_to_pytorch_shapes_and_shifting(): column_types = {"A": torch.float32} all_columns = ["A"] resolved_view = resolve_window_view( - StoredWindowLayout(stored_width=4, future_capacity=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_offset=1), ) tensors, metadata = numpy_to_pytorch( @@ -152,8 +152,8 @@ def test_numpy_to_pytorch_dtypes(): {"int_col": torch.int64}, ["int_col"], resolve_window_view( - StoredWindowLayout(stored_width=2, future_capacity=1, version=2), - ModelWindowView(context_length=1, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=2, max_target_offset=1, version=2), + ModelWindowView(context_length=1, objective="causal", target_offset=1), ), ) assert tensors_int["int_col"].dtype == torch.int64 @@ -175,8 +175,8 @@ def test_numpy_to_pytorch_dtypes(): {"float_col": torch.float32}, ["float_col"], resolve_window_view( - StoredWindowLayout(stored_width=2, future_capacity=1, version=2), - ModelWindowView(context_length=1, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=2, max_target_offset=1, version=2), + ModelWindowView(context_length=1, objective="causal", target_offset=1), ), ) assert tensors_float["float_col"].dtype == torch.float32 @@ -186,8 +186,8 @@ def test_build_valid_mask_from_left_pad_lengths(): left_pad_lengths = torch.tensor([0, 2, 5], dtype=torch.int64) resolved_view = resolve_window_view( - StoredWindowLayout(stored_width=6, future_capacity=1, version=2), - ModelWindowView(context_length=5, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=6, max_target_offset=1, version=2), + ModelWindowView(context_length=5, objective="causal", target_offset=1), ) input_mask = build_valid_mask( left_pad_lengths, full_length=6, view_slice=resolved_view.input_slice @@ -221,8 +221,8 @@ def test_build_valid_mask_from_left_pad_lengths(): def test_resolve_window_view_slices_tensors(): tensor = torch.arange(8).reshape(2, 4) resolved_view = resolve_window_view( - StoredWindowLayout(stored_width=4, future_capacity=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_offset=1), ) assert torch.equal( @@ -255,8 +255,8 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): {"A": torch.float32}, ["A"], resolve_window_view( - StoredWindowLayout(stored_width=4, future_capacity=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_shift=1), + StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), + ModelWindowView(context_length=3, objective="causal", target_offset=1), ), ) diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 92f86dc3..91d3c910 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -174,8 +174,12 @@ def test_infer_config_defaults_bert_prediction_length_to_context_length(): seed=42, device="cpu", prediction_length=None, - storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), - window_view=ModelWindowView(context_length=3, objective="bert", target_shift=0), + storage_layout=StoredWindowLayout( + stored_context_width=4, max_target_offset=1, version=2 + ), + window_view=ModelWindowView( + context_length=3, objective="bert", target_offset=0 + ), inference_batch_size=2, output_probabilities=False, map_to_id=False, @@ -202,9 +206,11 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): seed=42, device="cpu", prediction_length=None, - storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + storage_layout=StoredWindowLayout( + stored_context_width=4, max_target_offset=1, version=2 + ), window_view=ModelWindowView( - context_length=3, objective="causal", target_shift=1 + context_length=3, objective="causal", target_offset=1 ), inference_batch_size=2, output_probabilities=False, @@ -234,10 +240,10 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): device="cpu", prediction_length=1, storage_layout=StoredWindowLayout( - stored_width=4, future_capacity=1, version=2 + stored_context_width=4, max_target_offset=1, version=2 ), window_view=ModelWindowView( - context_length=3, objective="bert", target_shift=0 + context_length=3, objective="bert", target_offset=0 ), inference_batch_size=2, output_probabilities=False, @@ -256,8 +262,8 @@ def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_p json.dumps( { "split_paths": [str(data_path)], - "stored_width": 4, - "future_capacity": 1, + "stored_context_width": 4, + "max_target_offset": 1, "stored_window_layout_version": 2, "column_types": {"target_col": "int64"}, "id_maps": {"target_col": {"A": 3}}, @@ -401,8 +407,12 @@ def _bert_inference_config(tmp_path, model_type="generative"): seed=42, device="cpu", prediction_length=None, - storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), - window_view=ModelWindowView(context_length=3, objective="bert", target_shift=0), + storage_layout=StoredWindowLayout( + stored_context_width=4, max_target_offset=1, version=2 + ), + window_view=ModelWindowView( + context_length=3, objective="bert", target_offset=0 + ), inference_batch_size=4, output_probabilities=False, map_to_id=True, @@ -617,9 +627,11 @@ def ar_config(): seed=42, device="cpu", prediction_length=1, - storage_layout=StoredWindowLayout(stored_width=4, future_capacity=1, version=2), + storage_layout=StoredWindowLayout( + stored_context_width=4, max_target_offset=1, version=2 + ), window_view=ModelWindowView( - context_length=3, objective="causal", target_shift=1 + context_length=3, objective="causal", target_offset=1 ), inference_batch_size=2, output_probabilities=False, diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index eb2a6281..436d3f04 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -61,7 +61,7 @@ def test_extract_subsequences_bert_width(): result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - stored_width=context_length, + stored_context_width=context_length, stride_for_split=stride, columns=columns, subsequence_start_mode="distribute", @@ -75,14 +75,18 @@ def test_extract_subsequences_bert_width(): def test_extract_subsequences_padding(): """Tests that sequences shorter than context_length are padded with 0s.""" input_data = {"col1": [1, 2]} # Length 2 - stored_width = 5 + stored_context_width = 5 stride = 1 columns = ["col1"] # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, stored_width, stride, columns, subsequence_start_mode="distribute" + input_data, + stored_context_width, + stride, + columns, + subsequence_start_mode="distribute", ) assert len(result["col1"]) == 1 @@ -93,7 +97,7 @@ def test_extract_subsequences_returns_left_pad_lengths_when_requested(): input_data = {"col1": [0.0, 1.5]} result, left_pad_lengths, subsequence_starts = extract_subsequences( input_data, - stored_width=5, + stored_context_width=5, stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -127,7 +131,9 @@ def test_extract_sequences_persists_left_pad_length_metadata(): sequences = extract_sequences( data, schema, - layout=StoredWindowLayout(stored_width=5, future_capacity=1, version=2), + layout=StoredWindowLayout( + stored_context_width=5, max_target_offset=1, version=2 + ), stride_for_split=1, columns=["col1"], subsequence_start_mode="distribute", @@ -154,7 +160,7 @@ def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): process_and_write_data_pt( data, - stored_width=4, + stored_context_width=4, path=str(out_path), column_types={"col1": "Float64"}, ) @@ -218,8 +224,8 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): "selected_columns_statistics": { "itemValue": {"mean": 60.0, "std": 10.0} }, - "stored_width": 3, - "future_capacity": 1, + "stored_context_width": 3, + "max_target_offset": 1, "stored_window_layout_version": 2, "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, } @@ -245,8 +251,8 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): merge_output=True, selected_columns=["itemId", "itemValue"], split_ratios=[1.0], - stored_width=3, - future_capacity=1, + stored_context_width=3, + max_target_offset=1, stride_by_split=[1], max_rows=None, seed=1010, @@ -383,8 +389,8 @@ def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): merge_output=True, selected_columns=["itemId"], split_ratios=[1.0], - stored_width=2, - future_capacity=1, + stored_context_width=2, + max_target_offset=1, stride_by_split=[1], max_rows=None, seed=1010, @@ -413,8 +419,8 @@ def test_preprocessor_config_defaults_mask_column_to_none(tmp_path): project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - stored_width=2, - future_capacity=1, + stored_context_width=2, + max_target_offset=1, seed=1010, ) @@ -442,8 +448,8 @@ def test_preprocessor_config_requires_metadata_config_for_mask_column( project_root=str(tmp_path), data_path=str(data_path), split_ratios=[1.0], - stored_width=2, - future_capacity=1, + stored_context_width=2, + max_target_offset=1, seed=1010, mask_column=RESERVED_MASK_COLUMN, ) @@ -457,14 +463,14 @@ def test_extract_subsequences_modes(mode): # exact: strictly adheres to stride, throws error if misalignment. input_data = {"col1": list(range(10))} context_length = 2 - stored_width = context_length + 1 + stored_context_width = context_length + 1 columns = ["col1"] if mode == "distribute": stride = 4 # distribute might adjust indices to maximize coverage result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, stored_width, stride, columns, mode + input_data, stored_context_width, stride, columns, mode ) assert len(result["col1"]) > 0 @@ -474,13 +480,13 @@ def test_extract_subsequences_modes(mode): ) # Testing a failing exact case with pytest.raises(ValueError): - extract_subsequences(input_data, stored_width, 4, columns, mode) + extract_subsequences(input_data, stored_context_width, 4, columns, mode) # Testing a passing exact case # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. input_data_exact = {"col1": list(range(11))} result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data_exact, stored_width, 4, columns, mode + input_data_exact, stored_context_width, 4, columns, mode ) assert len(result["col1"]) > 0 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 42be51f8..872b2e76 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -77,8 +77,8 @@ def test_training_spec_model_dump_excludes_runtime_offsets(): assert "data_offset" not in dumped assert "target_offset" not in dumped - assert "stored_width" not in dumped - assert "max_lookahead" not in dumped + assert "stored_context_width" not in dumped + assert "max_target_offset" not in dumped def test_poisson_span_masking_samples_at_least_one_token(): @@ -137,10 +137,10 @@ def model_config(tmp_path): id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, n_classes={"cat_col": 5}, # 0 + 4 classes storage_layout=StoredWindowLayout( - stored_width=11, future_capacity=1, version=2 + stored_context_width=11, max_target_offset=1, version=2 ), window_view=ModelWindowView( - context_length=10, objective="causal", target_shift=1 + context_length=10, objective="causal", target_offset=1 ), inference_batch_size=4, seed=42, @@ -178,7 +178,7 @@ def bert_model(model_config): config_values["window_view"] = { **config_values["window_view"], "objective": "bert", - "target_shift": 0, + "target_offset": 0, } config = TrainModel(**config_values) return TransformerModel(config) @@ -238,7 +238,7 @@ def test_train_model_requires_bert_prediction_length_to_equal_context_length( config_values["window_view"] = { **config_values["window_view"], "objective": "bert", - "target_shift": 0, + "target_offset": 0, } with pytest.raises(ValidationError, match="prediction_length must be equal"): @@ -273,8 +273,8 @@ def test_load_train_config_rejects_mismatched_metadata_special_token_ids( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "stored_width": storage_layout["stored_width"], - "future_capacity": storage_layout["future_capacity"], + "stored_context_width": storage_layout["stored_context_width"], + "max_target_offset": storage_layout["max_target_offset"], "stored_window_layout_version": storage_layout["version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], @@ -308,8 +308,8 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( json.dumps( { "split_paths": ["data/train.pt", "data/val.pt"], - "stored_width": storage_layout["stored_width"], - "future_capacity": storage_layout["future_capacity"], + "stored_context_width": storage_layout["stored_context_width"], + "max_target_offset": storage_layout["max_target_offset"], "stored_window_layout_version": storage_layout["version"], "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], From dcd92f70d1a9e3e4c0f2e3239f8818c7f5182d38 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 16:51:40 +0200 Subject: [PATCH 53/81] make valid_mask compulsory --- src/sequifier/helpers.py | 2 +- src/sequifier/infer.py | 135 ++++++++++++++++++++------------------- tests/unit/test_infer.py | 29 --------- 3 files changed, 72 insertions(+), 94 deletions(-) diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 5f3a52fb..a7c4f1e4 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -104,7 +104,7 @@ def build_masks(self, left_pad_lengths: Tensor) -> dict[str, Tensor]: @beartype def _right_aligned_slice(width: int, length: int, offset: int) -> slice: start = width - (length + offset) - stop = width - offset if offset else width + stop = width - offset return slice(start, stop) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 18a8c3ad..b3ed690f 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -305,30 +305,21 @@ def calculate_item_positions( @beartype -def _flatten_bert_target_valid_mask( +def _flatten_valid_mask( config: InfererModel, metadata: dict[str, Any], prediction_length: int, -) -> Optional[np.ndarray]: - if config.training_objective != "bert" or not metadata: - return None - if "target_valid_mask" not in metadata: - return None - - valid_mask = metadata["target_valid_mask"] + mask_key: str = "target_valid_mask", +) -> np.ndarray: + valid_mask = metadata.get(mask_key) if isinstance(valid_mask, torch.Tensor): - valid_mask = valid_mask.detach().cpu().numpy() + valid_mask = valid_mask.detach().cpu().numpy() # type: ignore valid_mask = np.asarray(valid_mask, dtype=bool) if valid_mask.ndim != 2: - raise ValueError(f"target_valid_mask must be 2D, got shape {valid_mask.shape}.") - if valid_mask.shape[1] != prediction_length: - raise ValueError( - "target_valid_mask width must match prediction_length " - f"(got {valid_mask.shape[1]} and {prediction_length})." - ) + raise ValueError(f"{mask_key} must be 2D, got shape {valid_mask.shape}.") - return valid_mask.reshape(-1) + return valid_mask[:, -prediction_length:].reshape(-1) @beartype @@ -347,41 +338,34 @@ def _bert_reference_column(config: InfererModel, data_columns: set[str]) -> str: @beartype -def _bert_target_valid_mask_from_preprocessed_data( +def _valid_mask_from_preprocessed_data( config: InfererModel, data: pl.DataFrame, prediction_length: int, -) -> Optional[np.ndarray]: - if config.training_objective != "bert": - return None - + mask_key: str = "target_valid_mask", +) -> np.ndarray: data_columns = set(data.get_column("inputCol").unique()) column_name = _bert_reference_column(config, data_columns) reference_rows = data.filter(pl.col("inputCol") == column_name) - if "leftPadLength" in reference_rows.columns: - left_pad_lengths = torch.tensor( - reference_rows.get_column("leftPadLength").to_numpy(), dtype=torch.int64 - ) - resolved_view = resolve_window_view(config.storage_layout, config.window_view) - metadata = resolved_view.build_masks(left_pad_lengths) - return _flatten_bert_target_valid_mask(config, metadata, prediction_length) - - return None + left_pad_lengths = torch.tensor( + reference_rows.get_column("leftPadLength").to_numpy(), dtype=torch.int64 + ) + resolved_view = resolve_window_view(config.storage_layout, config.window_view) + metadata = resolved_view.build_masks(left_pad_lengths) + return _flatten_valid_mask(config, metadata, prediction_length, mask_key) @beartype def _apply_valid_prediction_mask( values: np.ndarray, - valid_prediction_mask: Optional[np.ndarray], + valid_prediction_mask: np.ndarray, label: str, ) -> np.ndarray: values = np.asarray(values) - if valid_prediction_mask is None: - return values if values.shape[0] != valid_prediction_mask.shape[0]: raise ValueError( - f"{label} has {values.shape[0]} rows, but target_valid_mask has " + f"{label} has {values.shape[0]} rows, but valid_prediction_mask has " f"{valid_prediction_mask.shape[0]} rows." ) return values[valid_prediction_mask] @@ -390,7 +374,7 @@ def _apply_valid_prediction_mask( @beartype def _apply_valid_prediction_mask_to_dict( values: Optional[dict[str, np.ndarray]], - valid_prediction_mask: Optional[np.ndarray], + valid_prediction_mask: np.ndarray, label: str, ) -> Optional[dict[str, np.ndarray]]: if values is None: @@ -451,8 +435,8 @@ def infer_embedding( mask = pl.arange(0, data.height, eager=True) % n_input_cols == 0 embeddings = get_embeddings(config, inferer, data, column_types) - valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( - config, data, prediction_length + valid_prediction_mask = _valid_mask_from_preprocessed_data( + config, data, prediction_length, mask_key="attention_valid_mask" ) sequence_ids_for_preds = data.get_column("sequenceId").filter(mask) @@ -469,8 +453,8 @@ def infer_embedding( mask = pl.arange(0, data.height, eager=True) % n_input_cols == 0 embeddings = get_embeddings(config, inferer, data, column_types) - valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( - config, data, prediction_length + valid_prediction_mask = _valid_mask_from_preprocessed_data( + config, data, prediction_length, mask_key="attention_valid_mask" ) sequence_ids_for_preds = ( @@ -503,8 +487,8 @@ def infer_embedding( embeddings = get_embeddings_pt( config, inferer, sequences_dict, metadata=metadata ) - valid_prediction_mask = _flatten_bert_target_valid_mask( - config, metadata, prediction_length + valid_prediction_mask = _flatten_valid_mask( + config, metadata, prediction_length, mask_key="attention_valid_mask" ) sequence_ids_for_preds = sequence_ids_tensor.numpy() @@ -538,6 +522,7 @@ def infer_embedding( subsequence_ids_repeated = np.repeat( subsequence_ids_for_preds, prediction_length ) + assert valid_prediction_mask is not None embeddings = _apply_valid_prediction_mask( embeddings, valid_prediction_mask, "embeddings" ) @@ -628,8 +613,6 @@ def infer_generative( `torch.dtype`. """ for data_id, data in enumerate(dataset): - valid_prediction_mask = None - # Step 1: Adapt Data Subsetting (now works on Polars DF) is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) @@ -653,7 +636,7 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length - valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + valid_prediction_mask = _valid_mask_from_preprocessed_data( config, data, prediction_length ) @@ -676,14 +659,18 @@ def infer_generative( f"prediction_length must be 1 for autoregression, got {inferer.prediction_length}" ) # Unpack the new third return value - probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( - get_probs_preds_autoregression( - config, - inferer, - data, - column_types, - config.window_view.context_length, - ) + ( + probs, + preds, + sequence_ids_for_preds, + item_positions_for_preds, + valid_prediction_mask, + ) = get_probs_preds_autoregression( + config, + inferer, + data, + column_types, + config.window_view.context_length, ) elif config.read_format == "parquet" and is_folder_input: # Folder-based Parquet chunk logic @@ -709,7 +696,7 @@ def infer_generative( data.get_column("startItemPosition").filter(mask).to_numpy() ) prediction_length = inferer.prediction_length - valid_prediction_mask = _bert_target_valid_mask_from_preprocessed_data( + valid_prediction_mask = _valid_mask_from_preprocessed_data( config, data, prediction_length ) @@ -730,14 +717,18 @@ def infer_generative( f"prediction_length must be 1 for autoregression, got {inferer.prediction_length}" ) - probs, preds, sequence_ids_for_preds, item_positions_for_preds = ( - get_probs_preds_autoregression( - config, - inferer, - data, - column_types, - config.window_view.context_length, - ) + ( + probs, + preds, + sequence_ids_for_preds, + item_positions_for_preds, + valid_prediction_mask, + ) = get_probs_preds_autoregression( + config, + inferer, + data, + column_types, + config.window_view.context_length, ) elif config.read_format == "pt": ( @@ -773,7 +764,7 @@ def infer_generative( ) prediction_length = inferer.prediction_length # Get prediction_length - valid_prediction_mask = _flatten_bert_target_valid_mask( + valid_prediction_mask = _flatten_valid_mask( config, metadata, prediction_length ) @@ -798,6 +789,7 @@ def infer_generative( sequence_ids_for_preds = np.repeat( sequence_ids_tensor.numpy(), total_steps ) + valid_prediction_mask = np.repeat(valid_prediction_mask, total_steps) item_position_boundaries = zip( list(start_positions_tensor + config.window_view.context_length), list( @@ -826,6 +818,8 @@ def infer_generative( predictions, target_column ) + assert valid_prediction_mask is not None + sequence_ids_for_preds = _apply_valid_prediction_mask( sequence_ids_for_preds, valid_prediction_mask, "sequenceId" ) @@ -1235,7 +1229,11 @@ def get_probs_preds_autoregression( column_types: dict[str, torch.dtype], context_length: int, ) -> tuple[ - Optional[dict[str, np.ndarray]], dict[str, np.ndarray], np.ndarray, np.ndarray + Optional[dict[str, np.ndarray]], + dict[str, np.ndarray], + np.ndarray, + np.ndarray, + np.ndarray, ]: """Generates autoregressive predictions and aligns them with sequence IDs and positions. @@ -1303,7 +1301,16 @@ def get_probs_preds_autoregression( aligned_sequence_ids, config.autoregression_total_steps ) - return probs, preds, sequence_ids_for_preds, item_positions_for_preds + base_mask = _flatten_valid_mask(config, metadata, 1) + valid_prediction_mask = np.repeat(base_mask, config.autoregression_total_steps) + + return ( + probs, + preds, + sequence_ids_for_preds, + item_positions_for_preds, + valid_prediction_mask, + ) class Inferer: diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 91d3c910..9afb97ea 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -544,35 +544,6 @@ def capture_write(dataframe, path, write_format): assert predictions.get_column("target_col").to_list() == ["B", "A", "B"] -def test_bert_generative_inference_keeps_data_without_left_pad(tmp_path): - config = _bert_inference_config(tmp_path) - data = _bert_preprocessed_frame().drop("leftPadLength") - written = [] - - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - inferer = _mock_bert_inferer(config) - - def capture_write(dataframe, path, write_format): - written.append((path, dataframe, write_format)) - - preds = {"target_col": np.array([3, 4, 3])} - with patch( - "sequifier.infer.get_probs_preds_from_df", return_value=(None, preds) - ), patch("sequifier.infer.write_data", side_effect=capture_write): - infer_generative( - config, inferer, "bert-model", [data], {"target_col": torch.int64} - ) - - predictions = next(frame for path, frame, _ in written if "predictions" in path) - - assert predictions.height == 3 - assert predictions.get_column("sequenceId").to_list() == [7, 7, 7] - assert predictions.get_column("itemPosition").to_list() == [100, 101, 102] - assert predictions.get_column("target_col").to_list() == ["A", "B", "A"] - - def test_bert_embedding_inference_filters_left_padded_positions(tmp_path): config = _bert_inference_config(tmp_path, model_type="embedding") data = _bert_preprocessed_frame() From 6b78f3ea1657f0b282933d752c45e7b0d6ee799a Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 17:02:04 +0200 Subject: [PATCH 54/81] set prediction_length from context_length in hyperparameter tuning of bert models --- src/sequifier/config/hyperparameter_search_config.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index b93c8ea5..94c20f00 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -748,6 +748,13 @@ def validate_sequence_layout(self): f"({self.storage_layout.max_target_offset}) > stored_context_width ({self.storage_layout.stored_context_width}). " "Model inputs cannot exceed the preprocessed sequence length." ) + if self.training_hyperparameter_sampling.training_objective == "causal": + if self.storage_layout.max_target_offset < 1: + raise ValueError( + "The hyperparameter search space includes the 'causal' objective, " + "but the preprocessed dataset has max_target_offset=0. " + "Causal modeling requires max_target_offset >= 1." + ) return self @model_validator(mode="after") @@ -856,6 +863,11 @@ def sample_trial(self, trial: Any, run_index: int) -> TrainModel: "context_length", self.context_length ) training_spec = self.training_hyperparameter_sampling.sample_trial(trial) + if training_spec.training_objective == "bert": + model_spec = model_spec.model_copy( + update={"prediction_length": context_length} + ) + window_view = ModelWindowView( context_length=context_length, objective=training_spec.training_objective, From 4c899e9b0336877af34d8278070ad0d8f5d37a01 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 18:02:42 +0200 Subject: [PATCH 55/81] Expand preprocessing digest --- src/sequifier/preprocess.py | 86 ++++++++++++-- .../preprocess-manifest.json | 41 +++++-- tests/unit/test_preprocess.py | 111 ++++++++++++++++++ 3 files changed, 223 insertions(+), 15 deletions(-) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 9f8964f7..cde9834d 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1,3 +1,4 @@ +import hashlib import json import math import multiprocessing @@ -34,6 +35,30 @@ CURRENT_STORED_WINDOW_LAYOUT_VERSION = 2 +def _stable_json_value(value: Any) -> Any: + if isinstance(value, dict): + return { + str(key): _stable_json_value(val) + for key, val in sorted(value.items(), key=lambda item: str(item[0])) + } + if isinstance(value, (list, tuple)): + return [_stable_json_value(item) for item in value] + if isinstance(value, np.generic): + return value.item() + if isinstance(value, float) and math.isnan(value): + return "NaN" + return value + + +def _stable_json_digest(value: Any) -> str: + encoded = json.dumps( + _stable_json_value(value), + sort_keys=True, + separators=(",", ":"), + ).encode("utf-8") + return hashlib.sha256(encoded).hexdigest() + + @beartype def preprocess(args: Any, args_config: dict[str, Any]) -> None: """Runs the main data preprocessing pipeline. @@ -123,6 +148,9 @@ def __init__( """ self.project_root = project_root self.batches_per_file = batches_per_file + self.data_path = data_path + self.read_format = read_format + self.write_format = write_format self.data_name_root = os.path.splitext(os.path.basename(data_path))[0] self.merge_output = merge_output @@ -138,6 +166,11 @@ def __init__( self.use_precomputed_maps = use_precomputed_maps self.metadata_config_path = metadata_config_path self.mask_column = mask_column + self.split_ratios = split_ratios + self.stride_by_split = stride_by_split + self.max_rows = max_rows + self.process_by_file = process_by_file + self.subsequence_start_mode = subsequence_start_mode if self.mask_column is not None and self.metadata_config_path is None: raise ValueError("metadata_config_path must be set when mask_column is set") @@ -246,6 +279,10 @@ def __init__( selected_columns, write_format, data_columns, + id_maps, + n_classes, + col_types, + selected_columns_statistics, ) self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics @@ -345,6 +382,10 @@ def __init__( selected_columns, write_format, data_columns, + id_maps, + n_classes, + col_types, + selected_columns_statistics, ) self._export_metadata( id_maps, n_classes, col_types, selected_columns_statistics @@ -835,12 +876,40 @@ def _write_or_validate_resume_manifest( selected_columns: Optional[list[str]], write_format: str, data_columns: list[str], + id_maps: dict[str, dict[Union[str, int], int]], + n_classes: dict[str, int], + col_types: dict[str, str], + selected_columns_statistics: dict[str, dict[str, float]], ) -> None: + effective_metadata = { + "n_classes": n_classes, + "id_maps": id_maps, + "column_types": col_types, + "selected_columns_statistics": selected_columns_statistics, + "special_token_ids": SPECIAL_TOKEN_IDS.ids_by_label, + } manifest = { - **self._layout_metadata(), - "selected_columns": selected_columns, - "data_columns": data_columns, - "write_format": write_format, + "manifest_version": 1, + "preprocessing_config": { + **self._layout_metadata(), + "read_format": self.read_format, + "write_format": write_format, + "merge_output": self.merge_output, + "selected_columns": selected_columns, + "data_columns": data_columns, + "split_ratios": self.split_ratios, + "stride_by_split": self.stride_by_split, + "max_rows": self.max_rows, + "process_by_file": self.process_by_file, + "subsequence_start_mode": self.subsequence_start_mode, + "mask_column": self.mask_column, + "metadata_config_path": self.metadata_config_path, + "use_precomputed_maps": self.use_precomputed_maps, + }, + "effective_metadata_digest": { + "algorithm": "sha256", + "value": _stable_json_digest(effective_metadata), + }, } manifest_path = os.path.join( self.project_root, "data", self.target_dir, "preprocess-manifest.json" @@ -853,10 +922,13 @@ def _write_or_validate_resume_manifest( ) with open(manifest_path, "r") as f: previous_manifest = json.load(f) - if previous_manifest != manifest: + if _stable_json_value(previous_manifest) != _stable_json_value(manifest): raise ValueError( - "Cannot continue preprocessing with different sequence layout, " - "selected columns, or write format." + "Cannot continue preprocessing with a different preprocessing " + "manifest. Check sequence layout, input path, selected/data " + "columns, output format, mask/metadata settings, split/stride " + "settings, max_rows, process_by_file, subsequence_start_mode, " + "or metadata/maps/statistics." ) return diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json index f578cde1..78cac8f9 100644 --- a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json +++ b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json @@ -1,10 +1,35 @@ { - "stored_context_width": 9, - "max_target_offset": 1, - "stored_window_layout_version": 2, - "selected_columns": null, - "data_columns": [ - "itemId" - ], - "write_format": "pt" + "manifest_version": 1, + "preprocessing_config": { + "stored_context_width": 9, + "max_target_offset": 1, + "stored_window_layout_version": 2, + "read_format": "csv", + "write_format": "pt", + "merge_output": false, + "selected_columns": null, + "data_columns": [ + "itemId" + ], + "split_ratios": [ + 0.6, + 0.2, + 0.2 + ], + "stride_by_split": [ + 1, + 1, + 1 + ], + "max_rows": null, + "process_by_file": true, + "subsequence_start_mode": "distribute", + "mask_column": null, + "metadata_config_path": null, + "use_precomputed_maps": null + }, + "effective_metadata_digest": { + "algorithm": "sha256", + "value": "b245092f219b7b0bed5e4e24ec7aa7be6dead1885e61adc00f6395d6164c460c" + } } diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 436d3f04..9ac84b5a 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -292,6 +292,117 @@ def test_preprocessor_applies_mask_column_end_to_end(tmp_path): } +def test_preprocessor_writes_expanded_resume_manifest(tmp_path): + project_root = tmp_path / "project" + project_root.mkdir() + data_path = tmp_path / "manifest-input.csv" + pl.DataFrame( + { + "sequenceId": [0, 0, 0], + "itemPosition": [0, 1, 2], + "itemId": ["a", "b", "c"], + } + ).write_csv(data_path) + + Preprocessor( + project_root=str(project_root), + continue_preprocessing=False, + data_path=str(data_path), + read_format="csv", + write_format="parquet", + merge_output=False, + selected_columns=["itemId"], + split_ratios=[1.0], + stored_context_width=3, + max_target_offset=1, + stride_by_split=[2], + max_rows=2, + seed=1010, + n_cores=1, + batches_per_file=1024, + process_by_file=True, + subsequence_start_mode="exact", + use_precomputed_maps=None, + metadata_config_path=None, + mask_column=None, + ) + + manifest_path = ( + project_root / "data" / "manifest-input-temp" / "preprocess-manifest.json" + ) + manifest = json.loads(manifest_path.read_text()) + config = manifest["preprocessing_config"] + + assert manifest["manifest_version"] == 1 + assert config["read_format"] == "csv" + assert config["write_format"] == "parquet" + assert config["merge_output"] is False + assert config["selected_columns"] == ["sequenceId", "itemPosition", "itemId"] + assert config["data_columns"] == ["itemId"] + assert config["split_ratios"] == [1.0] + assert config["stride_by_split"] == [2] + assert config["max_rows"] == 2 + assert config["process_by_file"] is True + assert config["subsequence_start_mode"] == "exact" + assert config["mask_column"] is None + assert config["metadata_config_path"] is None + assert config["use_precomputed_maps"] is None + assert manifest["effective_metadata_digest"]["algorithm"] == "sha256" + assert len(manifest["effective_metadata_digest"]["value"]) == 64 + + +def test_resume_manifest_rejects_changed_preprocessing_config(tmp_path): + project_root = tmp_path / "project" + manifest_dir = project_root / "data" / "input-temp" + manifest_dir.mkdir(parents=True) + + preprocessor = object.__new__(Preprocessor) + preprocessor.project_root = str(project_root) + preprocessor.target_dir = "input-temp" + preprocessor.continue_preprocessing = False + preprocessor.storage_layout = StoredWindowLayout( + stored_context_width=3, + max_target_offset=1, + version=2, + ) + preprocessor.data_path = "data/input.csv" + preprocessor.data_name_root = "input" + preprocessor.read_format = "csv" + preprocessor.merge_output = False + preprocessor.split_ratios = [1.0] + preprocessor.stride_by_split = [1] + preprocessor.max_rows = None + preprocessor.process_by_file = True + preprocessor.subsequence_start_mode = "distribute" + preprocessor.mask_column = None + preprocessor.metadata_config_path = None + preprocessor.use_precomputed_maps = None + + preprocessor._write_or_validate_resume_manifest( + selected_columns=None, + write_format="parquet", + data_columns=["itemId"], + id_maps={"itemId": {"a": 3}}, + n_classes={"itemId": 4}, + col_types={"itemId": "Int64"}, + selected_columns_statistics={}, + ) + + preprocessor.continue_preprocessing = True + preprocessor.stride_by_split = [2] + + with pytest.raises(ValueError, match="different preprocessing manifest"): + preprocessor._write_or_validate_resume_manifest( + selected_columns=None, + write_format="parquet", + data_columns=["itemId"], + id_maps={"itemId": {"a": 3}}, + n_classes={"itemId": 4}, + col_types={"itemId": "Int64"}, + selected_columns_statistics={}, + ) + + def test_load_and_preprocess_data_requests_mask_column_for_csv_projection(tmp_path): data_path = tmp_path / "masked-input.csv" captured_columns = None From da7c9346a13833b1897334bbd06b60de0748dafa Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 18:53:23 +0200 Subject: [PATCH 56/81] Correctly weighted validation loss --- .../sequifier_dataset_from_folder_parquet.py | 23 +- ...uifier_dataset_from_folder_parquet_lazy.py | 13 +- .../io/sequifier_dataset_from_folder_pt.py | 24 +- .../sequifier_dataset_from_folder_pt_lazy.py | 13 +- src/sequifier/make.py | 6 +- src/sequifier/train.py | 538 +++++++++++------- tests/unit/test_train.py | 81 ++- 7 files changed, 462 insertions(+), 236 deletions(-) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index e1d060a7..17414dcf 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -189,22 +189,36 @@ def __iter__( # 2. Slice metrics based on GPU distribution metrics indices_for_rank = indices[rank::world_size].tolist() + sample_is_real = [True] * len(indices_for_rank) # 3. Synchronize cross-device oversampling/undersampling rules if self.sampling_strategy == "oversampling": + real_count = len(indices_for_rank) + if real_count == 0: + fallback_indices = indices.tolist() + while len(indices_for_rank) < self.target_samples and fallback_indices: + n = min( + len(fallback_indices), + self.target_samples - len(indices_for_rank), + ) + indices_for_rank.extend(fallback_indices[:n]) + sample_is_real.extend([False] * n) while len(indices_for_rank) < self.target_samples: - indices_for_rank.extend( - indices_for_rank[: self.target_samples - len(indices_for_rank)] - ) + n = min(real_count, self.target_samples - len(indices_for_rank)) + indices_for_rank.extend(indices_for_rank[:n]) + sample_is_real.extend([False] * n) elif self.sampling_strategy == "undersampling": indices_for_rank = indices_for_rank[: self.target_samples] + sample_is_real = sample_is_real[: self.target_samples] # 4. Map worker task splits indices_for_worker = indices_for_rank[worker_id::num_workers] + sample_is_real_for_worker = sample_is_real[worker_id::num_workers] # 5. Extract and pass unified data frames for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] + batch_sample_is_real = sample_is_real_for_worker[i : i + self.batch_size] data_batch = { key: tensor[batch_indices] for key, tensor in self.sequences.items() @@ -218,6 +232,9 @@ def __iter__( metadata_batch = self.resolved_view.build_masks( self.left_pad_lengths[batch_indices] ) + metadata_batch["sample_valid_mask"] = torch.tensor( + batch_sample_is_real, dtype=torch.bool + ) yield SequifierBatch( inputs=data_batch, diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 06ee64bb..2d03ffc4 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -171,7 +171,11 @@ def __iter__( # 1. Distribute files among ranks num_files = len(self.batch_files_info) - files_for_this_rank = list(range(rank, num_files, world_size)) + original_files_for_this_rank = list(range(rank, num_files, world_size)) + rank_real_samples = sum( + self.batch_files_info[i]["samples"] for i in original_files_for_this_rank + ) + files_for_this_rank = original_files_for_this_rank.copy() if not files_for_this_rank: if self.sampling_strategy == "oversampling": @@ -260,6 +264,12 @@ def __iter__( worker_file_end_idx = min(file_samples, worker_end_sample - file_start) worker_indices = indices[worker_file_start_idx:worker_file_end_idx] + logical_positions = torch.arange( + file_start + worker_file_start_idx, + file_start + worker_file_end_idx, + dtype=torch.int64, + ) + sample_is_real = logical_positions < rank_real_samples num_new_samples = len(worker_indices) @@ -306,6 +316,7 @@ def __iter__( ) new_meta = self.resolved_view.build_masks(left_pad_lengths[worker_indices]) + new_meta["sample_valid_mask"] = sample_is_real del df diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index a3f93d73..aff09a89 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -149,23 +149,36 @@ def __iter__( # 2. Distribute across GPU ranks indices_for_rank = indices[rank::world_size].tolist() + sample_is_real = [True] * len(indices_for_rank) # 3. Handle FSDP oversampling/undersampling sync requirements if self.sampling_strategy == "oversampling": - # Loop the indices to pad out the shorter ranks + real_count = len(indices_for_rank) + if real_count == 0: + fallback_indices = indices.tolist() + while len(indices_for_rank) < self.target_samples and fallback_indices: + n = min( + len(fallback_indices), + self.target_samples - len(indices_for_rank), + ) + indices_for_rank.extend(fallback_indices[:n]) + sample_is_real.extend([False] * n) while len(indices_for_rank) < self.target_samples: - indices_for_rank.extend( - indices_for_rank[: self.target_samples - len(indices_for_rank)] - ) + n = min(real_count, self.target_samples - len(indices_for_rank)) + indices_for_rank.extend(indices_for_rank[:n]) + sample_is_real.extend([False] * n) elif self.sampling_strategy == "undersampling": indices_for_rank = indices_for_rank[: self.target_samples] + sample_is_real = sample_is_real[: self.target_samples] # 4. Distribute among CPU workers for this GPU indices_for_worker = indices_for_rank[worker_id::num_workers] + sample_is_real_for_worker = sample_is_real[worker_id::num_workers] # 5. Yield full batches for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] + batch_sample_is_real = sample_is_real_for_worker[i : i + self.batch_size] data_batch = { key: tensor[batch_indices, self.resolved_view.input_slice] @@ -183,6 +196,9 @@ def __iter__( metadata_batch = self.resolved_view.build_masks( self.left_pad_lengths[batch_indices] ) + metadata_batch["sample_valid_mask"] = torch.tensor( + batch_sample_is_real, dtype=torch.bool + ) yield SequifierBatch( inputs=data_batch, diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index f11fe985..8193b793 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -163,7 +163,11 @@ def __iter__( # 1. Distribute files among ranks num_files = len(self.batch_files_info) - files_for_this_rank = list(range(rank, num_files, world_size)) + original_files_for_this_rank = list(range(rank, num_files, world_size)) + rank_real_samples = sum( + self.batch_files_info[i]["samples"] for i in original_files_for_this_rank + ) + files_for_this_rank = original_files_for_this_rank.copy() if not files_for_this_rank: if self.sampling_strategy == "oversampling": @@ -254,6 +258,12 @@ def __iter__( worker_file_end_idx = min(file_samples, worker_end_sample - file_start) worker_indices = indices[worker_file_start_idx:worker_file_end_idx] + logical_positions = torch.arange( + file_start + worker_file_start_idx, + file_start + worker_file_end_idx, + dtype=torch.int64, + ) + sample_is_real = logical_positions < rank_real_samples num_new_samples = len(worker_indices) if num_new_samples == 0: @@ -275,6 +285,7 @@ def __iter__( new_meta = self.resolved_view.build_masks( left_pad_lengths_batch[worker_indices] ) + new_meta["sample_valid_mask"] = sample_is_real # Free the large file immediately to keep RAM down del sequences_batch, left_pad_lengths_batch diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 5b7da268..c5bab86f 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -13,10 +13,6 @@ - 0.1 stored_context_width: 49 max_target_offset: 1 -stride_by_split: -- 1 -- 1 -- 1 max_rows: null """ @@ -52,7 +48,7 @@ device: cuda epochs: 10 save_interval_epochs: 10 - batch_size: 100 + batch_size: 10 log_interval: 10 learning_rate: 0.0001 accumulation_steps: 1 diff --git a/src/sequifier/train.py b/src/sequifier/train.py index bb78c930..a9c41f7a 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -499,6 +499,27 @@ def format_number(number: Union[int, float, np.float32]) -> str: return f"{number_adjusted:5.2f}e{order_of_magnitude}" +def _get_evaluation_loss_mask(metadata: dict[str, Tensor]) -> Tensor: + valid_mask = metadata["target_valid_mask"].bool() + + if "bert_mask" in metadata: + valid_mask = valid_mask & metadata["bert_mask"].bool() + + if "sample_valid_mask" in metadata: + sample_valid_mask = metadata["sample_valid_mask"].bool() + + if sample_valid_mask.ndim != 1: + raise ValueError("sample_valid_mask must have shape [batch_size].") + if sample_valid_mask.shape[0] != valid_mask.shape[0]: + raise ValueError( + "sample_valid_mask batch dimension does not match target_valid_mask." + ) + + valid_mask = valid_mask & sample_valid_mask.unsqueeze(1) + + return valid_mask + + class TransformerEmbeddingModel(nn.Module): """A wrapper around the TransformerModel to expose the embedding functionality.""" @@ -1730,40 +1751,41 @@ def _calculate_loss( raise RuntimeError("Loss calculation failed; no target columns were found.") valid_mask = metadata["target_valid_mask"].bool() # type: ignore - if "bert_mask" in metadata: valid_mask = valid_mask & metadata["bert_mask"].bool() mask = valid_mask.T.contiguous().reshape(-1) + token_count = mask.sum(dtype=torch.int64) losses = {} for target_column in target_names: target_column_type = self.target_column_types[target_column] if target_column_type == "categorical": - output[target_column] = ( + output_tensor = ( output[target_column] .float() .reshape(-1, self.n_classes[target_column]) ) elif target_column_type == "real": - output[target_column] = ( + output_tensor = ( output[target_column].to(dtype=torch.float32).reshape(-1) ) + else: + raise ValueError( + f"Target column type {target_column_type} not in ['categorical', 'real']" + ) target_tensor = targets[target_column].T.contiguous().reshape(-1) if self.target_column_types[target_column] == "real": - target_tensor = target_tensor.to(dtype=output[target_column].dtype) + target_tensor = target_tensor.to(dtype=output_tensor.dtype) - raw_loss = self.criterion[target_column]( - output[target_column], target_tensor - ) + raw_loss = self.criterion[target_column](output_tensor, target_tensor) current_mask = mask.to(dtype=raw_loss.dtype) + denominator = token_count.clamp_min(1).to(dtype=raw_loss.dtype) - losses[target_column] = (raw_loss * current_mask).sum() / ( - current_mask.sum() + 1e-9 - ) + losses[target_column] = (raw_loss * current_mask).sum() / denominator loss = None for target_column in target_names: @@ -1784,6 +1806,57 @@ def _calculate_loss( return loss, losses + @beartype + def _calculate_loss_components( + self, + output: dict[str, Tensor], + targets: dict[str, Tensor], + valid_mask: Tensor, + ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: + target_names = [k for k in targets.keys() if k in self.target_column_types] + if not target_names: + raise RuntimeError("Loss calculation failed; no target columns were found.") + + mask = valid_mask.bool().T.contiguous().reshape(-1) + token_count = mask.sum(dtype=torch.int64) + + loss_sums = {} + token_counts = {} + for target_column in target_names: + target_column_type = self.target_column_types[target_column] + if target_column_type == "categorical": + output_tensor = ( + output[target_column] + .float() + .reshape(-1, self.n_classes[target_column]) + ) + elif target_column_type == "real": + output_tensor = ( + output[target_column].to(dtype=torch.float32).reshape(-1) + ) + else: + raise ValueError( + f"Target column type {target_column_type} not in ['categorical', 'real']" + ) + + target_tensor = targets[target_column].T.contiguous().reshape(-1) + + if self.target_column_types[target_column] == "real": + target_tensor = target_tensor.to(dtype=output_tensor.dtype) + + raw_loss = self.criterion[target_column](output_tensor, target_tensor) + current_mask = mask.to(dtype=raw_loss.dtype) + + loss_sum = (raw_loss * current_mask).sum(dtype=torch.float64) + loss_sums[target_column] = loss_sum * ( + self.loss_weights[target_column] + if self.loss_weights is not None + else 1.0 + ) + token_counts[target_column] = token_count + + return loss_sums, token_counts + @beartype def _copy_model(self): """Copies the model. @@ -1853,232 +1926,246 @@ def _evaluate( - The output tensor dictionary from the last batch (used for class share logging). """ - total_loss_collect = [] - # Initialize a dict to hold lists of losses for each target - total_losses_collect = {col: [] for col in self.target_columns} + model_to_call = ddp_model if ddp_model is not None else self + target_names = list(self.target_columns) output = {} # for type checking - model_to_call = ddp_model if ddp_model is not None else self + def new_accumulators() -> tuple[dict[str, Tensor], dict[str, Tensor]]: + return ( + { + col: torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names + }, + { + col: torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names + }, + ) - model_to_call.eval() + def accumulate_components( + sums: dict[str, Tensor], + counts: dict[str, Tensor], + batch_sums: dict[str, Tensor], + batch_counts: dict[str, Tensor], + ) -> None: + for col in batch_sums: + sums[col] = sums[col] + batch_sums[col].detach().double() + counts[col] = counts[col] + batch_counts[col].detach().double() + + def finalize_components( + sums: dict[str, Tensor], + counts: dict[str, Tensor], + label: str, + ) -> tuple[Tensor, dict[str, Tensor]]: + packed = torch.stack( + [sums[col] for col in target_names] + + [counts[col] for col in target_names] + ) - with torch.no_grad(): - for batch_idx, batch in enumerate(valid_loader): - if not isinstance(batch, SequifierBatch): - raise TypeError( - "Validation DataLoader must yield SequifierBatch objects, " - f"got {type(batch).__name__}." - ) - data = batch.inputs - targets = batch.targets - metadata = batch.metadata - # Move data to the current process's assigned GPU - data = { - k: v.to(self.device, non_blocking=True) - for k, v in data.items() - if k in self.input_columns - } - targets = { - k: v.to(self.device, non_blocking=True) - for k, v in targets.items() - if k in self.target_column_types - } - metadata = { - k: v.to(self.device, non_blocking=True) for k, v in metadata.items() - } - if self.hparams.training_spec.training_objective == "bert": - data, targets, metadata = apply_bert_masking( - data, - targets, - metadata, - self.hparams, - eval_seed=self.hparams.seed + batch_idx, + if self.hparams.training_spec.distributed: + dist.all_reduce(packed, op=dist.ReduceOp.SUM) + + n_targets = len(target_names) + reduced_sums = dict(zip(target_names, packed[:n_targets])) + reduced_counts = dict(zip(target_names, packed[n_targets:])) + + losses = {} + total = torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names: + if reduced_counts[col].detach().cpu().item() == 0: + raise RuntimeError( + f"No valid {label} tokens found for target column {col!r}." ) + losses[col] = reduced_sums[col] / reduced_counts[col] + total = total + losses[col] + return total, losses - if ( - self.hparams.training_spec.layer_autocast - and self.hparams.training_spec.data_parallelism != "FSDP" - ): - amp_dtype = get_torch_dtype( - self.hparams.training_spec.layer_type_dtypes.get( - "linear", "bfloat16" + was_training = model_to_call.training + model_to_call.eval() + + try: + total_loss_sums, total_loss_counts = new_accumulators() + + with torch.no_grad(): + for batch_idx, batch in enumerate(valid_loader): + if not isinstance(batch, SequifierBatch): + raise TypeError( + "Validation DataLoader must yield SequifierBatch objects, " + f"got {type(batch).__name__}." ) - if self.hparams.training_spec.layer_type_dtypes - else "bfloat16" - ) - with torch.autocast( - device_type=self.device.split(":")[0], dtype=amp_dtype + data = batch.inputs + targets = batch.targets + metadata = batch.metadata + # Move data to the current process's assigned GPU + data = { + k: v.to(self.device, non_blocking=True) + for k, v in data.items() + if k in self.input_columns + } + targets = { + k: v.to(self.device, non_blocking=True) + for k, v in targets.items() + if k in self.target_column_types + } + metadata = { + k: v.to(self.device, non_blocking=True) + for k, v in metadata.items() + } + if self.hparams.training_spec.training_objective == "bert": + data, targets, metadata = apply_bert_masking( + data, + targets, + metadata, + self.hparams, + eval_seed=self.hparams.seed + batch_idx, + ) + + valid_mask = _get_evaluation_loss_mask(metadata) + + if ( + self.hparams.training_spec.layer_autocast + and self.hparams.training_spec.data_parallelism != "FSDP" ): + amp_dtype = get_torch_dtype( + self.hparams.training_spec.layer_type_dtypes.get( + "linear", "bfloat16" + ) + if self.hparams.training_spec.layer_type_dtypes + else "bfloat16" + ) + with torch.autocast( + device_type=self.device.split(":")[0], dtype=amp_dtype + ): + output = model_to_call( + data, metadata=metadata, return_logits=True + ) + loss_sums, token_counts = self._calculate_loss_components( + output, targets, valid_mask + ) + else: output = model_to_call( data, metadata=metadata, return_logits=True ) - loss, losses = self._calculate_loss(output, targets, metadata) - else: - output = model_to_call(data, metadata=metadata, return_logits=True) - loss, losses = self._calculate_loss(output, targets, metadata) - - total_loss_collect.append(loss.item()) - for col, loss in losses.items(): - total_losses_collect[col].append(loss.item()) - - # Free up GPU memory - del data, targets, metadata, loss, losses - if self.device == "cuda": - torch.cuda.empty_cache() - - if len(total_loss_collect) > 0: - total_loss_local = np.mean(total_loss_collect) - total_losses_local = { - col: np.mean(loss_list) - for col, loss_list in total_losses_collect.items() - } - else: - # Handle empty validation set case - total_loss_local = 0.0 - total_losses_local = {col: 0.0 for col in self.target_columns} + loss_sums, token_counts = self._calculate_loss_components( + output, targets, valid_mask + ) - # 2. Aggregate losses across all GPUs if in distributed mode - if self.hparams.training_spec.distributed: - # Put local losses into tensors for reduction - total_loss_tensor = torch.tensor( - total_loss_local, device=self.device, dtype=torch.float32 - ) + accumulate_components( + total_loss_sums, + total_loss_counts, + loss_sums, + token_counts, + ) - # Ensure consistent order for the losses tensor - loss_keys = sorted(total_losses_local.keys()) - losses_values = [total_losses_local[k] for k in loss_keys] - losses_tensor = torch.tensor( - losses_values, device=self.device, dtype=torch.float32 + total_loss_global, total_losses_global = finalize_components( + total_loss_sums, total_loss_counts, "validation" ) - # Sum losses from all processes. The result is broadcast back to all processes. - dist.all_reduce(total_loss_tensor, op=dist.ReduceOp.SUM) - dist.all_reduce(losses_tensor, op=dist.ReduceOp.SUM) + # Handle one-time baseline loss calculation with the same aggregation semantics. + if not hasattr(self, "baseline_loss"): + baseline_loss_sums, baseline_loss_counts = new_accumulators() - world_size = dist.get_world_size() - total_loss_tensor /= world_size - losses_tensor /= world_size - - # Update local variables with the aggregated global results - total_loss_global = total_loss_tensor.cpu().numpy() - losses_global_values = losses_tensor.cpu().numpy() - total_losses_global = dict(zip(loss_keys, losses_global_values)) - else: - # If not distributed, local losses are the global losses - total_loss_global = total_loss_local - total_losses_global = total_losses_local - - # 3. Handle one-time baseline loss calculation (must also be synchronized) - if not hasattr(self, "baseline_loss"): - baseline_loss_local_collect = [] - baseline_losses_local_collect = {col: [] for col in self.target_columns} - - # Iterate over the sharded validation loader - for batch_idx, batch in enumerate(valid_loader): - if not isinstance(batch, SequifierBatch): - raise TypeError( - "Validation DataLoader must yield SequifierBatch objects, " - f"got {type(batch).__name__}." - ) - data = batch.inputs - targets = batch.targets - metadata = batch.metadata - data = { - k: v.to(self.device, non_blocking=True) - for k, v in data.items() - if k in self.input_columns - } - targets = { - k: v.to(self.device, non_blocking=True) - for k, v in targets.items() - if k in self.target_column_types - } - metadata = { - k: v.to(self.device, non_blocking=True) for k, v in metadata.items() - } + with torch.no_grad(): + for batch_idx, batch in enumerate(valid_loader): + if not isinstance(batch, SequifierBatch): + raise TypeError( + "Validation DataLoader must yield SequifierBatch objects, " + f"got {type(batch).__name__}." + ) + data = batch.inputs + targets = batch.targets + metadata = batch.metadata + data = { + k: v.to(self.device, non_blocking=True) + for k, v in data.items() + if k in self.input_columns + } + targets = { + k: v.to(self.device, non_blocking=True) + for k, v in targets.items() + if k in self.target_column_types + } + metadata = { + k: v.to(self.device, non_blocking=True) + for k, v in metadata.items() + } - if self.hparams.training_spec.training_objective == "bert": - _, _, metadata = apply_bert_masking( - data, - targets, - metadata, - self.hparams, - eval_seed=self.hparams.seed + batch_idx, - ) + if self.hparams.training_spec.training_objective == "bert": + _, _, metadata = apply_bert_masking( + data, + targets, + metadata, + self.hparams, + eval_seed=self.hparams.seed + batch_idx, + ) - pseudo_output = {} - targets_for_baseline = {} - for col in self.target_columns: - if col in targets: - if self.hparams.training_spec.training_objective == "causal": - pseudo_output[col] = self._transform_val( - col, data[col].transpose(0, 1) + valid_mask = _get_evaluation_loss_mask(metadata) + + pseudo_output = {} + targets_for_baseline = {} + for col in self.target_columns: + if col in targets: + if ( + self.hparams.training_spec.training_objective + == "causal" + ): + pseudo_output[col] = self._transform_val( + col, data[col].transpose(0, 1) + ) + elif ( + self.hparams.training_spec.training_objective + == "bert" + ): + shifted_targets = torch.roll( + targets[col], shifts=1, dims=1 + ) + + if self.target_column_types[col] == "categorical": + shifted_targets[:, 0] = ( + SPECIAL_TOKEN_IDS.unknown + ) + else: + shifted_targets[:, 0] = 0.0 + pseudo_output[col] = self._transform_val( + col, shifted_targets.transpose(0, 1) + ) + else: + raise ValueError("Impossible") + targets_for_baseline[col] = targets[col] + + if len(pseudo_output) > 0: + loss_sums, token_counts = self._calculate_loss_components( + pseudo_output, + targets_for_baseline, + valid_mask, ) - elif self.hparams.training_spec.training_objective == "bert": - shifted_targets = torch.roll(targets[col], shifts=1, dims=1) - - if self.target_column_types[col] == "categorical": - shifted_targets[:, 0] = SPECIAL_TOKEN_IDS.unknown - else: - shifted_targets[:, 0] = 0.0 - pseudo_output[col] = self._transform_val( - col, shifted_targets.transpose(0, 1) + accumulate_components( + baseline_loss_sums, + baseline_loss_counts, + loss_sums, + token_counts, ) - else: - raise ValueError("Impossible") - targets_for_baseline[col] = targets[col] - - if len(pseudo_output) > 0: - loss, losses = self._calculate_loss( - pseudo_output, targets_for_baseline, metadata - ) - baseline_loss_local_collect.append(loss.item()) - for col, loss_ in losses.items(): - baseline_losses_local_collect[col].append(loss_.item()) - - # Sum the losses for the local shard - if len(baseline_loss_local_collect): - baseline_loss_local = np.mean(baseline_loss_local_collect) - baseline_losses_local = { - col: np.mean(loss_list) - for col, loss_list in baseline_losses_local_collect.items() - } - else: - baseline_loss_local = -1.0 - baseline_losses_local = {col: -1.0 for col in self.target_columns} - # Broadcast the baseline values from the main process to all others - if self.hparams.training_spec.distributed: - total_loss_tensor = torch.tensor( - baseline_loss_local, device=self.device, dtype=torch.float32 + baseline_loss, baseline_losses = finalize_components( + baseline_loss_sums, baseline_loss_counts, "baseline validation" ) - dist.all_reduce(total_loss_tensor, op=dist.ReduceOp.SUM) - loss_keys = sorted(baseline_losses_local.keys()) - losses_values = [baseline_losses_local[k] for k in loss_keys] - losses_tensor = torch.tensor( - losses_values, device=self.device, dtype=torch.float32 - ) - dist.all_reduce(losses_tensor, op=dist.ReduceOp.SUM) - - world_size = dist.get_world_size() - total_loss_tensor /= world_size - losses_tensor /= world_size - - self.baseline_loss = total_loss_tensor.item() - self.baseline_losses = dict(zip(loss_keys, losses_tensor.cpu().numpy())) - else: - # If not distributed, local is global - self.baseline_loss = baseline_loss_local - self.baseline_losses = baseline_losses_local - - model_to_call.train() - torch.clear_autocast_cache() + self.baseline_loss = baseline_loss.detach().cpu().item() + self.baseline_losses = { + col: loss.detach().cpu().item() + for col, loss in baseline_losses.items() + } - return ( - np.float32(total_loss_global), - {k: np.float32(v) for k, v in total_losses_global.items()}, - output, - ) + return ( + np.float32(total_loss_global.detach().cpu().item()), + { + k: np.float32(v.detach().cpu().item()) + for k, v in total_losses_global.items() + }, + output, + ) + finally: + model_to_call.train(was_training) + torch.clear_autocast_cache() @beartype def _export( @@ -2457,20 +2544,29 @@ class share statistics (if configured) to the log file. for categorical_column in self.class_share_log_columns: output_values = ( - output[categorical_column].argmax(1).cpu().detach().numpy() + output[categorical_column] + .argmax(dim=-1) # class dimension + .reshape(-1) # scalar category ID per token + .detach() + .cpu() + .numpy() ) + output_counts_df = ( - pl.Series("values", output_values).value_counts().sort("values") + pl.Series("values", output_values) + .value_counts() + .with_columns( + (pl.col("count") / pl.col("count").sum()).alias("share") + ) + .sort("values") ) - output_counts = output_counts_df.get_column("count") - output_counts = output_counts / output_counts.sum() value_shares = " | ".join( - [ - f"{self.index_maps[categorical_column][row['values']]}: {row['count']:5.5f}" - for row in output_counts_df.iter_rows(named=True) - ] + f"{self.index_maps[categorical_column][int(row['values'])]}: " + f"{row['share']:5.5f}" + for row in output_counts_df.iter_rows(named=True) ) + self.logger.info(f"[INFO] {categorical_column}: {value_shares}") self.logger.info("-" * 89) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 872b2e76..e2527ab6 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -17,7 +17,7 @@ ) from sequifier.helpers import ModelWindowView, StoredWindowLayout from sequifier.special_tokens import SPECIAL_TOKEN_IDS -from sequifier.train import TransformerModel +from sequifier.train import TransformerModel, _get_evaluation_loss_mask def _training_spec_kwargs(**overrides): @@ -479,6 +479,85 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) +def test_evaluation_loss_mask_intersects_target_bert_and_sample_masks(): + metadata = { + "target_valid_mask": torch.tensor( + [ + [True, True, False], + [True, True, True], + ] + ), + "bert_mask": torch.tensor( + [ + [True, False, True], + [True, True, True], + ] + ), + "sample_valid_mask": torch.tensor([True, False]), + } + + loss_mask = _get_evaluation_loss_mask(metadata) + + assert torch.equal( + loss_mask, + torch.tensor( + [ + [True, False, False], + [False, False, False], + ] + ), + ) + + +def test_calculate_loss_components_aggregate_by_token_count(): + model = TransformerModel.__new__(TransformerModel) + model.target_column_types = {"real_col": "real"} + model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} + model.loss_weights = {"real_col": 1.0} + + first_sums, first_counts = TransformerModel._calculate_loss_components( + model, + {"real_col": torch.zeros(1, 1, 1)}, + {"real_col": torch.tensor([[10.0]])}, + torch.ones(1, 1, dtype=torch.bool), + ) + second_sums, second_counts = TransformerModel._calculate_loss_components( + model, + {"real_col": torch.zeros(100, 1, 1)}, + {"real_col": torch.ones(1, 100)}, + torch.ones(1, 100, dtype=torch.bool), + ) + + aggregate = (first_sums["real_col"] + second_sums["real_col"]) / ( + first_counts["real_col"] + second_counts["real_col"] + ) + + assert torch.isclose(aggregate, torch.tensor(200.0 / 101.0, dtype=torch.float64)) + + +def test_calculate_loss_zero_token_training_batch_is_differentiable(): + model = TransformerModel.__new__(TransformerModel) + model.target_column_types = {"real_col": "real"} + model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} + model.loss_weights = None + + output = {"real_col": torch.ones(3, 1, 1, requires_grad=True)} + targets = {"real_col": torch.zeros(1, 3)} + metadata = { + "attention_valid_mask": torch.zeros(1, 3, dtype=torch.bool), + "target_valid_mask": torch.zeros(1, 3, dtype=torch.bool), + } + + total_loss, component_losses = TransformerModel._calculate_loss( + model, output, targets, metadata + ) + total_loss.backward() + + assert torch.equal(total_loss.detach(), torch.tensor(0.0)) + assert torch.equal(component_losses["real_col"].detach(), torch.tensor(0.0)) + assert torch.equal(output["real_col"].grad, torch.zeros_like(output["real_col"])) + + def test_padding_keys_are_masked(bert_model): seq_len = bert_model.window_view.context_length From da4d0fa14f027f2dcfd6a1f4ce8f1487f0a17703 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 13 Jun 2026 19:07:49 +0200 Subject: [PATCH 57/81] update custom eval int test outputs --- .../hyperparameter-search-custom-eval.yaml | 2 +- ...rical-distributed-best-3-6-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 398 +++++++++--------- ...custom-eval-run-0-best-1-0-predictions.csv | 31 -- ...custom-eval-run-0-best-1-1-predictions.csv | 31 -- ...custom-eval-run-0-best-1-2-predictions.csv | 31 -- ...custom-eval-run-0-best-1-3-predictions.csv | 61 --- ...custom-eval-run-0-best-1-4-predictions.csv | 31 -- ...custom-eval-run-0-best-1-5-predictions.csv | 61 --- ...custom-eval-run-0-best-1-6-predictions.csv | 31 -- ...custom-eval-run-0-best-1-7-predictions.csv | 31 -- ...custom-eval-run-1-best-1-0-predictions.csv | 31 -- ...custom-eval-run-1-best-1-1-predictions.csv | 31 -- ...custom-eval-run-1-best-1-2-predictions.csv | 31 -- ...custom-eval-run-1-best-1-3-predictions.csv | 61 --- ...custom-eval-run-1-best-1-4-predictions.csv | 31 -- ...custom-eval-run-1-best-1-5-predictions.csv | 61 --- ...custom-eval-run-1-best-1-6-predictions.csv | 31 -- ...custom-eval-run-1-best-1-7-predictions.csv | 31 -- ...custom-eval-run-2-best-1-2-predictions.csv | 31 -- ...custom-eval-run-2-best-1-3-predictions.csv | 61 --- ...custom-eval-run-2-best-1-7-predictions.csv | 31 -- ...custom-eval-run-3-best-1-0-predictions.csv | 31 -- ...custom-eval-run-3-best-1-1-predictions.csv | 31 -- ...custom-eval-run-3-best-1-2-predictions.csv | 31 -- ...custom-eval-run-3-best-1-3-predictions.csv | 61 --- ...custom-eval-run-3-best-1-4-predictions.csv | 31 -- ...custom-eval-run-3-best-1-5-predictions.csv | 61 --- ...custom-eval-run-3-best-1-6-predictions.csv | 31 -- ...custom-eval-run-3-best-1-7-predictions.csv | 31 -- ...custom-eval-run-4-best-3-0-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-1-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-3-predictions.csv | 61 +++ ...custom-eval-run-4-best-3-4-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-5-predictions.csv | 61 +++ ...custom-eval-run-4-best-3-6-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-7-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-0-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-1-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-3-predictions.csv | 61 +++ ...custom-eval-run-5-best-3-4-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-5-predictions.csv | 61 +++ ...custom-eval-run-5-best-3-6-predictions.csv | 31 ++ ...custom-eval-run-5-best-3-7-predictions.csv | 31 ++ ...ustom-eval-run-6-best-3-0-predictions.csv} | 16 +- ...ustom-eval-run-6-best-3-1-predictions.csv} | 8 +- ...custom-eval-run-6-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-6-best-3-3-predictions.csv | 61 +++ ...ustom-eval-run-6-best-3-4-predictions.csv} | 12 +- ...ustom-eval-run-6-best-3-5-predictions.csv} | 52 +-- ...ustom-eval-run-6-best-3-6-predictions.csv} | 4 +- ...custom-eval-run-6-best-3-7-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-0-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-1-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-3-predictions.csv | 61 +++ ...custom-eval-run-7-best-3-4-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-5-predictions.csv | 61 +++ ...custom-eval-run-7-best-3-6-predictions.csv | 31 ++ ...custom-eval-run-7-best-3-7-predictions.csv | 31 ++ 62 files changed, 1294 insertions(+), 1294 deletions(-) delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv => sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv} (74%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv => sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv} (86%) create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv => sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv} (79%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv => sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv} (55%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv => sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv} (92%) create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml index 2dfc8d7a..abb6b043 100644 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ b/tests/configs/hyperparameter-search-custom-eval.yaml @@ -54,7 +54,7 @@ model_hyperparameter_sampling: training_hyperparameter_sampling: training_objective: ["causal"] device: cpu - epochs: [1, 1] + epochs: [3, 3] save_interval_epochs: 10 batch_size: [5, 10] learning_rate: [0.001, 0.0001] diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv index 8eb4c4a0..59349bc1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,4,111 +8,4,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index 4305a322..fe0245bd 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,-0.16518183 -0,22,0.28807208 -0,23,0.26411152 -0,24,0.070929505 -0,25,0.106371164 -0,26,0.08790157 -0,27,0.28008524 -0,28,0.18923476 -0,29,-0.0023990057 -0,30,-0.007035904 -0,31,-0.20611446 -0,32,-0.07283385 -0,33,0.10886706 -0,34,0.016643867 -0,35,-0.0878092 -0,36,0.06843361 -0,37,0.032991957 -0,38,-0.0878092 -0,39,-0.12524757 -0,40,-0.18714568 -1,19,0.18324462 -1,20,-0.041136023 -1,21,0.41785845 -1,22,0.41386503 -1,23,0.3938979 -1,24,0.07841718 -1,25,0.0021052985 -1,26,0.06344183 -1,27,-0.04138561 -1,28,-0.045878217 -1,29,-0.03289958 -1,30,-0.06684371 -1,31,0.10537281 -1,32,-0.058856852 -1,33,-0.14820977 -1,34,-0.13023935 -1,35,0.035737436 -1,36,-0.11326729 -1,37,-0.039139308 -1,38,0.11785226 -2,17,0.34198335 -2,18,0.20121504 -2,19,0.07142868 -2,20,0.03773415 -2,21,0.3060425 -2,22,-0.11426565 -2,23,0.07192786 -2,24,0.013773591 -2,25,-0.036643416 -2,26,-0.027034234 -2,27,-0.021293685 -2,28,-0.034397114 -2,29,-0.09030509 -2,30,-0.15120484 -2,31,-0.18914239 -2,32,-0.18914239 -2,33,0.07991471 -2,34,-0.120754965 -2,35,0.011652084 -2,36,-0.14421634 -3,17,0.11385884 -3,18,0.3240129 -3,19,0.29406223 -3,20,0.094390884 -3,21,0.2251756 -3,22,0.36993733 -3,23,0.057202104 -3,24,0.22417724 -3,25,-0.07283385 -3,26,0.16427584 -3,27,0.05545498 -3,28,-0.22108981 -3,29,-0.06834124 -3,30,-0.083316594 -3,31,0.05021361 -3,32,-0.052117944 -3,33,-0.1222525 -3,34,0.1148572 -3,35,-0.011247721 -3,36,-0.0209193 -4,14,0.25612468 -4,15,0.09139582 -4,16,0.2092019 -4,17,0.17126435 -4,18,0.12234487 -4,19,0.22817066 -4,20,0.04047963 -4,21,-0.14022292 -4,22,0.041727576 -4,23,-0.07033796 -4,24,-0.058856852 -4,25,-0.061352745 -4,26,-0.0067239176 -4,27,-0.012994845 -4,28,-0.12874182 -4,29,0.16128078 -4,30,-0.11925743 -4,31,-0.071336314 -4,32,-0.11726072 -4,33,0.06843361 -5,14,-0.2260816 -5,15,0.026253048 -5,16,0.13232844 -5,17,0.17825285 -5,18,0.35196692 -5,19,0.31203264 -5,20,0.06943197 -5,21,-0.10428208 -5,22,-0.10178619 -5,23,0.019638937 -5,24,0.017018251 -5,25,-0.10577962 -5,26,-0.073333025 -5,27,-0.17716211 -5,28,-0.16917527 -5,29,-0.17217033 -5,30,0.23316245 -5,31,0.04047963 -5,32,-0.06784207 -5,33,0.13432515 -6,18,0.2531296 -6,19,0.19222984 -6,20,0.455796 -6,21,0.3958946 -6,22,-0.015490737 -6,23,-0.17316869 -6,24,-0.109273866 -6,25,-0.16717854 -6,26,0.1333268 -6,27,-0.35486957 -6,28,-0.07283385 -6,29,-0.15320155 -6,30,0.12833501 -6,31,-0.04512945 -6,32,-0.12774347 -6,33,0.142312 -6,34,0.018765375 -6,35,0.14630543 -6,36,-0.10428208 -6,37,-0.062351096 -7,15,-0.022167247 -7,16,0.2601181 -7,17,0.08041389 -7,18,-0.019172177 -7,19,-0.1841506 -7,20,0.068932794 -7,21,0.053707857 -7,22,0.028499352 -7,23,-0.20811117 -7,24,-0.039139308 -7,25,-0.033897936 -7,26,-0.07582892 -7,27,0.06593772 -7,28,-0.067342885 -7,29,-0.21609803 -7,30,-0.19712925 -7,31,0.19222984 -7,32,-0.11825907 -7,33,-0.022167247 -7,34,0.065438546 -8,20,0.18324462 -8,21,-0.14122127 -8,22,-0.018922588 -8,23,0.32001948 -8,24,0.060197175 -8,25,0.070929505 -8,26,-0.03639383 -8,27,0.16727091 -8,28,-0.018049026 -8,29,-0.06634453 -8,30,-0.056111373 -8,31,-0.07383221 -8,32,-0.14920813 -8,33,-0.05361548 -8,34,0.10736952 -8,35,0.06793443 -8,36,0.043973878 -8,37,0.3040458 -8,38,-0.077326454 -8,39,-0.1522032 -9,16,0.3060425 -9,17,0.28807208 -9,18,0.3180228 -9,19,0.0068474924 -9,20,0.25612468 -9,21,0.14331035 -9,22,0.22118217 -9,23,-0.16118841 -9,24,-0.06384864 -9,25,-0.04537904 -9,26,0.18923476 -9,27,0.0664369 -9,28,-0.20611446 -9,29,0.07991471 -9,30,-0.19613089 +0,21,0.03249278 +0,22,0.1493005 +0,23,0.12733665 +0,24,0.21319532 +0,25,0.16727091 +0,26,0.31602606 +0,27,0.15728734 +0,28,-0.1362295 +0,29,-0.1362295 +0,30,-0.17217033 +0,31,-0.13922456 +0,32,-0.15020649 +0,33,0.022259623 +0,34,-0.0992903 +0,35,-0.11825907 +0,36,-0.08631166 +0,37,0.029248118 +0,38,-0.1661802 +0,39,0.27209836 +0,40,-0.037392184 +1,19,-0.04438068 +1,20,0.23515917 +1,21,0.16327749 +1,22,-0.0032530688 +1,23,0.2411493 +1,24,0.0893991 +1,25,0.12084734 +1,26,-0.1751654 +1,27,0.12134651 +1,28,-0.15719499 +1,29,0.04671936 +1,30,-0.05860726 +1,31,-0.051868357 +1,32,0.06993115 +1,33,0.051711142 +1,34,-0.08631166 +1,35,-0.015865121 +1,36,-0.17117198 +1,37,-0.057359315 +1,38,0.015770305 +2,17,0.04996402 +2,18,-0.11176976 +2,19,0.17425941 +2,20,0.19422655 +2,21,-0.021293685 +2,22,-0.021044096 +2,23,0.1078687 +2,24,0.077918 +2,25,0.02899853 +2,26,-0.13922456 +2,27,-0.1751654 +2,28,-0.021792863 +2,29,0.09838431 +2,30,0.19722162 +2,31,-0.20611446 +2,32,-0.009344604 +2,33,-0.08481413 +2,34,-0.038140953 +2,35,0.078916356 +2,36,-0.124748394 +3,17,0.057451695 +3,18,0.2780885 +3,19,0.21020025 +3,20,0.30005237 +3,21,0.23016739 +3,22,0.028000174 +3,23,0.12084734 +3,24,0.17825285 +3,25,-0.114764825 +3,26,-0.0601048 +3,27,-0.07183549 +3,28,-0.037392184 +3,29,-0.13822621 +3,30,-0.13922456 +3,31,-0.101287015 +3,32,-0.0076598767 +3,33,-0.05935603 +3,34,-0.054364245 +3,35,0.04047963 +3,36,-0.048623696 +4,14,0.20820354 +4,15,0.16227913 +4,16,-0.17716211 +4,17,-0.08032152 +4,18,0.02600346 +4,19,0.14830214 +4,20,0.07242704 +4,21,-0.089306735 +4,22,-0.15020649 +4,23,0.036236614 +4,24,-0.27100763 +4,25,0.100381024 +4,26,-0.024039164 +4,27,0.19322819 +4,28,-0.09879112 +4,29,0.008969001 +4,30,-0.05860726 +4,31,-0.14421634 +4,32,0.036236614 +4,33,0.1403153 +5,14,0.26610824 +5,15,0.41586173 +5,16,0.30803922 +5,17,0.21519203 +5,18,0.2601181 +5,19,0.16128078 +5,20,-0.023040809 +5,21,0.027001817 +5,22,-0.16418348 +5,23,-0.0058503556 +5,24,-0.109273866 +5,25,-0.12574674 +5,26,0.13232844 +5,27,0.028499352 +5,28,0.02600346 +5,29,0.008157835 +5,30,0.042975523 +5,31,-0.07882399 +5,32,-0.25703064 +5,33,-0.2350668 +6,18,0.40987158 +6,19,0.11136295 +6,20,0.17126435 +6,21,0.30204907 +6,22,0.20720518 +6,23,0.07941554 +6,24,-0.028157387 +6,25,0.024006747 +6,26,0.015770305 +6,27,-0.13922456 +6,28,0.02575387 +6,29,-0.0043060225 +6,30,-0.08181906 +6,31,-0.052367534 +6,32,0.051211964 +6,33,-0.12025579 +6,34,0.056702927 +6,35,0.19222984 +6,36,0.017392633 +6,37,-0.1522032 +7,15,0.156289 +7,16,0.29805565 +7,17,-0.03289958 +7,18,0.16128078 +7,19,0.06943197 +7,20,-0.057608906 +7,21,-0.07283385 +7,22,0.1952249 +7,23,-0.032275606 +7,24,-0.06484699 +7,25,0.066936076 +7,26,0.023757158 +7,27,-0.13722785 +7,28,-0.057858497 +7,29,0.036236614 +7,30,-0.096794404 +7,31,-0.03864013 +7,32,-0.14721142 +7,33,0.06444018 +7,34,0.033740725 +8,20,-0.012370872 +8,21,0.0412284 +8,22,0.21419367 +8,23,-0.143218 +8,24,0.060696352 +8,25,-0.04762534 +8,26,0.114358015 +8,27,0.07741882 +8,28,0.09738596 +8,29,0.058699638 +8,30,-0.040137667 +8,31,-0.0878092 +8,32,0.059947584 +8,33,0.04147799 +8,34,0.05245991 +8,35,0.10137938 +8,36,-0.05411466 +8,37,-0.054613836 +8,38,-0.034397114 +8,39,0.03848292 +9,16,0.066936076 +9,17,0.25113288 +9,18,0.28807208 +9,19,-0.19213746 +9,20,0.060696352 +9,21,0.2092019 +9,22,0.29406223 +9,23,-0.12424921 +9,24,-0.062351096 +9,25,0.00085735274 +9,26,-0.11626236 +9,27,-0.065845355 +9,28,0.27010167 +9,29,0.0051627657 +9,30,-0.01287005 9,31,-0.109273866 -9,32,0.07642046 -9,33,-0.11975661 -9,34,-0.018548204 -9,35,-0.2350668 +9,32,-0.097293586 +9,33,-0.055861782 +9,34,0.033740725 +9,35,-0.10228537 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv deleted file mode 100644 index 4e65dc53..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-0-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,104,4,9,7,0 -0,5,112,4,9,7,0 -0,6,104,9,9,7,0 -0,7,112,4,9,5,0 -0,8,112,9,9,5,0 -0,9,112,9,9,5,0 -0,10,112,9,9,5,0 -0,11,112,9,9,5,0 -0,12,112,9,9,5,0 -0,13,112,9,9,5,0 -0,14,112,9,9,5,0 -0,15,112,9,9,2,0 -0,16,112,9,9,7,0 -0,17,112,9,9,7,0 -0,18,112,9,9,7,0 -0,19,112,9,9,7,0 -0,20,112,9,9,7,0 -0,21,112,9,9,7,0 -0,22,112,9,9,7,0 -0,23,112,9,9,7,0 -0,24,112,9,9,7,0 -0,25,112,9,9,7,0 -0,26,112,9,9,7,0 -0,27,112,9,9,7,0 -0,28,112,9,9,7,0 -0,29,112,9,9,7,0 -0,30,112,9,9,7,0 -0,31,112,9,9,7,0 -0,32,112,9,9,7,0 -0,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv deleted file mode 100644 index bf364d0d..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-1-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,111,4,9,7,1 -1,5,111,4,9,7,1 -1,6,111,4,9,7,1 -1,7,111,4,9,7,1 -1,8,111,4,9,7,1 -1,9,111,4,9,7,1 -1,10,111,4,9,7,1 -1,11,111,4,9,7,1 -1,12,102,4,9,7,1 -1,13,102,4,9,7,1 -1,14,102,4,9,7,1 -1,15,102,4,9,7,1 -1,16,122,4,9,5,1 -1,17,122,9,9,2,0 -1,18,121,9,9,5,0 -1,19,121,9,9,5,0 -1,20,112,9,9,2,0 -1,21,112,9,9,2,0 -1,22,112,9,9,2,0 -1,23,112,9,9,2,0 -1,24,112,9,9,7,0 -1,25,112,9,9,7,0 -1,26,112,9,9,7,0 -1,27,112,9,9,7,0 -1,28,112,9,9,7,0 -1,29,112,9,9,7,0 -1,30,112,9,9,7,0 -1,31,112,9,9,7,0 -1,32,112,9,9,7,0 -1,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv deleted file mode 100644 index ab10690c..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,112,9,9,7,0 -2,4,112,9,9,2,0 -2,5,112,9,9,2,0 -2,6,112,9,9,2,0 -2,7,112,9,9,2,0 -2,8,112,9,9,2,0 -2,9,112,9,9,7,0 -2,10,112,9,9,7,0 -2,11,112,9,9,7,0 -2,12,112,9,9,7,0 -2,13,112,9,9,7,0 -2,14,112,9,9,7,0 -2,15,112,9,9,7,0 -2,16,112,9,9,7,0 -2,17,112,9,9,7,0 -2,18,112,9,9,7,0 -2,19,112,9,9,7,0 -2,20,112,9,9,7,0 -2,21,112,9,9,7,0 -2,22,112,9,9,7,0 -2,23,112,9,9,7,0 -2,24,112,9,9,7,0 -2,25,112,9,9,7,0 -2,26,112,9,9,7,0 -2,27,112,9,9,7,0 -2,28,112,9,9,7,0 -2,29,112,9,9,7,0 -2,30,112,9,9,7,0 -2,31,112,9,9,7,0 -2,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv deleted file mode 100644 index c3e044e5..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,112,9,9,5,0 -3,4,112,9,9,2,0 -3,5,112,9,9,2,0 -3,6,112,9,9,2,0 -3,7,112,9,9,2,0 -3,8,112,9,9,2,0 -3,9,112,9,9,2,0 -3,10,112,9,9,7,0 -3,11,112,9,9,7,0 -3,12,112,9,9,7,0 -3,13,112,9,9,7,0 -3,14,112,9,9,7,0 -3,15,112,9,9,7,0 -3,16,112,9,9,7,0 -3,17,112,9,9,7,0 -3,18,112,9,9,7,0 -3,19,112,9,9,7,0 -3,20,112,9,9,7,0 -3,21,112,9,9,7,0 -3,22,112,9,9,7,0 -3,23,112,9,9,7,0 -3,24,112,9,9,7,0 -3,25,112,9,9,7,0 -3,26,112,9,9,7,0 -3,27,112,9,9,7,0 -3,28,112,9,9,7,0 -3,29,112,9,9,7,0 -3,30,112,9,9,7,0 -3,31,112,9,9,7,0 -3,32,112,9,9,7,0 -4,3,112,9,9,7,0 -4,4,112,9,9,7,0 -4,5,112,9,9,7,0 -4,6,112,9,9,7,0 -4,7,112,9,9,7,0 -4,8,112,9,9,7,0 -4,9,112,9,9,5,0 -4,10,112,9,9,5,0 -4,11,112,9,9,5,0 -4,12,112,9,9,5,0 -4,13,112,9,9,5,0 -4,14,112,9,9,5,0 -4,15,112,9,9,7,0 -4,16,112,9,9,7,0 -4,17,112,9,9,7,0 -4,18,112,9,9,7,0 -4,19,112,9,9,7,0 -4,20,112,9,9,7,0 -4,21,112,9,9,7,0 -4,22,112,9,9,7,0 -4,23,112,9,9,7,0 -4,24,112,9,9,7,0 -4,25,112,9,9,7,0 -4,26,112,9,9,7,0 -4,27,112,9,9,7,0 -4,28,112,9,9,7,0 -4,29,112,9,9,7,0 -4,30,112,9,9,7,0 -4,31,112,9,9,7,0 -4,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv deleted file mode 100644 index c38b58c0..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-4-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,111,3,2,2,0 -5,4,111,4,9,8,1 -5,5,111,4,9,7,1 -5,6,111,4,9,7,1 -5,7,111,4,9,7,1 -5,8,111,4,9,7,1 -5,9,111,4,9,7,1 -5,10,102,4,9,7,1 -5,11,102,4,9,7,1 -5,12,102,4,9,7,1 -5,13,102,4,9,7,1 -5,14,122,4,9,5,1 -5,15,122,9,9,2,0 -5,16,121,9,9,5,0 -5,17,121,9,9,5,0 -5,18,112,9,9,2,0 -5,19,112,9,9,2,0 -5,20,112,9,9,2,0 -5,21,112,9,9,2,0 -5,22,112,9,9,7,0 -5,23,112,9,9,7,0 -5,24,112,9,9,7,0 -5,25,112,9,9,7,0 -5,26,112,9,9,7,0 -5,27,112,9,9,7,0 -5,28,112,9,9,7,0 -5,29,112,9,9,7,0 -5,30,112,9,9,7,0 -5,31,112,9,9,7,0 -5,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv deleted file mode 100644 index d8447e35..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-5-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,111,4,9,7,1 -6,5,111,4,9,7,1 -6,6,111,4,9,7,1 -6,7,111,4,9,7,1 -6,8,111,4,9,7,1 -6,9,111,4,9,7,1 -6,10,102,4,9,7,1 -6,11,102,4,9,7,1 -6,12,102,4,9,7,1 -6,13,102,4,9,7,1 -6,14,122,4,9,5,1 -6,15,122,9,9,2,0 -6,16,121,9,9,5,0 -6,17,121,9,9,5,0 -6,18,112,9,9,2,0 -6,19,112,9,9,2,0 -6,20,112,9,9,2,0 -6,21,112,9,9,2,0 -6,22,112,9,9,7,0 -6,23,112,9,9,7,0 -6,24,112,9,9,7,0 -6,25,112,9,9,7,0 -6,26,112,9,9,7,0 -6,27,112,9,9,7,0 -6,28,112,9,9,7,0 -6,29,112,9,9,7,0 -6,30,112,9,9,7,0 -6,31,112,9,9,7,0 -6,32,112,9,9,7,0 -6,33,112,9,9,7,0 -7,3,104,4,9,7,1 -7,4,102,4,9,7,1 -7,5,104,4,9,7,0 -7,6,121,4,9,5,1 -7,7,111,6,9,5,0 -7,8,121,4,9,5,1 -7,9,111,6,9,5,0 -7,10,122,4,9,5,1 -7,11,111,9,9,7,1 -7,12,111,9,9,7,1 -7,13,111,9,9,7,1 -7,14,111,3,9,7,1 -7,15,111,4,9,7,1 -7,16,111,4,9,7,1 -7,17,102,4,9,7,1 -7,18,102,4,9,7,1 -7,19,102,4,9,7,1 -7,20,102,4,9,7,1 -7,21,102,4,9,5,0 -7,22,121,4,9,5,0 -7,23,121,9,9,5,0 -7,24,121,9,9,5,0 -7,25,112,9,9,2,0 -7,26,112,9,9,2,0 -7,27,112,9,9,2,0 -7,28,112,9,9,2,0 -7,29,112,9,9,2,0 -7,30,112,9,9,7,0 -7,31,112,9,9,7,0 -7,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv deleted file mode 100644 index 2ed29b99..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-6-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,111,9,9,7,1 -8,5,111,4,9,7,1 -8,6,111,4,9,7,1 -8,7,111,4,9,7,1 -8,8,111,4,9,7,1 -8,9,111,4,9,7,1 -8,10,111,4,9,7,1 -8,11,111,4,9,7,1 -8,12,102,4,9,7,1 -8,13,102,4,9,7,1 -8,14,102,4,9,7,1 -8,15,102,4,9,7,1 -8,16,122,4,9,5,1 -8,17,122,9,9,2,0 -8,18,121,9,9,5,0 -8,19,121,9,9,5,0 -8,20,112,9,9,2,0 -8,21,112,9,9,2,0 -8,22,112,9,9,2,0 -8,23,112,9,9,2,0 -8,24,112,9,9,7,0 -8,25,112,9,9,7,0 -8,26,112,9,9,7,0 -8,27,112,9,9,7,0 -8,28,112,9,9,7,0 -8,29,112,9,9,7,0 -8,30,112,9,9,7,0 -8,31,112,9,9,7,0 -8,32,112,9,9,7,0 -8,33,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv deleted file mode 100644 index bdde68a7..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-predictions/sequifier-test-hp-search-custom-eval-run-0-best-1-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,113,4,2,7,1 -9,4,113,4,9,7,1 -9,5,113,4,9,7,1 -9,6,113,4,9,7,1 -9,7,111,4,9,7,1 -9,8,102,4,9,7,1 -9,9,102,4,9,7,0 -9,10,113,4,9,7,1 -9,11,113,4,9,7,1 -9,12,113,4,9,7,1 -9,13,113,9,9,7,1 -9,14,111,9,9,7,1 -9,15,111,9,9,7,1 -9,16,111,9,9,7,1 -9,17,111,4,9,7,1 -9,18,102,4,9,7,1 -9,19,102,4,9,7,1 -9,20,102,4,9,7,1 -9,21,102,4,9,7,1 -9,22,102,4,9,7,1 -9,23,104,6,9,5,0 -9,24,121,9,9,5,1 -9,25,122,9,9,2,0 -9,26,112,9,9,2,0 -9,27,112,9,9,2,0 -9,28,112,9,9,2,0 -9,29,112,9,9,2,0 -9,30,112,9,9,7,0 -9,31,112,9,9,7,0 -9,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv deleted file mode 100644 index 2132af3a..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-0-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,127,1,1,2,1 -0,5,113,4,9,8,1 -0,6,113,1,1,8,1 -0,7,113,1,9,8,1 -0,8,113,1,9,8,1 -0,9,113,1,9,8,1 -0,10,113,1,8,8,1 -0,11,113,1,0,8,1 -0,12,113,1,9,7,1 -0,13,121,1,8,7,1 -0,14,105,1,8,7,1 -0,15,105,1,8,7,1 -0,16,105,1,8,7,1 -0,17,113,1,7,7,1 -0,18,113,6,7,7,1 -0,19,113,6,7,2,1 -0,20,113,1,7,8,1 -0,21,113,1,7,8,1 -0,22,113,1,7,8,1 -0,23,113,1,0,8,1 -0,24,113,1,0,8,1 -0,25,113,1,0,8,1 -0,26,113,1,0,8,1 -0,27,113,1,0,8,1 -0,28,113,1,0,7,1 -0,29,108,1,8,7,1 -0,30,108,1,0,7,1 -0,31,108,6,0,7,1 -0,32,108,1,0,7,1 -0,33,108,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv deleted file mode 100644 index c473bc6b..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-1-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,121,6,0,8,0 -1,5,121,1,0,8,0 -1,6,121,1,0,8,0 -1,7,121,1,0,8,0 -1,8,121,1,0,8,0 -1,9,126,1,0,8,0 -1,10,127,1,0,8,0 -1,11,127,0,0,8,0 -1,12,127,0,9,8,0 -1,13,127,0,7,7,0 -1,14,105,8,9,7,1 -1,15,127,0,7,2,1 -1,16,113,4,7,8,1 -1,17,113,1,9,8,1 -1,18,113,1,7,8,1 -1,19,113,1,9,8,1 -1,20,113,1,0,8,1 -1,21,113,1,0,8,1 -1,22,113,1,0,8,1 -1,23,113,1,0,8,1 -1,24,113,1,0,7,1 -1,25,108,1,8,7,1 -1,26,108,1,8,7,1 -1,27,105,6,8,7,1 -1,28,113,1,8,7,1 -1,29,113,6,7,7,1 -1,30,113,6,7,7,1 -1,31,113,6,7,2,1 -1,32,113,1,7,8,1 -1,33,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv deleted file mode 100644 index 4f612da8..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,121,1,8,0,0 -2,4,105,0,8,7,0 -2,5,121,1,8,2,0 -2,6,113,4,7,8,0 -2,7,121,1,9,8,0 -2,8,127,1,0,8,0 -2,9,127,4,0,8,1 -2,10,127,1,0,8,0 -2,11,127,4,7,8,1 -2,12,127,1,0,8,1 -2,13,103,1,0,8,1 -2,14,113,1,0,8,1 -2,15,103,1,9,7,1 -2,16,105,1,7,7,1 -2,17,113,1,9,7,1 -2,18,105,1,9,7,1 -2,19,113,1,7,7,1 -2,20,113,6,9,7,1 -2,21,113,1,7,7,1 -2,22,113,6,5,7,1 -2,23,113,1,8,8,1 -2,24,113,1,0,8,1 -2,25,113,1,0,8,1 -2,26,113,1,0,8,1 -2,27,113,1,0,8,1 -2,28,113,1,0,8,1 -2,29,113,1,0,7,1 -2,30,108,1,8,7,1 -2,31,105,1,8,7,1 -2,32,105,1,9,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv deleted file mode 100644 index 52804bbb..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,127,4,0,2,0 -3,4,127,4,0,8,1 -3,5,127,4,0,8,1 -3,6,127,1,0,2,1 -3,7,113,4,9,8,1 -3,8,121,1,1,2,1 -3,9,113,0,9,8,1 -3,10,113,1,1,8,1 -3,11,113,1,9,7,1 -3,12,105,1,9,7,1 -3,13,105,1,8,7,1 -3,14,105,1,9,7,1 -3,15,113,1,8,7,1 -3,16,105,8,9,7,1 -3,17,113,1,8,8,1 -3,18,113,1,9,8,1 -3,19,113,1,7,8,1 -3,20,113,1,9,7,1 -3,21,113,1,8,7,1 -3,22,113,1,8,7,1 -3,23,113,1,8,7,1 -3,24,113,1,8,7,1 -3,25,113,1,5,7,1 -3,26,113,1,5,8,1 -3,27,113,1,0,8,1 -3,28,113,1,0,8,1 -3,29,113,1,0,8,1 -3,30,113,1,0,8,1 -3,31,113,1,0,7,1 -3,32,108,1,8,7,1 -4,3,127,4,0,8,0 -4,4,127,4,0,8,1 -4,5,127,1,0,2,1 -4,6,127,4,7,8,1 -4,7,127,1,1,8,1 -4,8,127,1,0,8,1 -4,9,113,1,0,8,1 -4,10,113,1,9,8,1 -4,11,113,1,9,7,1 -4,12,105,1,9,7,1 -4,13,105,1,9,7,1 -4,14,105,1,9,7,1 -4,15,105,1,9,7,1 -4,16,113,1,9,7,1 -4,17,113,1,9,7,1 -4,18,113,1,9,7,1 -4,19,113,1,9,8,1 -4,20,113,1,9,8,1 -4,21,113,1,9,8,1 -4,22,113,1,9,8,1 -4,23,113,1,9,7,1 -4,24,113,1,8,7,1 -4,25,105,1,8,7,1 -4,26,113,1,8,7,1 -4,27,113,1,8,7,1 -4,28,113,1,8,7,1 -4,29,113,1,9,7,1 -4,30,113,1,7,8,1 -4,31,113,1,7,8,1 -4,32,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv deleted file mode 100644 index 75c58ebf..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-4-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,121,1,5,4,1 -5,4,127,1,0,8,1 -5,5,127,1,0,2,1 -5,6,127,1,7,2,1 -5,7,127,1,1,0,1 -5,8,105,1,9,2,1 -5,9,113,1,7,0,1 -5,10,113,1,9,7,1 -5,11,105,8,9,7,1 -5,12,105,1,8,2,1 -5,13,113,0,7,8,1 -5,14,113,1,9,8,1 -5,15,113,1,9,8,1 -5,16,113,1,9,8,1 -5,17,113,1,0,8,1 -5,18,113,1,0,8,1 -5,19,113,1,0,8,1 -5,20,113,1,0,7,1 -5,21,108,1,8,7,1 -5,22,105,1,8,7,1 -5,23,105,1,8,7,1 -5,24,105,1,9,7,1 -5,25,113,1,7,7,1 -5,26,113,6,7,7,1 -5,27,113,6,7,2,1 -5,28,113,1,7,8,1 -5,29,113,1,7,8,1 -5,30,113,1,9,8,1 -5,31,113,1,0,8,1 -5,32,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv deleted file mode 100644 index d4edc9b2..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-5-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,121,4,0,8,0 -6,5,113,1,0,8,0 -6,6,113,1,0,8,1 -6,7,113,1,0,8,1 -6,8,113,1,0,8,1 -6,9,113,1,0,8,1 -6,10,113,1,0,8,1 -6,11,113,1,9,7,1 -6,12,105,8,9,7,1 -6,13,105,1,8,7,1 -6,14,105,1,9,7,1 -6,15,105,1,9,7,1 -6,16,113,1,7,7,1 -6,17,113,6,9,7,1 -6,18,113,1,3,2,1 -6,19,113,6,7,8,1 -6,20,113,1,9,8,1 -6,21,113,1,0,8,1 -6,22,113,1,0,8,1 -6,23,113,1,0,8,1 -6,24,113,1,0,8,1 -6,25,113,1,0,8,1 -6,26,113,1,0,7,1 -6,27,108,1,8,7,1 -6,28,105,1,8,7,1 -6,29,105,1,9,7,1 -6,30,105,1,7,7,1 -6,31,113,6,7,7,1 -6,32,113,6,7,7,1 -6,33,113,6,7,2,1 -7,3,105,4,9,8,0 -7,4,121,0,8,8,0 -7,5,113,0,8,8,0 -7,6,121,4,8,8,0 -7,7,127,0,0,8,0 -7,8,121,4,8,8,0 -7,9,127,4,0,8,0 -7,10,127,1,0,8,0 -7,11,127,4,0,8,1 -7,12,127,1,0,8,0 -7,13,127,1,0,8,1 -7,14,127,1,7,8,1 -7,15,113,1,7,8,1 -7,16,113,1,9,7,1 -7,17,103,1,7,7,1 -7,18,113,8,7,7,1 -7,19,113,1,9,7,1 -7,20,113,1,7,7,1 -7,21,113,6,5,7,1 -7,22,113,1,5,8,1 -7,23,113,1,0,8,1 -7,24,113,1,0,8,1 -7,25,113,1,0,8,1 -7,26,113,1,0,8,1 -7,27,113,1,0,7,1 -7,28,108,1,8,7,1 -7,29,108,1,8,7,1 -7,30,108,1,8,7,1 -7,31,122,6,7,7,1 -7,32,113,6,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv deleted file mode 100644 index 42ff3af8..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-6-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,113,1,0,8,0 -8,5,113,1,0,8,1 -8,6,113,1,0,2,1 -8,7,113,1,8,2,1 -8,8,113,1,0,8,1 -8,9,113,1,0,8,1 -8,10,113,1,0,2,1 -8,11,113,1,0,2,1 -8,12,113,1,8,7,1 -8,13,105,8,9,7,1 -8,14,105,1,8,2,1 -8,15,113,1,9,7,1 -8,16,105,1,9,7,1 -8,17,113,1,7,7,1 -8,18,113,1,9,7,1 -8,19,113,1,7,8,1 -8,20,113,1,9,8,1 -8,21,113,1,0,8,1 -8,22,113,1,9,8,1 -8,23,113,1,0,7,1 -8,24,113,1,8,7,1 -8,25,105,1,8,7,1 -8,26,113,1,8,7,1 -8,27,105,1,9,7,1 -8,28,113,1,8,7,1 -8,29,113,6,9,7,1 -8,30,113,1,8,2,1 -8,31,113,1,7,8,1 -8,32,113,1,7,8,1 -8,33,113,1,7,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv deleted file mode 100644 index 0c5df9b9..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-predictions/sequifier-test-hp-search-custom-eval-run-1-best-1-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,121,1,8,8,1 -9,4,113,1,0,8,1 -9,5,113,1,8,8,1 -9,6,113,1,0,7,1 -9,7,105,1,8,7,1 -9,8,105,1,8,7,1 -9,9,105,1,7,7,1 -9,10,113,1,7,7,1 -9,11,113,1,7,7,1 -9,12,113,6,7,7,1 -9,13,113,6,5,2,1 -9,14,113,1,0,8,1 -9,15,113,1,0,8,1 -9,16,113,1,0,8,1 -9,17,113,1,0,8,1 -9,18,113,1,0,8,1 -9,19,113,1,0,8,1 -9,20,113,1,0,8,1 -9,21,113,1,0,7,1 -9,22,105,1,8,7,1 -9,23,105,1,8,7,1 -9,24,105,1,9,7,1 -9,25,105,1,7,7,1 -9,26,113,6,7,7,1 -9,27,113,6,7,2,1 -9,28,113,1,7,8,1 -9,29,113,1,7,8,1 -9,30,113,1,9,8,1 -9,31,113,1,0,8,1 -9,32,113,1,0,8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv deleted file mode 100644 index cffacbd7..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,115,9,2,2,[unknown] -2,4,118,[mask],2,[mask],[mask] -2,5,[unknown],9,2,7,[mask] -2,6,115,9,9,7,[mask] -2,7,115,9,9,7,[mask] -2,8,115,9,9,7,[mask] -2,9,119,9,9,7,[other] -2,10,104,[mask],9,7,[other] -2,11,112,1,9,7,[other] -2,12,104,[mask],9,7,[other] -2,13,112,1,9,7,[other] -2,14,104,9,9,7,[other] -2,15,112,6,9,7,[other] -2,16,104,9,9,7,[other] -2,17,104,1,9,7,[other] -2,18,104,1,9,7,[other] -2,19,104,6,9,7,[other] -2,20,104,6,9,7,[other] -2,21,104,6,9,7,[other] -2,22,104,6,9,7,[other] -2,23,104,6,9,7,[other] -2,24,104,6,9,7,[other] -2,25,104,6,9,7,[other] -2,26,104,6,9,7,[other] -2,27,104,6,9,7,[other] -2,28,104,6,9,7,[other] -2,29,104,6,9,7,[other] -2,30,104,6,9,7,[other] -2,31,104,6,9,7,[other] -2,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv deleted file mode 100644 index 9bf3ad90..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,112,9,2,[mask],[mask] -3,4,115,9,2,9,[other] -3,5,112,9,2,2,[mask] -3,6,112,9,2,2,[mask] -3,7,112,9,2,2,[mask] -3,8,112,9,9,2,[other] -3,9,112,9,2,2,[mask] -3,10,112,9,9,7,[other] -3,11,112,9,9,7,[other] -3,12,112,9,9,7,[other] -3,13,112,9,9,7,[other] -3,14,112,9,9,7,[other] -3,15,112,9,9,7,[other] -3,16,112,9,9,7,[other] -3,17,112,9,9,7,[other] -3,18,112,9,9,8,[other] -3,19,112,9,9,7,[other] -3,20,112,[mask],9,7,[other] -3,21,112,[mask],9,8,[other] -3,22,112,[mask],9,7,[other] -3,23,112,[mask],9,7,[other] -3,24,112,[mask],9,7,[other] -3,25,129,[mask],9,7,[other] -3,26,129,1,9,7,[other] -3,27,129,1,9,7,[other] -3,28,129,1,9,7,[other] -3,29,129,1,9,[unknown],[other] -3,30,112,6,9,7,[other] -3,31,104,9,9,7,[other] -3,32,112,9,9,7,[other] -4,3,107,9,2,7,[other] -4,4,107,9,9,7,[other] -4,5,107,9,9,7,[other] -4,6,107,9,9,7,[other] -4,7,107,9,9,7,[other] -4,8,107,9,9,7,[other] -4,9,104,6,9,7,[other] -4,10,104,6,9,7,[other] -4,11,104,6,9,7,[other] -4,12,104,6,9,7,[other] -4,13,104,6,9,7,[other] -4,14,104,6,9,7,[other] -4,15,104,6,9,7,[other] -4,16,104,6,9,7,[other] -4,17,104,6,9,7,[other] -4,18,104,6,9,7,[other] -4,19,104,6,9,7,[other] -4,20,104,6,9,7,[other] -4,21,104,6,9,7,[other] -4,22,104,6,9,7,[other] -4,23,104,6,9,7,[other] -4,24,104,6,9,7,[other] -4,25,104,6,9,7,[other] -4,26,104,6,9,7,[other] -4,27,104,6,9,7,[other] -4,28,104,6,9,7,[other] -4,29,104,6,9,7,[other] -4,30,104,6,9,7,[other] -4,31,104,6,9,7,[other] -4,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv deleted file mode 100644 index 12d83f71..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,113,3,2,[other],[other] -9,4,119,9,2,7,[mask] -9,5,129,9,9,[other],[other] -9,6,119,9,9,[other],[mask] -9,7,119,9,9,9,[mask] -9,8,129,9,9,8,[other] -9,9,111,9,9,7,[other] -9,10,112,9,9,7,[other] -9,11,112,[mask],9,7,[unknown] -9,12,112,[mask],9,7,[other] -9,13,112,[mask],9,8,[unknown] -9,14,104,[mask],9,7,[other] -9,15,129,1,9,7,[other] -9,16,129,1,9,7,[other] -9,17,129,1,9,7,[other] -9,18,104,1,9,7,[other] -9,19,104,1,9,7,[other] -9,20,104,1,9,[unknown],[other] -9,21,104,6,9,[unknown],[other] -9,22,104,6,9,[unknown],[other] -9,23,104,6,9,[unknown],[other] -9,24,104,6,9,7,[other] -9,25,104,6,9,7,[other] -9,26,104,6,9,7,[other] -9,27,104,6,9,7,[other] -9,28,104,6,9,7,[other] -9,29,104,6,9,7,[other] -9,30,104,6,9,7,[other] -9,31,104,6,9,7,[other] -9,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv deleted file mode 100644 index 54189e82..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-0-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,121,1,1,9,1 -0,5,105,0,[other],8,2 -0,6,113,1,[other],[mask],0 -0,7,105,8,[other],8,1 -0,8,113,1,1,8,0 -0,9,105,3,[other],1,1 -0,10,113,1,8,8,1 -0,11,113,1,[other],1,1 -0,12,113,1,9,1,1 -0,13,113,1,[other],1,1 -0,14,113,0,9,1,1 -0,15,113,1,8,1,1 -0,16,103,0,9,1,1 -0,17,113,0,8,1,1 -0,18,113,0,[other],8,1 -0,19,113,0,[other],0,[mask] -0,20,108,0,[other],1,[other] -0,21,108,0,[other],7,1 -0,22,108,5,[other],[mask],1 -0,23,124,[mask],[other],7,1 -0,24,124,1,[other],2,1 -0,25,113,1,[other],8,1 -0,26,113,1,[other],[mask],1 -0,27,122,8,[other],8,1 -0,28,113,1,[other],8,1 -0,29,113,1,[other],0,1 -0,30,113,8,[other],2,1 -0,31,113,1,[other],2,1 -0,32,113,8,9,1,1 -0,33,113,1,[other],[mask],1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv deleted file mode 100644 index 6342f656..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-1-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,107,5,[other],[mask],[other] -1,5,121,3,[other],7,[other] -1,6,121,5,[other],8,[other] -1,7,121,5,[other],7,[other] -1,8,121,5,[other],7,[other] -1,9,121,1,[other],8,1 -1,10,122,1,7,8,0 -1,11,105,1,7,8,[other] -1,12,122,1,7,[unknown],0 -1,13,105,0,7,1,1 -1,14,113,[other],7,5,0 -1,15,113,[mask],1,5,1 -1,16,113,1,1,2,1 -1,17,120,[mask],4,1,1 -1,18,113,[mask],1,7,1 -1,19,102,1,[other],2,1 -1,20,113,1,7,8,[unknown] -1,21,113,1,1,0,1 -1,22,128,1,0,1,1 -1,23,113,1,[other],7,1 -1,24,105,8,[other],2,1 -1,25,113,1,1,2,1 -1,26,113,8,[other],1,1 -1,27,105,1,1,2,1 -1,28,113,0,[other],1,1 -1,29,113,1,[other],2,1 -1,30,113,[mask],9,1,1 -1,31,113,1,[other],1,1 -1,32,113,1,9,1,1 -1,33,113,1,9,1,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv deleted file mode 100644 index dba66fc2..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,128,0,7,[unknown],2 -2,4,113,8,[other],6,2 -2,5,109,1,[other],6,1 -2,6,128,1,[other],[mask],2 -2,7,104,[mask],[other],6,1 -2,8,104,1,1,2,1 -2,9,113,1,8,0,2 -2,10,113,1,[other],[mask],1 -2,11,121,1,[other],0,1 -2,12,101,1,[other],7,1 -2,13,105,8,[other],0,1 -2,14,122,1,1,2,1 -2,15,113,[mask],[other],0,1 -2,16,113,1,[other],2,1 -2,17,113,[mask],[other],2,1 -2,18,113,1,[other],2,1 -2,19,113,[mask],[other],1,1 -2,20,113,1,[other],2,1 -2,21,113,1,[other],1,1 -2,22,113,1,9,1,1 -2,23,113,1,[other],1,1 -2,24,103,1,9,1,1 -2,25,103,1,8,1,1 -2,26,103,0,9,7,1 -2,27,105,5,8,0,1 -2,28,105,0,8,1,1 -2,29,113,0,8,9,2 -2,30,105,3,[other],1,[other] -2,31,113,0,[other],8,[other] -2,32,113,0,[other],8,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv deleted file mode 100644 index 20206ce0..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,102,5,1,1,2 -3,4,128,0,9,5,[unknown] -3,5,105,0,1,5,2 -3,6,105,[other],9,[mask],[unknown] -3,7,128,0,1,[mask],1 -3,8,105,0,[other],8,[unknown] -3,9,121,1,8,[mask],[other] -3,10,104,0,[other],8,1 -3,11,113,1,[other],[mask],0 -3,12,104,3,[other],1,1 -3,13,113,1,[other],8,2 -3,14,113,1,[other],1,1 -3,15,113,1,[other],1,1 -3,16,113,1,[other],1,1 -3,17,105,0,[other],1,1 -3,18,120,0,8,0,1 -3,19,105,0,8,2,1 -3,20,113,0,8,0,1 -3,21,113,1,[other],2,1 -3,22,113,0,[other],1,1 -3,23,113,0,[other],8,1 -3,24,113,1,[other],8,1 -3,25,113,1,[other],8,1 -3,26,113,1,[other],8,1 -3,27,113,1,[other],7,1 -3,28,105,8,[other],1,1 -3,29,113,1,1,0,1 -3,30,105,1,[other],1,1 -3,31,113,1,9,0,1 -3,32,105,1,[other],1,1 -4,3,102,0,[other],[unknown],[unknown] -4,4,102,8,[other],8,[unknown] -4,5,102,0,[other],6,[unknown] -4,6,105,8,[other],6,[unknown] -4,7,115,8,[other],2,1 -4,8,127,[mask],7,8,[unknown] -4,9,113,2,1,0,1 -4,10,122,1,[other],2,1 -4,11,113,[mask],7,2,1 -4,12,113,1,1,2,1 -4,13,113,[mask],[other],1,1 -4,14,113,1,1,2,1 -4,15,113,1,[other],1,1 -4,16,113,1,1,1,1 -4,17,105,1,[other],1,1 -4,18,105,1,9,0,1 -4,19,105,1,8,0,1 -4,20,105,1,9,0,1 -4,21,105,1,8,0,1 -4,22,105,0,9,1,[other] -4,23,113,0,8,0,[other] -4,24,113,0,[other],1,[other] -4,25,113,0,[other],8,2 -4,26,113,1,[other],8,1 -4,27,113,1,[other],8,1 -4,28,113,1,[other],8,1 -4,29,113,1,[other],8,1 -4,30,113,1,[other],[mask],1 -4,31,121,1,[other],1,1 -4,32,126,1,0,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv deleted file mode 100644 index 051cc930..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-4-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,128,3,[other],4,1 -5,4,128,1,[other],6,1 -5,5,105,1,[other],7,1 -5,6,105,1,[other],0,1 -5,7,105,1,[other],0,1 -5,8,105,1,[other],0,1 -5,9,113,1,7,2,1 -5,10,113,1,[other],1,1 -5,11,113,1,[other],1,1 -5,12,113,1,[other],1,1 -5,13,113,1,[other],1,1 -5,14,113,0,[other],1,1 -5,15,113,0,[other],2,1 -5,16,113,0,[other],2,1 -5,17,113,0,1,1,1 -5,18,108,0,9,1,1 -5,19,113,0,8,0,1 -5,20,113,0,[other],[mask],1 -5,21,108,3,[other],2,1 -5,22,113,1,[other],8,1 -5,23,113,1,[other],8,1 -5,24,113,1,[other],8,1 -5,25,113,1,[other],0,1 -5,26,113,1,[other],7,1 -5,27,105,8,[other],0,1 -5,28,113,1,[other],2,1 -5,29,113,8,[other],1,1 -5,30,113,1,[other],2,1 -5,31,113,[mask],[other],1,1 -5,32,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv deleted file mode 100644 index d92da9a7..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-5-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,122,2,[other],8,[unknown] -6,5,113,[mask],[other],8,[other] -6,6,113,1,[other],[unknown],1 -6,7,113,[mask],[other],2,1 -6,8,113,1,[other],2,1 -6,9,113,3,[other],1,1 -6,10,121,1,[other],[mask],1 -6,11,108,0,7,1,1 -6,12,113,1,1,[mask],1 -6,13,108,8,9,1,1 -6,14,113,1,1,0,1 -6,15,105,1,9,1,[other] -6,16,113,0,7,0,[other] -6,17,113,0,[other],0,[other] -6,18,113,8,[other],2,[other] -6,19,113,[mask],[other],8,1 -6,20,113,1,[other],[mask],1 -6,21,113,1,[other],1,1 -6,22,113,1,[other],[mask],1 -6,23,113,1,[other],[mask],1 -6,24,121,1,[other],2,1 -6,25,113,1,[other],8,1 -6,26,105,1,1,[mask],1 -6,27,105,[other],9,1,[other] -6,28,113,0,7,[unknown],1 -6,29,105,0,[other],1,1 -6,30,113,1,[other],0,1 -6,31,105,1,9,1,1 -6,32,113,0,7,1,1 -6,33,113,1,[other],1,1 -7,3,105,0,[other],8,[mask] -7,4,105,0,[other],1,[other] -7,5,105,0,9,6,[unknown] -7,6,105,0,[other],1,1 -7,7,113,0,[other],1,2 -7,8,113,0,[other],1,[other] -7,9,113,0,[other],[mask],1 -7,10,113,1,[other],[mask],1 -7,11,113,[mask],[other],8,1 -7,12,113,1,[other],[mask],1 -7,13,113,3,[other],1,1 -7,14,113,1,[other],[mask],1 -7,15,108,1,[other],0,1 -7,16,113,1,[other],7,1 -7,17,105,8,[other],2,1 -7,18,113,1,[other],2,1 -7,19,113,8,[other],1,1 -7,20,113,1,[other],2,1 -7,21,113,3,[other],1,1 -7,22,113,1,[other],2,1 -7,23,113,8,[other],1,1 -7,24,113,1,[other],2,1 -7,25,113,1,9,1,1 -7,26,103,1,9,1,1 -7,27,103,1,8,1,1 -7,28,103,0,9,7,1 -7,29,105,5,8,0,1 -7,30,105,1,8,1,1 -7,31,113,0,9,1,2 -7,32,113,0,[other],1,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv deleted file mode 100644 index acc3eb04..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-6-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,101,1,[other],8,2 -8,5,104,1,[other],[unknown],2 -8,6,104,3,[other],[other],1 -8,7,120,5,1,0,1 -8,8,128,1,[other],0,1 -8,9,105,1,[other],7,[other] -8,10,120,8,7,0,[other] -8,11,120,5,[other],0,1 -8,12,120,1,7,2,1 -8,13,113,[mask],7,1,1 -8,14,113,1,[other],2,1 -8,15,113,1,[other],2,1 -8,16,113,1,[other],8,1 -8,17,113,1,[other],2,1 -8,18,113,[mask],1,8,1 -8,19,102,1,1,2,1 -8,20,128,1,4,7,1 -8,21,105,8,[other],7,1 -8,22,105,5,5,2,1 -8,23,113,1,8,0,1 -8,24,105,1,[other],7,1 -8,25,105,8,9,2,1 -8,26,113,1,[other],0,1 -8,27,113,8,[other],2,1 -8,28,113,1,[other],8,1 -8,29,113,1,[other],7,1 -8,30,105,8,[other],1,1 -8,31,113,1,[other],2,1 -8,32,113,[mask],[other],1,1 -8,33,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv deleted file mode 100644 index ff465a4a..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-predictions/sequifier-test-hp-search-custom-eval-run-3-best-1-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,108,5,[other],8,2 -9,4,122,5,[other],7,1 -9,5,105,5,[other],7,[other] -9,6,122,5,7,7,[other] -9,7,122,5,[other],7,1 -9,8,122,5,[other],2,1 -9,9,113,[mask],7,2,1 -9,10,113,1,[other],2,1 -9,11,113,[mask],[other],2,1 -9,12,113,1,[other],2,1 -9,13,113,[mask],[other],2,1 -9,14,113,1,1,2,1 -9,15,113,[mask],[other],1,1 -9,16,113,1,1,2,1 -9,17,129,1,0,7,1 -9,18,108,1,8,7,1 -9,19,108,1,0,7,1 -9,20,108,1,[other],7,1 -9,21,124,8,[other],7,1 -9,22,105,8,[other],2,1 -9,23,113,1,[other],2,1 -9,24,113,8,[other],8,2 -9,25,113,[mask],[other],8,1 -9,26,113,1,[other],2,1 -9,27,113,8,[other],2,1 -9,28,113,1,[other],2,1 -9,29,113,1,[other],7,1 -9,30,108,8,9,2,1 -9,31,113,1,1,7,1 -9,32,108,8,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv new file mode 100644 index 00000000..453ac47f --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +0,4,102,3,3,5,0 +0,5,102,3,9,0,1 +0,6,102,1,9,0,0 +0,7,102,1,0,0,2 +0,8,111,1,2,0,2 +0,9,102,1,9,0,2 +0,10,102,1,3,0,2 +0,11,102,1,3,0,2 +0,12,111,1,3,0,2 +0,13,111,1,9,0,2 +0,14,105,1,0,0,2 +0,15,105,1,0,0,2 +0,16,105,1,0,0,2 +0,17,105,1,0,0,2 +0,18,105,1,0,0,2 +0,19,105,1,0,0,2 +0,20,105,1,0,8,2 +0,21,105,1,0,5,2 +0,22,105,5,0,2,2 +0,23,105,5,0,8,2 +0,24,105,5,0,8,2 +0,25,105,5,0,8,2 +0,26,105,5,0,8,2 +0,27,105,3,0,8,2 +0,28,105,3,0,5,1 +0,29,105,3,0,2,1 +0,30,105,3,0,2,1 +0,31,105,3,0,2,1 +0,32,110,3,0,2,1 +0,33,110,3,0,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv new file mode 100644 index 00000000..6eac25ae --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +1,4,102,7,0,5,[other] +1,5,111,3,0,1,0 +1,6,111,1,0,1,1 +1,7,111,7,0,1,0 +1,8,111,5,0,1,1 +1,9,[unknown],7,0,1,0 +1,10,102,1,0,5,0 +1,11,110,5,0,1,2 +1,12,102,5,0,5,0 +1,13,102,5,0,2,1 +1,14,[unknown],5,0,1,1 +1,15,110,2,0,8,0 +1,16,102,3,0,5,0 +1,17,111,3,0,2,2 +1,18,111,3,3,5,2 +1,19,111,3,3,1,2 +1,20,111,1,3,0,2 +1,21,102,1,2,0,2 +1,22,111,[mask],2,0,2 +1,23,112,[mask],2,5,2 +1,24,109,[mask],0,5,2 +1,25,109,[mask],0,2,2 +1,26,109,[mask],0,[other],2 +1,27,109,3,8,[other],2 +1,28,109,1,8,5,2 +1,29,109,1,8,[other],2 +1,30,104,1,8,[other],2 +1,31,104,1,9,[other],2 +1,32,111,3,9,0,2 +1,33,127,[mask],9,[other],2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv new file mode 100644 index 00000000..9b51b012 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,112,2,0,5,1 +2,4,112,7,2,0,[other] +2,5,112,7,3,5,2 +2,6,104,7,3,0,2 +2,7,104,7,9,0,2 +2,8,104,7,3,0,0 +2,9,104,4,3,[other],0 +2,10,112,7,3,0,0 +2,11,104,7,3,0,0 +2,12,116,4,3,6,0 +2,13,112,4,3,6,0 +2,14,112,7,3,6,0 +2,15,116,7,3,6,0 +2,16,116,4,3,6,0 +2,17,112,4,3,6,0 +2,18,112,8,3,6,0 +2,19,112,8,3,6,0 +2,20,118,4,7,6,0 +2,21,112,4,9,6,1 +2,22,118,8,7,6,0 +2,23,112,4,9,6,0 +2,24,112,8,7,0,1 +2,25,112,4,4,6,2 +2,26,112,4,3,[other],1 +2,27,104,4,4,8,[other] +2,28,112,4,4,[other],1 +2,29,104,7,4,8,1 +2,30,104,4,4,[other],1 +2,31,104,8,4,[other],1 +2,32,104,8,4,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv new file mode 100644 index 00000000..4c107703 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,111,3,3,5,0 +3,4,111,2,3,5,0 +3,5,112,3,3,2,0 +3,6,102,3,3,5,1 +3,7,118,2,3,0,0 +3,8,102,6,3,2,0 +3,9,102,6,3,0,0 +3,10,102,6,3,0,0 +3,11,102,6,3,2,0 +3,12,102,6,3,2,0 +3,13,102,3,3,2,2 +3,14,102,6,3,0,2 +3,15,102,6,3,0,0 +3,16,102,1,3,2,2 +3,17,111,3,3,0,2 +3,18,102,1,3,0,2 +3,19,111,1,3,0,2 +3,20,111,1,3,0,2 +3,21,111,1,2,0,2 +3,22,111,1,2,0,2 +3,23,102,1,2,0,2 +3,24,111,1,2,0,2 +3,25,111,1,2,5,2 +3,26,105,5,9,5,2 +3,27,105,[mask],0,8,2 +3,28,105,[mask],0,8,2 +3,29,105,[mask],0,8,2 +3,30,105,[mask],0,[other],2 +3,31,105,[mask],9,[other],2 +3,32,105,[mask],9,[other],2 +4,3,113,7,9,5,2 +4,4,104,4,0,0,1 +4,5,112,6,2,0,1 +4,6,104,7,9,0,1 +4,7,118,7,9,0,1 +4,8,104,4,9,0,0 +4,9,102,7,0,0,0 +4,10,102,7,3,0,0 +4,11,111,6,3,0,0 +4,12,102,4,3,0,0 +4,13,102,6,3,0,0 +4,14,102,6,3,0,0 +4,15,102,6,3,0,0 +4,16,102,6,3,6,0 +4,17,102,1,3,2,0 +4,18,102,3,3,2,2 +4,19,102,6,3,0,0 +4,20,102,1,3,2,0 +4,21,102,3,3,2,2 +4,22,111,3,3,0,2 +4,23,102,1,3,0,2 +4,24,111,1,3,0,2 +4,25,102,1,3,0,2 +4,26,111,1,3,0,2 +4,27,102,1,2,0,2 +4,28,111,1,2,0,2 +4,29,111,1,2,0,2 +4,30,111,1,2,5,2 +4,31,105,1,9,5,2 +4,32,105,1,0,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv new file mode 100644 index 00000000..d03238fa --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +5,3,104,7,9,8,2 +5,4,104,1,9,0,2 +5,5,104,1,9,0,2 +5,6,104,1,9,0,2 +5,7,104,1,9,0,2 +5,8,104,1,9,0,2 +5,9,104,1,0,0,2 +5,10,104,7,9,0,0 +5,11,122,7,0,7,0 +5,12,122,7,3,7,0 +5,13,119,4,3,7,0 +5,14,119,4,3,0,0 +5,15,112,3,9,6,0 +5,16,122,7,3,0,0 +5,17,102,4,9,6,0 +5,18,102,8,3,0,0 +5,19,102,8,9,6,0 +5,20,102,8,3,0,0 +5,21,102,3,3,6,0 +5,22,102,4,3,0,0 +5,23,102,3,3,6,0 +5,24,102,4,3,6,0 +5,25,102,3,3,6,0 +5,26,102,4,3,6,0 +5,27,102,3,3,6,0 +5,28,102,4,3,2,0 +5,29,102,3,3,6,2 +5,30,111,6,3,0,2 +5,31,102,3,3,6,2 +5,32,102,6,3,6,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv new file mode 100644 index 00000000..244d29b4 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +6,4,110,1,0,5,1 +6,5,110,2,0,0,1 +6,6,112,1,0,[other],1 +6,7,111,7,[unknown],[other],2 +6,8,111,3,2,5,1 +6,9,112,2,9,5,1 +6,10,108,7,0,1,[other] +6,11,104,7,0,[other],1 +6,12,119,7,9,0,1 +6,13,104,7,9,0,0 +6,14,122,7,0,0,1 +6,15,111,7,4,[other],0 +6,16,119,7,3,0,0 +6,17,122,7,9,0,0 +6,18,102,7,0,5,0 +6,19,111,7,0,0,0 +6,20,111,8,0,0,0 +6,21,112,8,0,2,0 +6,22,102,7,0,5,0 +6,23,111,3,0,2,0 +6,24,111,3,0,1,0 +6,25,111,1,0,1,0 +6,26,111,1,0,1,0 +6,27,110,1,0,1,0 +6,28,102,1,0,4,0 +6,29,111,1,0,[unknown],2 +6,30,110,1,0,1,1 +6,31,110,1,0,1,1 +6,32,110,1,0,1,1 +6,33,110,1,0,1,1 +7,3,102,3,0,5,0 +7,4,102,3,0,[unknown],0 +7,5,111,3,0,[unknown],0 +7,6,102,8,0,1,[other] +7,7,102,3,0,2,0 +7,8,111,3,0,2,1 +7,9,112,4,0,1,[other] +7,10,102,1,0,2,0 +7,11,111,1,8,2,2 +7,12,110,1,[mask],1,2 +7,13,[mask],1,0,1,2 +7,14,111,1,0,1,2 +7,15,111,1,2,1,2 +7,16,110,1,2,1,2 +7,17,[mask],1,0,5,1 +7,18,109,1,0,8,2 +7,19,102,1,0,5,1 +7,20,110,7,0,8,2 +7,21,127,3,0,5,1 +7,22,109,3,0,5,1 +7,23,109,7,0,5,1 +7,24,109,7,0,5,1 +7,25,104,7,0,5,1 +7,26,109,7,0,5,1 +7,27,119,7,0,0,[other] +7,28,111,7,0,[other],0 +7,29,111,7,0,0,0 +7,30,111,7,9,0,0 +7,31,111,7,0,0,0 +7,32,111,7,0,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv new file mode 100644 index 00000000..0735ca91 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,111,3,0,6,[other] +8,5,102,7,9,7,[other] +8,6,104,7,0,7,0 +8,7,102,8,0,5,1 +8,8,112,3,0,2,0 +8,9,111,7,0,5,2 +8,10,111,1,3,0,2 +8,11,102,6,9,0,2 +8,12,111,1,3,0,2 +8,13,111,1,3,0,2 +8,14,102,1,9,0,2 +8,15,111,1,2,0,2 +8,16,111,1,2,5,2 +8,17,111,5,0,5,2 +8,18,105,5,0,[other],2 +8,19,105,[mask],0,2,2 +8,20,105,[mask],0,8,2 +8,21,105,[mask],0,8,2 +8,22,105,[mask],0,[other],2 +8,23,105,3,0,[other],2 +8,24,109,5,9,0,2 +8,25,105,[mask],0,6,2 +8,26,105,[mask],3,[other],2 +8,27,109,[mask],0,[other],2 +8,28,109,3,0,[other],2 +8,29,109,3,0,2,2 +8,30,109,3,0,6,1 +8,31,109,3,0,2,1 +8,32,109,3,0,[other],[other] +8,33,109,3,8,2,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv new file mode 100644 index 00000000..20d90721 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,108,4,9,1,1 +9,4,113,7,9,8,1 +9,5,104,4,9,0,1 +9,6,119,8,9,0,1 +9,7,119,7,9,0,2 +9,8,104,7,9,0,0 +9,9,122,7,9,0,0 +9,10,102,7,3,0,0 +9,11,122,7,3,0,0 +9,12,102,4,3,6,0 +9,13,102,7,3,0,0 +9,14,111,6,3,0,0 +9,15,112,3,3,6,0 +9,16,102,7,3,5,0 +9,17,102,8,3,6,0 +9,18,102,3,3,2,0 +9,19,102,4,3,6,0 +9,20,102,3,3,6,0 +9,21,102,6,3,2,0 +9,22,102,3,3,2,1 +9,23,118,3,3,6,2 +9,24,102,6,3,0,0 +9,25,102,3,3,2,2 +9,26,111,3,3,0,2 +9,27,102,3,3,6,2 +9,28,102,6,3,0,2 +9,29,111,1,3,2,2 +9,30,102,1,3,0,2 +9,31,102,1,2,0,2 +9,32,111,1,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv new file mode 100644 index 00000000..0b011a28 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +0,4,104,7,[mask],[unknown],1 +0,5,104,7,[mask],[unknown],0 +0,6,104,7,1,3,0 +0,7,104,0,1,3,0 +0,8,112,7,1,[unknown],0 +0,9,108,5,1,[unknown],0 +0,10,112,1,1,5,2 +0,11,129,2,1,5,2 +0,12,129,2,1,5,2 +0,13,112,2,1,5,2 +0,14,107,7,[mask],[unknown],1 +0,15,107,7,[mask],[unknown],1 +0,16,107,7,[mask],[unknown],1 +0,17,107,7,[mask],[unknown],1 +0,18,107,7,[mask],[unknown],1 +0,19,104,7,[mask],[unknown],1 +0,20,104,7,[mask],[unknown],1 +0,21,104,9,[mask],[unknown],1 +0,22,104,9,[mask],3,2 +0,23,104,9,[mask],3,2 +0,24,104,9,[mask],3,2 +0,25,104,9,[mask],3,2 +0,26,104,9,[mask],1,2 +0,27,104,9,[other],1,[mask] +0,28,104,[unknown],[other],1,[mask] +0,29,112,[unknown],[other],1,[mask] +0,30,112,2,[mask],[unknown],[mask] +0,31,110,2,[mask],[unknown],[mask] +0,32,110,2,[other],7,[mask] +0,33,104,2,[other],7,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv new file mode 100644 index 00000000..531427bf --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +1,4,104,7,[mask],1,1 +1,5,104,7,9,1,1 +1,6,104,7,9,[unknown],1 +1,7,104,7,9,[unknown],1 +1,8,104,7,9,[unknown],1 +1,9,118,7,9,[unknown],[other] +1,10,112,7,9,[unknown],0 +1,11,118,7,1,[unknown],[other] +1,12,118,7,1,[unknown],[other] +1,13,110,7,1,[unknown],[other] +1,14,118,7,1,[unknown],[other] +1,15,112,7,1,[unknown],2 +1,16,108,7,[mask],[unknown],2 +1,17,129,1,[mask],8,2 +1,18,129,2,[mask],5,2 +1,19,129,2,1,1,2 +1,20,129,7,1,5,[mask] +1,21,104,9,1,5,[mask] +1,22,129,9,1,5,[other] +1,23,112,9,1,5,[mask] +1,24,112,9,1,5,[mask] +1,25,112,0,1,5,[mask] +1,26,112,6,[mask],[unknown],[mask] +1,27,123,7,[mask],[unknown],[mask] +1,28,109,7,[mask],5,1 +1,29,104,7,[mask],1,[mask] +1,30,104,7,[mask],8,1 +1,31,104,7,[mask],8,1 +1,32,104,0,[mask],8,1 +1,33,104,7,[mask],8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv new file mode 100644 index 00000000..4350e88b --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,112,2,[mask],5,[mask] +2,4,104,7,[mask],[unknown],[mask] +2,5,104,7,1,8,1 +2,6,104,7,[mask],[unknown],0 +2,7,129,7,1,8,1 +2,8,104,7,[mask],1,0 +2,9,112,7,1,1,1 +2,10,107,7,[mask],[unknown],2 +2,11,129,9,1,1,2 +2,12,112,9,[other],1,2 +2,13,104,7,1,1,2 +2,14,118,7,1,1,[other] +2,15,112,7,1,5,2 +2,16,129,7,1,1,[other] +2,17,112,7,1,5,[other] +2,18,112,0,1,5,[other] +2,19,112,7,1,5,[other] +2,20,112,7,1,[unknown],[other] +2,21,112,7,1,[unknown],0 +2,22,108,7,1,[unknown],2 +2,23,119,7,[mask],[unknown],0 +2,24,129,0,1,5,2 +2,25,112,7,[mask],8,2 +2,26,104,7,[mask],5,2 +2,27,129,7,1,8,2 +2,28,104,9,1,5,2 +2,29,112,9,1,8,[mask] +2,30,112,9,1,5,[mask] +2,31,104,9,1,5,[mask] +2,32,112,0,[mask],8,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv new file mode 100644 index 00000000..b312c008 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,104,0,[mask],8,[mask] +3,4,104,0,[mask],8,[other] +3,5,104,[mask],[mask],6,0 +3,6,104,0,[mask],8,[unknown] +3,7,104,0,[mask],8,0 +3,8,104,0,[mask],6,[mask] +3,9,[other],1,[mask],8,[unknown] +3,10,129,2,1,6,[unknown] +3,11,129,2,1,6,[unknown] +3,12,129,2,1,6,[unknown] +3,13,129,2,1,5,2 +3,14,129,2,1,5,2 +3,15,129,2,1,5,2 +3,16,129,2,1,5,2 +3,17,112,2,1,5,2 +3,18,107,7,[mask],5,1 +3,19,107,7,[mask],[unknown],1 +3,20,107,7,[mask],[unknown],1 +3,21,107,7,[mask],[unknown],1 +3,22,107,7,[mask],[unknown],1 +3,23,104,7,[mask],[unknown],1 +3,24,104,7,[mask],[unknown],1 +3,25,104,[mask],[mask],[unknown],1 +3,26,104,9,[mask],3,2 +3,27,104,9,[mask],3,2 +3,28,104,9,[mask],3,2 +3,29,104,9,[mask],3,2 +3,30,104,9,[mask],3,2 +3,31,112,9,[other],1,[mask] +3,32,104,9,[mask],1,[mask] +4,3,104,9,1,[unknown],2 +4,4,104,7,[mask],[unknown],0 +4,5,[other],9,1,[unknown],1 +4,6,104,9,1,[unknown],0 +4,7,112,9,1,[unknown],1 +4,8,104,7,1,[unknown],2 +4,9,112,9,1,1,[mask] +4,10,129,7,1,1,[mask] +4,11,112,7,1,1,[other] +4,12,112,7,1,5,2 +4,13,108,7,1,[unknown],2 +4,14,129,7,1,5,2 +4,15,112,7,[mask],1,[other] +4,16,112,7,1,5,[mask] +4,17,118,7,[mask],5,1 +4,18,104,7,[mask],[unknown],[mask] +4,19,104,7,[mask],8,1 +4,20,104,0,[mask],8,[mask] +4,21,104,0,[mask],5,[other] +4,22,112,7,[mask],3,[mask] +4,23,104,2,[mask],8,[mask] +4,24,112,9,[mask],3,1 +4,25,104,2,[mask],3,[mask] +4,26,107,9,[other],6,[unknown] +4,27,104,2,[mask],3,2 +4,28,107,9,2,6,[unknown] +4,29,104,2,[mask],3,1 +4,30,104,9,[mask],3,1 +4,31,107,9,[mask],3,1 +4,32,104,3,[mask],3,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv new file mode 100644 index 00000000..bfc352bc --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +5,3,102,7,[mask],9,1 +5,4,113,7,[mask],[unknown],1 +5,5,104,7,[mask],[unknown],1 +5,6,104,7,[mask],[unknown],1 +5,7,104,7,[mask],[unknown],1 +5,8,104,7,[mask],[unknown],1 +5,9,104,7,[mask],3,1 +5,10,104,9,[mask],3,1 +5,11,104,9,[mask],3,2 +5,12,104,9,[mask],3,2 +5,13,112,9,[mask],1,2 +5,14,104,5,9,1,2 +5,15,104,9,[other],1,0 +5,16,111,[unknown],[other],3,[mask] +5,17,112,[unknown],[mask],3,2 +5,18,104,2,[mask],1,[mask] +5,19,110,9,[other],1,[mask] +5,20,110,2,[other],7,[mask] +5,21,104,2,[mask],8,[mask] +5,22,[other],9,[other],8,[mask] +5,23,104,2,[other],8,[mask] +5,24,129,9,[other],8,2 +5,25,104,9,[other],1,[mask] +5,26,107,9,[other],1,[mask] +5,27,104,2,[other],1,[mask] +5,28,[other],9,[other],1,[other] +5,29,107,1,[other],1,[mask] +5,30,118,1,[other],[unknown],[mask] +5,31,[other],2,1,[unknown],[mask] +5,32,[other],9,[other],5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv new file mode 100644 index 00000000..13756617 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +6,4,129,9,1,5,[other] +6,5,129,9,1,5,[mask] +6,6,129,9,1,5,[other] +6,7,112,9,1,5,[other] +6,8,129,7,1,5,[mask] +6,9,129,2,1,8,[mask] +6,10,129,7,1,5,2 +6,11,112,7,1,8,2 +6,12,104,7,[mask],[unknown],2 +6,13,104,7,[mask],[unknown],1 +6,14,104,7,[mask],[unknown],1 +6,15,104,7,[mask],[unknown],1 +6,16,104,9,[mask],1,1 +6,17,104,9,[mask],[unknown],[mask] +6,18,112,9,1,3,[mask] +6,19,112,9,1,1,[other] +6,20,112,9,1,1,[mask] +6,21,111,9,1,5,2 +6,22,112,9,1,1,[mask] +6,23,118,7,1,5,2 +6,24,112,7,1,1,[other] +6,25,112,0,1,1,[mask] +6,26,118,7,[mask],[unknown],0 +6,27,129,7,1,8,[mask] +6,28,129,0,[mask],5,[other] +6,29,112,7,[mask],5,[mask] +6,30,104,7,[mask],5,[mask] +6,31,104,7,[mask],8,2 +6,32,129,9,1,8,2 +6,33,104,9,1,5,2 +7,3,129,2,1,5,[mask] +7,4,129,2,1,5,1 +7,5,112,2,1,5,1 +7,6,107,2,1,5,1 +7,7,107,2,[mask],[unknown],1 +7,8,107,7,[mask],[unknown],1 +7,9,107,7,[mask],[unknown],1 +7,10,107,7,[mask],[unknown],1 +7,11,107,7,[mask],[unknown],1 +7,12,107,7,[mask],[unknown],1 +7,13,104,7,[mask],[unknown],1 +7,14,104,7,[mask],[unknown],1 +7,15,104,9,[mask],[unknown],2 +7,16,104,9,[mask],3,2 +7,17,104,9,[mask],3,2 +7,18,104,9,[mask],3,2 +7,19,104,9,[mask],3,2 +7,20,104,9,[other],1,[mask] +7,21,112,9,[other],1,[mask] +7,22,104,9,[other],1,[mask] +7,23,112,9,[other],1,[mask] +7,24,104,2,6,1,[mask] +7,25,110,9,[other],1,[other] +7,26,110,2,[mask],7,[mask] +7,27,[other],2,[other],8,[mask] +7,28,[other],1,[other],8,[other] +7,29,121,1,[mask],7,[mask] +7,30,[other],2,1,8,[mask] +7,31,[other],9,1,5,[other] +7,32,129,9,1,5,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv new file mode 100644 index 00000000..ca8bff47 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,104,2,1,5,[mask] +8,5,129,9,1,5,1 +8,6,104,2,1,5,[mask] +8,7,129,7,1,5,1 +8,8,112,2,1,5,1 +8,9,107,7,[mask],[unknown],1 +8,10,107,7,[mask],[unknown],1 +8,11,107,7,[mask],[unknown],1 +8,12,107,7,[mask],[unknown],1 +8,13,123,7,[mask],[unknown],1 +8,14,107,7,[mask],[unknown],1 +8,15,118,7,[mask],[unknown],1 +8,16,104,7,[mask],[unknown],2 +8,17,104,9,[mask],1,2 +8,18,104,9,[mask],1,2 +8,19,104,9,[mask],1,2 +8,20,104,9,[mask],1,[mask] +8,21,104,9,[other],7,[mask] +8,22,104,9,[mask],7,[mask] +8,23,104,9,[other],[unknown],[mask] +8,24,112,9,[other],1,[mask] +8,25,109,2,[other],1,[mask] +8,26,104,9,[other],1,[mask] +8,27,107,9,[other],1,[mask] +8,28,107,2,[other],1,[mask] +8,29,[other],9,[other],8,[other] +8,30,[other],1,3,8,[other] +8,31,[other],1,1,8,[other] +8,32,[other],1,1,8,[other] +8,33,[other],2,1,5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv new file mode 100644 index 00000000..a6cb20c5 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,104,7,[mask],0,1 +9,4,104,7,[mask],0,1 +9,5,104,7,9,0,1 +9,6,104,7,9,3,0 +9,7,104,0,9,3,1 +9,8,104,[mask],[mask],3,0 +9,9,104,0,9,3,1 +9,10,112,[mask],[mask],3,0 +9,11,[unknown],5,9,3,[other] +9,12,112,0,[mask],3,0 +9,13,[unknown],7,[mask],[unknown],[other] +9,14,[unknown],7,[mask],[unknown],0 +9,15,104,7,[mask],[unknown],1 +9,16,104,9,[mask],[unknown],2 +9,17,104,9,[mask],[unknown],0 +9,18,104,9,[other],4,[mask] +9,19,104,9,[other],4,2 +9,20,104,9,[other],1,[mask] +9,21,112,9,[other],1,[mask] +9,22,112,2,[other],1,[mask] +9,23,[other],2,6,[unknown],[mask] +9,24,[other],9,[other],1,[other] +9,25,107,1,[other],1,[mask] +9,26,118,2,6,[unknown],[other] +9,27,110,1,1,[unknown],[other] +9,28,110,2,1,[unknown],[other] +9,29,129,1,1,8,[other] +9,30,129,2,1,5,[other] +9,31,129,2,1,5,[other] +9,32,129,2,1,5,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv similarity index 74% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv index 29653eb6..830dae7f 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv @@ -1,17 +1,17 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 0,4,119,9,2,7,[other] -0,5,111,9,2,7,[other] -0,6,111,9,2,7,[other] +0,5,104,9,2,7,[other] +0,6,111,9,9,7,[other] 0,7,111,9,9,7,[other] 0,8,111,9,9,7,[other] -0,9,107,1,9,7,[other] -0,10,104,1,9,7,[other] -0,11,116,1,9,7,[other] -0,12,104,6,9,7,[other] +0,9,104,9,9,7,[other] +0,10,116,1,9,7,[other] +0,11,104,6,9,7,[other] +0,12,104,1,9,7,[other] 0,13,104,1,9,7,[other] -0,14,104,1,9,[unknown],[other] +0,14,102,1,9,[unknown],[other] 0,15,104,6,9,[unknown],[other] -0,16,104,6,9,[unknown],[other] +0,16,104,6,9,7,[other] 0,17,104,6,9,7,[other] 0,18,104,6,9,7,[other] 0,19,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv similarity index 86% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv index ec1ff900..8f038e88 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,111,9,2,9,[other] -1,5,111,1,2,7,[other] +1,4,111,9,2,7,[other] +1,5,111,1,9,7,[other] 1,6,111,1,9,7,[other] 1,7,111,1,9,7,[other] 1,8,111,1,9,7,[other] @@ -9,10 +9,10 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 1,11,129,1,9,[unknown],[other] 1,12,102,1,9,[unknown],[other] 1,13,104,6,9,[unknown],[other] -1,14,104,1,9,[unknown],[other] +1,14,104,6,9,[unknown],[other] 1,15,104,6,9,[unknown],[other] 1,16,104,6,9,[unknown],[other] -1,17,104,6,9,[unknown],[other] +1,17,104,6,9,7,[other] 1,18,104,6,9,7,[other] 1,19,104,6,9,7,[other] 1,20,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv new file mode 100644 index 00000000..a3056096 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,115,9,2,2,[unknown] +2,4,118,9,2,7,[mask] +2,5,115,9,9,7,[mask] +2,6,115,9,9,7,[mask] +2,7,115,9,9,7,[mask] +2,8,112,9,9,7,[other] +2,9,115,9,9,7,[other] +2,10,104,9,9,7,[other] +2,11,112,6,9,7,[other] +2,12,112,9,9,7,[other] +2,13,112,9,9,7,[other] +2,14,112,9,9,7,[other] +2,15,112,9,9,7,[other] +2,16,112,9,9,7,[other] +2,17,112,9,9,7,[other] +2,18,112,9,9,8,[other] +2,19,112,9,9,7,[other] +2,20,112,9,9,7,[other] +2,21,112,9,9,7,[other] +2,22,112,9,9,7,[other] +2,23,112,9,9,7,[other] +2,24,112,9,9,7,[other] +2,25,112,9,9,7,[other] +2,26,112,9,9,8,[other] +2,27,112,9,9,7,[other] +2,28,112,9,9,7,[other] +2,29,112,9,9,7,[other] +2,30,112,9,9,7,[other] +2,31,112,9,9,7,[other] +2,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv new file mode 100644 index 00000000..861690e2 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,112,9,2,2,[mask] +3,4,112,9,2,[mask],[mask] +3,5,115,9,2,9,[other] +3,6,112,9,2,2,[other] +3,7,112,9,2,2,[mask] +3,8,112,9,9,2,[other] +3,9,112,9,2,2,[other] +3,10,112,9,9,7,[other] +3,11,112,9,9,7,[other] +3,12,112,9,9,7,[other] +3,13,112,9,9,7,[other] +3,14,112,9,9,7,[other] +3,15,112,9,9,7,[other] +3,16,112,9,9,7,[other] +3,17,112,9,9,7,[other] +3,18,112,9,9,8,[other] +3,19,112,9,9,7,[other] +3,20,112,9,9,7,[other] +3,21,112,9,9,7,[other] +3,22,112,9,9,7,[other] +3,23,112,9,9,7,[other] +3,24,112,9,9,7,[other] +3,25,112,9,9,7,[other] +3,26,112,9,9,8,[other] +3,27,112,9,9,7,[other] +3,28,112,9,9,7,[other] +3,29,112,9,9,7,[other] +3,30,112,9,9,7,[other] +3,31,112,9,9,7,[other] +3,32,112,9,9,7,[other] +4,3,119,9,2,7,[other] +4,4,112,9,9,7,[other] +4,5,112,9,9,7,[other] +4,6,112,9,9,7,[other] +4,7,112,9,9,7,[other] +4,8,112,9,9,7,[other] +4,9,112,9,9,7,[other] +4,10,112,9,9,7,[other] +4,11,112,9,9,7,[other] +4,12,112,9,9,8,[other] +4,13,112,9,9,7,[other] +4,14,112,9,9,7,[other] +4,15,112,9,9,7,[other] +4,16,112,9,9,7,[other] +4,17,112,9,9,7,[other] +4,18,112,9,9,7,[other] +4,19,112,9,9,7,[other] +4,20,112,9,9,8,[other] +4,21,112,9,9,7,[other] +4,22,112,9,9,7,[other] +4,23,112,9,9,7,[other] +4,24,112,9,9,7,[other] +4,25,112,9,9,7,[other] +4,26,112,9,9,7,[other] +4,27,112,9,9,7,[other] +4,28,112,9,9,8,[other] +4,29,112,9,9,7,[other] +4,30,112,9,9,7,[other] +4,31,112,9,9,7,[other] +4,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv similarity index 79% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv index cf194871..f36537ee 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv @@ -4,17 +4,17 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 5,5,111,1,2,7,[other] 5,6,111,1,2,7,[other] 5,7,111,1,9,7,[other] -5,8,111,1,9,7,[other] +5,8,111,3,9,7,[other] 5,9,102,1,9,7,[other] -5,10,129,1,9,[unknown],[other] +5,10,102,1,9,[unknown],[other] 5,11,102,1,9,[unknown],[other] 5,12,102,6,9,[unknown],[other] 5,13,104,6,9,[unknown],[other] -5,14,104,6,9,[unknown],[other] -5,15,104,6,9,[unknown],[other] -5,16,104,6,9,7,[other] +5,14,104,6,9,5,[other] +5,15,104,6,9,5,[other] +5,16,104,9,9,5,[other] 5,17,104,9,9,7,[other] -5,18,104,9,9,7,[other] +5,18,104,6,9,7,[other] 5,19,104,6,9,7,[other] 5,20,104,6,9,7,[other] 5,21,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv similarity index 55% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv index 4cae85f8..ef0be269 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv @@ -1,22 +1,22 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,4,111,9,2,7,[other] -6,5,[unknown],9,2,7,[other] -6,6,111,9,9,7,[other] +6,5,111,9,2,7,[other] +6,6,111,9,2,7,[other] 6,7,111,1,9,7,[other] 6,8,111,1,9,7,[other] -6,9,111,1,9,7,[other] +6,9,102,1,9,7,[other] 6,10,102,1,9,[unknown],[other] -6,11,129,1,9,[unknown],[other] -6,12,102,1,9,[unknown],[other] -6,13,104,6,9,[unknown],[other] -6,14,104,1,9,[unknown],[other] -6,15,104,6,9,[unknown],[other] -6,16,104,6,9,[unknown],[other] -6,17,104,6,9,[unknown],[other] +6,11,104,6,9,[unknown],[other] +6,12,104,1,9,[unknown],[other] +6,13,102,6,9,[unknown],[other] +6,14,104,6,9,[unknown],[other] +6,15,104,6,9,7,[other] +6,16,104,6,9,7,[other] +6,17,104,6,9,7,[other] 6,18,104,6,9,7,[other] 6,19,104,6,9,7,[other] 6,20,104,6,9,7,[other] -6,21,104,6,9,7,[other] +6,21,104,9,9,7,[other] 6,22,104,6,9,7,[other] 6,23,104,6,9,7,[other] 6,24,104,6,9,7,[other] @@ -29,23 +29,23 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,31,104,6,9,7,[other] 6,32,104,6,9,7,[other] 6,33,104,6,9,7,[other] -7,3,111,2,9,7,[other] -7,4,111,5,9,7,[other] -7,5,117,1,9,7,[other] -7,6,129,6,9,[unknown],[other] -7,7,129,6,9,7,[other] -7,8,104,9,9,7,[other] -7,9,129,6,9,[unknown],[other] -7,10,104,9,9,7,[other] -7,11,104,[mask],9,7,[other] -7,12,104,[mask],9,7,[other] -7,13,104,[mask],9,7,[other] -7,14,107,[mask],9,7,[other] -7,15,107,1,9,7,[other] +7,3,119,2,9,7,[other] +7,4,104,6,9,7,[other] +7,5,104,6,9,7,[other] +7,6,104,6,9,7,[other] +7,7,104,6,9,7,[other] +7,8,104,6,9,7,[other] +7,9,104,6,9,7,[other] +7,10,104,6,9,7,[other] +7,11,104,9,9,7,[other] +7,12,104,6,9,7,[other] +7,13,104,6,9,7,[other] +7,14,104,6,9,7,[other] +7,15,104,6,9,7,[other] 7,16,104,6,9,7,[other] 7,17,104,6,9,7,[other] -7,18,104,1,9,7,[other] -7,19,104,1,9,7,[other] +7,18,104,6,9,7,[other] +7,19,104,6,9,7,[other] 7,20,104,6,9,7,[other] 7,21,104,6,9,7,[other] 7,22,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv similarity index 92% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv index b1dc8274..1b61ff20 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-predictions/sequifier-test-hp-search-custom-eval-run-2-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv @@ -9,10 +9,10 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 8,11,129,1,9,[unknown],[other] 8,12,102,1,9,[unknown],[other] 8,13,104,6,9,[unknown],[other] -8,14,104,1,9,[unknown],[other] +8,14,104,6,9,[unknown],[other] 8,15,104,6,9,[unknown],[other] 8,16,104,6,9,[unknown],[other] -8,17,104,6,9,[unknown],[other] +8,17,104,6,9,7,[other] 8,18,104,6,9,7,[other] 8,19,104,6,9,7,[other] 8,20,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv new file mode 100644 index 00000000..4c3bf37e --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,113,3,2,[other],[other] +9,4,119,9,2,7,[mask] +9,5,129,9,9,[other],[other] +9,6,119,9,9,7,[mask] +9,7,119,9,9,7,[other] +9,8,104,9,9,7,[other] +9,9,129,9,9,2,[other] +9,10,112,9,9,2,[other] +9,11,112,9,9,2,[other] +9,12,112,9,9,7,[other] +9,13,112,9,9,7,[other] +9,14,112,9,9,7,[other] +9,15,112,9,9,7,[other] +9,16,112,9,9,7,[other] +9,17,112,9,9,8,[other] +9,18,112,9,9,7,[other] +9,19,112,9,9,7,[other] +9,20,112,9,9,7,[other] +9,21,112,9,9,7,[other] +9,22,112,9,9,7,[other] +9,23,112,9,9,7,[other] +9,24,112,9,9,7,[other] +9,25,112,9,9,8,[other] +9,26,112,9,9,7,[other] +9,27,112,9,9,7,[other] +9,28,112,9,9,7,[other] +9,29,112,9,9,7,[other] +9,30,112,9,9,7,[other] +9,31,112,9,9,7,[other] +9,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv new file mode 100644 index 00000000..32cbdbc6 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +0,4,121,1,1,2,1 +0,5,113,0,[other],8,2 +0,6,113,1,1,8,0 +0,7,105,3,[other],8,1 +0,8,113,1,1,8,0 +0,9,105,3,1,1,1 +0,10,128,1,8,8,0 +0,11,113,1,0,7,1 +0,12,105,8,9,1,1 +0,13,113,1,8,0,1 +0,14,105,1,9,7,1 +0,15,105,1,7,1,1 +0,16,113,1,9,1,1 +0,17,113,1,[other],1,2 +0,18,113,1,[other],7,1 +0,19,105,8,[other],2,1 +0,20,113,1,[other],8,1 +0,21,113,1,[other],7,1 +0,22,105,8,9,2,1 +0,23,113,1,8,0,1 +0,24,113,1,9,1,1 +0,25,113,1,[other],1,1 +0,26,113,1,[other],7,1 +0,27,105,8,[other],2,1 +0,28,113,1,[other],2,1 +0,29,113,1,[other],7,1 +0,30,105,8,[other],2,1 +0,31,113,1,8,2,1 +0,32,113,3,9,7,1 +0,33,105,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv new file mode 100644 index 00000000..9d999e02 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +1,4,121,5,[other],9,1 +1,5,121,5,[other],7,1 +1,6,121,5,[other],7,1 +1,7,121,5,[other],7,1 +1,8,121,5,[other],0,1 +1,9,122,1,0,0,1 +1,10,113,1,7,8,1 +1,11,113,1,7,0,1 +1,12,105,1,7,2,1 +1,13,113,1,7,2,1 +1,14,113,[mask],7,1,1 +1,15,113,1,1,2,1 +1,16,113,[mask],[other],1,1 +1,17,113,1,1,2,1 +1,18,113,3,1,7,1 +1,19,105,1,[other],2,1 +1,20,113,1,1,7,1 +1,21,105,8,9,1,1 +1,22,113,1,8,0,1 +1,23,113,1,9,7,1 +1,24,105,1,[other],1,1 +1,25,113,1,[other],7,2 +1,26,105,8,[other],2,1 +1,27,113,1,[other],2,1 +1,28,113,1,[other],7,1 +1,29,105,8,[other],2,1 +1,30,113,1,[other],2,1 +1,31,113,1,[other],7,1 +1,32,105,8,9,2,1 +1,33,113,1,1,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv new file mode 100644 index 00000000..c3a6b4fb --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,128,1,8,[unknown],2 +2,4,105,0,[other],7,2 +2,5,105,8,9,0,1 +2,6,128,1,8,0,2 +2,7,105,1,[other],6,1 +2,8,113,1,9,2,1 +2,9,113,1,[other],0,2 +2,10,113,1,[other],2,1 +2,11,113,1,[other],8,1 +2,12,113,1,[other],8,1 +2,13,113,1,[other],7,1 +2,14,105,8,[other],2,1 +2,15,113,1,8,2,1 +2,16,113,3,[other],7,1 +2,17,105,8,[other],2,1 +2,18,113,1,1,2,1 +2,19,113,3,[other],7,1 +2,20,105,8,[other],2,1 +2,21,113,1,[other],2,1 +2,22,113,1,[other],7,1 +2,23,105,8,[other],2,1 +2,24,113,1,[other],2,1 +2,25,113,1,[other],7,1 +2,26,105,8,[other],2,1 +2,27,113,1,[other],2,1 +2,28,113,1,9,7,1 +2,29,105,1,[other],7,1 +2,30,105,8,[other],2,1 +2,31,113,1,[other],2,1 +2,32,113,[mask],9,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv new file mode 100644 index 00000000..5cb291b4 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,102,5,1,1,0 +3,4,128,0,1,5,[unknown] +3,5,105,0,8,5,0 +3,6,127,[other],8,[mask],2 +3,7,109,0,8,[unknown],1 +3,8,127,0,8,[mask],[unknown] +3,9,102,4,[other],[mask],1 +3,10,124,1,7,8,[unknown] +3,11,113,1,7,0,2 +3,12,113,1,[other],6,1 +3,13,113,1,[other],8,1 +3,14,113,1,[other],2,1 +3,15,113,1,[other],2,1 +3,16,113,8,[other],1,1 +3,17,113,1,[other],2,1 +3,18,113,3,1,1,1 +3,19,103,1,[other],1,1 +3,20,103,1,9,7,1 +3,21,105,5,8,0,1 +3,22,105,1,8,2,1 +3,23,113,1,9,7,1 +3,24,105,1,9,1,1 +3,25,113,1,9,1,2 +3,26,113,1,[other],1,2 +3,27,113,1,[other],1,1 +3,28,113,1,[other],7,1 +3,29,105,8,[other],2,1 +3,30,113,1,8,2,1 +3,31,113,3,[other],1,1 +3,32,113,1,9,1,1 +4,3,127,0,[other],[unknown],1 +4,4,127,2,1,2,1 +4,5,127,3,[other],8,1 +4,6,127,1,1,0,1 +4,7,127,0,[other],0,1 +4,8,113,1,1,0,1 +4,9,113,3,[other],8,1 +4,10,113,1,[other],0,1 +4,11,113,1,[other],0,1 +4,12,113,1,9,0,1 +4,13,113,1,[other],1,1 +4,14,113,1,[other],1,1 +4,15,113,1,[other],1,1 +4,16,113,1,[other],1,1 +4,17,113,1,9,1,1 +4,18,105,0,[other],1,1 +4,19,113,0,8,0,1 +4,20,105,0,8,2,1 +4,21,113,0,8,0,1 +4,22,113,0,8,2,1 +4,23,113,3,[other],8,1 +4,24,113,1,[other],8,1 +4,25,113,1,[other],8,1 +4,26,113,1,[other],8,1 +4,27,113,1,[other],8,1 +4,28,113,1,[other],7,1 +4,29,105,1,[other],7,1 +4,30,105,1,9,0,1 +4,31,113,1,5,0,1 +4,32,113,1,5,1,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv new file mode 100644 index 00000000..79f882a9 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +5,3,128,1,[other],4,1 +5,4,105,1,[other],7,1 +5,5,105,1,5,0,1 +5,6,113,1,[other],0,1 +5,7,113,1,[other],2,1 +5,8,113,1,5,2,1 +5,9,113,1,[other],1,1 +5,10,113,1,[other],2,1 +5,11,113,8,9,1,1 +5,12,113,1,[other],7,1 +5,13,105,8,9,1,1 +5,14,103,1,8,0,1 +5,15,113,1,8,7,1 +5,16,105,5,9,1,1 +5,17,113,1,8,0,1 +5,18,113,1,[other],7,1 +5,19,105,8,[other],2,1 +5,20,113,1,[other],8,1 +5,21,113,1,[other],7,1 +5,22,105,8,[other],2,1 +5,23,113,1,[other],2,1 +5,24,113,1,9,7,1 +5,25,105,1,[other],7,1 +5,26,105,8,5,2,1 +5,27,113,1,[other],2,1 +5,28,113,[mask],9,7,1 +5,29,113,1,[other],2,1 +5,30,113,1,[other],7,1 +5,31,105,8,[other],7,1 +5,32,113,1,[other],2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv new file mode 100644 index 00000000..359be249 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +6,4,122,4,7,8,1 +6,5,113,1,0,8,1 +6,6,113,1,7,8,1 +6,7,113,1,7,8,1 +6,8,113,1,1,1,1 +6,9,120,0,9,1,1 +6,10,102,0,8,7,1 +6,11,105,0,7,8,1 +6,12,113,1,1,0,1 +6,13,113,1,[other],7,1 +6,14,105,8,5,7,1 +6,15,105,1,[other],8,1 +6,16,113,1,7,0,1 +6,17,113,1,[other],7,1 +6,18,113,8,[other],2,1 +6,19,113,1,[other],8,1 +6,20,113,1,[other],0,1 +6,21,113,1,[other],2,1 +6,22,113,1,[other],7,1 +6,23,105,8,5,2,1 +6,24,113,1,6,8,1 +6,25,113,1,[other],1,1 +6,26,113,1,1,7,1 +6,27,105,8,9,1,1 +6,28,113,1,8,0,1 +6,29,113,1,9,7,1 +6,30,105,1,[other],1,1 +6,31,113,1,9,7,2 +6,32,105,[mask],9,1,1 +6,33,113,1,[other],0,1 +7,3,105,0,9,8,0 +7,4,105,0,1,1,2 +7,5,105,0,9,6,[unknown] +7,6,113,0,9,1,1 +7,7,113,0,9,1,2 +7,8,113,0,9,6,2 +7,9,113,9,8,1,1 +7,10,113,1,[other],8,1 +7,11,113,1,[other],8,1 +7,12,113,1,[other],8,1 +7,13,113,1,[other],7,1 +7,14,108,1,9,0,1 +7,15,113,1,0,7,1 +7,16,108,1,[other],7,1 +7,17,105,8,[other],7,1 +7,18,105,1,5,2,1 +7,19,113,1,[other],8,1 +7,20,113,1,[other],0,1 +7,21,113,8,[other],2,1 +7,22,113,1,[other],8,1 +7,23,113,1,[other],2,1 +7,24,113,8,[other],7,1 +7,25,105,1,[other],2,1 +7,26,113,1,9,7,1 +7,27,105,1,5,1,1 +7,28,113,1,9,8,1 +7,29,113,1,1,7,1 +7,30,105,8,9,1,1 +7,31,113,1,8,8,1 +7,32,113,1,[other],7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv new file mode 100644 index 00000000..67187a34 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,124,1,[other],7,2 +8,5,121,8,[other],6,1 +8,6,114,1,[other],8,2 +8,7,113,1,[other],0,1 +8,8,113,1,[other],0,1 +8,9,113,8,[other],2,1 +8,10,113,1,[other],2,1 +8,11,113,1,[other],0,1 +8,12,113,1,7,2,1 +8,13,113,1,9,1,1 +8,14,113,1,[other],1,1 +8,15,113,1,[other],1,1 +8,16,113,1,9,1,1 +8,17,103,1,9,1,1 +8,18,103,0,8,1,1 +8,19,113,0,8,7,1 +8,20,105,0,9,2,1 +8,21,113,0,8,0,1 +8,22,113,0,[other],8,1 +8,23,113,0,[other],8,1 +8,24,113,1,[other],8,1 +8,25,113,1,[other],8,1 +8,26,113,1,[other],8,1 +8,27,113,1,[other],8,1 +8,28,113,1,[other],7,1 +8,29,108,8,[other],7,1 +8,30,108,1,[other],7,1 +8,31,108,8,5,7,1 +8,32,105,1,[other],0,1 +8,33,113,1,7,7,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv new file mode 100644 index 00000000..6793444f --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,108,1,[other],8,1 +9,4,113,1,[other],7,1 +9,5,105,8,[other],7,1 +9,6,105,5,[other],2,1 +9,7,113,1,7,7,1 +9,8,113,8,[other],1,1 +9,9,113,1,[other],2,1 +9,10,113,1,[other],2,1 +9,11,113,8,5,2,1 +9,12,113,1,[other],8,1 +9,13,113,1,1,7,1 +9,14,105,8,9,7,1 +9,15,105,1,8,0,1 +9,16,113,1,8,7,1 +9,17,105,8,9,7,1 +9,18,105,1,8,2,1 +9,19,113,1,[other],7,2 +9,20,113,8,[other],7,1 +9,21,113,1,[other],2,1 +9,22,113,1,[other],8,2 +9,23,113,1,[other],7,1 +9,24,105,8,[other],2,1 +9,25,113,1,[other],2,1 +9,26,113,1,[other],2,1 +9,27,113,1,[other],0,1 +9,28,113,1,[other],2,1 +9,29,113,3,1,1,1 +9,30,105,1,[other],[mask],1 +9,31,113,1,9,7,1 +9,32,105,1,9,1,1 From edb9ffdda27c3cded740a35ec463f8bae0b37485 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 11:04:27 +0200 Subject: [PATCH 58/81] Fix class_share calculation --- .../config/hyperparameter_search_config.py | 2 + src/sequifier/config/train_config.py | 22 ++ src/sequifier/hyperparameter_search.py | 30 +- src/sequifier/preprocess.py | 2 +- src/sequifier/train.py | 148 ++++++-- .../hyperparameter-search-custom-eval.yaml | 1 + tests/integration/test_training.py | 2 +- .../unit/test_hyperparameter_search_config.py | 24 ++ tests/unit/test_train.py | 347 +++++++++++++++++- 9 files changed, 527 insertions(+), 51 deletions(-) diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 94c20f00..a36ace88 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -670,6 +670,7 @@ class HyperparameterSearchConfig(BaseModel): metadata_config_path: The path to the data-driven configuration file. hp_search_name: The name for the hyperparameter search. search_strategy: The search strategy, either "sample" or "grid". + seed: Optional random seed passed to the Optuna sampler. n_samples: The number of samples to draw for the search. model_config_write_path: The path to write the model configurations to. training_data_path: The path to the training data. @@ -700,6 +701,7 @@ class HyperparameterSearchConfig(BaseModel): metadata_config_path: str hp_search_name: str search_strategy: str = "bayesian" + seed: Optional[int] = None n_trials: Optional[int] = Field(None, alias="n_samples") prune_trials: Optional[bool] = True model_config_write_path: str diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index b8886d71..54efab88 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -35,6 +35,26 @@ AnyType = str | int | float +def _validate_class_share_log_columns(config_values: dict[str, Any]) -> None: + training_spec = config_values.get("training_spec", {}) + + for col in training_spec.get("class_share_log_columns", []): + if col not in config_values["target_columns"]: + raise ValueError(f"Class-share column {col!r} must be a target column.") + if config_values["target_column_types"].get(col) != "categorical": + raise ValueError( + f"Class-share column {col!r} must be a categorical target column." + ) + if col not in config_values["n_classes"]: + raise ValueError( + f"Class-share column {col!r} has no configured class count." + ) + if col not in config_values["id_maps"]: + raise ValueError( + f"Class-share column {col!r} has no index map for logging." + ) + + @beartype def load_train_config( config_path: str, args_config: dict[str, Any], skip_metadata: bool @@ -146,6 +166,8 @@ def load_train_config( source=f"metadata config '{metadata_config_path}'", ) + _validate_class_share_log_columns(config_values) + return try_catch_excess_keys(config_path, TrainModel, config_values) diff --git a/src/sequifier/hyperparameter_search.py b/src/sequifier/hyperparameter_search.py index 0fe83532..a481d938 100644 --- a/src/sequifier/hyperparameter_search.py +++ b/src/sequifier/hyperparameter_search.py @@ -6,7 +6,7 @@ import sys import time import warnings -from typing import Union +from typing import Any, Union import optuna import torch._dynamo @@ -24,6 +24,18 @@ from sequifier.io.yaml import TrainModelDumper # noqa: E402 +def create_sampler(config: Any) -> optuna.samplers.BaseSampler: + strategy = getattr(config, "search_strategy", "bayesian") + seed = getattr(config, "seed", None) + if strategy in ["sample"]: + return optuna.samplers.RandomSampler(seed=seed) + if strategy == "grid": + if hasattr(optuna.samplers, "BruteForceSampler"): + return optuna.samplers.BruteForceSampler(seed=seed) + raise RuntimeError("Grid search requires Optuna >= 3.1 for BruteForceSampler.") + return optuna.samplers.TPESampler(seed=seed) + + def set_pdeathsig(): """Binds child process lifecycle to the parent orchestrator via Linux prctl.""" if sys.platform.startswith("linux"): @@ -216,7 +228,8 @@ def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, floa raise KeyError( f"Metric '{metric}' missing in {eval_json_path}. Found keys: {list(eval_results.keys())}" ) - metrics.append(float(eval_results[metric])) + value = eval_results[metric] + metrics.append(float("nan") if value is None else float(value)) if len(metrics) == 1: return metrics[0] @@ -244,18 +257,7 @@ def hyperparameter_search(config_path: str, skip_metadata: bool) -> None: config = load_hyperparameter_search_config(config_path, skip_metadata) os.makedirs(os.path.join(config.project_root, "state", "optuna"), exist_ok=True) - strategy = getattr(config, "search_strategy", "bayesian") - if strategy in ["sample"]: - sampler = optuna.samplers.RandomSampler() - elif strategy == "grid": - if hasattr(optuna.samplers, "BruteForceSampler"): - sampler = optuna.samplers.BruteForceSampler() - else: - raise RuntimeError( - "Grid search requires Optuna >= 3.1 for BruteForceSampler." - ) - else: # "bayesian" - sampler = optuna.samplers.TPESampler() + sampler = create_sampler(config) storage_path = os.path.join( config.project_root, "state", "optuna", f"{config.hp_search_name}.db" diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index cde9834d..9c2d74fc 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1291,7 +1291,7 @@ def load_precomputed_id_maps( min_val = min(user_values) if min_val == 2: raise ValueError( - f"Precomputed map {file} uses legacy user IDs starting at 2; shifting user IDs by 1 to reserve the BERT mask ID." + f"Precomputed map {file} uses legacy user IDs starting at 2" ) if min_val != SPECIAL_TOKEN_IDS.user_start: raise ValueError( diff --git a/src/sequifier/train.py b/src/sequifier/train.py index a9c41f7a..8f294da7 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -14,7 +14,6 @@ from typing import Any, Optional, Union # noqa: E402 import numpy as np # noqa: E402 -import polars as pl # noqa: E402 import torch # noqa: E402 import torch._dynamo # noqa: E402 import torch.distributed as dist # noqa: E402 @@ -52,6 +51,8 @@ torch._dynamo.config.suppress_errors = True +ClassCounts = dict[str, Tensor] + from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 from sequifier.helpers import ( # noqa: E402 @@ -520,6 +521,49 @@ def _get_evaluation_loss_mask(metadata: dict[str, Tensor]) -> Tensor: return valid_mask +@beartype +def accumulate_class_counts( + counts: ClassCounts, + output: dict[str, Tensor], + valid_mask: Tensor, + n_classes: dict[str, int], +) -> None: + """Accumulates predicted class counts over valid evaluation tokens.""" + flattened_mask = valid_mask.bool().T.contiguous().reshape(-1) + + for col, running_counts in counts.items(): + if col not in output: + raise RuntimeError(f"Output is missing class-share column {col!r}.") + + predicted_ids = output[col].argmax(dim=-1).contiguous().reshape(-1) + + if predicted_ids.numel() != flattened_mask.numel(): + raise RuntimeError( + f"Prediction/mask size mismatch for {col!r}: " + f"{predicted_ids.numel()} predictions versus " + f"{flattened_mask.numel()} mask entries." + ) + + valid_predictions = predicted_ids[flattened_mask] + + if valid_predictions.numel() == 0: + continue + + batch_counts = torch.bincount( + valid_predictions.to(torch.int64), + minlength=n_classes[col], + ) + + if batch_counts.numel() != running_counts.numel(): + raise RuntimeError( + f"Class-count size mismatch for {col!r}: " + f"{batch_counts.numel()} counts versus " + f"{running_counts.numel()} expected classes." + ) + + running_counts.add_(batch_counts) + + class TransformerEmbeddingModel(nn.Module): """A wrapper around the TransformerModel to expose the embedding functionality.""" @@ -1369,13 +1413,13 @@ def train_model( self.start_epoch == 1 and self.hparams.training_spec.calculate_validation_loss_on_initialization ): - total_loss, total_losses, output = self._evaluate( + total_loss, total_losses, class_counts = self._evaluate( valid_loader, ddp_model ) elapsed = 0.0 self._log_epoch_results( - 0, 0, elapsed, total_loss, total_losses, output, 0 + 0, 0, elapsed, total_loss, total_losses, class_counts, 0 ) for epoch in range(self.start_epoch, self.hparams.training_spec.epochs + 1): if ( @@ -1393,7 +1437,7 @@ def train_model( self._train_epoch(train_loader, valid_loader, epoch, ddp_model) - total_loss, total_losses, output = self._evaluate( + total_loss, total_losses, class_counts = self._evaluate( valid_loader, ddp_model ) elapsed = time.time() - epoch_start_time @@ -1405,7 +1449,7 @@ def train_model( elapsed, total_loss, total_losses, - output, + class_counts, total_expected_batches, ) @@ -1673,7 +1717,7 @@ def _train_epoch( if should_save_batch.item() == 1: if self.save_batch_interval_minutes_val_loss: - val_loss, val_losses, output = self._evaluate( + val_loss, val_losses, class_counts = self._evaluate( valid_loader, ddp_model ) @@ -1687,7 +1731,7 @@ def _train_epoch( (current_time - self.last_batch_save_time), val_loss, val_losses, - output, + class_counts, current_global_step, ) val_loss_batch[0] = float(val_loss) @@ -1906,14 +1950,16 @@ def _transform_val(self, col: str, val: Tensor) -> Tensor: @beartype def _evaluate( self, valid_loader: DataLoader, ddp_model: Optional[nn.Module] = None - ) -> tuple[np.float32, dict[str, np.float32], dict[str, Tensor]]: + ) -> tuple[np.float32, dict[str, np.float32], ClassCounts]: """Evaluates the model on the validation set. Iterates through the validation data, calculates the total loss, and aggregates results across all processes if in distributed mode. Also calculates a one-time baseline loss on the first call. The DataLoader is expected to yield SequifierBatch objects. IDs are - currently unused during evaluation. + currently unused during evaluation. Class shares are counted over + the same valid token population as validation loss; for BERT this + means masked evaluation positions, not all sequence positions. Args: valid_loader: DataLoader for the validation dataset. @@ -1923,12 +1969,33 @@ def _evaluate( A tuple containing: - The total aggregated validation loss (float). - A dictionary of aggregated losses for each target column (dict[str, float]). - - The output tensor dictionary from the last batch (used for class share logging). + - A dictionary of globally aggregated class-count tensors. """ model_to_call = ddp_model if ddp_model is not None else self target_names = list(self.target_columns) - output = {} # for type checking + class_count_columns = list(dict.fromkeys(self.class_share_log_columns)) + + for col in class_count_columns: + missing_class_ids = [ + class_id + for class_id in range(self.n_classes[col]) + if class_id not in self.index_maps[col] + ] + if missing_class_ids: + raise ValueError( + f"Class-share column {col!r} is missing index-map entries " + f"for class IDs {missing_class_ids}." + ) + + local_class_counts: ClassCounts = { + col: torch.zeros( + self.n_classes[col], + dtype=torch.int64, + device=self.device, + ) + for col in class_count_columns + } def new_accumulators() -> tuple[dict[str, Tensor], dict[str, Tensor]]: return ( @@ -2056,11 +2123,24 @@ def finalize_components( loss_sums, token_counts, ) + accumulate_class_counts( + local_class_counts, + output, + valid_mask, + self.n_classes, + ) total_loss_global, total_losses_global = finalize_components( total_loss_sums, total_loss_counts, "validation" ) + if self.hparams.training_spec.distributed: + for col in class_count_columns: + dist.all_reduce( + local_class_counts[col], + op=dist.ReduceOp.SUM, + ) + # Handle one-time baseline loss calculation with the same aggregation semantics. if not hasattr(self, "baseline_loss"): baseline_loss_sums, baseline_loss_counts = new_accumulators() @@ -2161,7 +2241,10 @@ def finalize_components( k: np.float32(v.detach().cpu().item()) for k, v in total_losses_global.items() }, - output, + { + col: counts.detach().cpu() + for col, counts in local_class_counts.items() + }, ) finally: model_to_call.train(was_training) @@ -2490,7 +2573,7 @@ def _log_epoch_results( elapsed: float, total_loss: np.float32, total_losses: dict[str, np.float32], - output: dict[str, Tensor], + class_counts: ClassCounts, global_step: int, ) -> None: """Logs the results of an epoch. @@ -2504,8 +2587,8 @@ class share statistics (if configured) to the log file. elapsed: Time taken for the epoch (in seconds). total_loss: The total aggregated validation loss. total_losses: A dictionary of aggregated losses for each target. - output: The output tensor dictionary from the last validation batch, - used for class share logging. + class_counts: Globally aggregated class-count tensors used for + class share logging. batch: Current batch number. """ if self.rank == 0: @@ -2543,31 +2626,28 @@ class share statistics (if configured) to the log file. self.logger.info("[INFO] - " + ", ".join(loss_strs)) for categorical_column in self.class_share_log_columns: - output_values = ( - output[categorical_column] - .argmax(dim=-1) # class dimension - .reshape(-1) # scalar category ID per token - .detach() - .cpu() - .numpy() - ) + counts = class_counts[categorical_column].to(torch.int64) + total = counts.sum() - output_counts_df = ( - pl.Series("values", output_values) - .value_counts() - .with_columns( - (pl.col("count") / pl.col("count").sum()).alias("share") + if total.item() == 0: + self.logger.warning( + "[WARNING] No valid predictions available for " + f"class-share column {categorical_column!r}." ) - .sort("values") - ) + continue + + shares = counts.to(torch.float64) / total value_shares = " | ".join( - f"{self.index_maps[categorical_column][int(row['values'])]}: " - f"{row['share']:5.5f}" - for row in output_counts_df.iter_rows(named=True) + f"{self.index_maps[categorical_column][class_id]}: " + f"{shares[class_id].item():5.5f}" + for class_id in range(counts.numel()) + if counts[class_id].item() > 0 ) - self.logger.info(f"[INFO] {categorical_column}: {value_shares}") + self.logger.info( + f"[INFO] {categorical_column} (n={total.item()}): {value_shares}" + ) self.logger.info("-" * 89) diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml index abb6b043..d93d0792 100644 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ b/tests/configs/hyperparameter-search-custom-eval.yaml @@ -21,6 +21,7 @@ inference_batch_size: 10 # Search Strategy search_strategy: bayesian +seed: 101 n_samples: 4 # Configuration Loading Overrides (set to null to use values from metadata) diff --git a/tests/integration/test_training.py b/tests/integration/test_training.py index 65128d30..d90c32ef 100644 --- a/tests/integration/test_training.py +++ b/tests/integration/test_training.py @@ -148,7 +148,7 @@ def test_model_files_exists(run_training, run_training_from_checkpoint, project_ for suffix in ["best", "last"] ] + [ - f"sequifier-test-hp-search-custom-eval-run-{i}-{suffix}-1.onnx" + f"sequifier-test-hp-search-custom-eval-run-{i}-{suffix}-3.onnx" for i in range(4) for suffix in ["best", "last"] ] diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py index 77ea8639..16cfbf7e 100644 --- a/tests/unit/test_hyperparameter_search_config.py +++ b/tests/unit/test_hyperparameter_search_config.py @@ -1,3 +1,4 @@ +import optuna import pytest import yaml from pydantic import ValidationError @@ -5,6 +6,7 @@ from sequifier.config.hyperparameter_search_config import ( TrainingSpecHyperparameterSampling, ) +from sequifier.hyperparameter_search import create_sampler from sequifier.io.yaml import TrainModelDumper @@ -152,3 +154,25 @@ def test_bert_training_spec_dumps_to_plain_yaml(): "type": "GeometricDistribution", "p": 1.0, } + + +@pytest.mark.parametrize( + ("strategy", "sampler_name"), + [ + ("sample", "RandomSampler"), + ("grid", "BruteForceSampler"), + ("bayesian", "TPESampler"), + ], +) +def test_create_sampler_passes_config_seed(monkeypatch, strategy, sampler_name): + recorded = {} + + def fake_sampler(*, seed=None): + recorded["seed"] = seed + return object() + + monkeypatch.setattr(optuna.samplers, sampler_name, fake_sampler) + + create_sampler(type("Config", (), {"search_strategy": strategy, "seed": 123})()) + + assert recorded["seed"] == 123 diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index e2527ab6..8418b669 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -1,10 +1,13 @@ import copy import json +from types import SimpleNamespace +import numpy as np import pytest import torch import yaml from pydantic import ValidationError +from torch.utils.data import DataLoader from sequifier.config.probabilities import PoissonDistributionFloor from sequifier.config.train_config import ( @@ -16,8 +19,13 @@ load_train_config, ) from sequifier.helpers import ModelWindowView, StoredWindowLayout +from sequifier.io.batch import SequifierBatch from sequifier.special_tokens import SPECIAL_TOKEN_IDS -from sequifier.train import TransformerModel, _get_evaluation_loss_mask +from sequifier.train import ( + TransformerModel, + _get_evaluation_loss_mask, + accumulate_class_counts, +) def _training_spec_kwargs(**overrides): @@ -324,6 +332,76 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( assert config.special_token_ids == SPECIAL_TOKEN_IDS.ids_by_label +@pytest.mark.parametrize( + ("class_share_column", "metadata_overrides", "config_overrides", "match"), + [ + ( + "missing_col", + {}, + {}, + "Class-share column 'missing_col' must be a target column", + ), + ( + "real_col", + {}, + {}, + "Class-share column 'real_col' must be a categorical target column", + ), + ( + "cat_col", + {"n_classes": {}}, + {"drop_n_classes": True}, + "Class-share column 'cat_col' has no configured class count", + ), + ( + "cat_col", + {"id_maps": {}}, + {}, + "Class-share column 'cat_col' has no index map for logging", + ), + ], +) +def test_load_train_config_validates_class_share_columns_after_metadata_load( + tmp_path, + model_config, + class_share_column, + metadata_overrides, + config_overrides, + match, +): + config_path = tmp_path / "train.yaml" + metadata_path = tmp_path / "metadata.json" + config_values = model_config.model_dump() + config_values["project_root"] = str(tmp_path) + config_values["metadata_config_path"] = metadata_path.name + config_values["training_spec"]["class_share_log_columns"] = [class_share_column] + + storage_layout = config_values.pop("storage_layout") + config_values.pop("window_view") + config_values["context_length"] = model_config.window_view.context_length + + if config_overrides.get("drop_n_classes"): + config_values.pop("n_classes") + + metadata = { + "split_paths": ["data/train.pt", "data/val.pt"], + "stored_context_width": storage_layout["stored_context_width"], + "max_target_offset": storage_layout["max_target_offset"], + "stored_window_layout_version": storage_layout["version"], + "column_types": config_values["column_types"], + "n_classes": model_config.n_classes, + "id_maps": model_config.id_maps, + "special_token_ids": SPECIAL_TOKEN_IDS.ids_by_label, + } + metadata.update(metadata_overrides) + + config_path.write_text(yaml.safe_dump(config_values)) + metadata_path.write_text(json.dumps(metadata)) + + with pytest.raises(ValueError, match=match): + load_train_config(str(config_path), {}, skip_metadata=False) + + def test_forward_train_shapes(model, model_config): """Tests the output shapes of the forward_train method.""" batch_size = model_config.training_spec.batch_size @@ -509,6 +587,165 @@ def test_evaluation_loss_mask_intersects_target_bert_and_sample_masks(): ) +def _categorical_logits_from_batch_predictions(batch_predictions, n_classes): + prediction_ids = torch.tensor(batch_predictions, dtype=torch.long).T.contiguous() + return torch.nn.functional.one_hot(prediction_ids, num_classes=n_classes).float() + + +def test_accumulate_class_counts_all_samples_valid(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [[0, 1], [1, 2]], + n_classes=3, + ) + } + valid_mask = torch.ones(2, 2, dtype=torch.bool) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([1, 2, 1])) + + +def test_accumulate_class_counts_excludes_synthetic_samples(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [ + [0, 1], + [2, 2], + ], + n_classes=3, + ) + } + valid_mask = _get_evaluation_loss_mask( + { + "target_valid_mask": torch.ones(2, 2, dtype=torch.bool), + "sample_valid_mask": torch.tensor([True, False]), + } + ) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([1, 1, 0])) + + +def test_accumulate_class_counts_excludes_target_padding(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [[0, 2]], + n_classes=3, + ) + } + valid_mask = torch.tensor([[True, False]]) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([1, 0, 0])) + + +def test_accumulate_class_counts_combines_sample_and_token_masks(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [ + [0, 1], + [2, 2], + ], + n_classes=3, + ) + } + valid_mask = _get_evaluation_loss_mask( + { + "target_valid_mask": torch.tensor( + [ + [True, False], + [True, True], + ] + ), + "sample_valid_mask": torch.tensor([True, False]), + } + ) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([1, 0, 0])) + + +def test_accumulate_class_counts_respects_bert_mask(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [ + [0, 1], + [2, 2], + ], + n_classes=3, + ) + } + valid_mask = _get_evaluation_loss_mask( + { + "target_valid_mask": torch.ones(2, 2, dtype=torch.bool), + "bert_mask": torch.tensor( + [ + [False, True], + [True, True], + ] + ), + "sample_valid_mask": torch.tensor([True, False]), + } + ) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([0, 1, 0])) + + +def test_accumulate_class_counts_retains_missing_class_slots(): + counts = {"cat_col": torch.zeros(5, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [[3, 3]], + n_classes=5, + ) + } + valid_mask = torch.ones(1, 2, dtype=torch.bool) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 5}) + + assert torch.equal(counts["cat_col"], torch.tensor([0, 0, 0, 2, 0])) + + +def test_accumulate_class_counts_all_zero_when_no_positions_are_valid(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [[0, 1]], + n_classes=3, + ) + } + valid_mask = torch.zeros(1, 2, dtype=torch.bool) + + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + assert torch.equal(counts["cat_col"], torch.tensor([0, 0, 0])) + + +def test_accumulate_class_counts_raises_on_shape_mismatch(): + counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} + output = { + "cat_col": _categorical_logits_from_batch_predictions( + [[0, 1, 2]], + n_classes=3, + ) + } + valid_mask = torch.ones(1, 2, dtype=torch.bool) + + with pytest.raises(RuntimeError, match="Prediction/mask size mismatch"): + accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) + + def test_calculate_loss_components_aggregate_by_token_count(): model = TransformerModel.__new__(TransformerModel) model.target_column_types = {"real_col": "real"} @@ -535,6 +772,114 @@ def test_calculate_loss_components_aggregate_by_token_count(): assert torch.isclose(aggregate, torch.tensor(200.0 / 101.0, dtype=torch.float64)) +class _QueuedEvalModel(torch.nn.Module): + def __init__(self, outputs): + super().__init__() + self.outputs = iter(outputs) + + def forward(self, data, metadata=None, return_logits=False): + return next(self.outputs) + + +def _evaluation_shell_model(): + model = TransformerModel.__new__(TransformerModel) + model.input_columns = ["cat_col"] + model.target_columns = ["cat_col"] + model.target_column_types = {"cat_col": "categorical"} + model.n_classes = {"cat_col": 3} + model.loss_weights = None + model.criterion = {"cat_col": torch.nn.CrossEntropyLoss(reduction="none")} + model.device = "cpu" + model.class_share_log_columns = ["cat_col"] + model.index_maps = { # type: ignore + "cat_col": { + 0: "[unknown]", + 1: "a", + 2: "b", + } + } # type: ignore + model.decoder = {"cat_col": torch.nn.Linear(1, 1)} + model.hparams = SimpleNamespace( + seed=42, + training_spec=SimpleNamespace( + distributed=False, + layer_autocast=False, + data_parallelism="none", + training_objective="causal", + ), + ) + return model + + +def _validation_batch(predictions, sample_valid_mask=None): + batch_size = len(predictions) + seq_len = len(predictions[0]) + inputs = { + "cat_col": torch.zeros(batch_size, seq_len, dtype=torch.long), + } + targets = { + "cat_col": torch.tensor(predictions, dtype=torch.long), + } + valid_mask = torch.ones(batch_size, seq_len, dtype=torch.bool) + metadata = { + "attention_valid_mask": valid_mask.clone(), + "target_valid_mask": valid_mask, + } + if sample_valid_mask is not None: + metadata["sample_valid_mask"] = torch.tensor( + sample_valid_mask, + dtype=torch.bool, + ) + return SequifierBatch(inputs=inputs, targets=targets, metadata=metadata) + + +def test_evaluate_returns_class_counts_across_all_validation_batches(): + model = _evaluation_shell_model() + batches = [ + _validation_batch([[0, 0, 1]]), + _validation_batch([[2, 2]]), + ] + outputs = [ + {"cat_col": _categorical_logits_from_batch_predictions([[0, 0, 1]], 3)}, + {"cat_col": _categorical_logits_from_batch_predictions([[2, 2]], 3)}, + ] + eval_model = _QueuedEvalModel(outputs) + valid_loader = DataLoader(batches, batch_size=None) + + total_loss, total_losses, class_counts = TransformerModel._evaluate( + model, + valid_loader, + eval_model, + ) + + assert np.isfinite(total_loss) + assert np.isfinite(total_losses["cat_col"]) + assert torch.equal(class_counts["cat_col"], torch.tensor([2, 1, 2])) + assert eval_model.training + assert model.baseline_loss >= 0 + + +def test_evaluate_excludes_synthetic_final_batch_from_class_counts(): + model = _evaluation_shell_model() + batches = [ + _validation_batch([[0, 1]]), + _validation_batch([[2, 2]], sample_valid_mask=[False]), + ] + outputs = [ + {"cat_col": _categorical_logits_from_batch_predictions([[0, 1]], 3)}, + {"cat_col": _categorical_logits_from_batch_predictions([[2, 2]], 3)}, + ] + valid_loader = DataLoader(batches, batch_size=None) + + _, _, class_counts = TransformerModel._evaluate( + model, + valid_loader, + _QueuedEvalModel(outputs), + ) + + assert torch.equal(class_counts["cat_col"], torch.tensor([1, 1, 0])) + + def test_calculate_loss_zero_token_training_batch_is_differentiable(): model = TransformerModel.__new__(TransformerModel) model.target_column_types = {"real_col": "real"} From 9b8245d9aebba075088a3c4036b1ef3e948b0e65 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 11:52:02 +0200 Subject: [PATCH 59/81] shorten docstrings & clean up --- hooks/consolidate_docs.py | 8 +- hooks/correct_docs_version.py | 25 +- hooks/validate_docs_deps.py | 28 +- .../config/hyperparameter_search_config.py | 175 +---- src/sequifier/config/infer_config.py | 41 +- src/sequifier/config/preprocess_config.py | 37 +- src/sequifier/config/train_config.py | 90 +-- src/sequifier/distributed/env.py | 8 +- src/sequifier/helpers.py | 222 +----- src/sequifier/hyperparameter_search.py | 44 +- src/sequifier/infer.py | 498 +----------- .../io/sequifier_dataset_from_file.py | 22 +- .../sequifier_dataset_from_folder_parquet.py | 17 +- ...uifier_dataset_from_folder_parquet_lazy.py | 51 +- .../io/sequifier_dataset_from_folder_pt.py | 18 +- .../sequifier_dataset_from_folder_pt_lazy.py | 46 +- src/sequifier/io/yaml.py | 49 +- src/sequifier/make.py | 6 +- src/sequifier/model/layers.py | 7 - src/sequifier/optimizers/ademamix.py | 59 +- src/sequifier/optimizers/optimizers.py | 9 +- src/sequifier/preprocess.py | 708 +----------------- src/sequifier/sequifier.py | 17 +- src/sequifier/train.py | 473 ++---------- src/sequifier/visualize_training.py | 67 +- tests/integration/test_inference.py | 12 +- tests/integration/test_preprocessing.py | 7 +- tests/integration/test_visualize_training.py | 3 - .../source_scripts/hp_search_eval_script.py | 4 - ...uifier_dataset_from_folder_parquet_lazy.py | 12 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 16 +- tests/unit/test_helpers.py | 33 +- tests/unit/test_infer.py | 46 +- tests/unit/test_preprocess.py | 32 +- tests/unit/test_train.py | 10 +- tools/analysis.py | 11 +- tools/convert_to_pt.py | 6 - tools/resize_pt_files.py | 56 +- tools/stream_folder_via_scp.py | 26 +- 39 files changed, 259 insertions(+), 2740 deletions(-) diff --git a/hooks/consolidate_docs.py b/hooks/consolidate_docs.py index 324b8426..8426f6f5 100644 --- a/hooks/consolidate_docs.py +++ b/hooks/consolidate_docs.py @@ -2,7 +2,6 @@ import sys from pathlib import Path -# 1. Define the exact order of files to read FILES_TO_READ = [ "README.md", "documentation/configs/preprocess.md", @@ -19,7 +18,6 @@ def main(): consolidated_content = [] - # 2. Read contents for filepath in FILES_TO_READ: path = Path(filepath) if not path.is_file(): @@ -28,23 +26,19 @@ def main(): consolidated_content.append(path.read_text(encoding="utf-8")) - # 3. Join with newlines to preserve markdown structure between files final_content = "\n\n".join(consolidated_content) output_path = Path(OUTPUT_FILE) - # 4. Check current content to avoid failing the hook if nothing changed current_content = "" if output_path.is_file(): current_content = output_path.read_text(encoding="utf-8") - # 5. Write and exit with status code 1 if an update was needed if current_content != final_content: - # Ensure the output directory exists output_path.parent.mkdir(parents=True, exist_ok=True) output_path.write_text(final_content, encoding="utf-8") print(f"Hook updated {OUTPUT_FILE}") - sys.exit(1) # pre-commit requires a non-zero exit code when a file is modified + sys.exit(1) if __name__ == "__main__": diff --git a/hooks/correct_docs_version.py b/hooks/correct_docs_version.py index 655e3328..2edd6763 100755 --- a/hooks/correct_docs_version.py +++ b/hooks/correct_docs_version.py @@ -1,24 +1,15 @@ #!/usr/bin/env python -""" -Compares the project version in: -1. pyproject.toml (project.version or tool.poetry.version) -2. docs/source/conf.py (release = "...") -3. README.md (BibTeX citation version = {...}) - -Exits with a non-zero status code if they do not ALL match exactly. -""" +"""Require pyproject, docs conf, and README citation versions to match.""" import re import sys from pathlib import Path -# --- Configuration --- ROOT_DIR = Path(__file__).parent.parent PYPROJECT_PATH = ROOT_DIR / "pyproject.toml" CONF_PATH = ROOT_DIR / "docs/source/conf.py" README_PATH = ROOT_DIR / "README.md" -# --------------------- try: try: @@ -31,17 +22,15 @@ def get_toml_version() -> str | None: - """Fetches version from pyproject.toml.""" + """Read pyproject version.""" if not PYPROJECT_PATH.exists(): return None try: data = tomllib.loads(PYPROJECT_PATH.read_text(encoding="utf-8")) - # Check standard PEP 621 val = None if "project" in data and "version" in data["project"]: val = data["project"]["version"] - # Check Poetry elif ( "tool" in data and "poetry" in data["tool"] @@ -55,12 +44,11 @@ def get_toml_version() -> str | None: def get_conf_version() -> str | None: - """Fetches release from docs/source/conf.py.""" + """Read docs release version.""" if not CONF_PATH.exists(): return None try: content = CONF_PATH.read_text(encoding="utf-8") - # Regex for: release = "..." or release = '...' match = re.search(r"^release\s*=\s*['\"]([^'\"]+)['\"]", content, re.MULTILINE) return match.group(1).strip() if match else None except Exception: @@ -68,13 +56,11 @@ def get_conf_version() -> str | None: def get_readme_version() -> str | None: - """Fetches version from README.md BibTeX citation.""" + """Read README BibTeX version.""" if not README_PATH.exists(): return None try: content = README_PATH.read_text(encoding="utf-8") - # Regex for BibTeX: version = {1.0.0} or version = "1.0.0" - # Captures the content inside the first { } or " " encountered after 'version =' match = re.search(r"version\s*=\s*[{\"]([^}\"]+)[}\"]", content) return match.group(1).strip() if match else None except Exception: @@ -88,12 +74,10 @@ def main(): v_conf = get_conf_version() v_readme = get_readme_version() - # 1. Print detected versions for transparency print(f" pyproject.toml: '{v_toml}'") print(f" docs/conf.py: '{v_conf}'") print(f" README.md: '{v_readme}'") - # 2. Check for missing versions if v_toml is None or v_conf is None or v_readme is None: print( "\n❌ Error: Could not extract version from one or more files.", @@ -101,7 +85,6 @@ def main(): ) sys.exit(1) - # 3. Check for exact equality if v_toml == v_conf == v_readme: print("\n✅ All versions match.") sys.exit(0) diff --git a/hooks/validate_docs_deps.py b/hooks/validate_docs_deps.py index 46c434ed..44866309 100755 --- a/hooks/validate_docs_deps.py +++ b/hooks/validate_docs_deps.py @@ -2,30 +2,20 @@ import sys from pathlib import Path -# --- Configuration --- PYPROJECT_PATH = Path("./pyproject.toml") WORKFLOW_PATH = Path("./.github/workflows/docs.yml") def normalize_dep(dep_string): - """ - Removes whitespace, quotes, and trailing commas for consistent comparison. - Example: ' "polars>= 1.0" ' -> 'polars>=1.0' - """ - # Remove single and double quotes + """Normalize dependency strings for comparison.""" s = dep_string.replace('"', "").replace("'", "") - # Remove all whitespace s = "".join(s.split()) - # Remove trailing commas if present s = s.rstrip(",") return s def parse_pyproject_toml(file_path): - """ - Extracts dependencies from the [project] dependencies list. - We use a simple state parser to avoid requiring 'tomli' on Python < 3.11. - """ + """Parse project dependency strings without tomli.""" deps = set() if not file_path.exists(): print(f"Error: {file_path} not found.") @@ -39,18 +29,15 @@ def parse_pyproject_toml(file_path): for line in lines: stripped = line.strip() - # Detect start of dependencies block if stripped.startswith("dependencies = ["): in_dependencies = True continue - # Detect end of block if in_dependencies and stripped.startswith("]"): in_dependencies = False break if in_dependencies: - # Ignore empty lines or comments inside the block if not stripped or stripped.startswith("#"): continue @@ -62,10 +49,7 @@ def parse_pyproject_toml(file_path): def parse_workflow_yml(file_path): - """ - Extracts dependencies specifically from the 'pip install \' block - in the Install dependencies step. - """ + """Parse docs workflow pip-install dependency strings.""" deps = set() if not file_path.exists(): print(f"Error: {file_path} not found.") @@ -79,20 +63,16 @@ def parse_workflow_yml(file_path): for line in lines: stripped = line.strip() - # Logic to find the specific pip install block that uses line continuation - # We look for 'pip install \' but exclude 'pip install -r' lines if "pip install \\" in line and "-r " not in line: in_pip_block = True continue if in_pip_block: - # If the line contains a quoted string, it's a dependency if '"' in line or "'" in line: normalized = normalize_dep(stripped.rstrip("\\")) if normalized: deps.add(normalized) - # If the line does not end with a backslash, the multiline command is over if not line.rstrip().endswith("\\"): in_pip_block = False @@ -105,10 +85,8 @@ def main(): toml_deps = parse_pyproject_toml(PYPROJECT_PATH) yml_deps = parse_workflow_yml(WORKFLOW_PATH) - # 1. Check for items in TOML but missing in YAML missing_in_yml = toml_deps - yml_deps - # 2. Check for items in YAML but missing in TOML missing_in_toml = yml_deps - toml_deps if not missing_in_yml and not missing_in_toml: diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index a36ace88..0ca0ccfe 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -29,13 +29,7 @@ class FloatDistribution(BaseModel): - """Pydantic model representing a floating-point hyperparameter distribution for Optuna. - - Attributes: - low (float): The lower bound of the distribution. - high (float): The upper bound of the distribution. - log (bool): If True, sample from the distribution in the log domain. Defaults to False. - """ + """Optuna float range with optional step/log sampling.""" low: float high: float @@ -53,14 +47,7 @@ def validate_step_and_log(self): class IntDistribution(BaseModel): - """Pydantic model representing an integer hyperparameter distribution for Optuna. - - Attributes: - low (int): The lower bound of the distribution. - high (int): The upper bound of the distribution. - step (int): The spacing between valid integer values. Defaults to 1. - log (bool): If True, sample from the distribution in the log domain. Defaults to False. - """ + """Optuna integer range with step/log sampling.""" low: int high: int @@ -100,12 +87,7 @@ def sample_param( class BERTSpecHyperparameterSampling(BaseModel): - """Pydantic model for BERT objective hyperparameter sampling. - - Each BERT spec field is sampled independently so Optuna can track the - conditional search space without receiving nested objects as categorical - values. - """ + """Search space for BERT objective masking parameters.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") @@ -145,22 +127,7 @@ def sample_trial(self, trial: Any) -> BERTSpecModel: def load_hyperparameter_search_config( config_path: str, skip_metadata: bool ) -> "HyperparameterSearchConfig": - """Load a hyperparameter search configuration from a YAML file. - - This function reads a YAML configuration file, processes it to include - data-driven configurations if needed, and returns a HyperparameterSearchConfig - object. - - Args: - config_path: The path to the hyperparameter search configuration file. - skip_metadata: A boolean flag indicating whether the configuration is - for unprocessed data. If False, it will load and integrate - data-driven configurations. - - Returns: - An instance of the HyperparameterSearchConfig class, populated with the - configuration from the file. - """ + """Load hyperparameter-search YAML plus optional metadata-derived fields.""" with open(config_path, "r") as f: config_values = yaml.safe_load(f) @@ -238,40 +205,7 @@ def load_hyperparameter_search_config( class TrainingSpecHyperparameterSampling(BaseModel): - """Pydantic model for training specification hyperparameter sampling. - - Attributes: - device: The device to train on (e.g., 'cuda', 'cpu'). - epochs: A list of possible numbers of epochs to train for. - log_interval: The interval in batches for logging. - class_share_log_columns: Columns for which to log class share. - early_stopping_epochs: Number of epochs for early stopping. - save_interval_epochs: Interval in epochs for saving model checkpoints. - save_latest_interval_minutes: the time interval in which a checkpoint is written to the "latest" checkpoint path - save_batch_interval_minutes: the time interval in which a checkpoint is written to a unique checkpoint path - save_batch_interval_minutes_val_loss: calculate val loss at the moment of batch interval saving - calculate_validation_loss_on_initialization: calculate val loss on weight initialization - training_objective: Training objective choices, either 'causal' or 'bert'. - batch_size: A list of possible batch sizes. - learning_rate: A list of possible learning rates. - bert_spec: Optional BERT hyperparameter search space. Required if 'bert' can be sampled. - criterion: A dictionary mapping target columns to loss functions. - class_weights: Optional dictionary mapping columns to class weights. - accumulation_steps: A list of possible gradient accumulation steps. - dropout: A list of possible dropout rates. - loss_weights: Optional dictionary mapping columns to loss weights. - optimizer: A list of possible optimizer configurations. - scheduler: A list of possible scheduler configurations. - continue_training: Flag to continue training from a checkpoint. - layer_type_dtypes: Dictionary mapping layer types (linear, embedding, norm) to dtypes (bfloat16, float8_e4m3fn). - layer_autocast: Whether to use autocast - sampling_strategy: data sampling in distributed training: 'exact', 'oversampling' or 'undersampling' - data_parallelism: 'DDP' or 'FSDP' - fsdp_cpu_offload: fsdp cpu offload - torch_compile: compile entire model ('outer') or transformer layers ('inner') with torch.compile, alternatively 'none' - float32_matmul_precision: precision level of float32 computations. One of 'highest', 'high' and 'medium' - - """ + """Training-spec search space with paired LR/scheduler candidates.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") @@ -322,17 +256,7 @@ class TrainingSpecHyperparameterSampling(BaseModel): float32_matmul_precision: str = "highest" def __init__(self, **kwargs): - """Initialize the TrainingSpecHyperparameterSampling instance. - - This method initializes the Pydantic BaseModel and then processes the - optimizer and scheduler configurations from the provided keyword - arguments, converting them into DotDict objects. - - Args: - **kwargs: Keyword arguments that correspond to the attributes of this - class. The 'optimizer' and 'scheduler' arguments are expected - to be lists of dictionaries. - """ + """Normalize optimizer/scheduler dicts after Pydantic validation.""" super().__init__( **{k: v for k, v in kwargs.items() if k not in ["optimizer", "scheduler"]} ) @@ -433,18 +357,7 @@ def validate_scheduler_config(cls, v, info_dict): return v def sample_trial(self, trial: Any) -> TrainingSpecModel: - """Samples training hyperparameters using an Optuna trial. - - This method leverages the provided Optuna trial to suggest values for - hyperparameters like batch size, dropout, and learning rate based on the - defined search spaces (categorical lists or distributions). - - Args: - trial (Any): The Optuna trial object used for suggesting hyperparameters. - - Returns: - TrainingSpecModel: A populated training specification model with the sampled hyperparameters. - """ + """Sample training hyperparameters for one Optuna trial.""" lr_sched_index = trial.suggest_categorical( "lr_sched_index", list(range(len(self.learning_rate))) ) @@ -519,17 +432,7 @@ def sample_trial(self, trial: Any) -> TrainingSpecModel: class ModelSpecHyperparameterSampling(BaseModel): - """Pydantic model for model specification hyperparameter sampling. - - Attributes: - initial_embedding_dim: A list of possible sizes for the initial input embedding. - feature_embedding_dims: A list of possible dictionaries defining embedding dimensions for each input column. - joint_embedding_dim: A list of possible sizes for the joint embedding layer projection. - dim_model: A list of possible numbers of expected features in the input (d_model). - n_head: A list of possible numbers of heads in the multi-head attention models. - dim_feedforward: A list of possible dimensions of the feedforward network model. - num_layers: A list of possible numbers of layers in the transformer model. - """ + """Model-architecture search space with paired width choices.""" initial_embedding_dim: list[int] joint_embedding_dim: list[Optional[int]] @@ -584,19 +487,7 @@ def validate_model_spec(cls, v, info): return v def sample_trial(self, trial: Any) -> ModelSpecModel: - """Samples model architecture hyperparameters using an Optuna trial. - - This method uses the Optuna trial to suggest structural parameters such as - the number of layers, feedforward dimensions, and attention heads. It ensures - that dependent dimensions (like `n_head` and `dim_model`) stay correctly paired - and that invalid key-value head combinations are filtered out. - - Args: - trial (Any): The Optuna trial object used for suggesting hyperparameters. - - Returns: - ModelSpecModel: A populated model specification model with the sampled architecture parameters. - """ + """Sample architecture hyperparameters for one Optuna trial.""" dim_model_idx = trial.suggest_categorical( "dim_model_idx", list(range(len(self.dim_model))) ) @@ -663,39 +554,7 @@ def sample_trial(self, trial: Any) -> ModelSpecModel: class HyperparameterSearchConfig(BaseModel): - """Pydantic model for hyperparameter search configuration. - - Attributes: - project_root: The path to the sequifier project directory. - metadata_config_path: The path to the data-driven configuration file. - hp_search_name: The name for the hyperparameter search. - search_strategy: The search strategy, either "sample" or "grid". - seed: Optional random seed passed to the Optuna sampler. - n_samples: The number of samples to draw for the search. - model_config_write_path: The path to write the model configurations to. - training_data_path: The path to the training data. - validation_data_path: The path to the validation data. - read_format: The file format of the input data. - input_columns: A list of lists of columns to be used for training. - column_types: A list of dictionaries mapping columns to their types. - categorical_columns: A list of lists of categorical columns. - real_columns: A list of lists of real-valued columns. - target_columns: The list of target columns for model training. - target_column_types: A dictionary mapping target columns to their types. - id_maps: A dictionary mapping categorical values to their indexed representation. - context_length: A list of possible sequence lengths. - n_classes: The number of classes for each categorical column. - inference_batch_size: The batch size for inference. - export_onnx: If True, exports the model in ONNX format. - export_pt: If True, exports the model using torch.save. - export_with_dropout: If True, exports the model with dropout enabled. - model_hyperparameter_sampling: The sampling configuration for model hyperparameters. - training_hyperparameter_sampling: The sampling configuration for training hyperparameters. - evaluation_inference_config: The inference config to infer on for hyperparameter search optimization - evaluation_script: The script that outputs the evaluation metrics, typically from the inference output - evaluation_metrics: The evaluation metrics to optimize during hyperparameter search - evaluation_metric_directions: The direction to optimize evaluation_metrics in. Only 'minimize' and 'maximize' are allowed - """ + """Top-level Optuna search config.""" project_root: str metadata_config_path: str @@ -843,19 +702,7 @@ def validate_search_strategy(cls, v: str) -> str: return v def sample_trial(self, trial: Any, run_index: int) -> TrainModel: - """Generates a complete training configuration using an Optuna trial. - - This method orchestrates the sampling of both model and training specifications, - as well as data sequence parameters, combining them into a final configuration - ready for model execution. - - Args: - trial (Any): The Optuna trial object used for suggesting hyperparameters. - run_index (int): The current run/trial index, used to assign a unique name to the model. - - Returns: - TrainModel: A fully populated configuration instance for the current trial. - """ + """Sample a concrete TrainModel for one trial/run index.""" model_spec = self.model_hyperparameter_sampling.sample_trial(trial) input_columns_index = trial.suggest_categorical( diff --git a/src/sequifier/config/infer_config.py b/src/sequifier/config/infer_config.py index 84fa6e8e..14b5f35b 100644 --- a/src/sequifier/config/infer_config.py +++ b/src/sequifier/config/infer_config.py @@ -29,17 +29,7 @@ def load_inferer_config( config_path: str, args_config: dict, skip_metadata: bool ) -> "InfererModel": - """ - Load inferer configuration from a YAML file and update it with args_config. - - Args: - config_path: Path to the YAML configuration file. - args_config: Dictionary containing additional configuration arguments. - skip_metadata: Flag indicating whether to process the configuration or not. - - Returns: - InfererModel instance with loaded configuration. - """ + """Load inference YAML plus CLI overrides and optional metadata fields.""" with open(config_path, "r") as f: config_values = yaml.safe_load(f) config_values.update(args_config) @@ -123,34 +113,7 @@ def load_inferer_config( class InfererModel(BaseModel): - """Pydantic model for inference configuration. - - Attributes: - project_root: The path to the sequifier project directory. - metadata_config_path: The path to the data-driven configuration file. - model_path: The path to the trained model file(s). - model_type: The type of model, either 'embedding' or 'generative'. - data_path: The path to the data to be used for inference. - training_config_path: The path to the training configuration file. - read_format: The file format of the input data (e.g., 'csv', 'parquet'). - write_format: The file format for the inference output. - input_columns: The list of input columns used for inference. - categorical_columns: A list of columns that are categorical. - real_columns: A list of columns that are real-valued. - target_columns: The list of target columns for inference. - column_types: A dictionary mapping each column to its numeric type ('int64' or 'float64'). - target_column_types: A dictionary mapping target columns to their types ('categorical' or 'real'). - output_probabilities: If True, outputs the probability distributions for categorical target columns. - map_to_id: If True, maps categorical output values back to their original IDs. - seed: The random seed for reproducibility. - device: The device to run inference on (e.g., 'cuda', 'cpu', 'mps'). - context_length: The sequence length of the model's input. - inference_batch_size: The batch size for inference. - sample_from_distribution_columns: A list of columns from which to sample from the distribution. - infer_with_dropout: If True, applies dropout during inference. - autoregression: If True, performs autoregressive inference. - autoregression_total_steps: The number of total steps for autoregressive inference. - """ + """Top-level inference config.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index 5745ead0..bcff237b 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -21,16 +21,7 @@ def load_preprocessor_config( config_path: str, args_config: dict ) -> "PreprocessorModel": - """ - Load preprocessor configuration from a YAML file and update it with args_config. - - Args: - config_path: Path to the YAML configuration file. - args_config: Dictionary containing additional configuration arguments. - - Returns: - PreprocessorModel instance with loaded configuration. - """ + """Load preprocessing YAML plus CLI overrides.""" with open(config_path, "r") as f: config_values = yaml.safe_load(f) @@ -42,31 +33,7 @@ def load_preprocessor_config( class PreprocessorModel(BaseModel): - """ - Pydantic model for preprocessor configuration. - - Attributes: - project_root: The path to the sequifier project directory. - data_path: The path to the input data file. - read_format: The file type of the input data. Can be 'csv' or 'parquet'. - write_format: The file type for the preprocessed output data. - merge_output: If True, combines all preprocessed data into a single file. - selected_columns: A list of columns to be included in the preprocessing. If None, all columns are used. - split_ratios: A list of floats that define the relative sizes of data splits (e.g., for train, validation, test). - The sum of proportions must be 1.0. - stored_context_width: The physical serialized window width. - max_target_offset: The number of future items retained after the input window. - stride_by_split: A list of step sizes for creating subsequences within each data split. - max_rows: The maximum number of input rows to process. If None, all rows are processed. - seed: A random seed for reproducibility. - n_cores: The number of CPU cores to use for parallel processing. If None, it uses the available CPU cores. - batches_per_file: The number of batches to process per file. - process_by_file: A flag to indicate if processing should be done file by file. - continue_preprocessing: Continue preprocessing job that was interrupted while writing to temp folder. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - mask_column: Optional input column used to mask all model input columns. - Requires metadata_config_path when set. - """ + """Top-level preprocessing config.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 54efab88..f855a972 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -59,17 +59,7 @@ def _validate_class_share_log_columns(config_values: dict[str, Any]) -> None: def load_train_config( config_path: str, args_config: dict[str, Any], skip_metadata: bool ) -> "TrainModel": - """ - Load training configuration from a YAML file and update it with args_config. - - Args: - config_path: Path to the YAML configuration file. - args_config: Dictionary containing additional configuration arguments. - skip_metadata: Flag indicating whether to process the configuration or not. - - Returns: - TrainModel instance with loaded configuration. - """ + """Load train YAML plus CLI overrides and optional metadata-derived fields.""" with open(config_path, "r") as f: config_values = yaml.safe_load(f) @@ -210,42 +200,7 @@ class BERTSpecModel(BaseModel): class TrainingSpecModel(BaseModel): - """Pydantic model for training specifications. - - Attributes: - device: The torch.device to train the model on (e.g., 'cuda', 'cpu', 'mps'). - device_max_concat_length: Maximum sequence length for concatenation on device. - epochs: The total number of epochs to train for. - log_interval: The interval in batches for logging. - class_share_log_columns: A list of column names for which to log the class share of predictions. - early_stopping_epochs: Number of epochs to wait for validation loss improvement before stopping. - save_interval_epochs: The interval in epochs for checkpointing the model. - save_latest_interval_minutes: the time interval in which a checkpoint is written to the "latest" checkpoint path - save_batch_interval_minutes: the time interval in which a checkpoint is written to a unique checkpoint path - save_batch_interval_minutes_val_loss: calculate val loss at the moment of batch interval saving - calculate_validation_loss_on_initialization: calculate val loss on weight initialization - batch_size: The training batch size. - learning_rate: The learning rate. - criterion: A dictionary mapping each target column to a loss function. - class_weights: A dictionary mapping categorical target columns to a list of class weights. - accumulation_steps: The number of gradient accumulation steps. - dropout: The dropout value for the transformer model. - loss_weights: A dictionary mapping columns to specific loss weights. - optimizer: The optimizer configuration. - scheduler: The learning rate scheduler configuration. - scheduler_step_on: The time of the .step() call on the scheduler, either 'epoch' or 'batch' - continue_training: If True, continue training from the latest checkpoint. - distributed: If True, enables distributed training. - load_full_data_to_ram: If True, loads the entire dataset into RAM. - world_size: The number of processes for distributed training. - num_workers: The number of worker threads for data loading. - backend: The distributed training backend (e.g., 'nccl'). - layer_type_dtypes: Dictionary mapping layer types (linear, embedding, norm) to dtypes (bfloat16, float8_e4m3fn). - layer_autocast: Whether to use autocast - sampling_strategy: how to equalize data between GPUs - torch_compile: compile entire model ('outer') or transformer layers ('inner') with torch.compile, alternatively 'none' - float32_matmul_precision: precision level of float32 computations. One of 'highest', 'high' and 'medium' - """ + """Training loop, optimization, precision, and distribution settings.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") @@ -437,16 +392,7 @@ def validate_data_parallelism(cls, v): class ModelSpecModel(BaseModel): - """Pydantic model for model specifications. - - Attributes: - initial_embedding_dim: The size of the input embedding. Must be equal to dim_model if joint_embedding_dim is None. - feature_embedding_dims: The embedding dimensions for each input column. Must sum to initial_embedding_dim. - joint_embedding_dim: Joint embedding layer after initial embedding. Must be equal to dim_model if specified. - n_head: The number of heads in the multi-head attention models. - dim_feedforward: The dimension of the feedforward network model. - num_layers: The number of layers in the transformer model. - """ + """Transformer architecture settings.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") @@ -569,35 +515,7 @@ def validate_n_kv_heads(cls, v, info): class TrainModel(BaseModel): - """Pydantic model for training configuration. - - Attributes: - project_root: The path to the sequifier project directory. - metadata_config_path: The path to the data-driven configuration file. - model_name: The name of the model being trained. - training_data_path: The path to the training data. - validation_data_path: The path to the validation data. - read_format: The file format of the input data (e.g., 'csv', 'parquet'). - input_columns: The list of input columns to be used for training. - column_types: A dictionary mapping each column to its numeric type ('int64' or 'float64'). - categorical_columns: A list of columns that are categorical. - real_columns: A list of columns that are real-valued. - target_columns: The list of target columns for model training. - target_column_types: A dictionary mapping target columns to their types ('categorical' or 'real'). - id_maps: For each categorical column, a map from distinct values to their indexed representation. - context_length: The sequence length of the model's input. - n_classes: The number of classes for each categorical column. - inference_batch_size: The batch size to be used for inference after model export. - seed: The random seed for numpy and PyTorch. - model_type: Causal or BERT model type - export_generative_model: If True, exports the generative model. - export_embedding_model: If True, exports the embedding model. - export_onnx: If True, exports the model in ONNX format. - export_pt: If True, exports the model using torch.save. - export_with_dropout: If True, exports the model with dropout enabled. - model_spec: The specification of the transformer model architecture. - training_spec: The specification of the training run configuration. - """ + """Top-level training config.""" model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") diff --git a/src/sequifier/distributed/env.py b/src/sequifier/distributed/env.py index 51a853f2..89e24ecd 100644 --- a/src/sequifier/distributed/env.py +++ b/src/sequifier/distributed/env.py @@ -10,13 +10,7 @@ def setup_distributed_env( rank: int, local_rank: int, world_size: int, backend: str = "nccl" ): - """Sets up the distributed training environment. - - Args: - rank: The rank of the current process. - world_size: The total number of processes. - backend: The distributed backend to use. - """ + """Initialize torch.distributed with env defaults.""" os.environ["MASTER_ADDR"] = os.getenv("MASTER_ADDR", "localhost") os.environ["MASTER_PORT"] = os.getenv("MASTER_PORT", "12355") diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index a7c4f1e4..4769da24 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -195,36 +195,7 @@ def construct_index_maps( target_columns_index_map: list[str], map_to_id: Optional[bool], ) -> dict[str, dict[int, Union[str, int]]]: - """Constructs reverse index maps (int index to original ID). - - This function creates reverse mappings from the integer indices back to - the original string or integer identifiers. It only performs this - operation if `map_to_id` is True and `id_maps` is provided. - - Special reserved IDs are always decoded as their sentinel labels: - 0 maps to "[unknown]", 1 maps to "[other]", and 2 maps to "[mask]". - - Args: - id_maps: A nested dictionary mapping column names to their - respective ID-to-index maps (e.g., - `{'col_name': {'original_id': 1, ...}}`). Expected to be - provided if `map_to_id` is True. - target_columns_index_map: A list of column names for which to - construct the reverse maps. - map_to_id: A boolean flag. If True, the reverse maps are - constructed. If False or None, an empty dictionary is returned. - - Returns: - A dictionary where keys are column names from - `target_columns_index_map` and values are the reverse maps - (index-to-original-ID). Returns an empty dict if `map_to_id` - is not True. - - Raises: - AssertionError: If `map_to_id` is True but `id_maps` is None. - AssertionError: If the values of a map are not consistently - string or integer (excluding the added '0' key). - """ + """Build index-to-ID maps, including reserved token labels.""" index_map = {} if map_to_id is not None and map_to_id: if id_maps is None: @@ -245,21 +216,7 @@ def construct_index_maps( def read_data( path: str, read_format: str, columns: Optional[list[str]] = None ) -> pl.DataFrame: - """Reads data from a CSV or Parquet file into a Polars DataFrame. - - Args: - path: The file path to read from. - read_format: The format of the file. Supported formats are - "csv" and "parquet". - columns: An optional list of column names to read. This argument - is only used when `read_format` is "parquet". - - Returns: - A Polars DataFrame containing the data from the file. - - Raises: - ValueError: If `read_format` is not "csv" or "parquet". - """ + """Read CSV/Parquet into Polars.""" if read_format == "csv": return pl.read_csv(path, separator=",") if read_format == "parquet": @@ -269,32 +226,7 @@ def read_data( @beartype def write_data(data: pl.DataFrame, path: str, write_format: str, **kwargs) -> None: - """Writes a Polars (or Pandas) DataFrame to a CSV or Parquet file. - - This function detects the type of the input DataFrame. - - For Polars DataFrames, it uses `.write_csv()` or `.write_parquet()`. - - For other DataFrame types (presumably Pandas), it uses `.to_csv()` - or `.to_parquet()`. - - Note: The type hint specifies `pl.DataFrame`, but the implementation - includes a fallback path that suggests compatibility with Pandas - DataFrames. - - Args: - data: The Polars (or Pandas) DataFrame to write. - path: The destination file path. - write_format: The format to write. Supported formats are - "csv" and "parquet". - **kwargs: Additional keyword arguments passed to the underlying - write function (e.g., `write_csv` for Polars, `to_csv` for - Pandas). - - Returns: - None. - - Raises: - ValueError: If `write_format` is not "csv" or "parquet". - """ + """Write Polars/Pandas data as CSV or Parquet.""" if isinstance(data, pl.DataFrame): if write_format == "csv": data.write_csv(path, **kwargs) @@ -318,27 +250,7 @@ def write_data(data: pl.DataFrame, path: str, write_format: str, **kwargs) -> No def subset_to_input_columns( data: Union[pl.DataFrame, pl.LazyFrame], input_columns: list[str] ) -> Union[pl.DataFrame, pl.LazyFrame]: - """Filters a DataFrame to rows where 'inputCol' is in a list of column_names. - - This function supports both Polars (DataFrame, LazyFrame) and Pandas - DataFrames, dispatching to the appropriate filtering method. - - - For Polars objects, it uses `data.filter(pl.col("inputCol").is_in(...))`. - - For other objects (presumably Pandas), it builds a numpy boolean - mask and filters using `data.loc[...]`. - - Note: The type hint only specifies Polars objects, but the - implementation includes a fallback path for Pandas-like objects. - - Args: - data: The Polars (DataFrame, LazyFrame) or Pandas DataFrame to - filter. It must contain a column named "inputCol". - input_columns: A list of values. Rows will be kept if their - value in "inputCol" is present in this list. - - Returns: - A filtered DataFrame or LazyFrame of the same type as the input. - """ + """Keep long-format rows whose inputCol is selected.""" if isinstance(data, (pl.DataFrame, pl.LazyFrame)): return data.filter(pl.col("inputCol").is_in(input_columns)) @@ -356,40 +268,7 @@ def numpy_to_pytorch( all_columns: list[str], resolved_view: ResolvedWindowView, ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: - """Converts a long-format Polars DataFrame to a dict of sequence tensors. - - This function assumes the input DataFrame `data` is in a long format - where each row represents a sequence for a specific feature. It expects - a column named "inputCol" that contains the feature name (e.g., - 'price', 'volume') and other columns representing time steps (e.g., - "0", "1", ..., "L"). - - It generates two tensors for each column in `all_columns`: - 1. An "input" tensor (from time steps L down to 1). - 2. A "target" tensor (from time steps L-1 down to 0). - - Example: - For `context_length = 3` and `all_columns = ['price']`, it will create: - - 'price': Tensor from columns ["3", "2", "1"] - - 'price_target': Tensor from columns ["2", "1", "0"] - - Args: - data: The long-format Polars DataFrame. Must contain "inputCol" - and columns named as strings of integers for time steps. - column_types: A dictionary mapping feature names (from "inputCol") - to their desired `torch.dtype`. - all_columns: A list of all feature names (from "inputCol") to - be processed and converted into tensors. - context_length: The total sequence length (L). This determines the - column names for time steps (e.g., "0" to "L"). - - Returns: - A tuple of: - - a dictionary mapping feature names to their corresponding PyTorch - tensors. Target tensors are stored with a `_target` suffix - (e.g., `{'price': , 'price_target': }`). - - a metadata dictionary containing any explicit masks. - """ + """Convert long-format Polars windows to tensors plus masks.""" input_seq_cols = columns_from_slice( resolved_view.input_slice, resolved_view.storage.stored_context_width ) @@ -397,11 +276,9 @@ def numpy_to_pytorch( resolved_view.target_slice, resolved_view.storage.stored_context_width ) - # We will create a unified dictionary unified_tensors = {} for col_name in all_columns: - # Create the input sequence tensor (e.g., from t=1 to t=L) input_tensor = torch.tensor( data.filter(pl.col("inputCol") == col_name) .select(input_seq_cols) @@ -410,8 +287,6 @@ def numpy_to_pytorch( ) unified_tensors[col_name] = input_tensor - # Create the target sequence tensor (e.g., from t=0 to t=L-1) - # We'll store it with a "_target" suffix to distinguish it target_tensor = torch.tensor( data.filter(pl.col("inputCol") == col_name) .select(target_seq_cols) @@ -432,7 +307,7 @@ def build_valid_mask( full_length: int, view_slice: slice, ) -> Tensor: - """Builds a boolean validity mask from explicit left-padding metadata.""" + """Boolean mask from left-padding metadata.""" full_positions = torch.arange( full_length, device=left_pad_lengths.device, dtype=left_pad_lengths.dtype @@ -454,7 +329,7 @@ def columns_from_slice(view_slice: slice, stored_context_width: int) -> list[str @beartype def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Tensor: - """Extracts one leftPadLength value per long-format subsequence.""" + """One leftPadLength per long-format subsequence.""" if "leftPadLength" not in data.columns: raise ValueError( "Dataset layout v1 does not contain explicit padding metadata. " @@ -474,24 +349,7 @@ def get_left_pad_lengths_from_preprocessed_data(data: pl.DataFrame) -> Tensor: @beartype def normalize_path(path: str, project_root: str) -> str: - """Normalizes a path to be relative to a project path, then joins them. - - This function ensures that a given `path` is correctly expressed as - an absolute path rooted at `project_root`. It does this by first - removing the `project_root` prefix from `path` (if it exists) - and then joining the result back to `project_root`. - - This is useful for handling paths that might be provided as either - relative (e.g., "data/file.txt") or absolute - (e.g., "/abs/path/to/project/data/file.txt"). - - Args: - path: The path to normalize. - project_root: The absolute path to the project's root directory. - - Returns: - A normalized, absolute path. - """ + """Return path rooted under project_root.""" project_root_normalized = (project_root + os.sep).replace(os.sep + os.sep, os.sep) path2 = os.path.join(project_root, path.replace(project_root_normalized, "")) return path2 @@ -499,18 +357,9 @@ def normalize_path(path: str, project_root: str) -> str: @beartype def configure_logger(project_root: str, model_name: str, rank: Optional[int] = 0): - """Configures Loguru to replicate the legacy LogFile behavior. - - Legacy Behavior Mapping: - 1. Console: Only Rank 0 prints high-level info. - 2. File 2 (Detailed): Captures ALL logs (equivalent to old level 2). - 3. File 3 (Summary): Captures only HIGH importance logs (equivalent to old level 3). - 4. Formatting: Files contain raw messages only (no timestamp prefix). - """ - # Clear default handler + """Configure console plus rank-scoped debug/info log files.""" logger.remove() - # 1. Console Handler (Rank 0 only, INFO/Level 3 and up) if rank == 0 or rank is None: logger.add( sys.stderr, @@ -518,15 +367,11 @@ def configure_logger(project_root: str, model_name: str, rank: Optional[int] = 0 level="INFO", ) - # Determine paths log_dir = os.path.join(project_root, "logs") os.makedirs(log_dir, exist_ok=True) rank_str = f"rank{rank}" if rank is not None else "rank0" - # 2. File 2 (Detailed/Debug) - Equivalent to old 'level=2' - # Captures everything from DEBUG up. - # Format is just {message} to match f.write(f"{string}\n") file_2_path = os.path.join(log_dir, f"sequifier-{model_name}-{rank_str}-2.txt") logger.add( file_2_path, @@ -536,7 +381,6 @@ def configure_logger(project_root: str, model_name: str, rank: Optional[int] = 0 mode="a", ) - # 3. File 3 (Summary/Info) file_3_path = os.path.join(log_dir, f"sequifier-{model_name}-{rank_str}-3.txt") logger.add( file_3_path, @@ -551,28 +395,22 @@ def configure_logger(project_root: str, model_name: str, rank: Optional[int] = 0 @beartype def configure_determinism(seed: int, strict: bool = False) -> None: """Enforces deterministic execution for reproducibility.""" - # 1. Set standard seeds random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) - # 2. Ensure deterministic behavior in CUDA/CuDNN torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True if strict: - # 3. Enforce deterministic algorithms in PyTorch (crucial for SDPA/FlashAttention) - # This forces PyTorch to error out if a non-deterministic operation is used, - # or select the deterministic version of a kernel (e.g. for Flash Attn). torch.use_deterministic_algorithms(True, warn_only=True) - # 4. Set CuBLAS workspace (Required for deterministic algorithms with CUDA >= 10.2) os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" @beartype def get_torch_dtype(dtype_str: str) -> torch.dtype: - """Converts a string to a torch dtype, supporting bfloat16 and fp8.""" + """String-to-torch dtype mapping.""" dtype_map = { "float32": torch.float32, "float16": torch.float16, @@ -597,22 +435,7 @@ def get_torch_dtype(dtype_str: str) -> torch.dtype: def get_best_model_path( project_root: str, run_name: str, model_type: str ) -> tuple[str, int]: - """ - Searches for the exported 'best' model file for a given run and returns its path and epoch. - - Args: - project_root: The root directory of the project. - run_name: The unique identifier for the hyperparameter search run. - model_type: The extension of the exported model (e.g., 'onnx' or 'pt'). - - Returns: - A tuple containing: - - The file path to the best model (str). - - The actual epoch at which this model was saved (int). - - Raises: - FileNotFoundError: If no matching model files are found. - """ + """Return the highest-epoch exported best model path.""" search_pattern = os.path.join( project_root, "models", f"sequifier-{run_name}-best-*.{model_type}" ) @@ -624,7 +447,6 @@ def get_best_model_path( f"Could not find an exported 'best' model matching: {search_pattern}" ) - # Find the file with the highest epoch number in its name best_model_path = max( matching_models, key=lambda p: int(os.path.splitext(os.path.basename(p))[0].split("-")[-1]), @@ -636,11 +458,7 @@ def get_best_model_path( def get_last_training_batch_timedelta( model_name: str, rank: int, project_root: str = "." ) -> float: - """ - Reads the level 2 log file, finds the last two mid-epoch training logs, - and returns the timedelta between them in seconds. - """ - # Construct the path to the level 2 log file based on configure_logger() + """Return seconds between the last two mid-epoch train log entries.""" log_path = os.path.join( project_root, "logs", f"sequifier-{model_name}-rank{rank}-2.txt" ) @@ -648,8 +466,6 @@ def get_last_training_batch_timedelta( if not os.path.exists(log_path): raise FileNotFoundError(f"Log file not found: {log_path}") - # Regex to capture the timestamp of mid-epoch training batch logs - # Matches lines like: "2026-05-26 15:15:39 | INFO | [INFO] Epoch 1 | Batch 10/... | Loss: ..." train_log_pattern = re.compile( r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\s+\|.*?\[INFO\] Epoch.*?Batch" ) @@ -669,7 +485,6 @@ def get_last_training_batch_timedelta( "Not enough mid-epoch training logs found in the file to calculate a timedelta." ) - # Get the last two chronologically recorded batch timestamps t1, t2 = timestamps[-2], timestamps[-1] return (t2 - t1).total_seconds() @@ -682,10 +497,7 @@ def apply_bert_masking( config: Any, # TrainConfig eval_seed: Optional[int] = None, ) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: - """ - Applies BERT-style span corruption to the input data using custom distributions. - Explicitly passes the boolean prediction mask via the metadata dictionary. - """ + """Apply BERT span corruption and attach prediction masks.""" data_batch = {k: tensor.clone() for k, tensor in data_batch.items()} targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} metadata_batch = ( @@ -711,14 +523,11 @@ def apply_bert_masking( gpu_rng_state = torch.cuda.get_rng_state(device) torch.manual_seed(eval_seed) - # Calculate exact number of tokens to mask per sequence based on valid length masking_prob = config.training_spec.bert_spec.masking_probability budgets = (valid_mask.sum(dim=1) * masking_prob).long() bert_mask = torch.zeros((batch_size, seq_len), dtype=torch.bool, device=device) - # 2. Pre-sample lengths and start positions to avoid massive GPU-CPU sync overhead - # We sample more spans than needed to account for overlaps max_spans = int(seq_len * masking_prob) + 10 sampled_lengths = config.training_spec.bert_spec.span_masking.sample( @@ -726,7 +535,6 @@ def apply_bert_masking( ) sampled_starts_pct = torch.rand((batch_size, max_spans), device=device) - # 3. Span Masking Loop for i in range(batch_size): budget = budgets[i].item() valid_positions = valid_mask[i].nonzero(as_tuple=True)[0] @@ -742,7 +550,6 @@ def apply_bert_masking( current_masked = 0 span_idx = 0 - # Apply spans until budget is hit while current_masked < budget and span_idx < max_spans: span_len = sampled_lengths_list[span_idx] start_idx = sampled_starts[span_idx] @@ -770,7 +577,6 @@ def apply_bert_masking( idx = torch.randperm(len(unmasked_valid), device=device)[:remaining] bert_mask[i, unmasked_valid[idx]] = True - # 4. Create the replacement split masks (e.g., 80% Mask, 10% Random, 10% Identical) replacement_probs = torch.rand((batch_size, seq_len), device=device) p_masked = config.training_spec.bert_spec.replacement_distribution.masked @@ -783,7 +589,6 @@ def apply_bert_masking( & (replacement_probs < (p_masked + p_random)) ) - # 5. Apply corruption to data_batch for col, tensor in data_batch.items(): if col in config.categorical_columns: random_tokens = torch.randint( @@ -806,7 +611,6 @@ def apply_bert_masking( tensor[mask_token_mask] = mask_val tensor[random_token_mask] = random_noise[random_token_mask] - # 6. Append explicit prediction and attention masks to metadata. metadata_batch["bert_mask"] = bert_mask metadata_batch["attention_valid_mask"] = valid_mask.detach() diff --git a/src/sequifier/hyperparameter_search.py b/src/sequifier/hyperparameter_search.py index a481d938..b21eea08 100644 --- a/src/sequifier/hyperparameter_search.py +++ b/src/sequifier/hyperparameter_search.py @@ -37,35 +37,17 @@ def create_sampler(config: Any) -> optuna.samplers.BaseSampler: def set_pdeathsig(): - """Binds child process lifecycle to the parent orchestrator via Linux prctl.""" + """Ask Linux to SIGTERM children when this parent dies.""" if sys.platform.startswith("linux"): libc = ctypes.CDLL("libc.so.6") libc.prctl(1, signal.SIGTERM) # PR_SET_PDEATHSIG = 1 def objective(trial: optuna.Trial, config) -> Union[float, tuple[float, ...]]: - """The central objective engine bridging Optuna to pure CLI execution. - - This function handles generating the YAML configuration for the specific - trial, dynamically allocating a port for distributed training, launching the - training subprocess, asynchronously polling the validation metrics, and reporting - them back to Optuna for potential pruning. - - Args: - trial (optuna.Trial): The Optuna trial object managing the current hyperparameter combination. - config (HyperparameterSearchConfig): The parsed hyperparameter search configuration. - - Returns: - float: The best validation loss achieved during the trial. - - Raises: - optuna.TrialPruned: If the trial is pruned by the Optuna orchestrator. - RuntimeError: If the training subprocess fails or is externally preempted. - """ + """Run one Optuna trial through the CLI trainer and metrics JSONL.""" run_config = config.sample_trial(trial, trial.number) run_name = run_config.model_name - # 1. YAML Generation config_path = os.path.join( config.project_root, config.model_config_write_path, f"{run_name}.yaml" ) @@ -102,7 +84,7 @@ def objective(trial: optuna.Trial, config) -> Union[float, tuple[float, ...]]: best_val_loss = float("inf") def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, float]: - """Helper closure to read written metrics and evaluate pruning.""" + """Read complete metric lines; report/prune single-objective trials.""" if os.path.exists(metrics_path): with open(metrics_path, "r") as f: f.seek(last_read_pos) @@ -116,7 +98,6 @@ def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, floa global_step = data.get("global_step") if global_step is not None and val_loss is not None: - # 5. Cooperative Pruning Evaluation is_multi_objective = ( config.evaluation_metrics is not None and len(config.evaluation_metrics) > 1 @@ -136,11 +117,11 @@ def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, floa ) timeout_val = (timedelta * 2) + 30 except (ValueError, FileNotFoundError): - timeout_val = 60.0 # Safe default fallback + timeout_val = 60.0 process.wait(timeout=timeout_val) except subprocess.TimeoutExpired: - process.kill() # Escalation + process.kill() raise optuna.TrialPruned() last_read_pos = f.tell() @@ -149,7 +130,6 @@ def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, floa break return last_read_pos, best_val_loss - # 4. Asynchronous Polling & Caching Mitigation while process.poll() is None: last_read_pos, best_val_loss = consume_metrics(last_read_pos, best_val_loss) time.sleep(2) @@ -241,19 +221,7 @@ def consume_metrics(last_read_pos: int, best_val_loss: float) -> tuple[int, floa @beartype def hyperparameter_search(config_path: str, skip_metadata: bool) -> None: - """Main function for initiating an Optuna-based hyperparameter search process. - - This function loads the configuration, initializes the Optuna study with a - minimization direction, and kicks off the optimization loop. Once the configured - number of trials is complete, it prints out the best trial's value and hyperparameters. - - Args: - config_path (str): Path to the hyperparameter search YAML configuration file. - skip_metadata (bool): Flag indicating whether to skip loading/processing data metadata. - - Raises: - ValueError: If `n_trials` is not defined in the configuration. - """ + """Load config, create Optuna study, and optimize trials.""" config = load_hyperparameter_search_config(config_path, skip_metadata) os.makedirs(os.path.join(config.project_root, "state", "optuna"), exist_ok=True) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index b3ed690f..0baed6ef 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -34,21 +34,7 @@ @beartype def infer(args: Any, args_config: dict[str, Any]) -> None: - """Runs the main inference pipeline. - - This function orchestrates the inference process. It loads the main - inference configuration, retrieves necessary metadata like ID maps and - column statistics from a `metadata_config` file (if required for mapping or - normalization), and then delegates the core work to the `infer_worker` - function. - - Args: - args: Command-line arguments, typically from `argparse`. Expected - to have attributes like `config_path` and `skip_metadata`. - args_config: A dictionary of configuration overrides, often - passed from the command line, that will be merged into the - loaded configuration file. - """ + """Load inference config and dispatch the worker.""" logger.info("--- Starting Inference ---") config_path = ( args.config_path if args.config_path is not None else "configs/infer.yaml" @@ -86,33 +72,13 @@ def infer(args: Any, args_config: dict[str, Any]) -> None: @beartype def load_pt_dataset(data_path: str, start_pct: float, end_pct: float) -> Iterator[Any]: - """Lazily loads and yields data from .pt files in a directory. - - This function scans a directory for `.pt` files, sorts them, and then - yields the contents of a specific slice of those files defined by a - start and end percentage. This allows for processing large datasets - in chunks without loading everything into memory. - - Args: - data_path: The path to the folder containing the `.pt` files. - start_pct: The starting percentage (0.0 to 100.0) of the file list - to begin loading from. - end_pct: The ending percentage (0.0 to 100.0) of the file list - to stop loading at. - - Yields: - Iterator: An iterator where each item is the data loaded from a - single `.pt` file (e.g., using `torch.load`). - """ - # Get all .pt files in the directory (not nested) + """Yield a percentage slice of sorted top-level PT files.""" pt_files = sorted(Path(data_path).glob("*.pt")) - # Calculate slice indices total = len(pt_files) start_idx = int(total * start_pct / 100) end_idx = int(total * end_pct / 100) - # Lazily load and yield data from files in range for pt_file in pt_files[start_idx:end_idx]: yield torch.load(pt_file, weights_only=False) @@ -121,24 +87,7 @@ def load_pt_dataset(data_path: str, start_pct: float, end_pct: float) -> Iterato def load_parquet_folder_dataset( data_path: str, start_pct: float, end_pct: float ) -> Iterator[Any]: - """Lazily loads and yields data from long-format .parquet chunk files in a directory. - - This function scans a directory for `.parquet` files, sorts them, and then - yields the contents of a specific slice of those files defined by a - start and end percentage. This allows for processing large datasets - in chunks without loading everything into memory. - - Args: - data_path: The path to the folder containing the `.parquet` files. - start_pct: The starting percentage (0.0 to 100.0) of the file list - to begin loading from. - end_pct: The ending percentage (0.0 to 100.0) of the file list - to stop loading at. - - Yields: - Iterator: An iterator where each item is a Polars DataFrame loaded from a - single `.parquet` file. - """ + """Yield a percentage slice of sorted top-level Parquet files.""" parquet_files = sorted(Path(data_path).glob("*.parquet")) total = len(parquet_files) @@ -157,35 +106,12 @@ def infer_worker( selected_columns_statistics: dict[str, dict[str, float]], percentage_limits: Optional[tuple[float, float]], ): - """Core worker function that performs inference. - - This function handles the main workflow: - 1. Loads the dataset based on `config.read_format` (parquet, csv, or pt). - 2. Iterates over one or more model paths specified in the config. - 3. For each model, initializes an `Inferer` object with all necessary - configurations, mappings, and statistics. - 4. Calls the appropriate inference function (`infer_generative` or - `infer_embedding`) based on the `config.model_type`. - 5. Manages the data iterators and passes data chunks to the - inference functions. - - Args: - config: The fully resolved `InfererModel` configuration object. - args_config: A dictionary of command-line arguments, passed to the - `Inferer` for potential model loading overrides. - id_maps: A nested dictionary mapping categorical column names to - their value-to-index maps. `None` if `map_to_id` is False. - selected_columns_statistics: A nested dictionary containing 'mean' - and 'std' for real-valued columns used for normalization. - percentage_limits: A tuple (start_pct, end_pct) used only when - `config.read_format == "pt"` to slice the dataset. - """ + """Load data, instantiate models, and run the configured inference mode.""" logger.info(f"[INFO] Reading data from '{config.data_path}'...") is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) ) - # Step 1: Use Polars for data ingestion dataset = None if not is_folder_input: # Standalone Single-File Path Execution @@ -275,18 +201,7 @@ def calculate_item_positions( prediction_length: int, training_objective: str, ) -> np.ndarray: - """ - Calculates absolute item positions for inference outputs based on the training objective. - - Args: - start_positions: 1D array of base start positions for each sequence in the batch. - context_length: The length of the input sequence window. - prediction_length: The total number of predicted tokens per sequence. - training_objective: Either "causal" or "bert". - - Returns: - A 1D array of absolute item positions mapped to every flattened prediction row. - """ + """Return flattened absolute item positions for inference outputs.""" if training_objective == "bert": # Anchor positions to the start of the input sequence and tile forwards base_positions = start_positions @@ -395,31 +310,11 @@ def infer_embedding( dataset: Union[list[Any], Iterator[Any]], column_types: dict[str, torch.dtype], ) -> None: - """Performs inference with an embedding model and saves the results. - - This function iterates through the provided dataset (which can be a list - of DataFrames or an iterator of tensors). For each data chunk, it - calls the appropriate function (`get_embeddings` or `get_embeddings_pt`) - to generate embeddings. It then formats these embeddings into a - Polars DataFrame, associating them with their `sequenceId`, `subsequenceId`, - and absolute `itemPosition`, and writes the resulting DataFrame to the - configured output path. - - Args: - config: The `InfererModel` configuration object. - inferer: The initialized `Inferer` instance. - model_id: A string identifier for the model, used for naming - output files. - dataset: A list containing a Polars DataFrame (for parquet/csv) or - an iterator of loaded PyTorch data (for .pt files). - column_types: A dictionary mapping column names to their - `torch.dtype`. - """ + """Write embeddings for each dataset chunk.""" for data_id, data in enumerate(dataset): prediction_length = inferer.prediction_length valid_prediction_mask = None - # Step 1: Get embeddings and base position/ID data is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) ) @@ -589,31 +484,8 @@ def infer_generative( dataset: Union[list[Any], Iterator[Any]], column_types: dict[str, torch.dtype], ): - """Executes the generative inference pipeline and exports results to disk. - - This function processes the input dataset in chunks to accommodate large data - volumes. It handles various input formats (standalone CSV/Parquet, folder-based - Parquet, or PyTorch tensors) and routes the data to the appropriate inference - logic (standard sequence prediction or step-by-step autoregression). After - obtaining raw model outputs, it calculates aligned sequence IDs and absolute - item positions, applies necessary post-processing (such as reverse-mapping - categorical IDs and denormalizing real values), and writes the final - probabilities and predictions to the configured output directory. - - Args: - config: The inference configuration object dictating I/O paths, - autoregression settings, and output formats. - inferer: The initialized `Inferer` instance responsible for executing - the underlying model logic. - model_id: A string identifier for the current model, used to construct - the names of the generated output files and directories. - dataset: A list or iterator yielding data chunks, typically containing - either Polars DataFrames or PyTorch tensor dictionaries. - column_types: A dictionary mapping input column names to their expected - `torch.dtype`. - """ + """Write generative predictions/probabilities for each dataset chunk.""" for data_id, data in enumerate(dataset): - # Step 1: Adapt Data Subsetting (now works on Polars DF) is_folder_input = os.path.isdir( normalize_path(config.data_path, config.project_root) ) @@ -924,24 +796,7 @@ def get_embeddings_pt( data: dict[str, torch.Tensor], metadata: dict[str, torch.Tensor], ) -> np.ndarray: - """Generates embeddings from a batch of PyTorch tensor data. - - This function serves as a wrapper for `Inferer.infer_embedding` when - the input data is already in PyTorch tensor format (from loading `.pt` - files which contain sequences, targets, sequence_ids, subsequence_ids, - and start_positions). It converts the tensor dictionary to a NumPy array - dictionary before passing it to the inferer. - - Args: - config: The `InfererModel` configuration object (unused, but - kept for consistent function signature). - inferer: The initialized `Inferer` instance. - data: A dictionary mapping column/feature names to `torch.Tensor`s - (the sequences part loaded from the .pt file). - - Returns: - A NumPy array containing the computed embeddings for the batch. - """ + """Infer embeddings from PT tensors.""" resolved_view = resolve_window_view(config.storage_layout, config.window_view) for tensor in data.values(): validate_stored_window_width(tensor, config.storage_layout.stored_context_width) @@ -963,42 +818,10 @@ def get_probs_preds_from_dict( metadata: dict[str, torch.Tensor], total_steps: int = 1, ) -> tuple[Optional[dict[str, np.ndarray]], dict[str, np.ndarray]]: - """Generates predictions from PyTorch tensor data, supporting autoregression. - - This function performs generative inference on a batch of PyTorch tensor - data loaded from `.pt` files (which contain sequences, targets, - sequence_ids, subsequence_ids, and start_positions). It implements an - autoregressive loop: - 1. Runs inference on the initial data `X` (sequences). - 2. For each subsequent step: - a. Creates the next input `X_next` by shifting the previous input - `X` and appending the prediction from the last step. - b. Runs inference on `X_next`. - 3. Collects and reshapes all predictions and probabilities from all - steps into a single flat batch, ordered by original sample index, then by step. - - Args: - config: The `InfererModel` configuration object, used to check - `output_probabilities` and `input_columns`. - inferer: The initialized `Inferer` instance. - data: A dictionary mapping column/feature names to `torch.Tensor`s - (the sequences part loaded from the .pt file). - total_steps: The number of total autoregressive steps to - perform. A value of 1 means simple, non-autoregressive - inference. - - Returns: - A tuple `(probs, preds)`: - - `probs`: A dictionary mapping target columns to NumPy arrays - of probabilities, ordered by sample index then step, - or `None` if `config.output_probabilities` is False. - - `preds`: A dictionary mapping target columns to NumPy arrays - of final predictions, ordered by sample index then step. - """ + """Infer PT predictions, flattened sample-major across autoregressive steps.""" target_cols = inferer.target_columns - # 2. Initialize input and containers for storing results from all steps X = { key: tensor.numpy() for key, tensor in data.items() @@ -1008,7 +831,6 @@ def get_probs_preds_from_dict( all_probs_list = {col: [] for col in target_cols} all_preds_list = {col: [] for col in target_cols} - # 3. Autoregressive loop metadata_for_step = metadata_np for i in range(total_steps): if config.output_probabilities: @@ -1079,22 +901,7 @@ def get_embeddings( data: pl.DataFrame, column_types: dict[str, torch.dtype], ) -> np.ndarray: - """Generates embeddings from a Polars DataFrame. - - This function converts a Polars DataFrame into the NumPy array dictionary - format expected by the `Inferer`. It uses `numpy_to_pytorch` for the - main conversion, then transforms the tensors to NumPy arrays before - passing them to `inferer.infer_embedding`. - - Args: - config: The `InfererModel` configuration object. - inferer: The initialized `Inferer` instance. - data: The input Polars DataFrame chunk. - column_types: A dictionary mapping column names to `torch.dtype`. - - Returns: - A NumPy array containing the computed embeddings for the batch. - """ + """Infer embeddings from a Polars chunk.""" all_columns = sorted(list(set(config.input_columns + config.target_columns))) resolved_view = resolve_window_view(config.storage_layout, config.window_view) X, metadata = numpy_to_pytorch( @@ -1119,28 +926,7 @@ def get_probs_preds_from_df( data: pl.DataFrame, column_types: dict[str, torch.dtype], ) -> tuple[Optional[dict[str, np.ndarray]], dict[str, np.ndarray]]: - """Generates predictions from a Polars DataFrame (non-autoregressive). - - This function converts a Polars DataFrame into the NumPy array dictionary - format expected by the `Inferer`. It's used for standard, - non-autoregressive generative inference. - It calls `inferer.infer_generative` once and returns the - probabilities (if requested) and predictions. - - Args: - config: The `InfererModel` configuration object. - inferer: The initialized `Inferer` instance. - data: The input Polars DataFrame chunk. - column_types: A dictionary mapping column names to `torch.dtype`. - - Returns: - A tuple `(probs, preds)`: - - `probs`: A dictionary mapping target columns to NumPy arrays - of probabilities, or `None` if `config.output_probabilities` - is False. - - `preds`: A dictionary mapping target columns to NumPy arrays - of final predictions. - """ + """Infer non-autoregressive predictions from a Polars chunk.""" all_columns = sorted(list(set(config.input_columns + config.target_columns))) resolved_view = resolve_window_view(config.storage_layout, config.window_view) @@ -1166,46 +952,20 @@ def get_probs_preds_from_df( @beartype def fill_number(number: Union[int, float], max_length: int) -> str: - """Pads a number with leading zeros to a specified string length. - - Used for creating sortable string keys (e.g., "001-001", "001-002"). - - Args: - number: The integer or float to format. - max_length: The total desired length of the output string. - - Returns: - A string representation of the number, padded with leading zeros. - """ + """Left-pad a number for sortable string keys.""" number_str = str(number) return f"{'0' * (max_length - len(number_str))}{number_str}" @beartype def verify_variable_order(data: pl.DataFrame) -> None: - """Verifies that the DataFrame is correctly sorted for autoregression. - - Checks two conditions: - 1. `sequenceId` is globally sorted in ascending order. - 2. `subsequenceId` is sorted in ascending order *within* each - `sequenceId` group. - - Args: - data: The Polars DataFrame to check. - - Raises: - AssertionError: If `sequenceId` is not globally sorted or if - `subsequenceId` is not sorted within `sequenceId` groups. - """ - # Check if the entire 'sequenceId' column is sorted. This is a global property. + """Require sequenceId order and in-sequence subsequenceId order.""" is_globally_sorted = data.select( (pl.col("sequenceId").diff().fill_null(0) >= 0).all() ).item() if not is_globally_sorted: raise ValueError("sequenceId must be in ascending order for autoregression") - # Check if 'subsequenceId' is sorted within each 'sequenceId' group. - # This results in a boolean Series, on which we can call .all() directly. is_group_sorted = ( data.select( (pl.col("subsequenceId").diff().fill_null(0) >= 0) @@ -1235,25 +995,7 @@ def get_probs_preds_autoregression( np.ndarray, np.ndarray, ]: - """Generates autoregressive predictions and aligns them with sequence IDs and positions. - - Extracts the initial sequence context from the sorted input DataFrame, maps it - to PyTorch tensors, and executes step-by-step autoregressive inference. - - Args: - config: Inference configuration object. - inferer: Initialized `Inferer` instance. - data: Input DataFrame, sorted globally by `sequenceId` and locally by `subsequenceId`. - column_types: Mapping of input column names to their `torch.dtype`. - context_length: Length of the input sequence context. - - Returns: - A tuple containing: - - probs: Dict of probability arrays per target column (None if disabled). - - preds: Dict of final prediction arrays per target column. - - sequence_ids_for_preds: 1D array of sequence IDs matching the output shape. - - item_positions_for_preds: 1D array of absolute item positions for each step. - """ + """Infer autoregressive predictions with sequence IDs, positions, and mask.""" verify_variable_order(data) distinct_cols = len(np.unique(data["inputCol"].to_numpy())) @@ -1279,7 +1021,6 @@ def get_probs_preds_autoregression( resolved_view, ) - # Run the autoregressive PyTorch inference probs, preds = get_probs_preds_from_dict( config, inferer, @@ -1288,7 +1029,6 @@ def get_probs_preds_autoregression( config.autoregression_total_steps, ) - # 4. Generate the final output arrays using the perfectly aligned bases item_positions_for_preds = np.concatenate( [ np.arange(start_pos, start_pos + config.autoregression_total_steps) @@ -1314,26 +1054,7 @@ def get_probs_preds_autoregression( class Inferer: - """A class for performing inference with a trained sequifier model. - - This class encapsulates the model (either ONNX session or PyTorch model), - normalization statistics, ID mappings, and all configuration needed - to run inference. It provides methods to handle batching, model-specific - inference calls (PyTorch vs. ONNX), and post-processing - (like inverting normalization). - - Attributes: - model_type: 'generative' or 'embedding'. - map_to_id: Whether to map integer predictions back to original IDs. - selected_columns_statistics: Dict of 'mean' and 'std' for real columns. - index_map: The inverse of `id_maps`, for mapping indices back to values. - device: The device ('cuda' or 'cpu') for inference. - target_columns: List of columns the model predicts. - target_column_types: Dict mapping target columns to 'categorical' or 'real'. - inference_model_type: 'onnx' or 'pt'. - ort_session: `onnxruntime.InferenceSession` if using ONNX. - inference_model: The loaded PyTorch model if using 'pt'. - """ + """Inference runtime for PT/ONNX sequifier models.""" @beartype def __init__( @@ -1357,27 +1078,7 @@ def __init__( args_config: dict[str, Any], training_config_path: str, ): - """Initializes the Inferer. - - Args: - model_type: The type of model to use for inference. - model_path: The path to the trained model. - project_root: The path to the sequifier project directory. - id_maps: A dictionary of id maps for categorical columns. - selected_columns_statistics: A dictionary of statistics for numerical columns. - map_to_id: Whether to map the output to the original ids. - categorical_columns: A list of categorical columns. - real_columns: A list of real columns. - selected_columns: A list of selected columns. - target_columns: A list of target columns. - target_column_types: A dictionary of target column types. - sample_from_distribution_columns: A list of columns to sample from the distribution. - infer_with_dropout: Whether to use dropout during inference. - inference_batch_size: The batch size for inference. - device: The device to use for inference. - args_config: The command-line arguments. - training_config_path: The path to the training configuration file. - """ + """Load a PT or ONNX backend and postprocessing state.""" self.model_type = model_type self.map_to_id = map_to_id self.selected_columns_statistics = selected_columns_statistics @@ -1434,19 +1135,7 @@ def __init__( def invert_normalization( self, values: np.ndarray, target_column: str ) -> np.ndarray: - """Inverts Z-score normalization for a given target column. - - Uses the 'mean' and 'std' stored in `self.selected_columns_statistics` - to transform normalized values back to their original scale. - - Args: - values: A NumPy array of normalized values. - target_column: The name of the column whose statistics should be - used for the inverse transformation. - - Returns: - A NumPy array of values in their original scale. - """ + """Invert target-column Z-score normalization.""" std = self.selected_columns_statistics[target_column]["std"] mean = self.selected_columns_statistics[target_column]["mean"] return (values * (std - 1e-9)) + mean @@ -1457,19 +1146,7 @@ def infer_embedding( x: dict[str, np.ndarray], metadata: dict[str, np.ndarray], ) -> np.ndarray: - """Performs inference with an embedding model. - - This is a high-level wrapper that calls - `adjust_and_infer_embedding` to handle batching and model-specific - logic. - - Args: - x: A dictionary mapping feature names to NumPy arrays. All arrays - must have the same first dimension (batch size). - - Returns: - A 2D NumPy array of the resulting embeddings. - """ + """Return embeddings for a feature-array batch.""" assert x is not None size = x[list(x.keys())[0]].shape[0] embedding = self.adjust_and_infer_embedding(x, size, metadata) @@ -1484,36 +1161,7 @@ def infer_generative( probs: Optional[dict[str, np.ndarray]] = None, return_probs: bool = False, ) -> dict[str, np.ndarray]: - """Performs generative inference, returning probabilities or predictions. - - This function orchestrates the generative inference process. - 1. If `probs` are not provided, it calls `adjust_and_infer_generative` - to get the raw model output (logits or real values) using `x`. - 2. If `return_probs` is True: - - It normalizes the logits for categorical columns to get - probabilities (using `softmax`, implemented in `normalize`). - - It returns a dictionary of probabilities (for categorical) and - raw predicted values (for real). - 3. If `return_probs` is False (default): - - It converts the model outputs (either from `x` or `probs`) into - final predictions. - - For categorical columns, it either takes the `argmax` or samples - from the distribution (`sample_with_cumsum`). - - For real columns, it returns the value as-is. - - Args: - x: A dictionary mapping feature names to NumPy arrays. Required - if `probs` is not provided. - probs: An optional dictionary of probabilities/logits. If provided, - this skips the model inference step. - return_probs: If True, returns normalized probabilities for - categorical targets. If False, returns final class - predictions (via argmax or sampling). - - Returns: - A dictionary mapping target column names to NumPy arrays. The - content of the arrays depends on `return_probs`. - """ + """Return target probabilities or decoded predictions.""" if probs is None or ( x is not None and len(set(x.keys()).difference(set(probs.keys()))) > 0 ): # type: ignore @@ -1572,20 +1220,7 @@ def adjust_and_infer_embedding( size: int, metadata: dict[str, np.ndarray], ): - """Handles batching and backend-specific calls for embedding inference. - - This function prepares the input data `x` into batches using - `prepare_inference_batches` and then calls the correct inference - backend based on `self.inference_model_type` (.pt or .onnx). - - Args: - x: The complete dictionary of input features (NumPy arrays). - size: The total number of samples in `x`, used to truncate - any padding added for batching. - - Returns: - A NumPy array of embeddings, concatenated from all batches. - """ + """Batch embedding inference across the active backend.""" if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) @@ -1623,22 +1258,7 @@ def adjust_and_infer_generative( size: int, metadata: dict[str, np.ndarray], ): - """Handles batching and backend-specific calls for generative inference. - - This function prepares the input data `x` into batches using - `prepare_inference_batches` and then calls the correct inference - backend based on `self.inference_model_type` (.pt or .onnx). - It aggregates the results from all batches. - - Args: - x: The complete dictionary of input features (NumPy arrays). - size: The total number of samples in `x`, used to truncate - any padding added for batching. - - Returns: - A dictionary mapping target column names to NumPy arrays of raw - model outputs (logits or real values). - """ + """Batch generative inference across the active backend.""" if self.inference_model_type == "onnx": assert x is not None x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=True) @@ -1679,23 +1299,7 @@ def adjust_and_infer_generative( def prepare_inference_batches( self, x: dict[str, np.ndarray], pad_to_batch_size: bool ) -> list[dict[str, np.ndarray]]: - """Splits input data into batches for inference. - - This function takes a large dictionary of feature arrays and splits - them into a list of smaller dictionaries (batches) of size - `self.inference_batch_size`. - - Args: - x: A dictionary of feature arrays. - pad_to_batch_size: If True (for ONNX), the last batch will be - padded up to `self.inference_batch_size` by repeating - samples. If False (for PyTorch), the last batch may be - smaller. - - Returns: - A list of dictionaries, where each dictionary is a single batch - ready for inference. - """ + """Split feature arrays into backend-sized batches.""" size = x[list(x.keys())[0]].shape[0] if size == self.inference_batch_size: return [x] @@ -1726,20 +1330,7 @@ def infer_pure( x: dict[str, np.ndarray], metadata: dict[str, np.ndarray], ) -> list[np.ndarray]: - """Performs a single inference pass using the ONNX session. - - This function assumes `x` is already a single, correctly-sized - batch. It formats the input dictionary to match the ONNX model's - input names and executes `self.ort_session.run()`. - - Args: - x: A dictionary of feature arrays for a single batch. This - batch *must* be of size `self.inference_batch_size`. - - Returns: - A list of NumPy arrays, representing the raw outputs from the - ONNX model. - """ + """Run one ONNX batch and flatten sequence-major outputs.""" metadata = metadata or {} ort_inputs = {} for session_input in self.ort_session.get_inputs(): @@ -1766,18 +1357,7 @@ def infer_pure( @beartype def expand_to_batch_size(self, x: np.ndarray) -> np.ndarray: - """Pads a NumPy array to match `self.inference_batch_size`. - - Repeats samples from `x` until the array's first dimension - is equal to `self.inference_batch_size`. - - Args: - x: The input NumPy array to pad. - - Returns: - A new NumPy array of size `self.inference_batch_size` in the - first dimension. - """ + """Repeat leading samples until the ONNX batch size is met.""" repetitions = self.inference_batch_size // x.shape[0] filler = self.inference_batch_size % x.shape[0] return np.concatenate(([x] * repetitions) + [x[0:filler, :]], axis=0) @@ -1785,19 +1365,7 @@ def expand_to_batch_size(self, x: np.ndarray) -> np.ndarray: @beartype def normalize(outs: dict[str, np.ndarray]) -> dict[str, np.ndarray]: - """Applies the softmax function to a dictionary of logits. - - Converts raw model logits for categorical columns into probabilities - that sum to 1. - - Args: - outs: A dictionary mapping target column names to NumPy arrays - of logits. - - Returns: - A dictionary mapping the same target column names to NumPy arrays - of probabilities. - """ + """Softmax logits by target column.""" normalizer = { target_column: np.repeat( np.sum(np.exp(target_values), axis=1), target_values.shape[1] @@ -1813,21 +1381,7 @@ def normalize(outs: dict[str, np.ndarray]) -> dict[str, np.ndarray]: @beartype def sample_with_cumsum(probs: np.ndarray, is_log_probs: bool = True) -> np.ndarray: - """Samples from a probability distribution using the inverse CDF method. - - Takes an array of logits, computes the cumulative probability - distribution, draws a random number `r` from [0, 1), and returns - the index of the first class `i` where `cumsum[i] > r`. - - Args: - probs: A 2D NumPy array of logits or normalized probabilities. - Shape is (batch_size, num_classes). - is_log_probs: Boolean flag indicating if the passed array are logits or - probabilities - Returns: - A 1D NumPy array of shape (batch_size,) containing the sampled - class indices. - """ + """Sample class indices from logits or probabilities.""" if is_log_probs: cumulative_probs = np.cumsum(np.exp(probs), axis=1) else: diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index 6dc03b16..da4bc2b0 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -17,14 +17,7 @@ class SequifierDatasetFromFile(IterableDataset): - """ - An iterable-style dataset that pre-loads all data into CPU RAM and yields - pre-collated batches. - - This is the idiomatic PyTorch solution for implementing custom 'en block' - batching. The __iter__ method handles shuffling and batch slicing, ensuring - maximum performance. - """ + """Eager single-file dataset yielding pre-collated batches.""" def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): super().__init__() @@ -33,7 +26,6 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.shuffle = shuffle self.epoch = 0 - # Create a unified list of all columns the model might need all_columns = sorted(list(set(config.input_columns + config.target_columns))) logger.info( @@ -46,7 +38,6 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): for col in config.column_types } - # self.all_tensors now holds both inputs and targets resolved_view = resolve_window_view(config.storage_layout, config.window_view) all_tensors, metadata_tensors = numpy_to_pytorch( data=data_df, @@ -78,24 +69,15 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): logger.info(f"[INFO] Dataset loaded with {self.n_samples} samples.") def set_epoch(self, epoch: int): - """Allows the training loop to set the epoch for deterministic shuffling.""" + """Set the shuffle epoch.""" self.epoch = epoch def __len__(self) -> int: - """Returns the total number of samples in the dataset.""" return math.ceil(self.n_samples / self.batch_size) def __iter__( self, ) -> Iterator[SequifierBatch]: - """Yields batches of data. - - Handles shuffling (if enabled) and slicing data based on distributed - rank and worker ID. - - Yields: - An iterator where each item is a SequifierBatch. - """ worker_info = torch.utils.data.get_worker_info() world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 17414dcf..93035822 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -22,13 +22,7 @@ class SequifierDatasetFromFolderParquet(IterableDataset): - """ - An efficient PyTorch IterableDataset that pre-loads a folder of chunked - Parquet files entirely into CPU RAM at initialization. - - Yields full, pre-collated batches natively. Fully supports DDP/FSDP distributed - environments using customizable sampling strategies. - """ + """Eager Parquet-folder dataset yielding rank/worker-aligned batches.""" def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): super().__init__() @@ -147,11 +141,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: return total_batches def set_epoch(self, epoch: int): - """Allows the training loop to synchronize seed steps for shuffling.""" + """Set the shuffle epoch.""" self.epoch = epoch def _get_target_samples(self) -> int: - """Calculates precise sample counts per rank to manage FSDP layer allocations.""" + """Return per-rank sample count under the configured sampling strategy.""" world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -180,18 +174,15 @@ def __iter__( worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 - # 1. Coordinate global shuffling masks indices = torch.arange(self.n_samples) if self.shuffle: g = torch.Generator() g.manual_seed(self.config.seed + self.epoch) indices = indices[torch.randperm(self.n_samples, generator=g)] - # 2. Slice metrics based on GPU distribution metrics indices_for_rank = indices[rank::world_size].tolist() sample_is_real = [True] * len(indices_for_rank) - # 3. Synchronize cross-device oversampling/undersampling rules if self.sampling_strategy == "oversampling": real_count = len(indices_for_rank) if real_count == 0: @@ -211,11 +202,9 @@ def __iter__( indices_for_rank = indices_for_rank[: self.target_samples] sample_is_real = sample_is_real[: self.target_samples] - # 4. Map worker task splits indices_for_worker = indices_for_rank[worker_id::num_workers] sample_is_real_for_worker = sample_is_real[worker_id::num_workers] - # 5. Extract and pass unified data frames for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] batch_sample_is_real = sample_is_real_for_worker[i : i + self.batch_size] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index 2d03ffc4..b45ed0cc 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -23,29 +23,7 @@ class SequifierDatasetFromFolderParquetLazy(IterableDataset): - """ - An efficient, memory-safe PyTorch IterableDataset for out-of-core training. - - Streams long-format Parquet files sequentially using cross-file buffering to yield - exact batches, eliminating CPU cloning bottlenecks. Fully supports DDP/FSDP by - precisely calculating and distributing sample boundaries across GPU ranks and workers. - - Args: - data_path (str): Path to the directory containing `.parquet` chunks and `metadata.json`. - config (TrainModel): Training configuration (batch size, workers, sequence length, etc.). - shuffle (bool, optional): If True, deterministically shuffles file order and - sample indices per epoch. Defaults to True. - - Yields: - SequifierBatch: - A named batch containing sequence dictionaries, target dictionaries, - metadata dictionaries, and optional identifiers. - - Raises: - FileNotFoundError: If `metadata.json` is missing. - Exception: If sample counts are uneven across ranks using the 'exact' sampling - strategy, or if a GPU rank is assigned no files. - """ + """Streams long-format Parquet chunks into rank/worker-aligned batches.""" def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): super().__init__() @@ -96,11 +74,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: return total_batches def set_epoch(self, epoch: int): - """Allows the training loop to set the epoch for deterministic file shuffling.""" + """Set the shuffle epoch.""" self.epoch = epoch def _get_target_samples(self) -> int: - """Calculates exact sample count per rank to ensure FSDP syncs properly.""" + """Return per-rank sample count under the configured sampling strategy.""" world_size = dist.get_world_size() if dist.is_initialized() else 1 num_files = len(self.batch_files_info) @@ -169,7 +147,6 @@ def __iter__( worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 - # 1. Distribute files among ranks num_files = len(self.batch_files_info) original_files_for_this_rank = list(range(rank, num_files, world_size)) rank_real_samples = sum( @@ -183,11 +160,9 @@ def __iter__( else: raise Exception(f"No file found for GPU rank {rank}.") - # 2. Assign exact sample quotas and boundaries to this specific worker thread base_samples_per_worker = self.target_samples // num_workers remainder = self.target_samples % num_workers - # Calculate exactly where this worker's data starts and ends in the global stream worker_start_sample = 0 for i in range(worker_id): worker_start_sample += base_samples_per_worker + (1 if i < remainder else 0) @@ -197,7 +172,6 @@ def __iter__( ) worker_end_sample = worker_start_sample + worker_target_samples - # 3. Shuffle files deterministically g = torch.Generator() g.manual_seed(self.config.seed + self.epoch) @@ -207,7 +181,6 @@ def __iter__( else: ordered_files = files_for_this_rank.copy() - # 4. Extend files based on exact target requirements extended_files = [] current_samples = 0 file_idx = 0 @@ -217,7 +190,6 @@ def __iter__( current_samples += self.batch_files_info[f_id]["samples"] file_idx += 1 - # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 global_file_start_sample = 0 @@ -228,7 +200,6 @@ def __iter__( self.resolved_view.target_slice, self.folder_layout.stored_context_width ) - # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} tgt_buffer: Dict[str, torch.Tensor] = {} meta_buffer: Dict[str, torch.Tensor] = {} @@ -243,23 +214,19 @@ def __iter__( file_end = global_file_start_sample + file_samples global_file_start_sample += file_samples - # Skip this file if it belongs entirely to other workers if file_end <= worker_start_sample or file_start >= worker_end_sample: continue - # This file overlaps with our worker's assigned boundary. Load it. file_path = os.path.join(self.data_dir, self.batch_files_info[f_id]["path"]) df = pl.read_parquet(file_path) left_pad_lengths = get_left_pad_lengths_from_preprocessed_data(df) - # Generate indices for the whole file using torch (matching pt_lazy) indices = torch.arange(file_samples) if self.shuffle: g_file = torch.Generator() g_file.manual_seed(self.config.seed + self.epoch + f_id + rank) indices = indices[torch.randperm(file_samples, generator=g_file)] - # Slice the indices to extract ONLY the portion belonging to this worker worker_file_start_idx = max(0, worker_start_sample - file_start) worker_file_end_idx = min(file_samples, worker_end_sample - file_start) @@ -279,19 +246,13 @@ def __iter__( worker_indices_np = worker_indices.numpy() - # 1. Single-pass partition: Groups data natively in C++/Rust, eliminating O(F * N) scans feature_partitions = { frame.item(0, "inputCol"): frame for frame in df.partition_by("inputCol") } - # Dynamic feature names fallback to gracefully handle MagicMock objects in unit tests - - # Process Long format data structures into PyTorch Tensors new_seq, new_tgt = {}, {} - # 2. Iterate over the expected config columns, not the dynamically found ones - # Process inputs for col_name in self.config.input_columns: if col_name in feature_partitions: feature_chunk = feature_partitions[col_name][worker_indices_np] @@ -302,7 +263,6 @@ def __iter__( else: raise ValueError(f"Column not found in input data: {col_name}") - # Process targets for col_name in self.config.target_columns: if col_name in feature_partitions: feature_chunk = feature_partitions[col_name][worker_indices_np] @@ -320,7 +280,6 @@ def __iter__( del df - # Append the new slice to the cross-file buffer if buffer_len == 0: seq_buffer = new_seq tgt_buffer = new_tgt @@ -343,12 +302,10 @@ def __iter__( buffer_len += num_new_samples - # Yield batches as long as the buffer contains at least `batch_size` samples while buffer_len >= self.batch_size: if yielded_samples >= worker_target_samples: break - # Slice out a perfect batch from the top of the buffer batch_seq = {k: v[: self.batch_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} @@ -360,13 +317,11 @@ def __iter__( ) yielded_samples += self.batch_size - # Keep the remainder in the buffer for the next loop/file seq_buffer = {k: v[self.batch_size :] for k, v in seq_buffer.items()} tgt_buffer = {k: v[self.batch_size :] for k, v in tgt_buffer.items()} meta_buffer = {k: v[self.batch_size :] for k, v in meta_buffer.items()} buffer_len -= self.batch_size - # 6. Yield the final partial batch from the buffer if any remains if buffer_len > 0 and yielded_samples < worker_target_samples: remaining_needed = worker_target_samples - yielded_samples final_yield_size = min(buffer_len, remaining_needed) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index aff09a89..7327fe93 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -19,13 +19,7 @@ class SequifierDatasetFromFolderPt(IterableDataset): - """ - An efficient PyTorch IterableDataset that pre-loads all data into RAM. - - This strategy pays a one-time I/O cost at initialization, after which - all data access during training is extremely fast. It yields full, - pre-collated batches natively. - """ + """Eager PT-folder dataset yielding rank/worker-aligned batches.""" def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): super().__init__() @@ -60,7 +54,6 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): } all_left_pad_lengths: list[torch.Tensor] = [] - # Load all data files into RAM for file_info in metadata["batch_files"]: file_path = os.path.join(self.data_dir, file_info["path"]) ( @@ -107,11 +100,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: return total_batches def set_epoch(self, epoch: int): - """Allows the training loop to set the epoch for deterministic shuffling.""" + """Set the shuffle epoch.""" self.epoch = epoch def _get_target_samples(self) -> int: - """Calculates exact sample count per rank to ensure FSDP syncs properly.""" + """Return per-rank sample count under the configured sampling strategy.""" world_size = dist.get_world_size() if dist.is_initialized() else 1 rank = dist.get_rank() if dist.is_initialized() else 0 @@ -140,18 +133,15 @@ def __iter__( worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 - # 1. Global Shuffling indices = torch.arange(self.n_samples) if self.shuffle: g = torch.Generator() g.manual_seed(self.config.seed + self.epoch) indices = indices[torch.randperm(self.n_samples, generator=g)] - # 2. Distribute across GPU ranks indices_for_rank = indices[rank::world_size].tolist() sample_is_real = [True] * len(indices_for_rank) - # 3. Handle FSDP oversampling/undersampling sync requirements if self.sampling_strategy == "oversampling": real_count = len(indices_for_rank) if real_count == 0: @@ -171,11 +161,9 @@ def __iter__( indices_for_rank = indices_for_rank[: self.target_samples] sample_is_real = sample_is_real[: self.target_samples] - # 4. Distribute among CPU workers for this GPU indices_for_worker = indices_for_rank[worker_id::num_workers] sample_is_real_for_worker = sample_is_real[worker_id::num_workers] - # 5. Yield full batches for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] batch_sample_is_real = sample_is_real_for_worker[i : i + self.batch_size] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 8193b793..506d12b7 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -20,29 +20,7 @@ class SequifierDatasetFromFolderPtLazy(IterableDataset): - """ - An efficient, memory-safe PyTorch IterableDataset for out-of-core training. - - Streams pre-processed chunked files sequentially using cross-file buffering to yield - exact batches, eliminating CPU cloning bottlenecks. Fully supports DDP/FSDP by - precisely calculating and distributing sample boundaries across GPU ranks and workers. - - Args: - data_path (str): Path to the directory containing `.pt` chunks and `metadata.json`. - config (TrainModel): Training configuration (batch size, workers, sequence length, etc.). - shuffle (bool, optional): If True, deterministically shuffles file order and - sample indices per epoch. Defaults to True. - - Yields: - SequifierBatch: - A named batch containing sequence dictionaries, target dictionaries, - metadata dictionaries, and optional identifiers. - - Raises: - FileNotFoundError: If `metadata.json` is missing. - Exception: If sample counts are uneven across ranks using the 'exact' sampling - strategy, or if a GPU rank is assigned no files. - """ + """Streams PT chunks into rank/worker-aligned batches.""" def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): super().__init__() @@ -88,11 +66,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: return total_batches def set_epoch(self, epoch: int): - """Allows the training loop to set the epoch for deterministic file shuffling.""" + """Set the shuffle epoch.""" self.epoch = epoch def _get_target_samples(self) -> int: - """Calculates exact sample count per rank to ensure FSDP syncs properly.""" + """Return per-rank sample count under the configured sampling strategy.""" world_size = dist.get_world_size() if dist.is_initialized() else 1 num_files = len(self.batch_files_info) @@ -161,7 +139,6 @@ def __iter__( worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 - # 1. Distribute files among ranks num_files = len(self.batch_files_info) original_files_for_this_rank = list(range(rank, num_files, world_size)) rank_real_samples = sum( @@ -175,11 +152,9 @@ def __iter__( else: raise Exception(f"No file found for GPU rank {rank}.") - # 2. Assign exact sample quotas and boundaries to this specific worker thread base_samples_per_worker = self.target_samples // num_workers remainder = self.target_samples % num_workers - # Calculate exactly where this worker's data starts and ends in the global stream worker_start_sample = 0 for i in range(worker_id): worker_start_sample += base_samples_per_worker + (1 if i < remainder else 0) @@ -189,7 +164,6 @@ def __iter__( ) worker_end_sample = worker_start_sample + worker_target_samples - # 3. Shuffle files deterministically g = torch.Generator() g.manual_seed(self.config.seed + self.epoch) @@ -199,7 +173,6 @@ def __iter__( else: ordered_files = files_for_this_rank.copy() - # 4. Extend files based on exact target requirements extended_files = [] current_samples = 0 file_idx = 0 @@ -209,11 +182,9 @@ def __iter__( current_samples += self.batch_files_info[f_id]["samples"] file_idx += 1 - # 5. Stream data using precise global boundaries and a CROSS-FILE BUFFER yielded_samples = 0 global_file_start_sample = 0 - # Initialize cross-file buffers seq_buffer: Dict[str, torch.Tensor] = {} tgt_buffer: Dict[str, torch.Tensor] = {} meta_buffer: Dict[str, torch.Tensor] = {} @@ -228,11 +199,9 @@ def __iter__( file_end = global_file_start_sample + file_samples global_file_start_sample += file_samples - # Skip this file if it belongs entirely to other workers if file_end <= worker_start_sample or file_start >= worker_end_sample: continue - # This file overlaps with our worker's assigned boundary. Load it. file_path = os.path.join(self.data_dir, self.batch_files_info[f_id]["path"]) ( sequences_batch, @@ -246,14 +215,12 @@ def __iter__( tensor, self.folder_layout.stored_context_width ) - # Generate indices for the whole file indices = torch.arange(file_samples) if self.shuffle: g_file = torch.Generator() g_file.manual_seed(self.config.seed + self.epoch + f_id + rank) indices = indices[torch.randperm(file_samples, generator=g_file)] - # Slice the indices to extract ONLY the portion belonging to this worker worker_file_start_idx = max(0, worker_start_sample - file_start) worker_file_end_idx = min(file_samples, worker_end_sample - file_start) @@ -270,7 +237,6 @@ def __iter__( del sequences_batch continue - # Extract the data subset for this worker (Advanced indexing copies the data) new_seq = { k: v[worker_indices, self.resolved_view.input_slice] for k, v in sequences_batch.items() @@ -287,10 +253,8 @@ def __iter__( ) new_meta["sample_valid_mask"] = sample_is_real - # Free the large file immediately to keep RAM down del sequences_batch, left_pad_lengths_batch - # Append the new slice to the cross-file buffer if buffer_len == 0: seq_buffer = new_seq tgt_buffer = new_tgt @@ -313,12 +277,10 @@ def __iter__( buffer_len += num_new_samples - # Yield batches as long as the buffer contains at least `batch_size` samples while buffer_len >= self.batch_size: if yielded_samples >= worker_target_samples: break - # Slice out a perfect batch from the top of the buffer batch_seq = {k: v[: self.batch_size] for k, v in seq_buffer.items()} batch_tgt = {k: v[: self.batch_size] for k, v in tgt_buffer.items()} batch_meta = {k: v[: self.batch_size] for k, v in meta_buffer.items()} @@ -330,13 +292,11 @@ def __iter__( ) yielded_samples += self.batch_size - # Keep the remainder in the buffer for the next loop/file seq_buffer = {k: v[self.batch_size :] for k, v in seq_buffer.items()} tgt_buffer = {k: v[self.batch_size :] for k, v in tgt_buffer.items()} meta_buffer = {k: v[self.batch_size :] for k, v in meta_buffer.items()} buffer_len -= self.batch_size - # 6. Yield the final partial batch from the buffer if any remains if buffer_len > 0 and yielded_samples < worker_target_samples: remaining_needed = worker_target_samples - yielded_samples final_yield_size = min(buffer_len, remaining_needed) diff --git a/src/sequifier/io/yaml.py b/src/sequifier/io/yaml.py index 934f40bf..1b8aa1c2 100644 --- a/src/sequifier/io/yaml.py +++ b/src/sequifier/io/yaml.py @@ -12,67 +12,30 @@ def represent_sequifier_object(dumper, data): - """ - Represents objects from 'sequifier.config.train_config' (like TrainModel, - ModelSpecModel, TrainingSpecModel) as a simple YAML mapping, - using the object's __dict__. This effectively removes the - !!python/object tag and the explicit '__dict__:', '__fields_set__:' keys. - """ - # We assume the object's __dict__ contains the attributes to be serialized. - # If these objects are Pydantic models, using data.model_dump(mode='python') - # would be more robust if available. + """Represent sequifier config objects as plain YAML mappings.""" return dumper.represent_dict(data.__dict__) def represent_dot_dict(dumper, data): - """ - Represents DotDict objects as a simple YAML mapping. - The original output showed a 'dictitems' attribute. If your DotDict - is essentially a dictionary, this will work. - """ - # If DotDict has a specific attribute like 'dictitems' that holds the actual dict: - # return dumper.represent_dict(data.dictitems) - # If DotDict is a subclass of dict or dict-like: + """Represent DotDict as a plain YAML mapping.""" return dumper.represent_dict(dict(data)) def represent_numpy_float(dumper, data): - """ - Represents numpy.float64 (and similar numpy floats) as standard YAML floats. - """ + """Represent NumPy floats as YAML floats.""" return dumper.represent_float(float(data)) def represent_numpy_int(dumper, data): - """ - Represents numpy.int64 (and similar numpy integers) as standard YAML integers. - """ + """Represent NumPy integers as YAML integers.""" return dumper.represent_int(int(data)) class TrainModelDumper(yaml.Dumper): - """A custom YAML dumper for TrainModel objects. + """YAML dumper for sequifier config objects.""" - This dumper extends the base yaml.Dumper to provide custom serialization - for TrainModel and related objects, ensuring a clean and readable YAML - output. It also modifies the indentation behavior for better formatting. - """ - - # You can add more customizations here if needed, like indent width. def increase_indent(self, flow=False, indentless=False): - """Increase the indentation level for the YAML output. - - This method overrides the default behavior to force indentation for all - block-style collections, improving the readability of the output YAML. - - Args: - flow: Whether the context is a flow-style collection. - indentless: Whether the context is an indentless sequence. - - Returns: - The result of the parent class's increase_indent method, with flow - forced to False. - """ + """Indent block sequences.""" return super(TrainModelDumper, self).increase_indent(flow, False) diff --git a/src/sequifier/make.py b/src/sequifier/make.py index c5bab86f..51d43a5b 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -100,11 +100,7 @@ def make(args): - """Creates a new sequifier project. - - Args: - args: The command-line arguments. - """ + """Create a sequifier project scaffold.""" project_name = args.project_name if not (project_name and len(project_name) > 0): diff --git a/src/sequifier/model/layers.py b/src/sequifier/model/layers.py index 4e485d4c..ddd2c839 100644 --- a/src/sequifier/model/layers.py +++ b/src/sequifier/model/layers.py @@ -10,17 +10,10 @@ def __init__(self, dim: int, eps: float = 1e-6): self.weight = nn.Parameter(torch.ones(dim)) def forward(self, x): - # 1. Cast input to float32 once for stability x_fp32 = x.to(torch.float32) - - # 2. Calculate variance var = torch.mean(x_fp32.pow(2), dim=-1, keepdim=True) - - # 3. Normalize x_normed = x_fp32 * torch.rsqrt(var + self.eps) - # 4. Cast back to the *input tensor's* dtype (traceable), - # rather than self.weight.dtype (not traceable in Cast ops) return (self.weight.to(x_normed.dtype) * x_normed).to(x.dtype) diff --git a/src/sequifier/optimizers/ademamix.py b/src/sequifier/optimizers/ademamix.py index 9eeced8e..a69ad875 100644 --- a/src/sequifier/optimizers/ademamix.py +++ b/src/sequifier/optimizers/ademamix.py @@ -9,26 +9,7 @@ class AdEMAMix(Optimizer): - """Implements the AdEMAMix optimizer. - - This optimizer is based on the paper "AdEMAMix: A Novel Adaptive Optimizer for - Deep Learning". It combines the advantages of Adam and EMA, and introduces a - mixing term to further improve performance. - - Args: - params (iterable): Iterable of parameters to optimize or dicts defining - parameter groups. - learning_rate (float, optional): Learning rate (default: 1e-3). - betas (Tuple[float, float, float], optional): Coefficients used for - computing running averages of gradient and its square - (default: (0.9, 0.999, 0.9999)). - eps (float, optional): Term added to the denominator to improve - numerical stability (default: 1e-8). - weight_decay (float, optional): Weight decay (L2 penalty) (default: 0). - alpha (float, optional): Mixing coefficient (default: 5.0). - T_alpha_beta3 (int, optional): Time period for alpha and beta3 scheduling - (default: None). - """ + """AdEMAMix optimizer.""" def __init__( self, @@ -62,24 +43,11 @@ def __init__( super(AdEMAMix, self).__init__(params, defaults) def __setstate__(self, state): - """Set the state of the optimizer. - - Args: - state (dict): The state of the optimizer. - """ super(AdEMAMix, self).__setstate__(state) @torch.no_grad() def step(self, closure=None): - """Perform a single optimization step. - - Args: - closure (callable, optional): A closure that reevaluates the model - and returns the loss. (default: None) - - Returns: - The loss, if the closure is provided. Otherwise, returns None. - """ + """Run one optimizer step.""" loss = None if closure is not None: with torch.enable_grad(): @@ -163,27 +131,7 @@ def _update_adamemix( weight_decay, eps, ): - """Perform the AdEMAMix update for a single parameter group. - - Args: - params (list[torch.Tensor]): List of parameters to update. - grads (list[torch.Tensor]): List of gradients for each parameter. - exp_avgs (list[torch.Tensor]): List of exponential moving averages of - gradients. - exp_avg_sqs (list[torch.Tensor]): List of exponential moving averages - of squared gradients. - exp_avg_slow (list[torch.Tensor]): List of slow exponential moving - averages of gradients. - state_steps (list[int]): List of steps for each parameter. - beta1 (float): Coefficient for the first moment estimate. - beta2 (float): Coefficient for the second moment estimate. - beta3 (float): Coefficient for the slow moment estimate. - alpha (float): Mixing coefficient. - T_alpha_beta3 (int): Time period for alpha and beta3 scheduling. - learning_rate (float): Learning rate. - weight_decay (float): Weight decay. - eps (float): Epsilon term for numerical stability. - """ + """Update one parameter group in place.""" for i, param in enumerate(params): grad = grads[i] exp_avg = exp_avgs[i] @@ -211,7 +159,6 @@ def _update_adamemix( alpha_t = alpha beta3_t = beta3 - # Decay the first and second moment running average coefficient exp_avg.mul_(beta1).add_(grad, alpha=1 - beta1) exp_avg_sq.mul_(beta2).addcmul_(grad, grad, value=1 - beta2) exp_avg_slow_i.mul_(beta3_t).add_(grad, alpha=1 - beta3_t) diff --git a/src/sequifier/optimizers/optimizers.py b/src/sequifier/optimizers/optimizers.py index 2930433e..dbcef9cd 100644 --- a/src/sequifier/optimizers/optimizers.py +++ b/src/sequifier/optimizers/optimizers.py @@ -7,14 +7,7 @@ def get_optimizer_class(optimizer_name: str) -> torch.optim.Optimizer: - """Gets the optimizer class from a string. - - Args: - optimizer_name: The name of the optimizer. - - Returns: - The optimizer class. - """ + """Resolve a custom, torch-optimizer, or torch optimizer class.""" if optimizer_name in CUSTOM_OPTIMIZERS: return CUSTOM_OPTIMIZERS[optimizer_name] elif hasattr(torch_optimizer, optimizer_name): diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 9c2d74fc..9a2f4938 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -61,20 +61,7 @@ def _stable_json_digest(value: Any) -> str: @beartype def preprocess(args: Any, args_config: dict[str, Any]) -> None: - """Runs the main data preprocessing pipeline. - - This function loads the preprocessing configuration, initializes the - `Preprocessor` class, and executes the preprocessing steps based on the - loaded configuration. - - Args: - args: An object containing command-line arguments. Expected to have - a `config_path` attribute specifying the path to the YAML - configuration file. - args_config: A dictionary containing additional configuration parameters - that may override or supplement the settings loaded from the - config file. - """ + """Load preprocessing config and run preprocessing.""" logger.info("--- Starting Preprocessing ---") config_path = args.config_path or "configs/preprocess.yaml" config = load_preprocessor_config(config_path, args_config) @@ -83,22 +70,7 @@ def preprocess(args: Any, args_config: dict[str, Any]) -> None: class Preprocessor: - """A class for preprocessing data for the sequifier model. - - This class handles loading, preprocessing, and saving data. It supports - single-file and multi-file processing, and can handle large datasets by - processing them in batches. - - Attributes: - project_root (str): The path to the sequifier project directory. - batches_per_file (int): The number of batches to process per file. - data_name_root (str): The root name of the data file. - merge_output (bool): Whether to combine the output into a single file. - target_dir (str): The target directory for temporary files. - seed (int): The random seed for reproducibility. - n_cores (int): The number of cores to use for parallel processing. - split_paths (list[str]): The paths to the output split files. - """ + """Stateful preprocessing pipeline for single-file or folder inputs.""" @beartype def __init__( @@ -124,28 +96,7 @@ def __init__( max_target_offset: int = 1, mask_column: Optional[str] = None, ): - """Initializes the Preprocessor with the given parameters. - - Args: - project_root: The path to the sequifier project directory. - data_path: The path to the input data file. - read_format: The file type of the input data. - write_format: The file type for the preprocessed output data. - merge_output: Whether to combine the output into a single file. - selected_columns: A list of columns to be included in the preprocessing. - split_ratios: A list of floats that define the relative sizes of data splits. - stored_context_width: The physical serialized window width. - max_target_offset: The number of future items retained after each input window. - stride_by_split: A list of step sizes for creating subsequences. - max_rows: The maximum number of input rows to process. - seed: A random seed for reproducibility. - n_cores: The number of CPU cores to use for parallel processing. - batches_per_file: The number of batches to process per file. - process_by_file: A flag to indicate if processing should be done file by file. - use_precomputed_maps: An optional list of columns for which to enforce precomputed maps - metadata_config_path: Optional path to a precomputed metadata config - mask_column: Optional input column used to mask all data columns - """ + """Initialize and run preprocessing from validated config fields.""" self.project_root = project_root self.batches_per_file = batches_per_file self.data_path = data_path @@ -195,12 +146,9 @@ def __init__( self._setup_split_paths(write_format, len(split_ratios)) if self.continue_preprocessing: - # 1. Determine what paths indicate "completion" if self.merge_output: - # If merging, check for the final files (e.g., "data/mydata-split0.pt") paths_to_check = self.split_paths else: - # If not merging, check for the output folders (e.g., "data/mydata-split0") paths_to_check = [ os.path.join( self.project_root, "data", f"{self.data_name_root}-split{i}" @@ -208,7 +156,6 @@ def __init__( for i in range(len(split_ratios)) ] - # 2. If any target exists, skip processing and jump to cleanup if any(os.path.exists(p) for p in paths_to_check): logger.info( "Existing split paths found with continue_preprocessing=True. " @@ -420,23 +367,7 @@ def __init__( def _create_schema( self, col_types: dict[str, str], stored_context_width: int ) -> dict[str, Any]: - """Creates the Polars schema for the intermediate sequence DataFrame. - - This schema defines the structure of the DataFrame after sequence - extraction, which includes sequence identifiers, the start item position - within the original sequence, the input column name, and columns for - each stored item in the serialized window. - - Args: - col_types: A dictionary mapping data column names to their Polars - string representations (e.g., "Int64", "Float64"). - stored_context_width: The number of items stored for each extracted window. - - Returns: - A dictionary defining the Polars schema. Keys are column names - (e.g., "sequenceId", "subsequenceId", "startItemPosition", "inputCol", "0", "1", ...) - and values are Polars data types (e.g., `pl.Int64`). - """ + """Build the long-format extracted-window schema.""" schema = { "sequenceId": pl.Int64, "subsequenceId": pl.Int64, @@ -483,39 +414,7 @@ def _get_column_metadata_across_files( dict[str, str], list[str], ]: - """Scans multiple data files to compute combined column metadata. - - This method iterates through all files in `data_path` matching `read_format`, - loading each one to incrementally build up metadata. It computes: - 1. ID maps for categorical/string columns. - 2. Mean and standard deviation for numerical (float) columns. - 3. The total number of unique classes for mapped columns. - 4. The data types of all columns. - - This is used when the dataset is split into multiple files to get a - consistent global view of the data. - - Args: - data_path: The path to the root data directory. - read_format: The file extension (e.g., "csv", "parquet") to read. - max_rows: The maximum total number of rows to process across all - files. If `None`, all rows are processed. - selected_columns: A list of columns to include. If `None`, all - columns (except "sequenceId" and "itemPosition") are used. - - Returns: - A tuple containing: - - n_classes (dict[str, int]): Map of column name to its - number of unique classes (including padding/unknown). - - id_maps (dict[str, dict[Union[str, int], int]]): Nested map - from column name to its value-to-integer-ID map. - - selected_columns_statistics (dict[str, dict[str, float]]): - Nested map from numerical column name to its 'mean' and 'std'. - - col_types (dict[str, str]): Map of column name to its - Polars string data type. - - data_columns (list[str]): List of all processed data - column names. - """ + """Accumulate metadata/statistics over a folder input.""" n_rows_running_count = 0 id_maps, selected_columns_statistics = {}, {} @@ -549,7 +448,6 @@ def _get_column_metadata_across_files( self.mask_column, ) - # Get columns for the current file (excluding metadata cols) current_file_cols = _get_data_columns(data, self.mask_column) if col_types is None: @@ -615,13 +513,7 @@ def _get_column_metadata_across_files( @beartype def _setup_directories(self) -> None: - """Sets up the output directories for preprocessed data. - - This method creates the base `data/` directory within the `project_root` - if it doesn't exist. It also creates a temporary directory (defined by - `self.target_dir`) for storing intermediate batch files, removing it - first if it already exists to ensure a clean run. - """ + """Prepare or validate preprocessing temp directories.""" temp_path = os.path.join(self.project_root, "data", self.target_dir) @@ -636,16 +528,7 @@ def _setup_directories(self) -> None: @beartype def _setup_split_paths(self, write_format: str, n_splits: int) -> None: - """Sets up the final output paths for the data splits. - - This method constructs the full file paths for each data split - (e.g., train, validation, test) based on the `data_name_root` and - `write_format`. The paths are stored in the `self.split_paths` attribute. - - Args: - write_format: The file extension for the output files (e.g., "pt", "parquet"). - n_splits: The number of splits to create (e.g., 3 for train/val/test). - """ + """Set final split output paths.""" split_paths = [ os.path.join( self.project_root, @@ -679,28 +562,7 @@ def _process_batches_multiple_files( subsequence_start_mode: str = "distribute", mask_column: Optional[str] = None, ) -> None: - """Processes batches of data from multiple files. - - Args: - file_paths: A list of file paths to process. - read_format: The file format to read. - selected_columns: A list of columns to be included in the preprocessing. - max_rows: The maximum number of rows to process. - schema: The schema for the preprocessed data. - n_cores: The number of cores to use for parallel processing. - layout: The sequence and serialized-window layout. - stride_by_split: A list of step sizes for creating subsequences. - data_columns: A list of data columns. - n_classes: A dictionary containing the number of classes for each categorical column. - id_maps: A dictionary containing the id maps for each categorical column. - selected_columns_statistics: A dictionary containing the statistics for each numerical column. - col_types: A dictionary containing the column types. - split_ratios: A list of floats that define the relative sizes of data splits. - write_format: The file format for the output files. - process_by_file: A flag to indicate if processing should be done file by file. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - mask_column: Optional input column used to mask all data columns. - """ + """Dispatch folder preprocessing by file or by process shard.""" if mask_column is None: mask_column = self.mask_column @@ -815,21 +677,7 @@ def _process_batches_multiple_files( @beartype def _cleanup(self, write_format: str) -> None: - """Finalizes output files and removes temporary directories. - - If `write_format` is 'pt' and `merge_output` is False, - this method moves the processed .pt batch files from the temporary - `target_dir` into their final split-specific subfolders (e.g., - 'data_name_root-split0/'). It also generates a 'metadata.json' file - in each of these subfolders, which is required by - `SequifierDatasetFromFolderPt`. - - Finally, it removes the temporary `target_dir` if it's empty or - if `target_dir` is "temp" (implying `merge_output` was True). - - Args: - write_format: The file format of the output files (e.g., "pt"). - """ + """Move split outputs, write folder metadata, and remove temp files.""" logger.info("Start cleanup") temp_output_path = os.path.join(self.project_root, "data", self.target_dir) @@ -943,23 +791,7 @@ def _export_metadata( col_types: dict[str, str], selected_columns_statistics: dict[str, dict[str, float]], ) -> None: - """Exports the computed data metadata to a JSON file. - - Saves metadata such as class counts, ID mappings, split paths, - column types, and numerical statistics to a JSON file. This file is - saved in the `configs/metadata_configs/` directory, named after the - `data_name_root`. This metadata is essential for initializing the - model and data loaders during training. - - Args: - id_maps: A dictionary containing the id maps for each - categorical column. - n_classes: A dictionary containing the number of classes for - each categorical column. - col_types: A dictionary containing the column types. - selected_columns_statistics: A dictionary containing the - statistics for each numerical column. - """ + """Write metadata config JSON for training/inference.""" data_driven_config = { "n_classes": n_classes, "id_maps": id_maps, @@ -993,19 +825,7 @@ def _export_metadata( @beartype def _create_metadata_for_folder(self, folder_path: str, write_format: str) -> None: - """Scans a directory for batch files, counts samples, and writes metadata.json. - - This method is used when `merge_output` is False. It iterates over all - files in the given `folder_path` matching the `write_format`, loads each - one to count the number of samples (sequences), and writes a `metadata.json` - file in that same folder. This JSON file contains the total sample count and a - list of all batch files with their respective sample counts. - - Args: - folder_path: The path to the directory containing the batch files - for a specific data split. - write_format: The file format of the output files (e.g., 'pt', 'parquet'). - """ + """Write metadata.json for an unmerged split folder.""" logger.info(f"Creating metadata for folder '{folder_path}'") batch_files_metadata = [] total_samples = 0 @@ -1166,37 +986,7 @@ def _apply_column_statistics( n_classes: Optional[dict[str, int]] = None, col_types: Optional[dict[str, str]] = None, ) -> tuple[pl.DataFrame, dict[str, int], dict[str, str]]: - """Applies pre-computed statistics to transform the data. - - This function performs two main transformations on the DataFrame: - 1. **Categorical Mapping**: Replaces original values in categorical - columns with their corresponding integer IDs using `id_maps`. - 2. **Numerical Standardization**: Standardizes numerical columns - (those in `selected_columns_statistics`) using the Z-score - formula: (value - mean) / (std + 1e-9). - - It also computes `n_classes` and `col_types` if they are not provided. - - Args: - data: The input Polars DataFrame to transform. - data_columns: A list of column names to process. - id_maps: A nested dictionary mapping column names to their - value-to-integer-ID maps. - selected_columns_statistics: A nested dictionary mapping - column names to their 'mean' and 'std' statistics. - n_classes: An optional dictionary mapping column names to - their total number of unique classes. If `None`, it's computed - from `id_maps`. - col_types: An optional dictionary mapping column names to - their string data types. If `None`, it's inferred from the - `data` schema. - - Returns: - A tuple `(data, n_classes, col_types)` where: - - `data`: The transformed Polars DataFrame. - - `n_classes`: The (potentially computed) class count dictionary. - - `col_types`: The (potentially computed) column type dictionary. - """ + """Apply categorical maps and numeric standardization.""" if n_classes is None: n_classes = {col: max(id_maps[col].values()) + 1 for col in id_maps} @@ -1235,17 +1025,7 @@ def load_precomputed_id_maps( data_columns: Optional[list[str]], required_maps: Optional[list[str]] = None, ) -> dict[str, dict[Union[str, int], int]]: - """Loads custom ID maps from configs/id_maps if the folder exists. - - Args: - project_root: The path to the project root directory. - data_columns: Optional list of columns present in the data to validate - against the found map files. - required_maps: Optional list of columns for which a precomputed id_map is required - - Returns: - A dictionary mapping column names to their ID maps. - """ + """Load and validate precomputed ID maps.""" custom_maps = {} path = os.path.join(project_root, "configs", "id_maps") @@ -1264,7 +1044,6 @@ def load_precomputed_id_maps( ) with open(os.path.join(path, file), "r") as f: - # Load and ensure values are integers m = {k: int(v) for k, v in json.load(f).items()} if not len(m) > 0: @@ -1328,38 +1107,7 @@ def _get_column_statistics( dict[str, dict[Union[str, int], int]], dict[str, dict[str, float]], ]: - """Computes or updates column statistics from a data chunk. - - This function iterates over the `data_columns` and updates the - `id_maps` and `selected_columns_statistics` dictionaries based on the - provided `data` chunk. - - - For string/integer columns: It creates an ID map of unique values and - merges it with any existing map in `id_maps`. - - For float columns: It computes the mean and standard deviation of the - chunk and combines them with the existing statistics in - `selected_columns_statistics` using a numerically stable parallel - algorithm, weighted by `n_rows_running_count`. - - Args: - data: The Polars DataFrame chunk to process. - data_columns: A list of column names in `data` to analyze. - id_maps: The dictionary of existing ID maps to be updated. - selected_columns_statistics: The dictionary of existing numerical - statistics to be updated. - n_rows_running_count: The total number of rows processed *before* - this chunk, used for weighting statistics. - precomputed_id_maps: A dictionary of pre-loaded ID maps that should - be applied and not re-computed. - - Returns: - A tuple `(id_maps, selected_columns_statistics)` containing the - updated dictionaries. - - Raises: - ValueError: If a column has an unsupported data type (neither - string, integer, nor float). - """ + """Update ID maps and numeric statistics from one chunk.""" if mask_column is not None and mask_column in data.columns: mask_expr = _validate_and_create_mask_column_expr( data[mask_column], data.schema[mask_column], mask_column @@ -1435,26 +1183,7 @@ def _load_and_preprocess_data( max_rows: Optional[int], mask_column: Optional[str] = None, ) -> pl.DataFrame: - """Loads data from a file and performs initial preparation. - - This function reads a data file using the specified `read_format`. - It then performs the following steps: - 1. Asserts that the data contains no null or NaN values. - 2. Selects only the `selected_columns` if provided. - 3. Slices the DataFrame to `max_rows` if provided. - - Args: - data_path: The path to the data file. - read_format: The file format to read (e.g., "csv", "parquet"). - selected_columns: A list of columns to load. If `None`, all - columns are loaded. - max_rows: The maximum number of rows to load. If `None`, all - rows are loaded. - - Returns: - A Polars DataFrame containing the loaded and initially - prepared data. - """ + """Read, validate, column-filter, and row-limit one input file.""" logger.info(f"Reading data from '{data_path}'...") columns_to_read = _selected_columns_with_optional_mask( data_path, read_format, selected_columns, mask_column @@ -1560,34 +1289,7 @@ def _process_batches_multiple_files_inner( subsequence_start_mode: str, mask_column: Optional[str], ): - """Inner function for processing batches of data from multiple files. - - Args: - project_root: The path to the sequifier project directory. - data_name_root: The root name of the data file. - process_id: The id of the process. - file_paths: A list of file paths to process. - read_format: The file format to read. - selected_columns: A list of columns to be included in the preprocessing. - max_rows: The maximum number of rows to process. - schema: The schema for the preprocessed data. - n_cores: The number of cores to use for parallel processing. - layout: The sequence and serialized-window layout. - stride_by_split: A list of step sizes for creating subsequences. - data_columns: A list of data columns. - n_classes: A dictionary containing the number of classes for each categorical column. - id_maps: A dictionary containing the id maps for each categorical column. - selected_columns_statistics: A dictionary containing the statistics for each numerical column. - col_types: A dictionary containing the column types. - split_ratios: A list of floats that define the relative sizes of data splits. - write_format: The file format for the output files. - split_paths: The paths to the output split files. - target_dir: The target directory for temporary files. - batches_per_file: The number of batches to process per file. - merge_output: Whether to combine the output into a single file. - continue_preprocessing: Continue preprocessing job that was interrupted while writing to temp folder. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - """ + """Process this worker's file shard.""" n_files = len(file_paths) if n_files <= 0: raise ValueError("No files found to process.") @@ -1713,29 +1415,7 @@ def _process_batches_single_file( subsequence_start_mode: str, merge_output: bool, ) -> int: - """Processes batches of data from a single file. - - Args: - project_root: The path to the sequifier project directory. - data_name_root: The root name of the data file. - data: The data to process. - schema: The schema for the preprocessed data. - n_cores: The number of cores to use for parallel processing. - layout: The sequence and serialized-window layout. - stride_by_split: A list of step sizes for creating subsequences. - data_columns: A list of data columns. - col_types: A dictionary containing the column types. - split_ratios: A list of floats that define the relative sizes of data splits. - write_format: The file format for the output files. - split_paths: The paths to the output split files. - target_dir: The target directory for temporary files. - batches_per_file: The number of batches to process per file. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - merge_output: merge output - - Returns: - The number of batches processed. - """ + """Split one file into worker batches and preprocess them.""" n_cores = n_cores or multiprocessing.cpu_count() batch_limits = get_batch_limits(data, n_cores) valid_batch_limits = [(s, e) for s, e in batch_limits if (e - s) > 0] @@ -1774,41 +1454,20 @@ def _process_batches_single_file( def get_combined_statistics( n1: int, mean1: float, std1: float, n2: int, mean2: float, std2: float ) -> tuple[float, float]: - """Calculates the combined mean and standard deviation of two data subsets. - - Uses a stable parallel algorithm (related to Welford's algorithm) to - combine statistics from two subsets without needing the original data. - - Args: - n1: Number of samples in subset 1. - mean1: Mean of subset 1. - std1: Standard deviation of subset 1. - n2: Number of samples in subset 2. - mean2: Mean of subset 2. - std2: Standard deviation of subset 2. - - Returns: - A tuple `(combined_mean, combined_std)` containing the combined - mean and standard deviation of the two subsets. - """ + """Combine two mean/std summaries.""" if n1 == 0: return mean2, std2 if n2 == 0: return mean1, std1 - # Step 1: Calculate the combined mean. combined_mean = (n1 * mean1 + n2 * mean2) / (n1 + n2) if n1 + n2 <= 1: return combined_mean, 0.0 - # Step 2: Calculate the pooled sum of squared differences. - # This includes the internal variance of each subset and the variance - # between the subset mean and the combined mean. sum_of_squares1 = (n1 - 1) * std1**2 + n1 * (mean1 - combined_mean) ** 2 sum_of_squares2 = (n2 - 1) * std2**2 + n2 * (mean2 - combined_mean) ** 2 - # Step 3: Calculate the combined standard deviation. combined_std = math.sqrt((sum_of_squares1 + sum_of_squares2) / (n1 + n2 - 1)) return combined_mean, combined_std @@ -1816,20 +1475,7 @@ def get_combined_statistics( @beartype def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int]: - """Creates a map from unique values in a column to integer indices. - - Finds all unique values in the specified `column` of the `data` - DataFrame, sorts them, and creates a dictionary mapping each unique - value to a 1-based integer index. - - Args: - data: The Polars DataFrame containing the column. - column: The name of the column to map. - - Returns: - A dictionary mapping unique values (str or int) to an integer - index (starting from 1). - """ + """Map sorted user values to IDs after reserved tokens.""" ids = sorted( [int(x) if not isinstance(x, str) else x for x in np.unique(data[column])] ) # type: ignore @@ -1871,21 +1517,7 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] @beartype def get_batch_limits(data: pl.DataFrame, n_batches: int) -> list[tuple[int, int]]: - """Calculates row indices to split a DataFrame into batches. - - This function divides the DataFrame into `n_batches` roughly equal - chunks. Crucially, it ensures that no `sequenceId` is split across - two different batches. It does this by finding the ideal split points - and then adjusting them to the nearest `sequenceId` boundary. - - Args: - data: The DataFrame to split. Must be sorted by "sequenceId". - n_batches: The desired number of batches. - - Returns: - A list of `(start_index, end_index)` tuples, where each tuple - defines the row indices for a batch. - """ + """Split rows into batches without crossing sequenceId boundaries.""" sequence_ids = data.get_column("sequenceId").to_numpy() new_sequence_id_indices = np.concatenate( [ @@ -1918,20 +1550,7 @@ def get_batch_limits(data: pl.DataFrame, n_batches: int) -> list[tuple[int, int] def combine_maps( map1: dict[Union[str, int], int], map2: dict[Union[str, int], int] ) -> dict[Union[str, int], int]: - """Combines two ID maps into a new, consolidated map. - - Takes all unique keys from both `map1` and `map2`, sorts them, - and creates a new, single map where keys are mapped to 1-based - indices based on the sorted order. This ensures a consistent - mapping across different data chunks. - - Args: - map1: The first ID map. - map2: The second ID map. - - Returns: - A new, combined, and re-indexed ID map. - """ + """Merge maps and reassign user IDs after reserved tokens.""" keys1 = {k for k in map1.keys() if k not in SPECIAL_TOKEN_LABELS} keys2 = {k for k in map2.keys() if k not in SPECIAL_TOKEN_LABELS} @@ -1940,7 +1559,6 @@ def combine_maps( id_: i + SPECIAL_TOKEN_IDS.user_start for i, id_ in enumerate(combined_keys) } - # Re-apply special mapping rules if these are string keys if combined_keys and isinstance(combined_keys[0], str): id_map[SPECIAL_TOKEN_IDS.labels_by_id[SPECIAL_TOKEN_IDS.unknown]] = ( SPECIAL_TOKEN_IDS.unknown @@ -1954,22 +1572,7 @@ def combine_maps( @beartype def get_group_bounds(data_subset: pl.DataFrame, split_ratios: list[float]): - """Calculates row indices for splitting a sequence into groups. - - This function takes a DataFrame `data_subset` (which typically - contains all items for a single `sequenceId`) and calculates the - row indices to split it into multiple groups (e.g., train, val, test) - based on the provided `split_ratios`. - - Args: - data_subset: The DataFrame (for a single sequence) to split. - split_ratios: A list of floats (e.g., [0.8, 0.1, 0.1]) that - sum to 1.0, defining the relative sizes of the splits. - - Returns: - A list of `(start_index, end_index)` tuples, one for each - proportion, defining the row slices for each group. - """ + """Return per-split row bounds for one sequence.""" n = data_subset.shape[0] upper_bounds = list((np.cumsum(split_ratios) * n).astype(int)) lower_bounds = [0] + list(upper_bounds[:-1]) @@ -1984,26 +1587,7 @@ def process_and_write_data_pt( path: str, column_types: dict[str, str], ): - """Processes the sequence DataFrame and writes it to a .pt file. - - This function takes the long-format sequence DataFrame (`data`), - aggregates it by `sequenceId` and `subsequenceId`, and pivots it - so that each `inputCol` becomes its own column containing a list - of sequence items. It also extracts the `startItemPosition`. - - It then converts these lists into NumPy arrays and stores one full - sequence tensor per feature. Each tensor has shape - `(batch_size, stored_context_width)`. The final five-element tuple - `(sequences_dict, sequence_ids_tensor, subsequence_ids_tensor, start_item_positions_tensor, left_pad_lengths_tensor)` - is saved to a .pt file using `torch.save`. - - Args: - data: The long-format Polars DataFrame of extracted sequences. - stored_context_width: The stored serialized window width. - path: The output file path (e.g., "data/batch_0.pt"). - column_types: A dictionary mapping column names to their - string data types, used to determine the correct torch dtype. - """ + """Write long-format sequences as packed PT tensors.""" if data.is_empty(): return @@ -2079,23 +1663,7 @@ def _write_accumulated_sequences( layout: StoredWindowLayout, col_types: dict[str, str], ): - """Helper to write a batch of accumulated sequences to a single .pt file. - - This function concatenates a list of sequence DataFrames and writes - the combined DataFrame to a single .pt file using - `process_and_write_data_pt`. This is used to batch multiple sequences - into fewer, larger files when `write_format` is 'pt'. - - Args: - sequences_to_write: A list of Polars DataFrames to combine and write. - split_path: The base path for the split (e.g., "data/split0.pt"). - write_format: The file format (e.g., "pt"). - process_id: The ID of the parent multiprocessing process. - file_index: The index of this file batch for this split and process. - target_dir: The temporary directory to write the file into. - layout: The sequence and serialized-window layout. - col_types: A dictionary mapping column names to their string types. - """ + """Write one accumulated sequence shard.""" if not sequences_to_write: return @@ -2133,29 +1701,10 @@ def preprocess_batch( subsequence_start_mode: str, merge_output: bool, ) -> None: - """Processes a batch of data. - - Args: - project_root: The path to the sequifier project directory. - data_name_root: The root name of the data file. - process_id: The id of the process. - batch: The batch of data to process. - schema: The schema for the preprocessed data. - split_paths: The paths to the output split files. - layout: The sequence and serialized-window layout. - stride_by_split: A list of step sizes for creating subsequences. - data_columns: A list of data columns. - col_types: A dictionary containing the column types. - split_ratios: A list of floats that define the relative sizes of data splits. - target_dir: The target directory for temporary files. - write_format: The file format for the output files. - batches_per_file: The number of batches to process per file. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - """ + """Extract and write all split windows for one batch.""" sequence_ids = sorted(batch.get_column("sequenceId").unique().to_list()) if not merge_output: - # New logic for batching sequences into files for .pt format sequences_by_split = {i: [] for i in range(len(split_paths))} file_indices = {i: 0 for i in range(len(split_paths))} @@ -2266,30 +1815,7 @@ def extract_sequences( columns: list[str], subsequence_start_mode: str, ) -> pl.DataFrame: - """Extracts subsequences from a DataFrame of full sequences. - - This function takes a DataFrame where each row contains all items - for a single `sequenceId`. It iterates through each `sequenceId`, - extracts all possible serialized windows using the - specified `stride_for_split`, calculates the starting position of each - subsequence within the original sequence, and formats them into a new, - long-format DataFrame that conforms to the provided `schema`. - - Args: - data: The input Polars DataFrame, grouped by "sequenceId". - schema: The schema for the output long-format DataFrame. - layout: The sequence and serialized-window layout. - stride_for_split: The step size to use when sliding the window - to create subsequences. - columns: A list of the data column names (features) to extract. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - - Returns: - A new, long-format Polars DataFrame containing the extracted - subsequences, matching the provided `schema`. Includes columns - for `sequenceId`, `subsequenceId`, `startItemPosition`, `inputCol`, - and the sequence items ('0', '1', ...). - """ + """Extract long-format windows from grouped sequences.""" if data.is_empty(): return pl.DataFrame(schema=schema) @@ -2341,23 +1867,7 @@ def get_subsequence_starts( stride_for_split: int, subsequence_start_mode: str, ) -> np.ndarray: - """Calculates the start indices for extracting subsequences. - - This function determines the starting indices for sliding a window of - `stored_context_width` over an input sequence of `in_context_length`. It aims to - use `stride_for_split`, but adjusts the step size slightly to ensure - that the windows are distributed as evenly as possible and cover the - full sequence from the beginning to the end. - - Args: - in_context_length: The length of the original input sequence. - stored_context_width: The stored window length to extract. - stride_for_split: The *desired* step size between subsequences. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - - Returns: - A numpy array of integer start indices for each subsequence. - """ + """Return window start indices for distribute/exact modes.""" if subsequence_start_mode not in ["distribute", "exact"]: raise ValueError( f"subsequence_start_mode must be 'distribute' or 'exact', got '{subsequence_start_mode}'" @@ -2392,27 +1902,7 @@ def extract_subsequences( columns: list[str], subsequence_start_mode: str, ) -> tuple[dict[str, list[list[Union[float, int]]]], list[int], np.ndarray]: - """Extracts subsequences from a dictionary of sequence lists. - - This function takes a dictionary `in_seq` where keys are column - names and values are lists of items for a single full sequence. - It first pads the sequences with 0s at the beginning if they are - shorter than `stored_context_width`. Then, it calculates the subsequence - start indices using `get_subsequence_starts` and extracts all - subsequences. - - Args: - in_seq: A dictionary mapping column names to lists of items - (e.g., `{'col_A': [1, 2, 3, 4, 5], 'col_B': [6, 7, 8, 9, 10]}`). - stored_context_width: The stored window length to extract. - stride_for_split: The desired step size between subsequences. - columns: A list of the column names (keys in `in_seq`) to process. - subsequence_start_mode: "distribute" to minimize max subsequence overlap, or "exact". - - Returns: - A dictionary mapping column names to a *list of lists*, where - each inner list is a subsequence. - """ + """Extract padded windows plus left-pad lengths from one sequence.""" in_seq_len = len(in_seq[columns[0]]) pad_len = 0 if in_seq_len < stored_context_width: @@ -2445,18 +1935,7 @@ def extract_subsequences( @beartype def insert_top_folder(path: str, folder_name: str) -> str: - """Inserts a directory name into a file path, just before the filename. - - Example: - `insert_top_folder("a/b/c.txt", "temp")` returns `"a/b/temp/c.txt"` - - Args: - path: The original file path. - folder_name: The name of the folder to insert. - - Returns: - The new path string with the folder inserted. - """ + """Insert folder_name before the basename.""" components = os.path.split(path) new_components = list(components[:-1]) + [folder_name] + [components[-1]] return os.path.join(*new_components) @@ -2464,30 +1943,14 @@ def insert_top_folder(path: str, folder_name: str) -> str: @beartype def cast_columns_to_string(data: pl.DataFrame) -> pl.DataFrame: - """Casts the column names of a Polars DataFrame to strings. - - This is often necessary because Polars schemas may use integers as - column names (e.g., '0', '1', '2'...) which need to be strings for - some operations. - - Args: - data: The Polars DataFrame. - - Returns: - The same DataFrame with its `columns` attribute modified. - """ + """Cast Polars column names to strings.""" data.columns = [str(col) for col in data.columns] return data @beartype def delete_files(files: Union[list[str], dict[int, list[str]]]) -> None: - """Deletes a list of files from the filesystem. - - Args: - files: A list of file paths to delete, or a dictionary - whose values are lists of file paths to delete. - """ + """Delete paths from a list or split-indexed dict.""" if isinstance(files, dict): files = [x for y in list(files.values()) for x in y] for file in files: @@ -2505,29 +1968,7 @@ def create_file_paths_for_multiple_files1( dataset_name: str, write_format: str, ) -> dict[int, list[str]]: - """Creates a dictionary of temporary file paths for a specific data file. - - This is used in the multi-file, `merge_output=True` - workflow. It generates file path names for intermediate batches - *before* they are combined. - - The naming pattern is: - `{dataset_name}-{process_id}-{file_index_str}-split{split}-{batch_id}.{write_format}` - - Args: - project_root: The path to the sequifier project directory. - target_dir: The temporary directory to place files in. - n_splits: The number of data splits. - n_batches: The number of batches created by the process. - process_id: The ID of the multiprocessing worker. - file_index_str: The index of the file being processed by this worker. - dataset_name: The root name of the dataset. - write_format: The file extension. - - Returns: - A dictionary mapping a split index (int) to a list of file paths - (str) for all batches in that split. - """ + """Return per-split temp paths for one multi-file shard.""" files = {} for split in range(n_splits): files_for_split = [ @@ -2552,27 +1993,7 @@ def create_file_paths_for_single_file( dataset_name: str, write_format: str, ) -> dict[int, list[str]]: - """Creates a dictionary of temporary file paths for a single-file run. - - This is used in the single-file, `merge_output=True` - workflow. It generates file path names for intermediate batches - created by different processes *before* they are combined. - - The naming pattern is: - `{dataset_name}-split{split}-{core_id}.{write_format}` - - Args: - project_root: The path to the sequifier project directory. - target_dir: The temporary directory to place files in. - n_splits: The number of data splits. - n_batches: The number of processes (batches) running in parallel. - dataset_name: The root name of the dataset. - write_format: The file extension. - - Returns: - A dictionary mapping a split index (int) to a list of file paths - (str) for all batches in that split. - """ + """Return per-split temp paths for one single-file run.""" files = {} for split in range(n_splits): files_for_split = [ @@ -2598,29 +2019,7 @@ def create_file_paths_for_multiple_files2( dataset_name: str, write_format: str, ) -> dict[int, list[str]]: - """Creates a dictionary of intermediate file paths for a multi-file run. - - This is used in the multi-file, `merge_output=True` - workflow. It generates the file paths for the *combined* files - from each process, which are the *inputs* to the final combination step. - - The naming pattern is: - `{dataset_name}-{process_id}-{file_index}-split{split}.{write_format}` - - Args: - project_root: The path to the sequifier project directory. - target_dir: The temporary directory where files are located. - n_splits: The number of data splits. - n_processes: The total number of multiprocessing workers. - n_files: A dictionary mapping `process_id` to the number of - files that process handled. - dataset_name: The root name of the dataset. - write_format: The file extension. - - Returns: - A dictionary mapping a split index (int) to a list of all - intermediate combined file paths (str) for that split. - """ + """Return per-split intermediate paths for multi-file merge.""" files = {} n_files_max = max(n_files.values()) if n_files else 1 pad_width = len(str(n_files_max - 1)) @@ -2652,31 +2051,7 @@ def combine_multiprocessing_outputs( pre_split_str: Optional[str] = None, post_split_str: Optional[str] = None, ) -> None: - """Combines multiple intermediate batch files into final split files. - - This function iterates through each split and combines all the - intermediate files listed in `input_files[split]` into a single - final output file for that split. - - - For "csv" format, it uses the `csvstack` command-line utility. - - For "parquet" format, it uses `pyarrow.parquet.ParquetWriter` - to concatenate the files efficiently. - - Args: - project_root: The path to the sequifier project directory. - target_dir: The temporary directory containing intermediate files. - n_splits: The number of data splits. - input_files: A dictionary mapping split index (int) to a list - of input file paths (str) for that split. - dataset_name: The root name for the final output files. - write_format: The file format ("csv" or "parquet"). - in_target_dir: If True, the final combined file is written - inside `target_dir`. If False, it's written to `data/`. - pre_split_str: An optional string to insert into the filename - before the "-split{i}" part. - post_split_str: An optional string to insert into the filename - after the "-split{i}" part. - """ + """Combine per-split intermediate files.""" for split in range(n_splits): split_file_path = create_split_file_path( project_root, @@ -2732,18 +2107,7 @@ def create_split_file_path( @beartype def combine_parquet_files(files: list[str], out_path: str) -> None: - """Combines multiple Parquet files into a single Parquet file. - - This function reads the schema from the first file and uses it to - initialize a `ParquetWriter`. It then iterates through all files in - the list, reading each one as a table and writing it to the new - combined file. This is more memory-efficient than reading all files - into one large table first. - - Args: - files: A list of paths to the Parquet files to combine. - out_path: The path for the combined output Parquet file. - """ + """Stream-concatenate Parquet files with the first file schema.""" schema = pq.ParquetFile(files[0]).schema_arrow with pq.ParquetWriter(out_path, schema=schema, compression="snappy") as writer: for file in files: diff --git a/src/sequifier/sequifier.py b/src/sequifier/sequifier.py index 54168070..ad62ec32 100644 --- a/src/sequifier/sequifier.py +++ b/src/sequifier/sequifier.py @@ -14,15 +14,7 @@ @beartype def build_args_config(args: Any) -> dict[str, Any]: - """ - Build configuration dictionary from command-line arguments. - - Args: - args: Parsed command-line arguments. - - Returns: - Dictionary containing configuration options. - """ + """Build config overrides from parsed CLI args.""" args_config = { k: v @@ -55,12 +47,7 @@ def build_args_config(args: Any) -> dict[str, Any]: @beartype def setup_parser() -> ArgumentParser: - """ - Set up the argument parser for the command-line interface. - - Returns: - Configured ArgumentParser object. - """ + """Build the sequifier CLI parser.""" parser = ArgumentParser() subparsers = parser.add_subparsers(dest="command", help="Available commands") diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 8f294da7..3a68058c 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -86,7 +86,7 @@ def cleanup(): - """Cleans up the distributed training environment.""" + """Destroy the active distributed process group.""" dist.destroy_process_group() @@ -122,16 +122,7 @@ def train_worker( global_rank: int, torch_compile: str, ): - """The worker function for distributed training. - - Args: - rank: The rank of the current process. - world_size: The total number of processes. - config: The training configuration. - from_folder: Whether to load data from a folder (e.g., preprocessed .pt files) - or a single file (e.g., .parquet). - global_rank: The global rank - """ + """Run one local distributed-training worker.""" logger = configure_logger(config.project_root, config.model_name, global_rank) if config.training_spec.distributed: @@ -141,7 +132,6 @@ def train_worker( global_rank, local_rank, world_size, config.training_spec.backend ) - # 1. Create Datasets and DataLoaders with DistributedSampler if from_folder: if config.read_format == "pt": if config.training_spec.load_full_data_to_ram: @@ -425,12 +415,7 @@ def _mp_train_worker_wrapper( @beartype def train(args: Any, args_config: dict[str, Any]) -> None: - """The main training function. - - Args: - args: The command-line arguments. - args_config: The configuration dictionary. - """ + """Load train config and launch local or distributed training.""" config_path = args.config_path or "configs/train.yaml" config = load_train_config(config_path, args_config, args.skip_metadata) @@ -481,14 +466,7 @@ def train(args: Any, args_config: dict[str, Any]) -> None: @beartype def format_number(number: Union[int, float, np.float32]) -> str: - """Format a number for display. - - Args: - number: The number to format. - - Returns: - A formatted string representation of the number. - """ + """Format finite values, zero, and NaN for logs.""" if np.isnan(number): return "NaN" elif number == 0: @@ -565,29 +543,16 @@ def accumulate_class_counts( class TransformerEmbeddingModel(nn.Module): - """A wrapper around the TransformerModel to expose the embedding functionality.""" + """Embedding-only wrapper for TransformerModel.""" def __init__(self, transformer_model: "TransformerModel"): - """Initializes the TransformerEmbeddingModel. - - Args: - transformer_model: The TransformerModel to wrap. - """ super().__init__() self.transformer_model = transformer_model self.logger = self.transformer_model.logger @beartype def _copy_model(self): - """Copies the model. - - This creates a deep copy of the model, typically for saving the - "best model". It temporarily removes the `log_file` attribute - before copying to avoid errors, then re-initializes it. - - Returns: - A deep copy of the current TransformerModel instance. - """ + """Deep-copy without copying the logger handle.""" logger_ref = self.transformer_model.logger del self.transformer_model.logger del self.logger @@ -599,14 +564,7 @@ def _copy_model(self): @conditional_beartype def forward(self, src: dict[str, Tensor], metadata: dict[str, Tensor]): - """Forward pass for the embedding model. - - Args: - src: The input data. - - Returns: - The embedded output. - """ + """Return embedding output from the wrapped model.""" return self.transformer_model.forward_embed(src, metadata=metadata) @@ -627,30 +585,13 @@ def forward(self, *inputs: Tensor): class TransformerModel(nn.Module): - """The main Transformer model for the sequifier. - - This class implements the Transformer model, including the training and - evaluation loops, as well as the export functionality. - """ + """Sequifier transformer plus train/eval/export routines.""" @beartype def __init__( self, hparams: Any, rank: Optional[int] = None, local_rank: Optional[int] = None ): - """Initializes the TransformerModel. - - Based on the hyperparameters, this initializes: - - Embeddings for categorical and real features (self.encoder) - - Positional encoders (self.pos_encoder) - - The main TransformerEncoder (self.transformer_encoder) - - Output decoders for each target column (self.decoder) - - Loss functions (self.criterion) - - Optimizer (self.optimizer) and scheduler (self.scheduler) - - Args: - hparams: The hyperparameters for the model (e.g., from TrainModel config). - rank: The rank of the current process (for distributed training). - """ + """Build model modules and training state from config.""" super().__init__() self.project_root = hparams.project_root self.model_type = "Transformer" @@ -852,7 +793,7 @@ def __init__( @beartype def initialize_optimizer(self, params: Any = None) -> None: - """Initializes the optimizer and scheduler.""" + """Create optimizer and scheduler from training config.""" if params is None: params = self.parameters() @@ -867,7 +808,7 @@ def initialize_optimizer(self, params: Any = None) -> None: @beartype def _apply_layer_dtypes(self) -> None: - """Casts specific layer types to configured dtypes (e.g., bfloat16, float8).""" + """Cast configured layer classes to requested dtypes.""" layer_config = self.hparams.training_spec.layer_type_dtypes if not layer_config: @@ -875,9 +816,7 @@ def _apply_layer_dtypes(self) -> None: self.logger.info(f"[INFO] Applying custom layer dtypes: {layer_config}") - # Iterate over all sub-modules and cast based on type for name, module in self.named_modules(): - # Linear Layers if isinstance(module, nn.Linear): is_decoder = any(module is m for m in self.decoder.values()) if is_decoder and "decoder" in layer_config: @@ -885,12 +824,10 @@ def _apply_layer_dtypes(self) -> None: elif "linear" in layer_config: module.to(dtype=get_torch_dtype(layer_config["linear"])) - # Embeddings elif isinstance(module, nn.Embedding) and "embedding" in layer_config: target_dtype = get_torch_dtype(layer_config["embedding"]) module.to(dtype=target_dtype) - # Normalization (RMSNorm, LayerNorm) elif isinstance(module, (nn.LayerNorm, RMSNorm)) and "norm" in layer_config: target_dtype = get_torch_dtype(layer_config["norm"]) module.to(dtype=target_dtype) @@ -903,15 +840,7 @@ def _apply_layer_dtypes(self) -> None: @beartype def _init_criterion(self, hparams: Any) -> ModuleDict: - """Initializes the criterion (loss function) for each target column. - - Args: - hparams: The hyperparameters for the model, used to find criterion names - and class weights. - - Returns: - A dictionary mapping target column names to their loss function instances. - """ + """Build unreduced per-target loss modules.""" criterion = ModuleDict() for target_column in self.target_columns: criterion_name = hparams.training_spec.criterion[target_column] @@ -941,19 +870,7 @@ def _get_feature_embedding_dims( categorical_columns: list[str], real_columns: list[str], ) -> dict[str, int]: - """Calculates the embedding dimension for each column. - - This attempts to distribute the total `embedding_size` across all - input columns. - - Args: - embedding_size: The total embedding dimension (initial_embedding_dim). - categorical_columns: List of categorical column names. - real_columns: List of real-valued column names. - - Returns: - A dictionary mapping column names to their calculated embedding dimension. - """ + """Allocate embedding dimensions across homogeneous input columns.""" if not (len(categorical_columns) + len(real_columns)) > 0: raise ValueError("No columns found") @@ -1000,35 +917,17 @@ def _get_feature_embedding_dims( @staticmethod def _generate_square_subsequent_mask(sz: int) -> Tensor: - """Generates an upper-triangular matrix of -inf, with zeros on diag. - - This is used as a mask to prevent attention to future tokens in the - transformer. - - Args: - sz: The size of the square mask (sequence length). - - Returns: - A square tensor of shape (sz, sz) with -inf in the upper triangle. - """ + """Return a causal attention mask.""" return torch.triu(torch.ones(sz, sz) * float("-inf"), diagonal=1) @staticmethod def _filter_key(dict_: dict[str, Any], key: str) -> dict[str, Any]: - """Filters a key from a dictionary. - - Args: - dict_: The dictionary to filter. - key: The key to remove. - - Returns: - A new dictionary without the specified key. - """ + """Return a copy without key.""" return {k: v for k, v in dict_.items() if k != key} @beartype def _init_weights(self) -> None: - """Initializes the weights of the model.""" + """Initialize trainable weights with the model default.""" init_std = 0.02 for col in self.categorical_columns: self.encoder[col].weight.data.normal_(mean=0.0, std=init_std) @@ -1048,18 +947,7 @@ def _init_weights(self) -> None: @conditional_beartype def _recursive_concat(self, srcs: list[Tensor]): - """Recursively concatenates a list of tensors. - - This is used to avoid device-specific limits on the number of tensors - that can be concatenated at once by breaking the operation into - smaller, recursive chunks. - - Args: - srcs: A list of tensors to concatenate along dimension 2. - - Returns: - A single tensor resulting from the recursive concatenation. - """ + """Concatenate tensors in chunks to avoid device concat limits.""" if len(srcs) <= self.device_max_concat_length: return torch.cat(srcs, 2) else: @@ -1106,31 +994,14 @@ def _build_attention_mask(self, valid_mask: Tensor, dtype: torch.dtype) -> Tenso @conditional_beartype def _zero_padding_positions(self, x: Tensor, valid_mask: Tensor) -> Tensor: - """ - x shape: - (batch_size, context_length, dim_model) - - Zeroes padded query positions so padded rows do not keep evolving. - """ + """Zero padded query positions after attention/FFN layers.""" return x * valid_mask[:, :, None].to(dtype=x.dtype) @conditional_beartype def forward_inner( self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> Tensor: - """The inner forward pass of the model. - - This handles embedding lookup, positional encoding, and passing the - combined tensor through the transformer encoder. - - Args: - src: A dictionary mapping column names to input tensors - (batch_size, context_length). - - Returns: - The raw output tensor from the TransformerEncoder - (context_length, batch_size, dim_model). - """ + """Encode inputs into contextual hidden states.""" srcs = [] for col in self.categorical_columns: src_t = self.encoder[col](src[col].T) * math.sqrt( @@ -1210,37 +1081,14 @@ def forward_inner( def forward_embed( self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> Tensor: - """Forward pass for the embedding model. - - This returns only the embedding from the *last* token in the sequence. - - Args: - src: A dictionary mapping column names to input tensors - (batch_size, context_length). - - Returns: - The embedding tensor for the last token - (batch_size, dim_model). - """ + """Return final-step embeddings.""" return self.forward_inner(src, metadata)[-self.prediction_length :, :, :] @conditional_beartype def forward_train( self, src: dict[str, Tensor], metadata: dict[str, Tensor] ) -> dict[str, Tensor]: - """Forward pass for training. - - This runs the inner forward pass and then applies the appropriate - decoder for each target column. - - Args: - src: A dictionary mapping column names to input tensors - (batch_size, context_length). - - Returns: - A dictionary mapping target column names to their raw output - (logit) tensors (context_length, batch_size, n_classes/1). - """ + """Return raw decoded outputs for all target columns.""" output = self.forward_inner(src, metadata) output = { target_column: self.decode(target_column, output) @@ -1251,19 +1099,7 @@ def forward_train( @conditional_beartype def decode(self, target_column: str, output: Tensor) -> Tensor: - """Decodes the output of the transformer encoder. - - Applies the appropriate final linear layer for a given target column. - - Args: - target_column: The name of the target column to decode. - output: The raw output tensor from the TransformerEncoder - (context_length, batch_size, dim_model). - - Returns: - The decoded output (logits or real value) for the target column - (context_length, batch_size, n_classes/1). - """ + """Project hidden states through one target decoder.""" target_dtype = self.decoder[target_column].weight.dtype decoded = self.decoder[target_column](output.to(target_dtype)).to(torch.float32) @@ -1272,18 +1108,7 @@ def decode(self, target_column: str, output: Tensor) -> Tensor: @conditional_beartype def apply_softmax(self, target_column: str, output: Tensor) -> Tensor: - """Applies softmax to the output of the decoder. - - If the target is real, it returns the output unchanged. - If the target is categorical, it applies LogSoftmax. - - Args: - target_column: The name of the target column. - output: The decoded output tensor (logits or real value). - - Returns: - The output tensor, with LogSoftmax applied if categorical. - """ + """Apply LogSoftmax only for categorical targets.""" if target_column in self.real_columns: return output else: @@ -1296,21 +1121,7 @@ def forward( metadata: dict[str, Tensor], return_logits: Union[bool, Tensor] = False, ) -> dict[str, Tensor]: - """The main forward pass of the model. - - This is typically used for inference/evaluation, returning the - probabilities/values for the *last* token in the sequence. - - Args: - src: A dictionary mapping column names to input tensors - (batch_size, context_length). - return_logits: Return logits - - Returns: - A dictionary mapping target column names to their final - output (LogSoftmax probabilities or real values) for the - last token (batch_size, n_classes/1). - """ + """Return final-step logits or predictions for inference/eval.""" output = self.forward_train(src, metadata) if return_logits: return output @@ -1345,14 +1156,7 @@ def _get_full_state_dict( @beartype def _check_and_terminate(self): - """Checks for an external pruning signal and terminates the process if required. - - This method looks for a specific `.prune` file generated by the Optuna orchestrator. - If running in a distributed setting, the rank 0 process checks for the file and - broadcasts a termination signal to all other ranks. If the signal is received, - the process cleans up its distributed process group, clears the GPU cache, and - gracefully exits with code 143 (SIGTERM) to allow Optuna to prune the trial. - """ + """Exit 143 when rank 0 broadcasts an Optuna prune sentinel.""" if os.getenv("SEQUIFIER_HYPERPARAMETER_SEARCH_RUN") is not None: should_prune = 0 if self.rank == 0: @@ -1388,16 +1192,7 @@ def train_model( valid_loader: DataLoader, ddp_model: Optional[nn.Module] = None, ) -> None: - """Trains the model. - - This method contains the main training loop, including epoch iteration, - validation, early stopping logic, and model saving/exporting. - - Args: - train_loader: DataLoader for the training dataset. - valid_loader: DataLoader for the validation dataset. - ddp_model: ddp model - """ + """Run epochs, validation, checkpointing, export, and interruption cleanup.""" self.logger.info(f"--- Starting Training for model: {self.model_name} ---") best_val_loss = float("inf") @@ -1485,10 +1280,8 @@ def train_model( if self.hparams.training_spec.distributed: dist.barrier() - # 1. Use a list to hold the answer so it can be broadcasted across ranks answer_list = ["n"] - # 2. Only Rank 0 prompts the user if self.rank == 0: try: answer = ( @@ -1503,11 +1296,9 @@ def train_model( except EOFError: # Handle non-interactive environments answer_list[0] = "n" - # 3. Broadcast the decision to all GPUs so they stay in sync if self.hparams.training_spec.distributed: dist.broadcast_object_list(answer_list, src=0) - # 4. If the decision is 'y', ALL ranks must participate in state dict extraction if answer_list[0] == "y": if self.rank == 0: self.logger.info("[INFO] User opted to export models.") @@ -1518,10 +1309,9 @@ def train_model( f"[INFO] Exporting 'last' model from epoch {last_epoch}..." ) - # ALL RANKS MUST EXECUTE THIS to prevent FSDP all_gather deadlocks + # FSDP state extraction is collective; only rank 0 writes the result. last_model_state = self._get_full_state_dict(ddp_model) - # ONLY Rank 0 executes the file I/O if self.rank == 0: self._export(last_model_state, "last", last_epoch) @@ -1551,8 +1341,6 @@ def train_model( ) best_model_state = last_model_state - # 2. Restrict the export saving to Rank 0 inside the _export method (which you already do) - # or guard the I/O specifically: if self.rank == 0: self._export(last_model_state, "last", last_epoch, clean=True) # type: ignore self._export(best_model_state, "best", last_epoch, clean=True) # type: ignore @@ -1569,16 +1357,7 @@ def _train_epoch( epoch: int, ddp_model: Optional[nn.Module] = None, ) -> None: - """Trains the model for one epoch. - - Iterates through the training DataLoader, computes loss, performs - backpropagation, and updates model parameters. The DataLoader is expected - to yield SequifierBatch objects. IDs are currently unused in this loop. - - Args: - train_loader: DataLoader for the training dataset. - epoch: The current epoch number (used for logging). - """ + """Run one train epoch with optional mid-epoch saves.""" total_loss = 0.0 batches_aggregated = 0 @@ -1772,24 +1551,7 @@ def _calculate_loss( targets: dict[str, Tensor], metadata: dict[str, Tensor], ) -> tuple[Tensor, dict[str, Tensor]]: - """Calculates the loss for the given output and targets. - - Compares the model's output (from `forward_train`) with the target - values, applying the appropriate criterion for each target column - and combining them using loss weights. - - Args: - output: A dictionary of output tensors from the model - (context_length, batch_size, n_classes/1). - targets: A dictionary of target tensors - (batch_size, context_length). - - Returns: - A tuple containing: - - The total combined (weighted) loss as a single Tensor. - - A dictionary of individual (unweighted) loss Tensors for each - target column. - """ + """Return weighted mean loss and per-target components over valid tokens.""" target_names = [k for k in targets.keys() if k in self.target_column_types] if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") @@ -1903,15 +1665,7 @@ def _calculate_loss_components( @beartype def _copy_model(self): - """Copies the model. - - This creates a deep copy of the model, typically for saving the - "best model". It temporarily removes the `log_file` attribute - before copying to avoid errors, then re-initializes it. - - Returns: - A deep copy of the current TransformerModel instance. - """ + """Deep-copy without copying the logger handle.""" logger_ref = self.logger del self.logger model_copy = copy.deepcopy(self) @@ -1921,20 +1675,7 @@ def _copy_model(self): @beartype def _transform_val(self, col: str, val: Tensor) -> Tensor: - """ "Transforms input data to match the format of model output. - - This is used *only* for calculating the baseline loss, where - the input (e.g., categorical indices) needs to be one-hot encoded - to be comparable to the model's (logit) output. - - Args: - col: The name of the column being transformed. - val: The input tensor (categorical indices). - - Returns: - A tensor transformed to be compatible with the loss function - (e.g., one-hot encoded). - """ + """Transform targets into baseline-loss output shape.""" if self.target_column_types[col] == "categorical": target_dtype = self.decoder[col].weight.dtype return ( @@ -1951,26 +1692,7 @@ def _transform_val(self, col: str, val: Tensor) -> Tensor: def _evaluate( self, valid_loader: DataLoader, ddp_model: Optional[nn.Module] = None ) -> tuple[np.float32, dict[str, np.float32], ClassCounts]: - """Evaluates the model on the validation set. - - Iterates through the validation data, calculates the total loss, - and aggregates results across all processes if in distributed mode. - Also calculates a one-time baseline loss on the first call. The - DataLoader is expected to yield SequifierBatch objects. IDs are - currently unused during evaluation. Class shares are counted over - the same valid token population as validation loss; for BERT this - means masked evaluation positions, not all sequence positions. - - Args: - valid_loader: DataLoader for the validation dataset. - ddp_model: DDP model - - Returns: - A tuple containing: - - The total aggregated validation loss (float). - - A dictionary of aggregated losses for each target column (dict[str, float]). - - A dictionary of globally aggregated class-count tensors. - """ + """Evaluate validation loss and optional class-share counts.""" model_to_call = ddp_model if ddp_model is not None else self target_names = list(self.target_columns) @@ -2258,16 +1980,7 @@ def _export( epoch: int, clean: bool = False, ) -> None: - """Exports the model. - - This is a wrapper function that handles exporting the model (and - optionally the embedding-only model) on rank 0 only. - - Args: - state_dict: The state dict of the model instance to export (e.g., best model or last model). - suffix: A string suffix to append to the model filename (e.g., "best", "last"). - epoch: The current epoch number, included in the filename. - """ + """Export configured model variants from rank 0.""" if self.rank != 0: return @@ -2297,16 +2010,7 @@ def _export_model( suffix: str, epoch: int, ) -> None: - """Exports the model to ONNX and/or PyTorch format. - - Saves the model weights as a .pt file and/or exports the model - graph and weights as an .onnx file based on the config. - - Args: - model: The model instance (TransformerModel or TransformerEmbeddingModel). - suffix: A string suffix for the filename (e.g., "best", "last-embedding"). - epoch: The current epoch number, included in the filename. - """ + """Write one model as ONNX and/or PT.""" os.makedirs(os.path.join(self.project_root, "models"), exist_ok=True) if self.export_onnx: @@ -2388,7 +2092,6 @@ def _export_model( logging.getLogger("torch.onnx").setLevel(logging.ERROR) except (ImportError, AttributeError): torch.onnx.disable_log() # Fallback for older PyTorch versions - # 2. Catch and ignore standard Python warnings temporarily with warnings.catch_warnings(), open( os.devnull, "w" ) as fnull, contextlib.redirect_stdout(fnull), contextlib.redirect_stderr( @@ -2437,16 +2140,7 @@ def _save( ddp_model: Optional[nn.Module] = None, suffix: Optional[str] = None, ) -> None: - """Saves the model checkpoint. - - Saves the model state, optimizer state, and epoch number to a .pt - file in the checkpoints directory. Only runs on rank 0. - - Args: - val_loss: The validation loss at the current epoch. - ddp_model: DDP model - suffix: Checkpoint file suffix. - """ + """Save rank-0 checkpoint state.""" model_to_extract = ddp_model if ddp_model is not None else self if self.hparams.training_spec.data_parallelism == "FSDP": @@ -2498,18 +2192,7 @@ def _save( @beartype def _get_optimizer(self, params: Any, **kwargs): - """Gets the optimizer. - - Initializes the optimizer specified in the hyperparameters. - - Args: - params: params - **kwargs: Additional arguments to pass to the optimizer constructor - (e.g., weight_decay). - - Returns: - An initialized torch.optim.Optimizer instance. - """ + """Instantiate the configured optimizer.""" optimizer_class = get_optimizer_class(self.hparams.training_spec.optimizer.name) return optimizer_class( params, lr=self.hparams.training_spec.learning_rate, **kwargs @@ -2517,17 +2200,7 @@ def _get_optimizer(self, params: Any, **kwargs): @beartype def _get_scheduler(self, **kwargs): - """Gets the scheduler. - - Initializes the learning rate scheduler specified in the hyperparameters. - - Args: - **kwargs: Additional arguments to pass to the scheduler constructor - (e.g., step_size). - - Returns: - An initialized torch.optim.lr_scheduler._LRScheduler instance. - """ + """Instantiate the configured LR scheduler.""" scheduler_name = self.hparams.training_spec.scheduler.name if hasattr(torch.optim.lr_scheduler, scheduler_name): scheduler_class = getattr(torch.optim.lr_scheduler, scheduler_name) @@ -2539,21 +2212,12 @@ def _get_scheduler(self, **kwargs): @beartype def _initialize_log_file(self): - """Initializes the log file.""" - # Replaces old LogFile class instantiation + """Attach the configured logger.""" self.logger = configure_logger(self.project_root, self.model_name, self.rank) @beartype def _get_latest_model_name(self) -> Optional[str]: - """Gets the name of the latest model checkpoint. - - Scans the checkpoints directory for files matching the current - `model_name` and returns the path to the most recently modified one. - - Returns: - The file path (str) to the latest checkpoint, or None if no - checkpoint is found. - """ + """Return the newest checkpoint path for this model name.""" checkpoint_path = os.path.join(self.project_root, "checkpoints", "*") files = glob.glob(checkpoint_path) @@ -2576,21 +2240,7 @@ def _log_epoch_results( class_counts: ClassCounts, global_step: int, ) -> None: - """Logs the results of an epoch. - - Writes validation loss, individual losses, learning rate, and - class share statistics (if configured) to the log file. - Only runs on rank 0. - - Args: - epoch: Current epoch number. - elapsed: Time taken for the epoch (in seconds). - total_loss: The total aggregated validation loss. - total_losses: A dictionary of aggregated losses for each target. - class_counts: Globally aggregated class-count tensors used for - class share logging. - batch: Current batch number. - """ + """Log validation metrics and class shares from rank 0.""" if self.rank == 0: learning_rate = self.optimizer.state_dict()["param_groups"][0]["lr"] @@ -2661,21 +2311,7 @@ def load_inference_model( device: str, infer_with_dropout: bool, ) -> torch.nn.Module: - """Loads a trained model for inference. - - Args: - model_type: "generative" or "embedding". - model_path: Path to the saved .pt model file. - training_config_path: Path to the .yaml config file used for training. - args_config: A dictionary of override configurations. - device: The device to load the model onto (e.g., "cuda", "cpu"). - infer_with_dropout: Whether to force dropout layers to be active - during inference. - - Returns: - The loaded and compiled torch.nn.Module (TransformerModel or - TransformerEmbeddingModel) in evaluation mode. - """ + """Load a PT checkpoint as a generative or embedding inference module.""" skip_metadata = args_config.get("skip_metadata", False) args_config_subset = { k: v for k, v in args_config.items() if k not in ["model_path", "data_path"] @@ -2730,18 +2366,7 @@ def infer_with_embedding_model( target_columns: list[str], metadata: list[dict[str, np.ndarray]], ) -> np.ndarray: - """Performs inference with an embedding model. - - Args: - model: The loaded TransformerEmbeddingModel. - x: A list of input data dictionaries (batched). - device: The device to run inference on. - size: The total number of samples (unused in this function). - target_columns: List of target column names (unused in this function). - - Returns: - A NumPy array containing the concatenated embeddings from all batches. - """ + """Run batched embedding inference and concatenate CPU outputs.""" outs0 = [] categorical_cols = set(model.transformer_model.categorical_columns) @@ -2790,19 +2415,7 @@ def infer_with_generative_model( target_columns: list[str], metadata: list[dict[str, np.ndarray]], ) -> dict[str, np.ndarray]: - """Performs inference with a generative model. - - Args: - model: The loaded TransformerModel. - x: A list of input data dictionaries (batched). - device: The device to run inference on. - size: The total number of samples to trim the final output to. - target_columns: List of target column names to extract from the output. - - Returns: - A dictionary mapping target column names to their concatenated - output NumPy arrays, trimmed to `size`. - """ + """Run batched generative inference and trim CPU outputs.""" outs0 = [] categorical_cols = set(model.categorical_columns) diff --git a/src/sequifier/visualize_training.py b/src/sequifier/visualize_training.py index fb459ced..c888a0f3 100644 --- a/src/sequifier/visualize_training.py +++ b/src/sequifier/visualize_training.py @@ -6,19 +6,14 @@ from typing import Any, Optional import numpy as np -import plotly.colors as pc # Added to fetch consistent colors +import plotly.colors as pc import plotly.graph_objects as go from beartype import beartype - -# Import Loguru and your custom logger config from loguru import logger from plotly.subplots import make_subplots from sequifier.helpers import configure_logger -# ------------------------------------------------------------------------- -# Configuration & Setup -# ------------------------------------------------------------------------- VAL_PATTERN = re.compile( r"\[INFO\] Validation\s+\|\s*Epoch:\s*(\d+)\s+\|\s*Batch:\s*(\d+)\s+\|\s*Loss:\s*([^\s\|]+)\s+\|\s*Baseline Loss:\s*([^\s\|]+)" ) @@ -28,24 +23,21 @@ ) -# ------------------------------------------------------------------------- -# Custom Exceptions & Dataclasses -# ------------------------------------------------------------------------- class LogParsingError(Exception): - """Raised when a log line does not conform to the expected regex pattern.""" + """Malformed training log line.""" pass class DataContinuityError(Exception): - """Raised when training batches or epochs violate chronological order.""" + """Non-monotonic training batch or epoch sequence.""" pass @dataclass class TrainingMetrics: - """Encapsulates all extracted metrics to avoid returning massive generic tuples.""" + """Parsed validation, baseline, variable, and training losses.""" val_losses: dict[float, float] = field(default_factory=dict) baseline_losses: dict[float, float] = field(default_factory=dict) @@ -55,18 +47,15 @@ class TrainingMetrics: ) def clear_state(self) -> None: - """Clears all metrics; used when a sequence run restarts.""" + """Clear parsed metrics after a detected run restart.""" self.val_losses.clear() self.baseline_losses.clear() self.var_losses.clear() self.train_losses.clear() -# ------------------------------------------------------------------------- -# Core Parsing Logic -# ------------------------------------------------------------------------- class LogParser: - """Handles line-by-line log parsing, encapsulating state to reduce complexity.""" + """Stateful parser for sequifier training logs.""" def __init__(self, model_name: str): self.model = model_name @@ -90,7 +79,7 @@ def parse_file(self, log_file: str) -> TrainingMetrics: @beartype def _process_line(self, line: str) -> None: - """Routes the line to the appropriate sub-parser based on strict string matching.""" + """Dispatch one log line to the matching parser.""" if "[INFO] Validation | Epoch:" in line: self._process_validation(line) elif self.pending_var_loss_epoch is not None and "[INFO] - " in line: @@ -111,7 +100,6 @@ def _process_validation(self, line: str) -> None: val_loss = parse_number(match.group(3)) baseline = parse_number(match.group(4)) - # Check for restart (epoch 0, batch 0) or standard jump back if (epoch == 0 and batch == 0) or ( self.current_epoch is not None and epoch < self.current_epoch and epoch != 0 ): @@ -120,17 +108,14 @@ def _process_validation(self, line: str) -> None: self.current_batch = None self.expected_num_batches = None - # Determine precise x-coordinate for plotting if ( epoch == 0 and batch > 0 and self.current_epoch is not None and self.expected_num_batches is not None ): - # Mid-epoch validation saves pass epoch as 0 in train.py calc_epoch = self.current_epoch - 1 + (batch / self.expected_num_batches) elif self.expected_num_batches is not None and batch > 0: - # End-of-epoch validation calc_epoch = epoch - 1 + (batch / self.expected_num_batches) else: calc_epoch = float(epoch) @@ -215,7 +200,7 @@ def _validate_chronology(self, epoch: int, batch: int, num_batches: int) -> None ) def _handle_epoch_1_restart(self) -> None: - """Handles edge cases where a sequence restarts at Epoch 1 skipping Epoch 0.""" + """Handle restarts that resume at epoch 1 without epoch 0 logs.""" if 0.0 not in self.metrics.val_losses: self.metrics.clear_state() else: @@ -243,19 +228,16 @@ def _validate_final_metrics(self) -> None: raise DataContinuityError(f"[{self.model}]: No baseline loss data found.") -# ------------------------------------------------------------------------- -# Utility Functions -# ------------------------------------------------------------------------- @beartype def parse_number(val: str) -> float: - """Strictly parse numbers, explicitly handling the 'NaN' strings.""" + """Parse finite floats and literal NaN.""" val = val.strip() return np.nan if val == "NaN" else float(val) @beartype def parse_args_to_models(args: argparse.Namespace) -> list[str]: - """Extracts the list of models from a file or comma-separated string.""" + """Read model names from a file or comma-separated argument.""" if os.path.isfile(args.models) and args.models.endswith(".txt"): with open(args.models, "r") as f: content = f.read() @@ -266,7 +248,7 @@ def parse_args_to_models(args: argparse.Namespace) -> list[str]: @beartype def get_log_filepath(args: argparse.Namespace, model: str) -> str: - """Finds the appropriate log file for a given model.""" + """Return the rank-0 log path for a model.""" log_pattern = os.path.join( args.project_root, "logs", f"sequifier-{model}-rank0-3.txt" ) @@ -290,7 +272,7 @@ def get_log_filepath(args: argparse.Namespace, model: str) -> str: def format_plot_data( metrics: TrainingMetrics, bucket_batches: Optional[int], model: str ) -> dict[str, Any]: - """Formats raw parsed dataclass metrics into chronological arrays for Plotly.""" + """Convert parsed metrics into Plotly-ready arrays.""" val_x = sorted(list(metrics.val_losses.keys())) val_y = [metrics.val_losses[e] for e in val_x] base_y = [metrics.baseline_losses[e] for e in val_x] @@ -347,14 +329,11 @@ def format_plot_data( } -# ------------------------------------------------------------------------- -# Plotting & Reporting -# ------------------------------------------------------------------------- @beartype def _generate_single_model_plot( model: str, data: dict[str, Any], yaxis_type: str, out_path: str ) -> None: - """Handles subplot logic specifically for a single model.""" + """Write a single-model training report.""" has_var_losses = bool(data.get("var_losses")) subplot_titles = ( ("Global Losses", "Normalized Variable Validation Losses") @@ -446,18 +425,17 @@ def _generate_single_model_plot( def _generate_multi_model_plot( models: list[str], all_data: dict[str, Any], yaxis_type: str, out_path: str ) -> None: - """Handles subplot logic for comparing multiple models side-by-side.""" + """Write a multi-model training report.""" fig = make_subplots( rows=1, cols=2, subplot_titles=("Validation Losses", "Training Losses") ) baseline_val = None - colors = pc.qualitative.Plotly # Load Plotly's default distinct color array + colors = pc.qualitative.Plotly for i, model in enumerate(models): data = all_data[model] - color = colors[i % len(colors)] # Cycle colors if models exceed palette limit + color = colors[i % len(colors)] - # Validation trace fig.add_trace( go.Scatter( x=data["val_x"], @@ -466,14 +444,13 @@ def _generate_multi_model_plot( name=model, legendgroup=model, line=dict(color=color), - showlegend=True, # Only show validation trace in legend to prevent duplicates + showlegend=True, hovertemplate=f"{model}
Val Loss: %{{y}}
Epoch: %{{x}}", ), row=1, col=1, ) - # Training trace fig.add_trace( go.Scatter( x=data["train_x"], @@ -482,7 +459,7 @@ def _generate_multi_model_plot( name=model, legendgroup=model, line=dict(color=color), - showlegend=False, # Hidden from legend, but linked via legendgroup + showlegend=False, hovertemplate=f"{model}
Train Loss: %{{y}}
Epoch: %{{x}}", ), row=1, @@ -504,7 +481,6 @@ def _generate_multi_model_plot( ) if baseline_val is not None: - # Plot baseline on the Validation subplot (col=1) max_val_x = max( [max(all_data[m]["val_x"]) for m in models if all_data[m]["val_x"]] + [0] ) @@ -534,7 +510,7 @@ def _generate_multi_model_plot( def generate_html_report( all_data: dict[str, Any], models: list[str], args: argparse.Namespace ) -> None: - """Router function to generate the appropriate HTML report based on model count.""" + """Write the model-count-appropriate HTML report.""" output_dir = os.path.join(args.project_root, "outputs", "visualization") os.makedirs(output_dir, exist_ok=True) @@ -549,12 +525,9 @@ def generate_html_report( _generate_multi_model_plot(models, all_data, yaxis_type, out_path) -# ------------------------------------------------------------------------- -# Orchestrator -# ------------------------------------------------------------------------- @beartype def visualize_training(args: argparse.Namespace) -> None: - """Main orchestrator function.""" + """Parse logs and write training visualization HTML.""" models = parse_args_to_models(args) if not models: raise ValueError("No models provided to visualize.") diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index bce3bddd..5cc4ec89 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -133,13 +133,11 @@ def test_predictions_cat(predictions): baseline_preds = predictions["model-categorical-1-best-3"] n_baseline_rows = baseline_preds.height - # 3. Assert the number of rows is scaled by prediction_length assert n_test_rows == n_baseline_rows * prediction_length, ( f"Expected {n_baseline_rows * prediction_length} rows for prediction_length={prediction_length}, " f"but found {n_test_rows} rows." ) - # 4. Assert correct number of predictions per sequence baseline_rows_per_seq = ( baseline_preds.group_by("sequenceId").len().height ) @@ -291,12 +289,8 @@ def test_predictions_item_position(predictions): def test_embeddings_subsequence_id(embeddings): - """ - Checks if subsequenceId increments correctly within each sequenceId - and starts at 0 for each new sequence. - """ + """Check subsequenceId increments within each sequence.""" for model_name, embeds_df in embeddings.items(): - # Ensure correct sorting embeds_df_sorted = embeds_df.sort("sequenceId", "subsequenceId") shift_val = 0 @@ -315,17 +309,15 @@ def test_embeddings_subsequence_id(embeddings): ), ) - # 1. Check if subsequenceId starts at 0 for each new sequence first_subsequences = embeds_with_diffs.filter( pl.col("same_seq") == False # noqa: E712 - ) # First row of each sequence + ) incorrect_starts = first_subsequences.filter(pl.col("subsequenceId") != 0) assert incorrect_starts.height == 0, ( f"Model '{model_name}': Found sequences where subsequenceId does not start at 0:\n" f"{incorrect_starts}" ) - # 2. Check if subsequenceId increments by 1 within sequences within_sequence_diffs = embeds_with_diffs.filter(pl.col("same_seq")) incorrect_increments = within_sequence_diffs.filter(pl.col("subseq_diff") != 1) assert incorrect_increments.height == 0, ( diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py index 708dc24d..a214e7ef 100644 --- a/tests/integration/test_preprocessing.py +++ b/tests/integration/test_preprocessing.py @@ -75,7 +75,7 @@ def test_metadata_config(metadata_configs): def load_parquet_folder_outputs(path): - """Reads a directory of Parquet chunks into a single sorted Polars DataFrame.""" + """Sorted frame from Parquet chunks.""" # Polars natively supports reading all matching files via glob patterns data = pl.read_parquet(os.path.join(path, "*.parquet")) @@ -433,10 +433,7 @@ def test_preprocessing_from_precomputed_stats( preprocessing_config_path_cat_precomputed_stats, preprocessing_config_path_cat_precomputed_stats_negative, ): - """ - Tests that providing a preexisting metadata config produces identical - outputs to the standard run, bypassing metadata computation. - """ + """Compare precomputed-stat and standard preprocessing outputs.""" run_and_log( f"sequifier preprocess --config-path {preprocessing_config_path_cat_precomputed_stats}" diff --git a/tests/integration/test_visualize_training.py b/tests/integration/test_visualize_training.py index 5190d7a2..a619748a 100644 --- a/tests/integration/test_visualize_training.py +++ b/tests/integration/test_visualize_training.py @@ -25,8 +25,6 @@ def test_visualize_training( hp_models_grid = sorted([m for m in models if "hp-search-grid-run" in m]) assert len(hp_models_grid) > 0, "No hp grid models found in logs directory" - # 1. Test running visualize-training for each model individually - # model_outputs = {} for model in single_models: # visualize_training.py expects to find "logs/" relative to the working directory command = f"sequifier visualize-training {model} --project-root {project_root}" @@ -42,7 +40,6 @@ def test_visualize_training( output_path ), f"Visualization output not found for {model}" - # 2. Test running visualize-training for all models jointly models_str = ",".join(hp_models_grid) command_joint = f"sequifier visualize-training {models_str} --project-root {project_root} --log-scale --bucket-training-batches 5" run_and_log(command_joint) diff --git a/tests/resources/source_scripts/hp_search_eval_script.py b/tests/resources/source_scripts/hp_search_eval_script.py index 9381766b..899783bd 100644 --- a/tests/resources/source_scripts/hp_search_eval_script.py +++ b/tests/resources/source_scripts/hp_search_eval_script.py @@ -12,16 +12,13 @@ def main(): run_name = sys.argv[1] - # 3. Load predictions and calculate mean & variance preds_path = f"outputs/predictions/sequifier-{run_name}-predictions" dfs = [] for root, dir, files in os.walk(preds_path): for file in sorted(list(files)): - # 1. Read everything as strings to avoid read-time schema crashes df = pl.read_csv(os.path.join(preds_path, file), infer_schema_length=0) - # 2. Cast to Int64 (strict=False turns bad strings to null) & fill nulls with -1 df = df.with_columns(pl.all().cast(pl.Int64, strict=False).fill_null(-1)) dfs.append(df) df = pl.concat(dfs) @@ -29,7 +26,6 @@ def main(): max_freqs = df["itemId"].value_counts()["count"].max() stdev_freqs = df["itemId"].value_counts()["count"].std() - # 4. Save metrics back for Optuna to ingest eval_dir = "outputs/evaluations" os.makedirs(eval_dir, exist_ok=True) eval_json_path = os.path.join(eval_dir, f"{run_name}.json") diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 6fb7b0b5..3d61a5ed 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -85,7 +85,7 @@ def dataset_path(tmp_path): def test_initialization(mock_config, dataset_path): - """Tests that metadata is read correctly and __len__ calculates batches.""" + """Metadata-backed batch length.""" dataset = SequifierDatasetFromFolderParquetLazy(dataset_path, mock_config) # 40 total samples / batch size of 5 = 8 batches @@ -95,7 +95,7 @@ def test_initialization(mock_config, dataset_path): def test_iteration_yields_correct_batches(mock_config, dataset_path): - """Tests that the dataset iterates over files and yields structured tensors.""" + """Structured tensors from file iteration.""" dataset = SequifierDatasetFromFolderParquetLazy( dataset_path, mock_config, shuffle=False ) @@ -180,7 +180,7 @@ def test_iteration_attaches_explicit_padding_masks(mock_config, tmp_path): @patch("torch.distributed.get_rank", return_value=0) @patch("torch.distributed.get_world_size", return_value=2) def test_distributed_sharding(mock_ws, mock_rank, mock_init, mock_config, dataset_path): - """Tests that the dataset correctly shards files across distributed GPU ranks.""" + """Distributed file sharding.""" dataset = SequifierDatasetFromFolderParquetLazy( dataset_path, mock_config, shuffle=False ) @@ -196,7 +196,7 @@ def test_distributed_sharding(mock_ws, mock_rank, mock_init, mock_config, datase def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): - """Tests that FSDP validation raises an Exception when file distribution is uneven.""" + """FSDP exact mode rejects uneven ranks.""" data_dir = tmp_path / "uneven_parquet_data" data_dir.mkdir() @@ -219,7 +219,7 @@ def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): def test_oversampling_strategy(mock_config, tmp_path): - """Tests that shorter ranks oversample to equal the maximal rank count.""" + """Oversampling pads short ranks.""" data_dir = tmp_path / "oversample_parquet_data" data_dir.mkdir() @@ -264,7 +264,7 @@ def test_oversampling_strategy(mock_config, tmp_path): def test_undersampling_strategy(mock_config, tmp_path): - """Tests that longer ranks truncate samples down to match the minimal rank count.""" + """Undersampling truncates long ranks.""" data_dir = tmp_path / "undersample_parquet_data" data_dir.mkdir() diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 215ddc99..992bcf74 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -27,7 +27,7 @@ def _folder_metadata(total_samples, batch_files): # --- Fixtures --- @pytest.fixture def mock_config(tmp_path): - """Creates a mock configuration object.""" + """Mock dataset config.""" config = MagicMock() config.project_root = str(tmp_path) config.training_spec.batch_size = 5 @@ -95,7 +95,7 @@ def side_effect(path, map_location, weights_only): def test_initialization(mock_config, dataset_path): - """Tests that metadata is read correctly and __len__ calculates batches.""" + """Metadata-backed batch length.""" dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config) # 40 total samples / batch size of 5 = 8 batches @@ -105,7 +105,7 @@ def test_initialization(mock_config, dataset_path): def test_iteration_yields_correct_batches(mock_config, dataset_path, mock_torch_load): - """Tests that the dataset iterates over files and yields correct tensor slices.""" + """Tensor slices from file iteration.""" dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config, shuffle=False) # Consume the generator @@ -186,7 +186,7 @@ def side_effect(path, map_location, weights_only): def test_distributed_sharding( mock_rank, mock_ws, mock_init, mock_config, dataset_path, mock_torch_load ): - """Tests that the dataset correctly shards files across distributed GPUs.""" + """Distributed file sharding.""" dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config, shuffle=False) # World size = 2, Total files = 4 @@ -210,7 +210,7 @@ def test_distributed_sharding( def test_dataloader_worker_sharding_continuous_boundaries( mock_worker_info, mock_config, dataset_path, mock_torch_load ): - """Tests that continuous sample streaming assigns correct file boundaries to workers.""" + """Worker file boundaries for continuous streaming.""" # Simulate being DataLoader worker ID 1 out of 2 total workers mock_info = MagicMock() @@ -244,7 +244,7 @@ def test_dataloader_worker_sharding_continuous_boundaries( def test_exact_strategy_uneven_files_exception( mock_rank, mock_ws, mock_init, mock_config, tmp_path ): - """Tests that 'exact' strategy raises the detailed exception on uneven rank samples.""" + """Exact mode rejects uneven rank samples.""" data_dir = tmp_path / "data_uneven" data_dir.mkdir() @@ -281,7 +281,7 @@ def test_exact_strategy_uneven_files_exception( def test_oversampling_strategy( mock_rank, mock_ws, mock_init, mock_config, tmp_path, mock_torch_load ): - """Tests that 'oversampling' pads a rank with fewer samples by looping its files.""" + """Oversampling loops short ranks.""" data_dir = tmp_path / "data_oversample" data_dir.mkdir() @@ -327,7 +327,7 @@ def test_oversampling_strategy( def test_undersampling_strategy( mock_rank, mock_ws, mock_init, mock_config, tmp_path, mock_torch_load ): - """Tests that 'undersampling' truncates a rank with more samples to match the lightest rank.""" + """Undersampling truncates heavy ranks.""" data_dir = tmp_path / "data_undersample" data_dir.mkdir() diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index 46bea614..53856f92 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -13,13 +13,9 @@ resolve_window_view, ) -# ========================================== -# 1. Test Index Map Construction -# ========================================== - def test_construct_index_maps_string(): - """Tests reversing a string-to-int map, ensuring 0 maps to '[unknown]'.""" + """Reverse string ID map.""" id_maps: dict[str, dict[str | int, int]] = {"itemId": {"apple": 3, "banana": 4}} target_cols = ["itemId"] @@ -36,7 +32,7 @@ def test_construct_index_maps_string(): def test_construct_index_maps_integer(): - """Tests reversing an int-to-int map with special IDs as sentinels.""" + """Reverse int ID map with sentinels.""" id_maps: dict[str, dict[str | int, int]] = {"storeId": {100: 3, 101: 4}} target_cols = ["storeId"] @@ -51,29 +47,15 @@ def test_construct_index_maps_integer(): def test_construct_index_maps_flag_false(): - """Tests that nothing is returned if map_to_id is False.""" + """Empty maps when map_to_id is false.""" id_maps: dict[str, dict[str | int, int]] = {"itemId": {"a": 1}} result = construct_index_maps(id_maps, ["itemId"], map_to_id=False) assert result == {} -# ========================================== -# 2. Test Numpy to PyTorch Conversion -# ========================================== - - def test_numpy_to_pytorch_shapes_and_shifting(): - """ - Tests that DataFrames are correctly converted to input and target Tensors. - - Logic to test: - If context_length = 3: - - Input cols: ['3', '2', '1'] - - Target cols: ['2', '1', '0'] - """ + """Check causal input and shifted target tensors.""" - # Setup: 2 sequences for feature "A" - # Seq 1: [10, 20, 30, 40] (where 40 is t=0, 30 is t=1, etc.) data = pl.DataFrame( { "sequenceId": [1, 2], @@ -102,7 +84,6 @@ def test_numpy_to_pytorch_shapes_and_shifting(): resolved_view, ) - # 1. Check Keys assert "A" in tensors assert "A_target" in tensors assert torch.equal( @@ -114,19 +95,15 @@ def test_numpy_to_pytorch_shapes_and_shifting(): torch.tensor([[True, True, True], [True, True, True]]), ) - # 2. Check Input Tensor (Cols 3, 2, 1) - # Row 0: [10, 20, 30] expected_input = torch.tensor([[10, 20, 30], [11, 21, 31]], dtype=torch.float32) assert torch.equal(tensors["A"], expected_input) - # 3. Check Target Tensor (Cols 2, 1, 0) -> Shifted by 1 step into future - # Row 0: [20, 30, 40] expected_target = torch.tensor([[20, 30, 40], [21, 31, 41]], dtype=torch.float32) assert torch.equal(tensors["A_target"], expected_target) def test_numpy_to_pytorch_dtypes(): - """Tests that column_types dict is respected for tensor dtypes.""" + """Check column_types controls tensor dtypes.""" # Note: numpy_to_pytorch filters by inputCol, so we need to handle how # it selects rows. It assumes all rows matching "inputCol" have valid data diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 9afb97ea..cb15f9db 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -21,7 +21,7 @@ def test_normalize(): - """Tests the softmax normalization of raw logits.""" + """Softmax-normalized logits.""" # Create raw logits # Row 0: exp(0)=1, exp(0)=1 -> probs: 0.5, 0.5 # Row 1: exp(1)=e, exp(2)=e^2 -> probs: e/(e+e^2), e^2/(e+e^2) @@ -47,7 +47,7 @@ def test_normalize(): @patch("numpy.random.rand") def test_sample_with_cumsum(mock_rand): - """Tests inverse CDF sampling with both raw logits and pure probabilities.""" + """Inverse-CDF sampling for logits and probabilities.""" # Mock the random thresholds to strictly control the sampling outcome. mock_rand.return_value = np.array([[0.05], [0.90]]) @@ -92,7 +92,7 @@ def mock_inferer(): def test_inferer_invert_normalization(mock_inferer): - """Tests that normalized real outputs are scaled back correctly.""" + """Real outputs denormalize correctly.""" # Normalized values values = np.array([-1.0, 0.0, 1.0]) @@ -105,7 +105,7 @@ def test_inferer_invert_normalization(mock_inferer): def test_inferer_expand_to_batch_size(mock_inferer): - """Tests the array padding logic for strictly sized batches (e.g., ONNX).""" + """Strict-batch array padding.""" mock_inferer.inference_batch_size = 5 # Input has 2 samples, batch size needs to be 5 @@ -119,7 +119,7 @@ def test_inferer_expand_to_batch_size(mock_inferer): def test_inferer_prepare_inference_batches_pad(mock_inferer): - """Tests chunking data when padding is requested.""" + """Chunking with padding.""" mock_inferer.inference_batch_size = 4 x = {"cat_col": np.array([[1], [2], [3]])} # 3 total samples @@ -132,7 +132,7 @@ def test_inferer_prepare_inference_batches_pad(mock_inferer): def test_inferer_prepare_inference_batches_no_pad(mock_inferer): - """Tests chunking data without padding.""" + """Chunking without padding.""" mock_inferer.inference_batch_size = 4 x = {"cat_col": np.array([[1], [2], [3]])} # 3 total samples @@ -144,7 +144,7 @@ def test_inferer_prepare_inference_batches_no_pad(mock_inferer): def test_inferer_prepare_inference_batches_split(mock_inferer): - """Tests chunking data into multiple separated batches.""" + """Chunking into multiple batches.""" mock_inferer.inference_batch_size = 2 x = {"cat_col": np.array([[1], [2], [3], [4], [5]])} # 5 total samples @@ -641,17 +641,11 @@ def ar_inferer(ar_config): def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): - """ - Tests that the autoregressive loop calls the model the correct number of times - and accurately shifts the input tensor to append the latest prediction. - """ + """Check autoregressive loop count and tensor shifting.""" initial_data = {"target_col": torch.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]])} metadata = _dummy_attention_metadata(batch_size=2, context_length=3) - # Patch the method on the actual instance with patch.object(ar_inferer, "infer_generative") as mock_infer: - # Step 0: Predicts 4.0 for row 0, 40.0 for row 1 - # Step 1: Predicts 5.0 for row 0, 50.0 for row 1 mock_infer.side_effect = [ {"target_col": np.array([[4.0], [40.0]])}, {"target_col": np.array([[5.0], [50.0]])}, @@ -662,10 +656,8 @@ def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): ar_config, ar_inferer, initial_data, metadata, total_steps=total_steps ) - # 1. Verify Loop Count assert mock_infer.call_count == 2 - # 2. Verify Tensor Shifting expected_shifted_x = { "target_col": np.array([[2.0, 3.0, 4.0], [20.0, 30.0, 40.0]]) } @@ -675,7 +667,6 @@ def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): second_call_args["target_col"], expected_shifted_x["target_col"] ) - # 3. Verify Output Reshaping assert "target_col" in preds np.testing.assert_array_equal(preds["target_col"], [4.0, 5.0, 40.0, 50.0]) @@ -684,31 +675,21 @@ def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): def test_get_probs_preds_from_dict_with_probabilities( mock_sample, ar_config, ar_inferer ): - """ - Tests the probability branching logic. When output_probabilities=True, - `infer_generative` normalizes outputs, and passes them as probabilities - to the second call which triggers sampling with logits=False. - """ - # 1. Override the config and inferer to treat the column as categorical + """Check probability output drives non-logit sampling.""" ar_config.target_column_types["target_col"] = "categorical" ar_inferer.target_column_types["target_col"] = "categorical" - # 2. Force it to route to the sampling branch ar_config.output_probabilities = True ar_config.sample_from_distribution_columns = ["target_col"] ar_inferer.sample_from_distribution_columns = ["target_col"] initial_data = {"target_col": torch.tensor([[1.0, 2.0]])} - # Raw model output (Logits) dummy_logits = {"target_col": np.array([[np.log(0.2), np.log(0.8)]])} - - # What we want our mock sample_with_cumsum to return mock_sample.return_value = np.array([1]) metadata = _dummy_attention_metadata(batch_size=1, context_length=2) - # Mock the *inner* backend call, allowing infer_generative to execute its actual logic with patch.object( ar_inferer, "adjust_and_infer_generative", return_value=dummy_logits ) as mock_adjust: @@ -718,27 +699,20 @@ def test_get_probs_preds_from_dict_with_probabilities( assert mock_adjust.call_count == 1 - # Verify sample_with_cumsum was called correctly during the second pass mock_sample.assert_called_once() args, kwargs = mock_sample.call_args - # 1. Assert it was passed the normalized probabilities, NOT the raw logits np.testing.assert_allclose(args[0], [[0.2, 0.8]]) - # 2. Assert the new flag was toggled correctly based on (probs is None) assert kwargs.get("is_log_probs") is False - # Verify final outputs assert probs is not None np.testing.assert_allclose(probs["target_col"], [[0.2, 0.8]]) np.testing.assert_array_equal(preds["target_col"], [1]) def test_get_probs_preds_from_dict_ignores_unselected_columns(ar_config, ar_inferer): - """ - Tests that columns not explicitly defined in `config.input_columns` - are filtered out before inference. - """ + """Check inference ignores columns outside config.input_columns.""" initial_data = { "target_col": torch.tensor([[1.0, 2.0]]), "ignored_col": torch.tensor([[9.0, 9.0]]), diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index 9ac84b5a..cb222176 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -24,14 +24,11 @@ process_and_write_data_pt, ) -# ========================================== -# 1. Test Sequence Extraction (Sliding Window) -# ========================================== RESERVED_MASK_COLUMN = "[mask]" def test_extract_subsequences_basic(): - """Tests basic sliding window extraction with sufficient length.""" + """Basic sliding-window extraction.""" input_data = {"col1": [10, 11, 12, 13, 14, 15]} context_length = 3 stride = 1 @@ -73,7 +70,7 @@ def test_extract_subsequences_bert_width(): def test_extract_subsequences_padding(): - """Tests that sequences shorter than context_length are padded with 0s.""" + """Short sequences receive zero padding.""" input_data = {"col1": [1, 2]} # Length 2 stored_context_width = 5 stride = 1 @@ -568,7 +565,7 @@ def test_preprocessor_config_requires_metadata_config_for_mask_column( @pytest.mark.parametrize("mode", ["distribute", "exact"]) def test_extract_subsequences_modes(mode): - """Tests logic for 'distribute' vs 'exact' modes.""" + """Distribute vs exact stride modes.""" # Length 10. Seq_len 2 (window 3). # distribute: adjusts stride to cover data evenly. # exact: strictly adheres to stride, throws error if misalignment. @@ -602,13 +599,8 @@ def test_extract_subsequences_modes(mode): assert len(result["col1"]) > 0 -# ========================================== -# 2. Test Batch Limits (Index Math) -# ========================================== - - def test_get_batch_limits_perfect_split(): - """Tests splitting where batch boundaries align perfectly with sequences.""" + """Batch boundaries align with sequence boundaries.""" # 3 sequences, each length 10. Total 30 rows. # If we want 3 batches, we should get 3 chunks of 10. data = pl.DataFrame({"sequenceId": np.repeat([1, 2, 3], 10), "val": np.arange(30)}) @@ -620,7 +612,7 @@ def test_get_batch_limits_perfect_split(): def test_get_batch_limits_uneven_split(): - """Tests that a batch never splits a sequenceId in half.""" + """Batches never split a sequenceId.""" # Seq 1: 5 rows # Seq 2: 15 rows # Seq 3: 5 rows @@ -642,13 +634,8 @@ def test_get_batch_limits_uneven_split(): assert prev_id != curr_id, f"Batch split at {start} broke a sequence" -# ========================================== -# 3. Test Statistics (Mathematical Logic) -# ========================================== - - def test_get_combined_statistics_logic(): - """Tests Welford's algorithm logic for merging stats.""" + """Merged Welford stats.""" # Create two chunks of data chunk1 = np.random.normal(loc=10, scale=2, size=100) chunk2 = np.random.normal(loc=20, scale=5, size=50) @@ -672,7 +659,7 @@ def test_get_combined_statistics_logic(): def test_get_column_statistics_state_accumulation(): - """Tests that processing data in chunks yields same stats as processing at once.""" + """Chunked and full-pass stats match.""" data_full = pl.DataFrame( { "cat_col": ["a", "b", "a", "c", "b", "d"], @@ -699,8 +686,6 @@ def test_get_column_statistics_state_accumulation(): chunk2, ["cat_col", "num_col"], id_maps, stats, running_count, {} ) - # Validations - # 1. Categorical: Should contain all unique keys a,b,c,d assert len(id_maps["cat_col"]) == 6 assert set(id_maps["cat_col"].keys()) == { "[unknown]", @@ -711,7 +696,6 @@ def test_get_column_statistics_state_accumulation(): "d", } - # 2. Numerical: Should match full dataset calculation expected_mean = data_full["num_col"].mean() expected_std = data_full["num_col"].std() @@ -750,7 +734,7 @@ def test_apply_column_statistics_errors_when_all_rows_masked(): def test_create_id_map(): - """Tests basic ID mapping creation.""" + """Basic ID map creation.""" df = pl.DataFrame({"A": ["z", "x", "y", "x"]}) mapping = create_id_map(df, "A") diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 8418b669..c26d8a24 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -99,7 +99,7 @@ def test_poisson_span_masking_samples_at_least_one_token(): @pytest.fixture def model_config(tmp_path): - """Creates a valid TrainModel configuration for testing.""" + """Valid TrainModel config.""" project_root = str(tmp_path) # Ensure necessary directories exist to avoid init errors (logging) @@ -206,7 +206,7 @@ def _all_valid_metadata(batch_size, seq_len, device=None): def test_transformer_model_initialization(model, model_config): - """Tests that the model initializes with the correct layers.""" + """Expected model layers.""" # Check if encoder dicts were created assert "cat_col" in model.encoder assert model.pos_encoder is None or "cat_col" in model.pos_encoder @@ -403,7 +403,7 @@ def test_load_train_config_validates_class_share_columns_after_metadata_load( def test_forward_train_shapes(model, model_config): - """Tests the output shapes of the forward_train method.""" + """forward_train output shapes.""" batch_size = model_config.training_spec.batch_size seq_len = model_config.window_view.context_length @@ -434,7 +434,7 @@ def test_forward_train_shapes(model, model_config): def test_forward_inference_shapes(model, model_config): - """Tests the output shapes of the forward (inference) method.""" + """Inference output shapes.""" batch_size = model_config.training_spec.batch_size seq_len = model_config.window_view.context_length prediction_length = model_config.model_spec.prediction_length # 1 @@ -467,7 +467,7 @@ def test_forward_inference_shapes(model, model_config): def test_calculate_loss(model, model_config): - """Tests that loss calculation returns a scalar tensor.""" + """Scalar loss tensor.""" batch_size = model_config.training_spec.batch_size seq_len = model_config.window_view.context_length diff --git a/tools/analysis.py b/tools/analysis.py index 9e13e322..fd642571 100644 --- a/tools/analysis.py +++ b/tools/analysis.py @@ -4,16 +4,7 @@ def invert_normalization(values, target_column, selected_columns_statistics): - """ - Invert the normalization of values for a target column. - - Args: - values: Normalized values. - target_column: Target column name. - - Returns: - Denormalized values. - """ + """Invert target-column normalization.""" std = selected_columns_statistics[target_column]["std"] mean = selected_columns_statistics[target_column]["mean"] return (values * (std - 1e-9)) + mean diff --git a/tools/convert_to_pt.py b/tools/convert_to_pt.py index 060b5af6..bb42f2ee 100644 --- a/tools/convert_to_pt.py +++ b/tools/convert_to_pt.py @@ -18,7 +18,6 @@ def main(): assert os.path.exists(in_path), f"Input file not found: {in_path}" - # 1. Read Data if in_path.endswith(".csv"): df = pl.read_csv(in_path) elif in_path.endswith(".parquet"): @@ -26,7 +25,6 @@ def main(): else: raise ValueError("Input must be .csv or .parquet") - # 2. Validate Schema required_meta = {"sequenceId", "subsequenceId", "startItemPosition", "inputCol"} assert required_meta.issubset( df.columns @@ -35,7 +33,6 @@ def main(): seq_cols = sorted([c for c in df.columns if c.isdigit()], key=int) assert len(seq_cols) > 1, "No numbered sequence columns found" - # 3. Aggregate feature_names = df["inputCol"].unique().to_list() aggs = [ pl.concat_list(seq_cols).filter(pl.col("inputCol") == f).flatten().alias(f) @@ -48,7 +45,6 @@ def main(): ) grouped = grouped.sort(["sequenceId", "subsequenceId"]) - # 4. Create Tensors seq_ids = torch.from_numpy(grouped["sequenceId"].to_numpy().astype(np.int64)) sub_ids = torch.from_numpy(grouped["subsequenceId"].to_numpy().astype(np.int64)) start_pos = torch.from_numpy( @@ -70,7 +66,6 @@ def main(): total_rows = len(seq_ids) - # 5. Save if chunk_size is not None and total_rows > chunk_size: assert not os.path.isfile( out_path @@ -83,7 +78,6 @@ def main(): for i in range(0, total_rows, chunk_size): end = i + chunk_size - # Slice everything s_ids_chunk = seq_ids[i:end] sub_ids_chunk = sub_ids[i:end] start_pos_chunk = start_pos[i:end] diff --git a/tools/resize_pt_files.py b/tools/resize_pt_files.py index c3d1475a..ae7ff89e 100644 --- a/tools/resize_pt_files.py +++ b/tools/resize_pt_files.py @@ -2,16 +2,13 @@ import json import os import sys -from typing import Any, Dict, List, Tuple # Added List +from typing import Any, Dict, List, Tuple import torch def unpack_dataset_tuple(data_tuple: Tuple) -> Dict[str, Any]: - """ - Unpacks the standard Sequifier 5-element tuple into a structured dictionary - that is easier to handle programmatically. - """ + """Unpack the standard Sequifier PT tuple.""" return { "sequences": data_tuple[0], "targets": data_tuple[1], @@ -22,9 +19,7 @@ def unpack_dataset_tuple(data_tuple: Tuple) -> Dict[str, Any]: def pack_dataset_tuple(data_dict: Dict[str, Any]) -> Tuple: - """ - Repacks the dictionary back into the 5-element tuple format expected by Sequifier. - """ + """Pack a dataset dict into the standard Sequifier PT tuple.""" return ( data_dict["sequences"], data_dict["targets"], @@ -35,33 +30,26 @@ def pack_dataset_tuple(data_dict: Dict[str, Any]) -> Tuple: def concat_dataset_list(data_list: List[Dict[str, Any]]) -> Dict[str, Any]: - """ - Concatenates a list of dataset dictionaries along dim 0. - OPTIMIZED: Uses torch.cat on a list of tensors (O(N)) instead of iterative pairwise concat (O(N^2)). - """ + """Concatenate dataset dictionaries along dim 0.""" if not data_list: return {} - # If only one item, just return it (avoid copy) if len(data_list) == 1: return data_list[0] combined = {} first = data_list[0] - # Concatenate sequence dicts combined["sequences"] = { k: torch.cat([d["sequences"][k] for d in data_list], dim=0) for k in first["sequences"] } - # Concatenate target dicts combined["targets"] = { k: torch.cat([d["targets"][k] for d in data_list], dim=0) for k in first["targets"] } - # Concatenate metadata tensors combined["seq_ids"] = torch.cat([d["seq_ids"] for d in data_list], dim=0) combined["sub_ids"] = torch.cat([d["sub_ids"] for d in data_list], dim=0) combined["start_pos"] = torch.cat([d["start_pos"] for d in data_list], dim=0) @@ -69,12 +57,8 @@ def concat_dataset_list(data_list: List[Dict[str, Any]]) -> Dict[str, Any]: return combined -# ... [slice_dataset, clone_dataset, get_row_size_bytes remain unchanged] ... def slice_dataset(data: Dict[str, Any], start: int, end: int) -> Dict[str, Any]: - """ - Slices a dataset dictionary from start to end index. - Returns a view (fast), not a copy. - """ + """Slice a dataset dictionary without cloning.""" sliced = {} sliced["sequences"] = {k: v[start:end] for k, v in data["sequences"].items()} sliced["targets"] = {k: v[start:end] for k, v in data["targets"].items()} @@ -85,10 +69,7 @@ def slice_dataset(data: Dict[str, Any], start: int, end: int) -> Dict[str, Any]: def clone_dataset(data: Dict[str, Any]) -> Dict[str, Any]: - """ - Deep clones a dataset. Used for the remainder to allow the - large original tensor to be freed from memory. - """ + """Clone all tensors in a dataset dictionary.""" cloned = {} cloned["sequences"] = {k: v.clone() for k, v in data["sequences"].items()} cloned["targets"] = {k: v.clone() for k, v in data["targets"].items()} @@ -99,14 +80,10 @@ def clone_dataset(data: Dict[str, Any]) -> Dict[str, Any]: def get_row_size_bytes(data: Dict[str, Any]) -> float: - """ - Calculates the exact size in bytes of a single row in the dataset. - """ + """Return bytes per row across sequence/target tensors.""" total_bytes = 0 - # Add size of one row for every tensor in sequences for t in data["sequences"].values(): total_bytes += t.element_size() * t.shape[1] - # Add size of one row for every tensor in targets for t in data["targets"].values(): total_bytes += t.element_size() * t.shape[1] @@ -127,7 +104,6 @@ def process_split( ): os.makedirs(output_dir, exist_ok=True) - # 1. Determine File Order via metadata meta_path = os.path.join(input_dir, "metadata.json") if os.path.exists(meta_path): with open(meta_path, "r") as f: @@ -141,7 +117,6 @@ def process_split( f"Warning: No metadata.json found in {input_dir}. Using alphabetical sort." ) - # State variables data_buffer: List[Dict[str, Any]] = [] buffer_row_count = 0 @@ -150,18 +125,16 @@ def process_split( total_samples_processed = 0 target_bytes = target_size_mb * 1024 * 1024 - target_rows = None # Calculated dynamically on first load + target_rows = None print(f"Processing {input_dir} -> {output_dir}") - # 2. Iterate Files for file_name in input_files: file_path = os.path.join(input_dir, file_name) if not os.path.exists(file_path): continue try: - # Load file loaded_tuple = torch.load(file_path, map_location="cpu", weights_only=False) current_data = unpack_dataset_tuple(loaded_tuple) @@ -169,27 +142,21 @@ def process_split( if current_rows == 0: continue - # Calculate target_rows if not yet set (once per split) if target_rows is None: bytes_per_row = get_row_size_bytes(current_data) target_rows = max(1, int(target_bytes / bytes_per_row)) - # Add to buffer data_buffer.append(current_data) buffer_row_count += current_rows - # 3. Flush Buffer if we have enough data if buffer_row_count >= target_rows: - # O(N) Merge full_data = concat_dataset_list(data_buffer) - # Clear buffer references immediately data_buffer = [] buffer_row_count = 0 num_rows = full_data["seq_ids"].shape[0] - # Slice and Save Loop start_idx = 0 while start_idx + target_rows <= num_rows: end_idx = start_idx + target_rows @@ -209,24 +176,19 @@ def process_split( start_idx = end_idx - # Handle Remainder if start_idx < num_rows: - # Clone remainder to free the massive full_data tensor remainder_data = clone_dataset( slice_dataset(full_data, start_idx, num_rows) ) - # Start new buffer with remainder data_buffer = [remainder_data] buffer_row_count = remainder_data["seq_ids"].shape[0] - # Explicitly free full_data del full_data except Exception as e: print(f"Error processing {file_path}: {e}") sys.exit(1) - # 4. Flush final remainder if buffer_row_count > 0: full_data = concat_dataset_list(data_buffer) fname = f"{dataset_name}-{split_suffix}-{output_batch_idx}.pt" @@ -237,7 +199,6 @@ def process_split( new_batch_files_metadata.append({"path": fname, "samples": chunk_len}) total_samples_processed += chunk_len - # 5. Write New Metadata new_metadata = { "total_samples": total_samples_processed, "batch_files": new_batch_files_metadata, @@ -245,7 +206,6 @@ def process_split( with open(os.path.join(output_dir, "metadata.json"), "w") as f: json.dump(new_metadata, f, indent=4) - # 6. Validation if ( expected_total_samples is not None and total_samples_processed != expected_total_samples diff --git a/tools/stream_folder_via_scp.py b/tools/stream_folder_via_scp.py index 7c116fc1..f5bcf543 100644 --- a/tools/stream_folder_via_scp.py +++ b/tools/stream_folder_via_scp.py @@ -10,14 +10,10 @@ def upload_worker(sftp, upload_queue): - """ - Worker thread that reads (local_path, remote_path) from queue, - uploads via SFTP, and deletes the local temp file. - """ + """Upload queued zip batches and delete local temp files.""" while True: task = upload_queue.get() if task is None: - # Sentinel value received, stop processing upload_queue.task_done() break @@ -29,23 +25,20 @@ def upload_worker(sftp, upload_queue): except Exception as e: print(f" [ERR] Failed to upload Batch {batch_num}: {e}") finally: - # Clean up local temp file after upload (or failure) if os.path.exists(local_path): os.remove(local_path) upload_queue.task_done() def create_zip_locally(files, source_root, batch_num): - """Zips files to a temp file and returns the path.""" + """Zip a batch of files into a temp archive.""" print(f"[+] Zipping Batch {batch_num} ({len(files)} files)...") - # Create temp file fd, tmp_path = tempfile.mkstemp(suffix=".zip") - os.close(fd) # Close file descriptor, we only need path + os.close(fd) with zipfile.ZipFile(tmp_path, "w", zipfile.ZIP_DEFLATED) as zf: for file_path in files: - # Preserve folder structure relative to the parent of source_root rel_path = os.path.relpath(file_path, os.path.dirname(source_root)) zf.write(file_path, arcname=rel_path) @@ -74,7 +67,6 @@ def main(): password = getpass.getpass(f"Password for {args.remote_user}@{args.remote_host}: ") chunk_size = args.chunk_mb * 1024 * 1024 - # Connect SSH/SFTP ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) @@ -82,7 +74,6 @@ def main(): ssh.connect(args.remote_host, username=args.remote_user, password=password) sftp = ssh.open_sftp() - # Setup Remote Directory folder_name = os.path.basename(source_path.rstrip(os.sep)) target_dir = f"{args.remote_path.rstrip('/')}/{folder_name}-zips" @@ -91,14 +82,12 @@ def main(): except FileNotFoundError: sftp.mkdir(target_dir) - # Start Upload Worker Thread upload_q = queue.Queue() worker = threading.Thread( target=upload_worker, args=(sftp, upload_q), daemon=True ) worker.start() - # Main Loop: Walk and Zip batch_files = [] current_batch_size = 0 batch_count = 1 @@ -109,14 +98,11 @@ def main(): size = os.path.getsize(full_path) if current_batch_size + size > chunk_size and batch_files: - # 1. Create Zip (Blocking Main Thread) zip_path = create_zip_locally(batch_files, source_path, batch_count) - # 2. Queue for Upload (Non-Blocking) remote_zip_path = f"{target_dir}/batch_{batch_count:03d}.zip" upload_q.put((zip_path, remote_zip_path, batch_count)) - # 3. Reset for next batch immediately batch_files = [] current_batch_size = 0 batch_count += 1 @@ -124,16 +110,14 @@ def main(): batch_files.append(full_path) current_batch_size += size - # Process final batch if batch_files: zip_path = create_zip_locally(batch_files, source_path, batch_count) remote_zip_path = f"{target_dir}/batch_{batch_count:03d}.zip" upload_q.put((zip_path, remote_zip_path, batch_count)) - # Wait for uploads to finish print("[*] Local processing done. Waiting for remaining uploads...") - upload_q.put(None) # Send sentinel to stop worker - worker.join() # Wait for worker to finish + upload_q.put(None) + worker.join() print("[+] Streaming complete.") except paramiko.AuthenticationException: From 99a244098df2bc91721498a69a4c385285971aa9 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 12:45:10 +0200 Subject: [PATCH 60/81] Add pin_memory to SequifierBatch --- src/sequifier/io/batch.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/sequifier/io/batch.py b/src/sequifier/io/batch.py index 597a4db7..8f9e7fe4 100644 --- a/src/sequifier/io/batch.py +++ b/src/sequifier/io/batch.py @@ -22,3 +22,20 @@ def __post_init__(self) -> None: raise ValueError( f"SequifierBatch metadata is missing required keys: {missing}" ) + + def pin_memory(self) -> "SequifierBatch": + return SequifierBatch( + inputs={k: v.pin_memory() for k, v in self.inputs.items()}, + targets={k: v.pin_memory() for k, v in self.targets.items()}, + metadata={k: v.pin_memory() for k, v in self.metadata.items()}, + sequence_ids=( + self.sequence_ids.pin_memory() + if self.sequence_ids is not None + else None + ), + subsequence_ids=( + self.subsequence_ids.pin_memory() + if self.subsequence_ids is not None + else None + ), + ) From d450171961b2d0a9ca76b51803bc5230a41cb9d4 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 18:50:06 +0200 Subject: [PATCH 61/81] Token level loss scaling for distributed training --- src/sequifier/infer.py | 4 +- src/sequifier/train.py | 387 ++++++++++----- tests/unit/test_infer.py | 52 +- tests/unit/test_train.py | 425 +++++++++++++++- tests/unit/test_train_distributed_loss.py | 566 ++++++++++++++++++++++ tests/unit/test_train_fsdp_loss.py | 553 +++++++++++++++++++++ 6 files changed, 1858 insertions(+), 129 deletions(-) create mode 100644 tests/unit/test_train_distributed_loss.py create mode 100644 tests/unit/test_train_fsdp_loss.py diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 0baed6ef..57b9093f 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -1232,7 +1232,9 @@ def adjust_and_infer_embedding( self.infer_pure(x_sub, metadata_sub)[0] for x_sub, metadata_sub in zip(x_adjusted, metadata_adjusted) ] - embeddings = np.concatenate(inference_batch_embeddings, axis=0)[:size] + embeddings = np.concatenate(inference_batch_embeddings, axis=0)[ + : size * self.prediction_length + ] elif self.inference_model_type == "pt": x_adjusted = self.prepare_inference_batches(x, pad_to_batch_size=False) metadata_adjusted = self.prepare_inference_batches( diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 3a68058c..71a0363d 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -240,6 +240,7 @@ def train_worker( mesh = init_device_mesh( "cuda", (world_size,) ) # 1D mesh for standard ZeRO-3 full sharding + model._data_parallel_group = mesh.get_group() mp_policy = None if config.training_spec.layer_autocast: @@ -1358,7 +1359,12 @@ def _train_epoch( ddp_model: Optional[nn.Module] = None, ) -> None: """Run one train epoch with optional mid-epoch saves.""" - total_loss = 0.0 + target_names = self._loss_target_names() + train_loss_sums, train_token_count = self._new_loss_accumulators(target_names) + empty_global_batches = 0 + accumulated_global_token_count = torch.zeros( + (), device=self.device, dtype=torch.int64 + ) batches_aggregated = 0 start_time = time.time() @@ -1416,17 +1422,43 @@ def _train_epoch( output = model_to_call( data, metadata=metadata, return_logits=True ) - loss, losses = self._calculate_loss(output, targets, metadata) + ( + loss, + backward_components, + local_loss_sums, + local_token_count, + global_token_count, + ) = self._calculate_training_loss(output, targets, metadata) else: output = model_to_call(data, metadata=metadata, return_logits=True) - loss, losses = self._calculate_loss(output, targets, metadata) + ( + loss, + backward_components, + local_loss_sums, + local_token_count, + global_token_count, + ) = self._calculate_training_loss(output, targets, metadata) self.scaler.scale(loss).backward() + self._accumulate_loss_components( + train_loss_sums, + train_token_count, + local_loss_sums, + local_token_count, + ) + accumulated_global_token_count += global_token_count.detach() + if global_token_count.detach().cpu().item() == 0: + empty_global_batches += 1 - if ( + optimizer_step_due = ( self.accumulation_steps is None or (batch_count + 1) % self.accumulation_steps == 0 or (batch_count + 1) == num_batches + ) + optimizer_step_performed = False + if ( + optimizer_step_due + and accumulated_global_token_count.detach().cpu().item() > 0 ): self.scaler.unscale_(self.optimizer) @@ -1435,28 +1467,49 @@ def _train_epoch( self.scaler.step(self.optimizer) self.scaler.update() self.optimizer.zero_grad() + optimizer_step_performed = True + + if optimizer_step_due: + if not optimizer_step_performed: + self.optimizer.zero_grad() + accumulated_global_token_count.zero_() - total_loss += loss.item() batches_aggregated += 1 if (batch_count + 1) % self.log_interval == 0: + avg_train_loss, _ = self._finalize_loss_components( + train_loss_sums, + train_token_count, + target_names, + "training", + raise_on_empty=False, + ) if self.rank == 0: learning_rate = self.scheduler.get_last_lr()[0] s_per_batch = (time.time() - start_time) / max( 1, batches_aggregated ) - avg_train_loss = total_loss / max(1, batches_aggregated) self.logger.info( - f"[INFO] Epoch {epoch:3d} | Batch {(batch_count+1):5d}/{num_batches:5d} | Loss: {format_number(avg_train_loss)} | LR: {format_number(learning_rate)} | S/Batch {format_number(s_per_batch)}" + f"[INFO] Epoch {epoch:3d} | Batch {(batch_count+1):5d}/{num_batches:5d} | Loss: {format_number(avg_train_loss.detach().cpu().item())} | LR: {format_number(learning_rate)} | S/Batch {format_number(s_per_batch)}" ) - total_loss = 0.0 + if empty_global_batches > 0: + self.logger.warning( + "[WARNING] " + f"{empty_global_batches} training microbatch(es) " + "in this logging window contained no selected tokens." + ) + train_loss_sums, train_token_count = self._new_loss_accumulators( + target_names + ) + empty_global_batches = 0 + if self.rank == 0: batches_aggregated = 0 self.start_batch = 0 start_time = time.time() self._check_and_terminate() - del data, targets, output, loss, losses + del data, targets, output, loss, backward_components - if self.scheduler_step_on == "batch": + if self.scheduler_step_on == "batch" and optimizer_step_performed: if ( not hasattr(self.scheduler, "total_steps") or self.scheduler.last_epoch < self.scheduler.total_steps @@ -1551,8 +1604,21 @@ def _calculate_loss( targets: dict[str, Tensor], metadata: dict[str, Tensor], ) -> tuple[Tensor, dict[str, Tensor]]: - """Return weighted mean loss and per-target components over valid tokens.""" - target_names = [k for k in targets.keys() if k in self.target_column_types] + """Return backward-scaled loss and components for the current rank.""" + loss, backward_components, _, _, _ = self._calculate_training_loss( + output, targets, metadata + ) + return loss, backward_components + + @beartype + def _calculate_training_loss( + self, + output: dict[str, Tensor], + targets: dict[str, Tensor], + metadata: dict[str, Tensor], + ) -> tuple[Tensor, dict[str, Tensor], dict[str, Tensor], Tensor, Tensor]: + """Return the normalized backward loss plus local metric primitives.""" + target_names = self._loss_target_names(targets) if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") @@ -1560,66 +1626,51 @@ def _calculate_loss( if "bert_mask" in metadata: valid_mask = valid_mask & metadata["bert_mask"].bool() - mask = valid_mask.T.contiguous().reshape(-1) - token_count = mask.sum(dtype=torch.int64) - - losses = {} - for target_column in target_names: - target_column_type = self.target_column_types[target_column] - if target_column_type == "categorical": - output_tensor = ( - output[target_column] - .float() - .reshape(-1, self.n_classes[target_column]) - ) - elif target_column_type == "real": - output_tensor = ( - output[target_column].to(dtype=torch.float32).reshape(-1) - ) - else: - raise ValueError( - f"Target column type {target_column_type} not in ['categorical', 'real']" - ) - - target_tensor = targets[target_column].T.contiguous().reshape(-1) - - if self.target_column_types[target_column] == "real": - target_tensor = target_tensor.to(dtype=output_tensor.dtype) - - raw_loss = self.criterion[target_column](output_tensor, target_tensor) - - current_mask = mask.to(dtype=raw_loss.dtype) - denominator = token_count.clamp_min(1).to(dtype=raw_loss.dtype) - - losses[target_column] = (raw_loss * current_mask).sum() / denominator + local_sums, local_count = self._calculate_local_loss_components( + output, targets, valid_mask + ) + global_count = local_count.detach().clone() + gradient_average_factor = self._gradient_reduction_factor() + + if gradient_average_factor > 1: + dist.all_reduce( + global_count, + op=dist.ReduceOp.SUM, + group=self._data_parallel_process_group(), + ) loss = None + backward_components = {} + denominator = global_count.clamp_min(1) for target_column in target_names: - losses[target_column] = losses[target_column] * ( - self.loss_weights[target_column] - if self.loss_weights is not None - else 1.0 + denominator_for_sum = denominator.to(dtype=local_sums[target_column].dtype) + backward_components[target_column] = ( + local_sums[target_column] + * self._loss_weight(target_column) + * gradient_average_factor + / denominator_for_sum ) if loss is None: - loss = losses[target_column].clone() + loss = backward_components[target_column].clone() else: - loss += losses[target_column] + loss += backward_components[target_column] if loss is None: raise RuntimeError( "Loss calculation failed; no loss tensors were generated." ) - return loss, losses + return loss, backward_components, local_sums, local_count, global_count @beartype - def _calculate_loss_components( + def _calculate_local_loss_components( self, output: dict[str, Tensor], targets: dict[str, Tensor], valid_mask: Tensor, - ) -> tuple[dict[str, Tensor], dict[str, Tensor]]: - target_names = [k for k in targets.keys() if k in self.target_column_types] + ) -> tuple[dict[str, Tensor], Tensor]: + """Return unweighted, unnormalized local loss sums and one token count.""" + target_names = self._loss_target_names(targets) if not target_names: raise RuntimeError("Loss calculation failed; no target columns were found.") @@ -1627,7 +1678,6 @@ def _calculate_loss_components( token_count = mask.sum(dtype=torch.int64) loss_sums = {} - token_counts = {} for target_column in target_names: target_column_type = self.target_column_types[target_column] if target_column_type == "categorical": @@ -1651,17 +1701,148 @@ def _calculate_loss_components( target_tensor = target_tensor.to(dtype=output_tensor.dtype) raw_loss = self.criterion[target_column](output_tensor, target_tensor) + if raw_loss.numel() != mask.numel(): + raise RuntimeError( + "Loss/mask size mismatch for target column " + f"{target_column!r}: loss has {raw_loss.numel()} elements " + f"but mask has {mask.numel()}." + ) current_mask = mask.to(dtype=raw_loss.dtype) - loss_sum = (raw_loss * current_mask).sum(dtype=torch.float64) - loss_sums[target_column] = loss_sum * ( - self.loss_weights[target_column] - if self.loss_weights is not None - else 1.0 + loss_sums[target_column] = (raw_loss * current_mask).sum() + + return loss_sums, token_count + + @beartype + def _calculate_loss_components( + self, + output: dict[str, Tensor], + targets: dict[str, Tensor], + valid_mask: Tensor, + ) -> tuple[dict[str, Tensor], Tensor]: + """Return detached local loss sums and one shared token count for metrics.""" + loss_sums, token_count = self._calculate_local_loss_components( + output, targets, valid_mask + ) + return ( + {col: loss_sum.detach().double() for col, loss_sum in loss_sums.items()}, + token_count.detach(), + ) + + @beartype + def _loss_target_names( + self, targets: Optional[dict[str, Tensor]] = None + ) -> list[str]: + """Return configured target columns in stable training-config order.""" + configured_targets = getattr( + self, "target_columns", list(self.target_column_types.keys()) + ) + if targets is not None: + missing_targets = [ + col + for col in configured_targets + if col in self.target_column_types and col not in targets + ] + if missing_targets: + raise RuntimeError(f"Missing target columns: {sorted(missing_targets)}") + + return [col for col in configured_targets if col in self.target_column_types] + + @beartype + def _loss_weight(self, target_column: str) -> float: + """Return the configured scalar loss weight for a target column.""" + if self.loss_weights is None: + return 1.0 + return float(self.loss_weights[target_column]) + + @beartype + def _distributed_is_initialized(self) -> bool: + """Return whether torch.distributed collectives are currently usable.""" + return dist.is_available() and dist.is_initialized() + + @beartype + def _data_parallel_process_group(self) -> Optional[dist.ProcessGroup]: + """Return the process group used by the data-parallel reducer.""" + return getattr(self, "_data_parallel_group", None) + + @beartype + def _gradient_reduction_factor(self) -> int: + """Return the gradient multiplier needed before averaged reducers run.""" + if not self._distributed_is_initialized(): + return 1 + + training_spec = getattr(getattr(self, "hparams", None), "training_spec", None) + data_parallelism = getattr(training_spec, "data_parallelism", None) + if data_parallelism in {"DDP", "FSDP"}: + return dist.get_world_size(group=self._data_parallel_process_group()) + + return 1 + + @beartype + def _new_loss_accumulators( + self, target_names: list[str] + ) -> tuple[dict[str, Tensor], Tensor]: + """Create detached sum/count accumulators for logging or validation.""" + return ( + { + col: torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names + }, + torch.zeros((), device=self.device, dtype=torch.float64), + ) + + @beartype + def _accumulate_loss_components( + self, + sums: dict[str, Tensor], + count: Tensor, + batch_sums: dict[str, Tensor], + batch_count: Tensor, + ) -> None: + """Accumulate detached local unweighted loss sums and token counts.""" + for col in batch_sums: + sums[col] = sums[col] + batch_sums[col].detach().double() + count += batch_count.detach().double() + + @beartype + def _finalize_loss_components( + self, + sums: dict[str, Tensor], + count: Tensor, + target_names: list[str], + label: str, + raise_on_empty: bool = True, + ) -> tuple[Tensor, dict[str, Tensor]]: + """Reduce local loss sums/counts and return weighted token means.""" + packed = torch.stack([sums[col] for col in target_names] + [count]) + + if self._distributed_is_initialized(): + dist.all_reduce( + packed, + op=dist.ReduceOp.SUM, + group=self._data_parallel_process_group(), ) - token_counts[target_column] = token_count - return loss_sums, token_counts + n_targets = len(target_names) + reduced_sums = dict(zip(target_names, packed[:n_targets])) + reduced_count = packed[n_targets] + + if reduced_count.detach().cpu().item() == 0: + if raise_on_empty: + raise RuntimeError(f"No valid {label} tokens found.") + + losses = { + col: torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names + } + return torch.zeros((), device=self.device, dtype=torch.float64), losses + + losses = {} + total = torch.zeros((), device=self.device, dtype=torch.float64) + for col in target_names: + losses[col] = reduced_sums[col] / reduced_count * self._loss_weight(col) + total = total + losses[col] + return total, losses @beartype def _copy_model(self): @@ -1695,7 +1876,7 @@ def _evaluate( """Evaluate validation loss and optional class-share counts.""" model_to_call = ddp_model if ddp_model is not None else self - target_names = list(self.target_columns) + target_names = self._loss_target_names() class_count_columns = list(dict.fromkeys(self.class_share_log_columns)) for col in class_count_columns: @@ -1719,61 +1900,13 @@ def _evaluate( for col in class_count_columns } - def new_accumulators() -> tuple[dict[str, Tensor], dict[str, Tensor]]: - return ( - { - col: torch.zeros((), device=self.device, dtype=torch.float64) - for col in target_names - }, - { - col: torch.zeros((), device=self.device, dtype=torch.float64) - for col in target_names - }, - ) - - def accumulate_components( - sums: dict[str, Tensor], - counts: dict[str, Tensor], - batch_sums: dict[str, Tensor], - batch_counts: dict[str, Tensor], - ) -> None: - for col in batch_sums: - sums[col] = sums[col] + batch_sums[col].detach().double() - counts[col] = counts[col] + batch_counts[col].detach().double() - - def finalize_components( - sums: dict[str, Tensor], - counts: dict[str, Tensor], - label: str, - ) -> tuple[Tensor, dict[str, Tensor]]: - packed = torch.stack( - [sums[col] for col in target_names] - + [counts[col] for col in target_names] - ) - - if self.hparams.training_spec.distributed: - dist.all_reduce(packed, op=dist.ReduceOp.SUM) - - n_targets = len(target_names) - reduced_sums = dict(zip(target_names, packed[:n_targets])) - reduced_counts = dict(zip(target_names, packed[n_targets:])) - - losses = {} - total = torch.zeros((), device=self.device, dtype=torch.float64) - for col in target_names: - if reduced_counts[col].detach().cpu().item() == 0: - raise RuntimeError( - f"No valid {label} tokens found for target column {col!r}." - ) - losses[col] = reduced_sums[col] / reduced_counts[col] - total = total + losses[col] - return total, losses - was_training = model_to_call.training model_to_call.eval() try: - total_loss_sums, total_loss_counts = new_accumulators() + total_loss_sums, total_loss_count = self._new_loss_accumulators( + target_names + ) with torch.no_grad(): for batch_idx, batch in enumerate(valid_loader): @@ -1839,9 +1972,9 @@ def finalize_components( output, targets, valid_mask ) - accumulate_components( + self._accumulate_loss_components( total_loss_sums, - total_loss_counts, + total_loss_count, loss_sums, token_counts, ) @@ -1852,20 +1985,23 @@ def finalize_components( self.n_classes, ) - total_loss_global, total_losses_global = finalize_components( - total_loss_sums, total_loss_counts, "validation" + total_loss_global, total_losses_global = self._finalize_loss_components( + total_loss_sums, total_loss_count, target_names, "validation" ) - if self.hparams.training_spec.distributed: + if self._distributed_is_initialized(): for col in class_count_columns: dist.all_reduce( local_class_counts[col], op=dist.ReduceOp.SUM, + group=self._data_parallel_process_group(), ) # Handle one-time baseline loss calculation with the same aggregation semantics. if not hasattr(self, "baseline_loss"): - baseline_loss_sums, baseline_loss_counts = new_accumulators() + baseline_loss_sums, baseline_loss_count = self._new_loss_accumulators( + target_names + ) with torch.no_grad(): for batch_idx, batch in enumerate(valid_loader): @@ -1941,15 +2077,18 @@ def finalize_components( targets_for_baseline, valid_mask, ) - accumulate_components( + self._accumulate_loss_components( baseline_loss_sums, - baseline_loss_counts, + baseline_loss_count, loss_sums, token_counts, ) - baseline_loss, baseline_losses = finalize_components( - baseline_loss_sums, baseline_loss_counts, "baseline validation" + baseline_loss, baseline_losses = self._finalize_loss_components( + baseline_loss_sums, + baseline_loss_count, + target_names, + "baseline validation", ) self.baseline_loss = baseline_loss.detach().cpu().item() self.baseline_losses = { diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index cb15f9db..acd000d8 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -1,5 +1,5 @@ import json -from unittest.mock import patch +from unittest.mock import MagicMock, patch import numpy as np import polars as pl @@ -730,3 +730,53 @@ def test_get_probs_preds_from_dict_ignores_unselected_columns(ar_config, ar_infe assert "target_col" in first_call_args assert "ignored_col" not in first_call_args + + +def test_adjust_and_infer_embedding_onnx_truncation(): + """ + Catches the truncation bug where ONNX embeddings are sliced by `[:size]` + instead of `[:size * self.prediction_length]`. + """ + # 1. Mock the Inferer instance to isolate the target method + # We avoid actual __init__ to bypass ONNX runtime initialization. + inferer_mock = MagicMock(spec=Inferer) + inferer_mock.inference_model_type = "onnx" + inferer_mock.inference_batch_size = 2 + + # Set prediction_length > 1 to expose the bug (e.g., BERT objective) + inferer_mock.prediction_length = 5 + embedding_dim = 16 + + # 2. Mock `prepare_inference_batches` to pass our dummy inputs straight through + inferer_mock.prepare_inference_batches.side_effect = ( + lambda data, pad_to_batch_size: [data] + ) + + # 3. Mock `infer_pure` to return the shape an ONNX model would actually return. + # `infer_pure` flattens the output to (batch_size * prediction_length, dim). + # For a batch size of 2 and prediction length of 5, it returns (10, 16). + flattened_sequence_length = ( + inferer_mock.inference_batch_size * inferer_mock.prediction_length + ) + dummy_onnx_output = np.ones((flattened_sequence_length, embedding_dim)) + inferer_mock.infer_pure.return_value = [dummy_onnx_output] + + # 4. Construct dummy inputs + size = 2 + x = {"feature_col": np.zeros((size, 10))} # 2 sequences, context_length = 10 + metadata = {"attention_valid_mask": np.ones((size, 10))} + + # 5. Execute the method under test + # Passing inferer_mock as `self` to the unbound class method. + embeddings = Inferer.adjust_and_infer_embedding(inferer_mock, x, size, metadata) + + # 6. Assert the bug is fixed + expected_rows = size * inferer_mock.prediction_length + + assert embeddings.shape[0] == expected_rows, ( + f"ONNX Embedding truncation bug detected! " + f"Expected {expected_rows} rows (size * prediction_length), " + f"but got {embeddings.shape[0]} rows. " + f"Check the slice at the end of np.concatenate in adjust_and_infer_embedding." + ) + assert embeddings.shape[1] == embedding_dim diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index c26d8a24..3600d9c7 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -205,6 +205,41 @@ def _all_valid_metadata(batch_size, seq_len, device=None): } +def _loss_shell_model( + target_column_types, + *, + loss_weights=None, + class_weights=None, +): + model = TransformerModel.__new__(TransformerModel) + model.target_columns = list(target_column_types) + model.target_column_types = dict(target_column_types) + model.loss_weights = loss_weights + model.device = "cpu" + model.criterion = {} + model.n_classes = {} + + for col, col_type in target_column_types.items(): + if col_type == "categorical": + weight = None + n_classes = 3 + if class_weights is not None and col in class_weights: + col_class_weights = class_weights[col] + weight = torch.tensor(col_class_weights, dtype=torch.float32) + n_classes = len(col_class_weights) + model.criterion[col] = torch.nn.CrossEntropyLoss( + reduction="none", + weight=weight, + ) + model.n_classes[col] = n_classes + elif col_type == "real": + model.criterion[col] = torch.nn.MSELoss(reduction="none") + else: + raise ValueError(col_type) + + return model + + def test_transformer_model_initialization(model, model_config): """Expected model layers.""" # Check if encoder dicts were created @@ -557,6 +592,290 @@ def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) +def test_calculate_local_loss_components_categorical_target_with_padding(): + model = _loss_shell_model({"cat_col": "categorical"}) + model.n_classes["cat_col"] = 3 + logits = torch.tensor( + [ + [[2.0, 0.0, 0.0]], + [[0.0, 2.0, 0.0]], + [[0.0, 0.0, 2.0]], + ] + ) + targets = {"cat_col": torch.tensor([[0, 1, 2]])} + valid_mask = torch.tensor([[True, False, True]]) + + loss_sums, token_count = TransformerModel._calculate_local_loss_components( + model, + {"cat_col": logits}, + targets, + valid_mask, + ) + raw_loss = torch.nn.functional.cross_entropy( + logits.reshape(-1, 3), + targets["cat_col"].T.reshape(-1), + reduction="none", + ) + + assert torch.isclose(loss_sums["cat_col"], raw_loss[[0, 2]].sum()) + assert torch.equal(token_count, torch.tensor(2)) + + +def test_calculate_local_loss_components_real_target_with_padding(): + model = _loss_shell_model({"real_col": "real"}) + output = {"real_col": torch.tensor([[[1.0]], [[2.0]], [[4.0]]])} + targets = {"real_col": torch.tensor([[0.0, 10.0, 1.0]])} + valid_mask = torch.tensor([[True, False, True]]) + + loss_sums, token_count = TransformerModel._calculate_local_loss_components( + model, output, targets, valid_mask + ) + + assert torch.isclose(loss_sums["real_col"], torch.tensor(10.0)) + assert torch.equal(token_count, torch.tensor(2)) + + +def test_calculate_training_loss_intersects_target_and_bert_masks(): + model = _loss_shell_model({"real_col": "real"}) + output = {"real_col": torch.tensor([[[1.0]], [[2.0]], [[4.0]]])} + targets = {"real_col": torch.tensor([[0.0, 10.0, 1.0]])} + metadata = { + "target_valid_mask": torch.tensor([[True, True, True]]), + "bert_mask": torch.tensor([[True, False, True]]), + } + + total_loss, component_losses = TransformerModel._calculate_loss( + model, output, targets, metadata + ) + + assert torch.isclose(total_loss, torch.tensor(5.0)) + assert torch.isclose(component_losses["real_col"], torch.tensor(5.0)) + + +def test_calculate_training_loss_applies_unequal_target_loss_weights(): + model = _loss_shell_model( + {"cat_col": "categorical", "real_col": "real"}, + loss_weights={"cat_col": 0.25, "real_col": 2.0}, + ) + model.n_classes["cat_col"] = 3 + output = { + "cat_col": torch.tensor( + [ + [[2.0, 0.0, 0.0]], + [[0.0, 2.0, 0.0]], + ] + ), + "real_col": torch.tensor([[[1.0]], [[3.0]]]), + } + targets = { + "cat_col": torch.tensor([[0, 1]]), + "real_col": torch.tensor([[0.0, 1.0]]), + } + metadata = {"target_valid_mask": torch.ones(1, 2, dtype=torch.bool)} + + total_loss, component_losses = TransformerModel._calculate_loss( + model, output, targets, metadata + ) + cat_mean = torch.nn.functional.cross_entropy( + output["cat_col"].reshape(-1, 3), + targets["cat_col"].T.reshape(-1), + reduction="mean", + ) + real_mean = torch.nn.functional.mse_loss( + output["real_col"].reshape(-1), + targets["real_col"].T.reshape(-1), + reduction="mean", + ) + + assert torch.isclose(component_losses["cat_col"], cat_mean * 0.25) + assert torch.isclose(component_losses["real_col"], real_mean * 2.0) + assert torch.isclose(total_loss, cat_mean * 0.25 + real_mean * 2.0) + + +def test_calculate_local_loss_components_keeps_class_weights_inside_criterion(): + class_weights = {"cat_col": [1.0, 4.0, 1.0]} + model = _loss_shell_model({"cat_col": "categorical"}, class_weights=class_weights) + logits = torch.tensor( + [ + [[2.0, 0.0, 0.0]], + [[2.0, 0.0, 0.0]], + ] + ) + targets = {"cat_col": torch.tensor([[0, 1]])} + valid_mask = torch.ones(1, 2, dtype=torch.bool) + + loss_sums, token_count = TransformerModel._calculate_local_loss_components( + model, + {"cat_col": logits}, + targets, + valid_mask, + ) + expected = torch.nn.functional.cross_entropy( + logits.reshape(-1, 3), + targets["cat_col"].T.reshape(-1), + reduction="none", + weight=torch.tensor(class_weights["cat_col"]), + ).sum() + + assert torch.isclose(loss_sums["cat_col"], expected) + assert torch.equal(token_count, torch.tensor(2)) + + +def test_calculate_local_loss_components_zero_selected_tokens_stays_connected(): + model = _loss_shell_model({"real_col": "real"}) + output = {"real_col": torch.ones(3, 1, 1, requires_grad=True)} + targets = {"real_col": torch.zeros(1, 3)} + valid_mask = torch.zeros(1, 3, dtype=torch.bool) + + loss_sums, token_count = TransformerModel._calculate_local_loss_components( + model, + output, + targets, + valid_mask, + ) + loss_sums["real_col"].backward() + + assert torch.equal(token_count, torch.tensor(0)) + assert torch.equal(loss_sums["real_col"].detach(), torch.tensor(0.0)) + assert torch.equal(output["real_col"].grad, torch.zeros_like(output["real_col"])) + + +def test_calculate_local_loss_components_raises_on_output_mask_mismatch(): + model = _loss_shell_model({"real_col": "real"}) + output = {"real_col": torch.zeros(3, 1, 1)} + targets = {"real_col": torch.zeros(1, 3)} + valid_mask = torch.ones(1, 2, dtype=torch.bool) + + with pytest.raises(RuntimeError, match="Loss/mask size mismatch"): + TransformerModel._calculate_local_loss_components( + model, + output, + targets, + valid_mask, + ) + + +def test_training_and_validation_loss_finalization_share_weighted_sum_count_semantics(): + model = _loss_shell_model( + {"cat_col": "categorical", "real_col": "real"}, + loss_weights={"cat_col": 0.5, "real_col": 3.0}, + ) + model.n_classes["cat_col"] = 3 + output = { + "cat_col": torch.tensor( + [ + [[1.0, 0.0, 0.0]], + [[0.0, 1.0, 0.0]], + [[0.0, 0.0, 1.0]], + ] + ), + "real_col": torch.tensor([[[1.0]], [[2.0]], [[3.0]]]), + } + targets = { + "cat_col": torch.tensor([[0, 1, 2]]), + "real_col": torch.tensor([[0.0, 0.0, 0.0]]), + } + valid_mask = torch.tensor([[True, False, True]]) + metadata = {"target_valid_mask": valid_mask} + + training_loss, training_components = TransformerModel._calculate_loss( + model, output, targets, metadata + ) + sums, count = TransformerModel._calculate_loss_components( + model, output, targets, valid_mask + ) + finalized_loss, finalized_components = TransformerModel._finalize_loss_components( + model, + sums, + count.double(), + ["cat_col", "real_col"], + "test", + ) + + assert torch.isclose(training_loss.double(), finalized_loss) + assert torch.isclose( + training_components["cat_col"].double(), finalized_components["cat_col"] + ) + assert torch.isclose( + training_components["real_col"].double(), finalized_components["real_col"] + ) + + +@pytest.mark.parametrize( + ("data_parallelism", "expected"), + [ + ("DDP", 7), + ("FSDP", 7), + ], +) +def test_gradient_reduction_factor_uses_active_world_size( + data_parallelism, + expected, + monkeypatch, +): + model = _loss_shell_model({"real_col": "real"}) + model.hparams = SimpleNamespace( + training_spec=SimpleNamespace(data_parallelism=data_parallelism) + ) + group = object() + model._data_parallel_process_group = lambda: group + + monkeypatch.setattr("sequifier.train.dist.is_available", lambda: True) + monkeypatch.setattr("sequifier.train.dist.is_initialized", lambda: True) + + def fake_get_world_size(group=None): + assert group is model._data_parallel_process_group() + return 7 + + monkeypatch.setattr("sequifier.train.dist.get_world_size", fake_get_world_size) + + assert TransformerModel._gradient_reduction_factor(model) == expected + + +def test_calculate_loss_requires_all_configured_targets(): + model = _loss_shell_model( + {"cat_col": "categorical", "real_col": "real"}, + loss_weights={"cat_col": 1.0, "real_col": 1.0}, + ) + output = { + "cat_col": torch.zeros(1, 1, 3), + "real_col": torch.zeros(1, 1, 1), + } + targets = {"cat_col": torch.zeros(1, 1, dtype=torch.long)} + metadata = {"target_valid_mask": torch.ones(1, 1, dtype=torch.bool)} + + with pytest.raises(RuntimeError, match="Missing target columns: \\['real_col'\\]"): + TransformerModel._calculate_loss(model, output, targets, metadata) + + +def test_training_loss_enables_fsdp_token_weighting( + monkeypatch, +): + model = _loss_shell_model({"real_col": "real"}) + model.hparams = SimpleNamespace( + training_spec=SimpleNamespace(data_parallelism="FSDP") + ) + output = {"real_col": torch.zeros(1, 1, 1)} + targets = {"real_col": torch.ones(1, 1)} + metadata = {"target_valid_mask": torch.ones(1, 1, dtype=torch.bool)} + + monkeypatch.setattr("sequifier.train.dist.is_available", lambda: True) + monkeypatch.setattr("sequifier.train.dist.is_initialized", lambda: True) + monkeypatch.setattr( + "sequifier.train.dist.get_world_size", + lambda group=None: 2, + ) + + def fake_all_reduce(tensor, op=None, group=None): + tensor.fill_(2) + + monkeypatch.setattr("sequifier.train.dist.all_reduce", fake_all_reduce) + + loss, _ = TransformerModel._calculate_loss(model, output, targets, metadata) + + assert torch.isclose(loss, torch.tensor(1.0)) + + def test_evaluation_loss_mask_intersects_target_bert_and_sample_masks(): metadata = { "target_valid_mask": torch.tensor( @@ -752,13 +1071,13 @@ def test_calculate_loss_components_aggregate_by_token_count(): model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} model.loss_weights = {"real_col": 1.0} - first_sums, first_counts = TransformerModel._calculate_loss_components( + first_sums, first_count = TransformerModel._calculate_loss_components( model, {"real_col": torch.zeros(1, 1, 1)}, {"real_col": torch.tensor([[10.0]])}, torch.ones(1, 1, dtype=torch.bool), ) - second_sums, second_counts = TransformerModel._calculate_loss_components( + second_sums, second_count = TransformerModel._calculate_loss_components( model, {"real_col": torch.zeros(100, 1, 1)}, {"real_col": torch.ones(1, 100)}, @@ -766,7 +1085,7 @@ def test_calculate_loss_components_aggregate_by_token_count(): ) aggregate = (first_sums["real_col"] + second_sums["real_col"]) / ( - first_counts["real_col"] + second_counts["real_col"] + first_count + second_count ) assert torch.isclose(aggregate, torch.tensor(200.0 / 101.0, dtype=torch.float64)) @@ -903,6 +1222,106 @@ def test_calculate_loss_zero_token_training_batch_is_differentiable(): assert torch.equal(output["real_col"].grad, torch.zeros_like(output["real_col"])) +def _train_epoch_test_batch(model, target_valid_mask): + seq_len = model.window_view.context_length + return SequifierBatch( + inputs={ + "cat_col": torch.ones(1, seq_len, dtype=torch.long), + "real_col": torch.ones(1, seq_len, dtype=torch.float32), + }, + targets={ + "cat_col": torch.ones(1, seq_len, dtype=torch.long), + "real_col": torch.ones(1, seq_len, dtype=torch.float32), + }, + metadata={ + "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), + "target_valid_mask": target_valid_mask, + }, + ) + + +def test_train_epoch_skips_optimizer_and_batch_scheduler_for_empty_accumulation_window( + model, +): + model.rank = 0 + model.log_interval = 2 + model.accumulation_steps = 2 + model.scheduler_step_on = "batch" + model.start_batch = 0 + model.optimizer = torch.optim.AdamW( + model.parameters(), + lr=0.01, + weight_decay=0.1, + ) + model.scheduler = torch.optim.lr_scheduler.StepLR( + model.optimizer, + step_size=1, + gamma=0.1, + ) + seq_len = model.window_view.context_length + empty_batch = _train_epoch_test_batch( + model, + torch.zeros(1, seq_len, dtype=torch.bool), + ) + before = {name: param.detach().clone() for name, param in model.named_parameters()} + lr_before = model.scheduler.get_last_lr()[0] + + TransformerModel._train_epoch( + model, + DataLoader([empty_batch, empty_batch], batch_size=None), + DataLoader([], batch_size=None), + epoch=1, + ) + + after = dict(model.named_parameters()) + assert all(torch.equal(before[name], after[name]) for name in before) + assert len(model.optimizer.state) == 0 + assert model.scheduler.get_last_lr()[0] == lr_before + + +def test_train_epoch_steps_once_for_mixed_empty_and_nonempty_accumulation_window( + model, +): + model.rank = 0 + model.log_interval = 2 + model.accumulation_steps = 2 + model.scheduler_step_on = "batch" + model.start_batch = 0 + model.optimizer = torch.optim.AdamW( + model.parameters(), + lr=0.01, + weight_decay=0.1, + ) + model.scheduler = torch.optim.lr_scheduler.StepLR( + model.optimizer, + step_size=1, + gamma=0.1, + ) + seq_len = model.window_view.context_length + empty_batch = _train_epoch_test_batch( + model, + torch.zeros(1, seq_len, dtype=torch.bool), + ) + nonempty_batch = _train_epoch_test_batch( + model, + torch.ones(1, seq_len, dtype=torch.bool), + ) + before = {name: param.detach().clone() for name, param in model.named_parameters()} + + TransformerModel._train_epoch( + model, + DataLoader([empty_batch, nonempty_batch], batch_size=None), + DataLoader([], batch_size=None), + epoch=1, + ) + + after = dict(model.named_parameters()) + assert any(not torch.equal(before[name], after[name]) for name in before) + assert len(model.optimizer.state) > 0 + assert model.scheduler.last_epoch == 1 + assert model.scheduler.get_last_lr()[0] == pytest.approx(0.001) + + def test_padding_keys_are_masked(bert_model): seq_len = bert_model.window_view.context_length diff --git a/tests/unit/test_train_distributed_loss.py b/tests/unit/test_train_distributed_loss.py new file mode 100644 index 00000000..51423489 --- /dev/null +++ b/tests/unit/test_train_distributed_loss.py @@ -0,0 +1,566 @@ +import datetime +import socket +from types import SimpleNamespace + +import pytest +import torch +import torch.distributed as dist +import torch.multiprocessing as mp +from torch.nn.parallel import DistributedDataParallel as DDP + +from sequifier.train import TransformerModel + + +class _TinyRealModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.param = torch.nn.Parameter(torch.tensor(0.0)) + + def forward(self, seq_len): + return {"real_col": self.param.expand(seq_len, 1, 1)} + + +class _TinyMultiTargetModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.cat_logits = torch.nn.Parameter(torch.tensor([0.2, -0.1, 0.0])) + self.real_param = torch.nn.Parameter(torch.tensor(0.5)) + + def forward(self, seq_len): + return { + "cat_col": self.cat_logits.reshape(1, 1, 3).expand(seq_len, 1, 3), + "real_col": self.real_param.expand(seq_len, 1, 1), + } + + +def _free_port(): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.bind(("127.0.0.1", 0)) + return sock.getsockname()[1] + + +def _loss_shell(target_column_types, *, data_parallelism=None, loss_weights=None): + model = TransformerModel.__new__(TransformerModel) + model.target_columns = list(target_column_types) + model.target_column_types = dict(target_column_types) + model.loss_weights = loss_weights + model.device = "cpu" + model.hparams = SimpleNamespace( + training_spec=SimpleNamespace(data_parallelism=data_parallelism) + ) + model.criterion = {} + model.n_classes = {} + + for col, col_type in target_column_types.items(): + if col_type == "real": + model.criterion[col] = torch.nn.MSELoss(reduction="none") + elif col_type == "categorical": + model.criterion[col] = torch.nn.CrossEntropyLoss(reduction="none") + model.n_classes[col] = 3 + else: + raise ValueError(col_type) + + return model + + +def _real_batch(seq_len, selected_count, target_value): + targets = {"real_col": torch.full((1, seq_len), float(target_value))} + mask = torch.zeros(1, seq_len, dtype=torch.bool) + mask[:, :selected_count] = True + metadata = {"target_valid_mask": mask} + return targets, metadata + + +def _concat_real_batch(seq_lens, selected_counts, target_values): + target_parts = [] + mask_parts = [] + for seq_len, selected_count, target_value in zip( + seq_lens, selected_counts, target_values + ): + target_parts.append(torch.full((1, seq_len), float(target_value))) + mask = torch.zeros(1, seq_len, dtype=torch.bool) + mask[:, :selected_count] = True + mask_parts.append(mask) + return ( + {"real_col": torch.cat(target_parts, dim=1)}, + {"target_valid_mask": torch.cat(mask_parts, dim=1)}, + ) + + +def _single_process_real_grad(seq_lens, selected_counts, target_values): + model = _TinyRealModel() + shell = _loss_shell({"real_col": "real"}) + targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(seq_lens)), + targets, + metadata, + ) + loss.backward() + return model.param.grad.detach().clone() + + +def _single_process_real_update(seq_lens, selected_counts, target_values, lr): + model = _TinyRealModel() + optimizer = torch.optim.SGD(model.parameters(), lr=lr) + shell = _loss_shell({"real_col": "real"}) + targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(seq_lens)), + targets, + metadata, + ) + loss.backward() + optimizer.step() + return model.param.detach().clone() + + +def _single_process_accumulated_real_update(microbatches, lr): + model = _TinyRealModel() + optimizer = torch.optim.SGD(model.parameters(), lr=lr) + shell = _loss_shell({"real_col": "real"}) + for microbatch in microbatches: + targets, metadata = _concat_real_batch( + microbatch["seq_lens"], + microbatch["selected_counts"], + microbatch["target_values"], + ) + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(microbatch["seq_lens"])), + targets, + metadata, + ) + loss.backward() + optimizer.step() + return model.param.detach().clone() + + +def _single_process_multi_target_grad( + seq_lens, cat_targets, real_targets, loss_weights +): + model = _TinyMultiTargetModel() + shell = _loss_shell( + {"cat_col": "categorical", "real_col": "real"}, + loss_weights=loss_weights, + ) + targets = { + "cat_col": torch.tensor([sum(cat_targets, [])], dtype=torch.long), + "real_col": torch.tensor([sum(real_targets, [])], dtype=torch.float32), + } + metadata = {"target_valid_mask": torch.ones(1, sum(seq_lens), dtype=torch.bool)} + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(seq_lens)), + targets, + metadata, + ) + loss.backward() + return torch.cat( + [ + model.cat_logits.grad.detach(), + model.real_param.grad.detach().reshape(1), + ] + ) + + +def _ddp_case_worker(rank, world_size, init_method, case, queue): + torch.set_num_threads(1) + dist.init_process_group( + "gloo", + rank=rank, + world_size=world_size, + init_method=init_method, + timeout=datetime.timedelta(seconds=30), + ) + try: + + def put_result(tensor): + detached = tensor.detach().cpu() + if detached.numel() == 1: + queue.put(float(detached.item())) + else: + queue.put(detached.tolist()) + + if case["kind"] in { + "real_grad", + "real_update", + "empty_grad", + "accumulation_update", + "empty_window_state", + }: + model = _TinyRealModel() + ddp_model = DDP(model) + shell = _loss_shell({"real_col": "real"}, data_parallelism="DDP") + + if case["kind"] == "empty_window_state": + optimizer = torch.optim.AdamW( + model.parameters(), + lr=case["lr"], + weight_decay=case["weight_decay"], + ) + scheduler = torch.optim.lr_scheduler.StepLR( + optimizer, + step_size=1, + gamma=0.1, + ) + before = model.param.detach().clone() + accumulated_global_token_count = torch.zeros((), dtype=torch.int64) + + for batch_idx, microbatch in enumerate(case["microbatches"]): + seq_len = microbatch["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + ) + loss, _, _, _, global_count = ( + TransformerModel._calculate_training_loss( + shell, + ddp_model(seq_len), + targets, + metadata, + ) + ) + loss.backward() + accumulated_global_token_count += global_count.detach() + optimizer_step_due = (batch_idx + 1) % case[ + "accumulation_steps" + ] == 0 or (batch_idx + 1) == len(case["microbatches"]) + optimizer_step_performed = False + if ( + optimizer_step_due + and accumulated_global_token_count.detach().cpu().item() > 0 + ): + optimizer.step() + optimizer.zero_grad() + optimizer_step_performed = True + + if optimizer_step_due: + if not optimizer_step_performed: + optimizer.zero_grad() + accumulated_global_token_count.zero_() + + if optimizer_step_performed: + scheduler.step() + + if rank == 0: + queue.put( + [ + float((model.param.detach() - before).abs().item()), + float(scheduler.get_last_lr()[0]), + float(scheduler.last_epoch), + float(len(optimizer.state)), + ] + ) + return + + if case["kind"] == "accumulation_update": + optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) + for microbatch in case["microbatches"]: + seq_len = microbatch["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + ) + loss, _, _, _, _ = TransformerModel._calculate_training_loss( + shell, + ddp_model(seq_len), + targets, + metadata, + ) + loss.backward() + optimizer.step() + if rank == 0: + put_result(model.param) + return + + seq_len = case["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + case["selected_counts"][rank], + case["target_values"][rank], + ) + loss, _, _, _, _ = TransformerModel._calculate_training_loss( + shell, + ddp_model(seq_len), + targets, + metadata, + ) + loss.backward() + + if case["kind"] == "real_update": + optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) + optimizer.step() + result = model.param.detach().clone() + else: + result = model.param.grad.detach().clone() + + if rank == 0: + put_result(result) + return + + if case["kind"] == "metrics": + shell = _loss_shell( + {"cat_col": "categorical", "real_col": "real"}, + data_parallelism="DDP", + loss_weights=case["loss_weights"], + ) + sums = { + "cat_col": torch.tensor(case["cat_sums"][rank], dtype=torch.float64), + "real_col": torch.tensor(case["real_sums"][rank], dtype=torch.float64), + } + count = torch.tensor(case["counts"][rank], dtype=torch.float64) + total, losses = TransformerModel._finalize_loss_components( + shell, + sums, + count, + ["cat_col", "real_col"], + "training", + ) + if rank == 0: + queue.put( + [ + float(total.detach().cpu().item()), + float(losses["cat_col"].detach().cpu().item()), + float(losses["real_col"].detach().cpu().item()), + ] + ) + return + + if case["kind"] == "multi_target_grad": + model = _TinyMultiTargetModel() + ddp_model = DDP(model) + shell = _loss_shell( + {"cat_col": "categorical", "real_col": "real"}, + data_parallelism="DDP", + loss_weights=case["loss_weights"], + ) + seq_len = case["seq_lens"][rank] + targets = { + "cat_col": torch.tensor([case["cat_targets"][rank]], dtype=torch.long), + "real_col": torch.tensor( + [case["real_targets"][rank]], dtype=torch.float32 + ), + } + metadata = {"target_valid_mask": torch.ones(1, seq_len, dtype=torch.bool)} + loss, _, _, _, _ = TransformerModel._calculate_training_loss( + shell, + ddp_model(seq_len), + targets, + metadata, + ) + loss.backward() + if rank == 0: + put_result( + torch.cat( + [ + model.cat_logits.grad.detach(), + model.real_param.grad.detach().reshape(1), + ] + ) + ) + return + + raise ValueError(case["kind"]) + finally: + dist.destroy_process_group() + + +def _run_ddp_case(case): + ctx = mp.get_context("spawn") + queue = ctx.SimpleQueue() + init_method = f"tcp://127.0.0.1:{_free_port()}" + mp.spawn( + _ddp_case_worker, + args=(2, init_method, case, queue), + nprocs=2, + join=True, + ) + return torch.tensor(queue.get()) + + +pytestmark = pytest.mark.skipif( + not dist.is_available(), + reason="torch.distributed is not available", +) + + +def test_ddp_unequal_token_counts_match_single_process_reference(): + case = { + "kind": "real_grad", + "seq_lens": [100, 10], + "selected_counts": [100, 10], + "target_values": [2.0, 8.0], + } + + ddp_grad = _run_ddp_case(case) + reference_grad = _single_process_real_grad( + case["seq_lens"], case["selected_counts"], case["target_values"] + ) + old_equal_rank_mean = torch.tensor((-2.0 * 2.0 + -2.0 * 8.0) / 2.0) + + assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) + assert not torch.allclose(ddp_grad, old_equal_rank_mean, atol=1e-3) + + +def test_ddp_zero_token_rank_does_not_attenuate_populated_rank(): + case = { + "kind": "real_grad", + "seq_lens": [5, 5], + "selected_counts": [5, 0], + "target_values": [3.0, 100.0], + } + + ddp_grad = _run_ddp_case(case) + reference_grad = _single_process_real_grad( + case["seq_lens"], case["selected_counts"], case["target_values"] + ) + + assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) + assert torch.allclose(ddp_grad, torch.tensor(-6.0), atol=1e-6) + + +def test_ddp_equal_token_counts_retain_equal_rank_mean_behavior(): + case = { + "kind": "real_grad", + "seq_lens": [4, 4], + "selected_counts": [4, 4], + "target_values": [1.0, 5.0], + } + + ddp_grad = _run_ddp_case(case) + equal_rank_mean = torch.tensor((-2.0 * 1.0 + -2.0 * 5.0) / 2.0) + + assert torch.allclose(ddp_grad, equal_rank_mean, atol=1e-6) + + +def test_ddp_multi_target_weighting_matches_single_process_reference(): + case = { + "kind": "multi_target_grad", + "seq_lens": [3, 1], + "cat_targets": [[0, 1, 2], [1]], + "real_targets": [[1.0, 2.0, 3.0], [4.0]], + "loss_weights": {"cat_col": 0.25, "real_col": 2.0}, + } + + ddp_grad = _run_ddp_case(case) + reference_grad = _single_process_multi_target_grad( + case["seq_lens"], + case["cat_targets"], + case["real_targets"], + case["loss_weights"], + ) + + assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) + + +def test_ddp_world_size_two_optimizer_update_matches_single_process_reference(): + case = { + "kind": "real_update", + "seq_lens": [6, 4], + "selected_counts": [6, 4], + "target_values": [1.0, 3.0], + "lr": 0.1, + } + + ddp_param = _run_ddp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(ddp_param, reference_param, atol=1e-6) + + +def test_ddp_globally_empty_batch_gradients_are_finite_and_zero(): + case = { + "kind": "empty_grad", + "seq_lens": [3, 4], + "selected_counts": [0, 0], + "target_values": [1.0, 3.0], + } + + ddp_grad = _run_ddp_case(case) + + assert torch.isfinite(ddp_grad) + assert torch.equal(ddp_grad, torch.tensor(0.0)) + + +def test_ddp_globally_empty_accumulation_window_leaves_state_unchanged(): + case = { + "kind": "empty_window_state", + "microbatches": [ + { + "seq_lens": [3, 4], + "selected_counts": [0, 0], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [2, 5], + "selected_counts": [0, 0], + "target_values": [2.0, 4.0], + }, + ], + "accumulation_steps": 2, + "lr": 0.01, + "weight_decay": 0.1, + } + + param_delta, lr, scheduler_epoch, optimizer_state_len = _run_ddp_case(case) + + assert param_delta == 0 + assert lr == pytest.approx(case["lr"]) + assert scheduler_epoch == 0 + assert optimizer_state_len == 0 + + +def test_ddp_gradient_accumulation_preserves_per_microbatch_weighting(): + microbatches = [ + { + "seq_lens": [4, 2], + "selected_counts": [4, 2], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [1, 5], + "selected_counts": [1, 5], + "target_values": [10.0, 2.0], + }, + ] + case = { + "kind": "accumulation_update", + "microbatches": microbatches, + "lr": 0.05, + } + + ddp_param = _run_ddp_case(case) + reference_param = _single_process_accumulated_real_update(microbatches, case["lr"]) + + assert torch.allclose(ddp_param, reference_param, atol=1e-6) + + +def test_ddp_global_training_metric_finalization_matches_manual_sum_count(): + case = { + "kind": "metrics", + "cat_sums": [10.0, 5.0], + "real_sums": [2.0, 8.0], + "counts": [4.0, 6.0], + "loss_weights": {"cat_col": 0.5, "real_col": 2.0}, + } + + total, cat_loss, real_loss = _run_ddp_case(case) + + global_count = sum(case["counts"]) + expected_cat = ( + sum(case["cat_sums"]) / global_count * case["loss_weights"]["cat_col"] + ) + expected_real = ( + sum(case["real_sums"]) / global_count * case["loss_weights"]["real_col"] + ) + + assert cat_loss == pytest.approx(expected_cat) + assert real_loss == pytest.approx(expected_real) + assert total == pytest.approx(expected_cat + expected_real) diff --git a/tests/unit/test_train_fsdp_loss.py b/tests/unit/test_train_fsdp_loss.py new file mode 100644 index 00000000..b4f4a6b9 --- /dev/null +++ b/tests/unit/test_train_fsdp_loss.py @@ -0,0 +1,553 @@ +import datetime +import importlib +import socket +from types import SimpleNamespace + +import pytest +import torch +import torch.distributed as dist +import torch.multiprocessing as mp +from torch.distributed.checkpoint.state_dict import ( + StateDictOptions, + get_model_state_dict, +) + +from sequifier.train import TransformerModel + +_train_module = importlib.import_module("sequifier.train") +MixedPrecisionPolicy = getattr(_train_module, "MixedPrecisionPolicy") +fully_shard = getattr(_train_module, "fully_shard") +init_device_mesh = getattr(_train_module, "init_device_mesh") + +pytestmark = pytest.mark.skipif( + not dist.is_available() + or not dist.is_nccl_available() + or not torch.cuda.is_available() + or torch.cuda.device_count() < 2, + reason="FSDP2 loss tests require two CUDA devices and NCCL", +) + + +class _TinyRealModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.param = torch.nn.Parameter(torch.zeros(2)) + + def forward(self, seq_len): + return {"real_col": self.param[0].expand(seq_len, 1, 1)} + + +class _TinyMultiTargetModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.cat_logits = torch.nn.Parameter(torch.tensor([0.2, -0.1, 0.0])) + self.real_param = torch.nn.Parameter(torch.tensor([0.5, 0.0])) + + def forward(self, seq_len): + return { + "cat_col": self.cat_logits.reshape(1, 1, 3).expand(seq_len, 1, 3), + "real_col": self.real_param[0].expand(seq_len, 1, 1), + } + + +def _free_port(): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock.bind(("127.0.0.1", 0)) + return sock.getsockname()[1] + + +def _loss_shell(target_column_types, *, device, loss_weights=None): + model = TransformerModel.__new__(TransformerModel) + model.target_columns = list(target_column_types) + model.target_column_types = dict(target_column_types) + model.loss_weights = loss_weights + model.device = device + model.hparams = SimpleNamespace( + training_spec=SimpleNamespace(data_parallelism="FSDP") + ) + model.criterion = {} + model.n_classes = {} + + for col, col_type in target_column_types.items(): + if col_type == "real": + model.criterion[col] = torch.nn.MSELoss(reduction="none") + elif col_type == "categorical": + model.criterion[col] = torch.nn.CrossEntropyLoss(reduction="none") + model.n_classes[col] = 3 + else: + raise ValueError(col_type) + + return model + + +def _real_batch(seq_len, selected_count, target_value, device): + targets = {"real_col": torch.full((1, seq_len), float(target_value), device=device)} + mask = torch.zeros(1, seq_len, dtype=torch.bool, device=device) + mask[:, :selected_count] = True + metadata = {"target_valid_mask": mask} + return targets, metadata + + +def _concat_real_batch(seq_lens, selected_counts, target_values): + target_parts = [] + mask_parts = [] + for seq_len, selected_count, target_value in zip( + seq_lens, selected_counts, target_values + ): + target_parts.append(torch.full((1, seq_len), float(target_value))) + mask = torch.zeros(1, seq_len, dtype=torch.bool) + mask[:, :selected_count] = True + mask_parts.append(mask) + return ( + {"real_col": torch.cat(target_parts, dim=1)}, + {"target_valid_mask": torch.cat(mask_parts, dim=1)}, + ) + + +def _single_process_real_update(seq_lens, selected_counts, target_values, lr): + model = _TinyRealModel() + optimizer = torch.optim.SGD(model.parameters(), lr=lr) + shell = _loss_shell({"real_col": "real"}, device="cpu") + targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(seq_lens)), + targets, + metadata, + ) + loss.backward() + optimizer.step() + return model.param.detach().clone() + + +def _single_process_accumulated_real_update(microbatches, lr): + model = _TinyRealModel() + optimizer = torch.optim.SGD(model.parameters(), lr=lr) + shell = _loss_shell({"real_col": "real"}, device="cpu") + for microbatch in microbatches: + targets, metadata = _concat_real_batch( + microbatch["seq_lens"], + microbatch["selected_counts"], + microbatch["target_values"], + ) + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(microbatch["seq_lens"])), + targets, + metadata, + ) + loss.backward() + optimizer.step() + return model.param.detach().clone() + + +def _single_process_multi_target_update( + seq_lens, + cat_targets, + real_targets, + loss_weights, + lr, +): + model = _TinyMultiTargetModel() + optimizer = torch.optim.SGD(model.parameters(), lr=lr) + shell = _loss_shell( + {"cat_col": "categorical", "real_col": "real"}, + device="cpu", + loss_weights=loss_weights, + ) + targets = { + "cat_col": torch.tensor([sum(cat_targets, [])], dtype=torch.long), + "real_col": torch.tensor([sum(real_targets, [])], dtype=torch.float32), + } + metadata = {"target_valid_mask": torch.ones(1, sum(seq_lens), dtype=torch.bool)} + loss, _ = TransformerModel._calculate_loss( + shell, + model(sum(seq_lens)), + targets, + metadata, + ) + loss.backward() + optimizer.step() + return torch.cat( + [ + model.cat_logits.detach().reshape(-1), + model.real_param.detach().reshape(-1), + ] + ) + + +def _state_vector(model, keys, rank): + options = StateDictOptions(full_state_dict=True, cpu_offload=True) + state = get_model_state_dict(model, options=options) + if rank != 0: + return None + + values = [] + for key in keys: + values.append(state[key].reshape(-1).to(dtype=torch.float32)) + return torch.cat(values) + + +def _mixed_precision_policy(case): + reduce_dtype = case.get("reduce_dtype") + if reduce_dtype is None: + return None + + return MixedPrecisionPolicy( + param_dtype=torch.bfloat16, + reduce_dtype=reduce_dtype, + output_dtype=torch.bfloat16, + ) + + +def _fsdp_case_worker(rank, world_size, init_method, case, queue): + torch.cuda.set_device(rank) + device = torch.device(f"cuda:{rank}") + dist.init_process_group( + backend="nccl", + rank=rank, + world_size=world_size, + init_method=init_method, + timeout=datetime.timedelta(seconds=60), + ) + try: + mesh = init_device_mesh("cuda", (world_size,)) + mp_policy = _mixed_precision_policy(case) + + if case["kind"] in { + "real_update", + "accumulation_update", + "empty_window_state", + }: + model = _TinyRealModel().to(device) + fully_shard(model, mesh=mesh, mp_policy=mp_policy) + shell = _loss_shell({"real_col": "real"}, device=str(device)) + shell._data_parallel_group = mesh.get_group() + + if case["kind"] == "empty_window_state": + optimizer = torch.optim.AdamW( + model.parameters(), + lr=case["lr"], + weight_decay=case["weight_decay"], + ) + scheduler = torch.optim.lr_scheduler.StepLR( + optimizer, + step_size=1, + gamma=0.1, + ) + before = _state_vector(model, ["param"], rank) + accumulated_global_token_count = torch.zeros( + (), dtype=torch.int64, device=device + ) + + for batch_idx, microbatch in enumerate(case["microbatches"]): + seq_len = microbatch["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + device, + ) + loss, _, _, _, global_count = ( + TransformerModel._calculate_training_loss( + shell, + model(seq_len), + targets, + metadata, + ) + ) + loss.backward() + accumulated_global_token_count += global_count.detach() + optimizer_step_due = (batch_idx + 1) % case[ + "accumulation_steps" + ] == 0 or (batch_idx + 1) == len(case["microbatches"]) + optimizer_step_performed = False + if ( + optimizer_step_due + and accumulated_global_token_count.detach().cpu().item() > 0 + ): + optimizer.step() + optimizer.zero_grad() + optimizer_step_performed = True + + if optimizer_step_due: + if not optimizer_step_performed: + optimizer.zero_grad() + accumulated_global_token_count.zero_() + + if optimizer_step_performed: + scheduler.step() + + after = _state_vector(model, ["param"], rank) + if rank == 0: + assert before is not None + assert after is not None + queue.put( + [ + float((after - before).abs().max().item()), + float(scheduler.get_last_lr()[0]), + float(scheduler.last_epoch), + float(len(optimizer.state)), + ] + ) + return + + optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) + if case["kind"] == "accumulation_update": + for microbatch in case["microbatches"]: + seq_len = microbatch["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + device, + ) + loss, _ = TransformerModel._calculate_loss( + shell, + model(seq_len), + targets, + metadata, + ) + loss.backward() + else: + seq_len = case["seq_lens"][rank] + targets, metadata = _real_batch( + seq_len, + case["selected_counts"][rank], + case["target_values"][rank], + device, + ) + loss, _ = TransformerModel._calculate_loss( + shell, + model(seq_len), + targets, + metadata, + ) + loss.backward() + + optimizer.step() + state = _state_vector(model, ["param"], rank) + if rank == 0: + assert state is not None + queue.put(state.tolist()) + return + + if case["kind"] == "multi_target_update": + model = _TinyMultiTargetModel().to(device) + fully_shard(model, mesh=mesh, mp_policy=mp_policy) + shell = _loss_shell( + {"cat_col": "categorical", "real_col": "real"}, + device=str(device), + loss_weights=case["loss_weights"], + ) + shell._data_parallel_group = mesh.get_group() + optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) + seq_len = case["seq_lens"][rank] + targets = { + "cat_col": torch.tensor( + [case["cat_targets"][rank]], dtype=torch.long, device=device + ), + "real_col": torch.tensor( + [case["real_targets"][rank]], dtype=torch.float32, device=device + ), + } + metadata = { + "target_valid_mask": torch.ones( + 1, seq_len, dtype=torch.bool, device=device + ) + } + loss, _ = TransformerModel._calculate_loss( + shell, + model(seq_len), + targets, + metadata, + ) + loss.backward() + optimizer.step() + state = _state_vector(model, ["cat_logits", "real_param"], rank) + if rank == 0: + assert state is not None + queue.put(state.tolist()) + return + + raise ValueError(case["kind"]) + finally: + dist.destroy_process_group() + torch.cuda.empty_cache() + + +def _run_fsdp_case(case): + ctx = mp.get_context("spawn") + queue = ctx.SimpleQueue() + init_method = f"tcp://127.0.0.1:{_free_port()}" + mp.spawn( + _fsdp_case_worker, + args=(2, init_method, case, queue), + nprocs=2, + join=True, + ) + return torch.tensor(queue.get(), dtype=torch.float32) + + +def test_fsdp_unequal_token_counts_match_single_process_reference(): + case = { + "kind": "real_update", + "seq_lens": [100, 10], + "selected_counts": [100, 10], + "target_values": [2.0, 8.0], + "lr": 0.1, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + + +@pytest.mark.parametrize("reduce_dtype", [torch.bfloat16, torch.float32]) +def test_fsdp_mixed_precision_unequal_token_counts_match_reference(reduce_dtype): + case = { + "kind": "real_update", + "seq_lens": [100, 10], + "selected_counts": [100, 10], + "target_values": [2.0, 8.0], + "lr": 0.1, + "reduce_dtype": reduce_dtype, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-2, rtol=1e-2) + + +def test_fsdp_zero_token_rank_does_not_attenuate_populated_rank(): + case = { + "kind": "real_update", + "seq_lens": [5, 5], + "selected_counts": [5, 0], + "target_values": [3.0, 100.0], + "lr": 0.1, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + + +@pytest.mark.parametrize("reduce_dtype", [torch.bfloat16, torch.float32]) +def test_fsdp_mixed_precision_zero_token_rank_is_not_attenuated(reduce_dtype): + case = { + "kind": "real_update", + "seq_lens": [5, 5], + "selected_counts": [5, 0], + "target_values": [3.0, 100.0], + "lr": 0.1, + "reduce_dtype": reduce_dtype, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-2, rtol=1e-2) + + +def test_fsdp_multi_target_weighting_matches_single_process_reference(): + case = { + "kind": "multi_target_update", + "seq_lens": [3, 1], + "cat_targets": [[0, 1, 2], [1]], + "real_targets": [[1.0, 2.0, 3.0], [4.0]], + "loss_weights": {"cat_col": 0.25, "real_col": 2.0}, + "lr": 0.1, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_multi_target_update( + case["seq_lens"], + case["cat_targets"], + case["real_targets"], + case["loss_weights"], + case["lr"], + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + + +def test_fsdp_world_size_two_optimizer_update_matches_single_process_reference(): + case = { + "kind": "real_update", + "seq_lens": [6, 4], + "selected_counts": [6, 4], + "target_values": [1.0, 3.0], + "lr": 0.1, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_real_update( + case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] + ) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + + +def test_fsdp_gradient_accumulation_preserves_per_microbatch_weighting(): + microbatches = [ + { + "seq_lens": [4, 2], + "selected_counts": [4, 2], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [1, 5], + "selected_counts": [1, 5], + "target_values": [10.0, 2.0], + }, + ] + case = { + "kind": "accumulation_update", + "microbatches": microbatches, + "lr": 0.05, + } + + fsdp_param = _run_fsdp_case(case) + reference_param = _single_process_accumulated_real_update(microbatches, case["lr"]) + + assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + + +def test_fsdp_globally_empty_accumulation_window_leaves_state_unchanged(): + case = { + "kind": "empty_window_state", + "microbatches": [ + { + "seq_lens": [3, 4], + "selected_counts": [0, 0], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [2, 5], + "selected_counts": [0, 0], + "target_values": [2.0, 4.0], + }, + ], + "accumulation_steps": 2, + "lr": 0.01, + "weight_decay": 0.1, + } + + param_delta, lr, scheduler_epoch, optimizer_state_len = _run_fsdp_case(case) + + assert param_delta == 0 + assert lr == pytest.approx(case["lr"]) + assert scheduler_epoch == 0 + assert optimizer_state_len == 0 From 214661173b2d107d3dc412de66319b662b0ec406 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 19:18:18 +0200 Subject: [PATCH 62/81] Vectorize bert masking --- src/sequifier/config/probabilities.py | 65 +++-- src/sequifier/helpers.py | 249 +++++++++++++------- tests/unit/test_helpers.py | 327 +++++++++++++++++++++++++- tests/unit/test_probabilities.py | 51 ++++ 4 files changed, 583 insertions(+), 109 deletions(-) create mode 100644 tests/unit/test_probabilities.py diff --git a/src/sequifier/config/probabilities.py b/src/sequifier/config/probabilities.py index 231dd6a1..ddb92ae1 100644 --- a/src/sequifier/config/probabilities.py +++ b/src/sequifier/config/probabilities.py @@ -1,5 +1,6 @@ +import math from abc import ABC, abstractmethod -from typing import Annotated, Literal, Union +from typing import Annotated, Literal, Optional, Union import torch from pydantic import BaseModel, Field @@ -11,7 +12,12 @@ class ProbabilityDistributionBaseClass(ABC): """ @abstractmethod - def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: + def sample( + self, + shape: tuple[int, ...], + device: torch.device, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: pass @@ -19,14 +25,19 @@ class GeometricDistribution(BaseModel, ProbabilityDistributionBaseClass): type: Literal["GeometricDistribution"] = "GeometricDistribution" p: float = Field(..., gt=0.0, le=1.0) - def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: + def sample( + self, + shape: tuple[int, ...], + device: torch.device, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: if self.p == 1.0: return torch.ones(shape, device=device, dtype=torch.long) - # torch.distributions.Geometric models the number of failures before the first success. - # Adding 1 converts it to the total number of trials (span length). - m = torch.distributions.Geometric(probs=torch.tensor([self.p], device=device)) - return (m.sample(shape).squeeze(-1) + 1).long() + uniform = torch.rand(shape, device=device, generator=generator) + return ( + torch.floor(torch.log1p(-uniform) / math.log1p(-self.p)).to(torch.long) + 1 + ) class NormalDistributionDiscretizedFloor(BaseModel, ProbabilityDistributionBaseClass): @@ -36,9 +47,16 @@ class NormalDistributionDiscretizedFloor(BaseModel, ProbabilityDistributionBaseC mean: float standard_deviation: float = Field(..., gt=0.0) - def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: - val = torch.normal( - mean=self.mean, std=self.standard_deviation, size=shape, device=device + def sample( + self, + shape: tuple[int, ...], + device: torch.device, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + val = ( + torch.randn(shape, device=device, generator=generator) + * self.standard_deviation + + self.mean ) return torch.clamp(torch.round(val), min=0).long() + 1 @@ -52,12 +70,18 @@ class LogNormalDistributionDiscretizedFloor( mean: float standard_deviation: float = Field(..., gt=0.0) - def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: - m = torch.distributions.LogNormal( - loc=torch.tensor([self.mean], device=device), - scale=torch.tensor([self.standard_deviation], device=device), + def sample( + self, + shape: tuple[int, ...], + device: torch.device, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + normal = ( + torch.randn(shape, device=device, generator=generator) + * self.standard_deviation + + self.mean ) - val = m.sample(shape).squeeze(-1) + val = torch.exp(normal) return torch.round(val).long() + 1 @@ -65,9 +89,14 @@ class PoissonDistributionFloor(BaseModel, ProbabilityDistributionBaseClass): type: Literal["PoissonDistributionFloor"] = "PoissonDistributionFloor" rate: float = Field(..., gt=0.0) - def sample(self, shape: tuple, device: torch.device) -> torch.Tensor: - m = torch.distributions.Poisson(rate=torch.tensor([self.rate], device=device)) - return m.sample(shape).squeeze(-1).long() + 1 + def sample( + self, + shape: tuple[int, ...], + device: torch.device, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + rate = torch.full(shape, self.rate, device=device) + return torch.poisson(rate, generator=generator).long() + 1 ProbabilityDistribution = Annotated[ diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 4769da24..4faee46b 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -1,4 +1,5 @@ import glob +import math import os import random import re @@ -490,6 +491,102 @@ def get_last_training_batch_timedelta( return (t2 - t1).total_seconds() +def _build_bert_span_mask( + valid_mask: torch.Tensor, + masking_probability: float, + span_distribution: Any, + *, + generator: Optional[torch.Generator] = None, +) -> torch.Tensor: + """Construct exact-budget, non-overlapping BERT span masks.""" + valid_mask = valid_mask.bool() + batch_size, seq_len = valid_mask.shape + device = valid_mask.device + + valid_lengths = valid_mask.sum(dim=1, dtype=torch.long) + budgets = (valid_lengths.to(torch.float32) * masking_probability).to(torch.long) + + max_spans = max(1, math.floor(seq_len * masking_probability) + 10) + sampled_lengths = span_distribution.sample( + (batch_size, max_spans), + device=device, + generator=generator, + ) + sampled_lengths = sampled_lengths.to(torch.long).clamp_min_(1) + + used_before = sampled_lengths.cumsum(dim=1) - sampled_lengths + remaining = (budgets[:, None] - used_before).clamp_min(0) + span_lengths = torch.minimum(sampled_lengths, remaining) + + n_spans = (span_lengths > 0).sum(dim=1) + total_gap_length = valid_lengths - budgets + + gap_slot = torch.arange(max_spans + 1, device=device) + active_gap_slot = gap_slot[None, :] <= n_spans[:, None] + + uniform = torch.rand( + (batch_size, max_spans + 1), + device=device, + dtype=torch.float32, + generator=generator, + ) + uniform = uniform.clamp_min(torch.finfo(uniform.dtype).tiny) + + gap_weights = torch.where( + active_gap_slot, + -torch.log(uniform), + torch.zeros_like(uniform), + ) + cumulative_weights = gap_weights.cumsum(dim=1) + weight_totals = cumulative_weights[:, -1:].clamp_min( + torch.finfo(gap_weights.dtype).tiny + ) + + gap_edges = torch.floor( + cumulative_weights + / weight_totals + * total_gap_length[:, None].to(gap_weights.dtype) + ).to(torch.long) + gap_edges = torch.where( + gap_slot[None, :] >= n_spans[:, None], + total_gap_length[:, None], + gap_edges, + ) + + gaps = torch.diff( + torch.cat( + [ + torch.zeros((batch_size, 1), dtype=torch.long, device=device), + gap_edges, + ], + dim=1, + ), + dim=1, + ) + + lengths_before = span_lengths.cumsum(dim=1) - span_lengths + gaps_through_current = gaps[:, :max_spans].cumsum(dim=1) + + span_starts = lengths_before + gaps_through_current + span_ends = span_starts + span_lengths + + compact_position = valid_mask.to(torch.long).cumsum(dim=1) - 1 + compact_position = compact_position.clamp_min(0) + + started_spans = torch.searchsorted( + span_starts.contiguous(), + compact_position.contiguous(), + right=True, + ) + ended_spans = torch.searchsorted( + span_ends.contiguous(), + compact_position.contiguous(), + right=True, + ) + + return valid_mask & (started_spans > ended_spans) + + def apply_bert_masking( data_batch: Dict[str, torch.Tensor], targets_batch: Dict[str, torch.Tensor], @@ -498,18 +595,13 @@ def apply_bert_masking( eval_seed: Optional[int] = None, ) -> tuple[Dict[str, torch.Tensor], Dict[str, torch.Tensor], Dict[str, torch.Tensor]]: """Apply BERT span corruption and attach prediction masks.""" - data_batch = {k: tensor.clone() for k, tensor in data_batch.items()} - targets_batch = {k: tensor.clone().detach() for k, tensor in targets_batch.items()} - metadata_batch = ( - {k: tensor.clone().detach() for k, tensor in metadata_batch.items()} - if metadata_batch - else {} - ) + if not metadata_batch or "attention_valid_mask" not in metadata_batch: + raise ValueError("BERT masking requires metadata['attention_valid_mask']") valid_mask = metadata_batch["attention_valid_mask"].bool() - batch_size, seq_len = valid_mask.shape device = valid_mask.device + for target_name, target in targets_batch.items(): if target.shape != valid_mask.shape: raise ValueError( @@ -517,70 +609,32 @@ def apply_bert_masking( f"expected {valid_mask.shape}" ) + generator: Optional[torch.Generator] = None if eval_seed is not None: - cpu_rng_state = torch.get_rng_state() - if device.type == "cuda": - gpu_rng_state = torch.cuda.get_rng_state(device) - torch.manual_seed(eval_seed) - - masking_prob = config.training_spec.bert_spec.masking_probability - budgets = (valid_mask.sum(dim=1) * masking_prob).long() - - bert_mask = torch.zeros((batch_size, seq_len), dtype=torch.bool, device=device) - - max_spans = int(seq_len * masking_prob) + 10 - - sampled_lengths = config.training_spec.bert_spec.span_masking.sample( - (batch_size, max_spans), device=device + seeded_generator = torch.Generator(device=device) + seeded_generator.manual_seed(eval_seed) + generator = seeded_generator + + bert_spec = config.training_spec.bert_spec + if bert_spec is None: + raise ValueError("bert_spec must be configured for BERT training") + + bert_mask = _build_bert_span_mask( + valid_mask, + bert_spec.masking_probability, + bert_spec.span_masking, + generator=generator, ) - sampled_starts_pct = torch.rand((batch_size, max_spans), device=device) - for i in range(batch_size): - budget = budgets[i].item() - valid_positions = valid_mask[i].nonzero(as_tuple=True)[0] - valid_len = len(valid_positions) - - if budget < 1 or valid_len < 1: - continue - - sampled_starts = (sampled_starts_pct[i] * valid_len).long().tolist() - - sampled_lengths_list = sampled_lengths[i].tolist() - - current_masked = 0 - span_idx = 0 - - while current_masked < budget and span_idx < max_spans: - span_len = sampled_lengths_list[span_idx] - start_idx = sampled_starts[span_idx] - - end_idx = min(start_idx + span_len, valid_len) - span_positions = valid_positions[start_idx:end_idx] - if len(span_positions) == 0: - span_idx += 1 - continue + replacement = bert_spec.replacement_distribution + p_masked = replacement.masked + p_random = replacement.random - unmasked_positions = span_positions[~bert_mask[i, span_positions]] - allowance = budget - current_masked - if len(unmasked_positions) > allowance: - unmasked_positions = unmasked_positions[:allowance] - - bert_mask[i, unmasked_positions] = True - current_masked = bert_mask[i].sum().item() - span_idx += 1 - - # Fallback: if heavy overlaps exhausted our max_spans, uniformly mask the remainder - if current_masked < budget: - remaining = budget - current_masked - unmasked_valid = (valid_mask[i] & ~bert_mask[i]).nonzero(as_tuple=True)[0] - if len(unmasked_valid) > 0: - idx = torch.randperm(len(unmasked_valid), device=device)[:remaining] - bert_mask[i, unmasked_valid[idx]] = True - - replacement_probs = torch.rand((batch_size, seq_len), device=device) - - p_masked = config.training_spec.bert_spec.replacement_distribution.masked - p_random = config.training_spec.bert_spec.replacement_distribution.random + replacement_probs = torch.rand( + (batch_size, seq_len), + device=device, + generator=generator, + ) mask_token_mask = bert_mask & (replacement_probs < p_masked) random_token_mask = ( @@ -589,33 +643,48 @@ def apply_bert_masking( & (replacement_probs < (p_masked + p_random)) ) + masked_data = dict(data_batch) + for col, tensor in data_batch.items(): if col in config.categorical_columns: - random_tokens = torch.randint( - low=SPECIAL_TOKEN_IDS.user_start, - high=config.n_classes[col], - size=(batch_size, seq_len), - device=device, - dtype=tensor.dtype, - ) + output = tensor.clone() + + if p_masked > 0.0: + output.masked_fill_(mask_token_mask, SPECIAL_TOKEN_IDS.mask) + + if p_random > 0.0: + random_tokens = torch.randint( + low=SPECIAL_TOKEN_IDS.user_start, + high=config.n_classes[col], + size=tensor.shape, + device=device, + dtype=tensor.dtype, + generator=generator, + ) + output[random_token_mask] = random_tokens[random_token_mask] - tensor[mask_token_mask] = SPECIAL_TOKEN_IDS.mask - tensor[random_token_mask] = random_tokens[random_token_mask] + masked_data[col] = output elif col in config.real_columns: - mask_val = 0.0 - random_noise = torch.randn( - (batch_size, seq_len), device=device, dtype=tensor.dtype - ) + output = tensor.clone() + + if p_masked > 0.0: + output.masked_fill_(mask_token_mask, 0.0) - tensor[mask_token_mask] = mask_val - tensor[random_token_mask] = random_noise[random_token_mask] + if p_random > 0.0: + random_noise = torch.randn( + tensor.shape, + device=device, + dtype=tensor.dtype, + generator=generator, + ) + output[random_token_mask] = random_noise[random_token_mask] - metadata_batch["bert_mask"] = bert_mask - metadata_batch["attention_valid_mask"] = valid_mask.detach() + masked_data[col] = output - if eval_seed is not None: - torch.set_rng_state(cpu_rng_state) # type: ignore - if device.type == "cuda": - torch.cuda.set_rng_state(gpu_rng_state, device) # type: ignore - return data_batch, targets_batch, metadata_batch + detached_targets = {col: tensor.detach() for col, tensor in targets_batch.items()} + output_metadata = {key: tensor.detach() for key, tensor in metadata_batch.items()} + output_metadata["bert_mask"] = bert_mask + output_metadata["attention_valid_mask"] = valid_mask + + return masked_data, detached_targets, output_metadata diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py index 53856f92..360f04df 100644 --- a/tests/unit/test_helpers.py +++ b/tests/unit/test_helpers.py @@ -1,6 +1,7 @@ from types import SimpleNamespace import polars as pl +import pytest import torch from sequifier.helpers import ( @@ -12,6 +13,7 @@ numpy_to_pytorch, resolve_window_view, ) +from sequifier.special_tokens import SPECIAL_TOKEN_IDS def test_construct_index_maps_string(): @@ -248,10 +250,333 @@ def test_numpy_to_pytorch_includes_explicit_padding_masks(): class _OnesSpanMasking: - def sample(self, shape, device): + def sample(self, shape, device, generator=None): return torch.ones(shape, dtype=torch.long, device=device) +class _VariableSpanMasking: + def sample(self, shape, device, generator=None): + lengths = torch.tensor([3, 2, 4, 1, 5], dtype=torch.long, device=device) + repeats = (shape[1] + lengths.numel() - 1) // lengths.numel() + return lengths.repeat(repeats)[: shape[1]].repeat(shape[0], 1) + + +def _bert_masking_config( + masking_probability=0.5, + *, + categorical_columns=None, + real_columns=None, + n_classes=None, + replacement_distribution=None, + span_masking=None, +): + return SimpleNamespace( + categorical_columns=categorical_columns or [], + real_columns=real_columns or [], + n_classes=n_classes or {}, + context_length=6, + training_spec=SimpleNamespace( + batch_size=4, + bert_spec=SimpleNamespace( + masking_probability=masking_probability, + span_masking=span_masking or _OnesSpanMasking(), + replacement_distribution=replacement_distribution + or SimpleNamespace(masked=0.0, random=0.0, identical=1.0), + ), + ), + ) + + +def test_apply_bert_masking_builds_exact_valid_masks(): + valid_mask = torch.tensor( + [ + [True, True, True, True, True, True], + [False, False, True, True, True, True], + [False, False, False, False, False, False], + [False, True, False, True, True, True], + ] + ) + config = _bert_masking_config(masking_probability=0.5) + data_batch = {"passthrough": torch.arange(24).reshape(4, 6)} + targets_batch = {"passthrough": torch.arange(24).reshape(4, 6)} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + _, _, masked_metadata = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=11, + ) + + bert_mask = masked_metadata["bert_mask"] + expected_budget = (valid_mask.sum(dim=1) * 0.5).long() + + assert bert_mask.dtype == torch.bool + assert bert_mask.device == valid_mask.device + assert torch.equal(bert_mask.sum(dim=1), expected_budget) + assert not torch.any(bert_mask & ~valid_mask) + + +def test_apply_bert_masking_eval_seed_is_reproducible_without_global_rng_change(): + valid_mask = torch.tensor( + [ + [True, True, True, True, True, True], + [False, True, True, True, True, True], + ] + ) + config = _bert_masking_config(masking_probability=0.5) + data_batch = {"passthrough": torch.arange(12).reshape(2, 6)} + targets_batch = {"passthrough": torch.arange(12).reshape(2, 6)} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + torch.manual_seed(123) + rng_state = torch.get_rng_state().clone() + _, _, first_metadata = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=99, + ) + after_first = torch.get_rng_state().clone() + + _, _, second_metadata = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=99, + ) + after_second = torch.get_rng_state().clone() + + assert torch.equal(first_metadata["bert_mask"], second_metadata["bert_mask"]) + assert torch.equal(after_first, rng_state) + assert torch.equal(after_second, rng_state) + + +def test_apply_bert_masking_handles_variable_length_spans_and_sparse_masks(): + valid_mask = torch.tensor( + [ + [True, True, True, True, True, True, True, True], + [False, True, False, True, True, False, True, True], + ] + ) + config = _bert_masking_config( + masking_probability=0.75, + span_masking=_VariableSpanMasking(), + ) + data_batch = {"passthrough": torch.arange(16).reshape(2, 8)} + targets_batch = {"passthrough": torch.arange(16).reshape(2, 8)} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + _, _, masked_metadata = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=99, + ) + + assert torch.equal( + masked_metadata["bert_mask"], + torch.tensor( + [ + [False, True, True, True, True, True, True, False], + [False, True, False, True, True, False, False, False], + ] + ), + ) + + +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA required") +def test_apply_bert_masking_cuda_stays_on_device_and_preserves_rng(): + device = torch.device("cuda") + valid_mask = torch.tensor( + [ + [True, True, True, True, True, True], + [False, True, True, True, True, True], + ], + device=device, + ) + config = _bert_masking_config(masking_probability=0.5) + data_batch = {"passthrough": torch.arange(12, device=device).reshape(2, 6)} + targets_batch = {"passthrough": torch.arange(12, device=device).reshape(2, 6)} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + torch.manual_seed(123) + cpu_state = torch.get_rng_state().clone() + cuda_state = torch.cuda.get_rng_state(device).clone() + + _, _, masked_metadata = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=99, + ) + + assert masked_metadata["bert_mask"].device == device + assert torch.equal(torch.get_rng_state(), cpu_state) + assert torch.equal(torch.cuda.get_rng_state(device), cuda_state) + + +def test_apply_bert_masking_replaces_categorical_with_mask_token_without_mutation(): + valid_mask = torch.tensor([[True, False, True, True]]) + config = _bert_masking_config( + masking_probability=1.0, + categorical_columns=["cat_col"], + n_classes={"cat_col": 8}, + replacement_distribution=SimpleNamespace( + masked=1.0, + random=0.0, + identical=0.0, + ), + ) + original = torch.tensor([[3, 4, 5, 6]]) + data_batch = {"cat_col": original.clone()} + targets_batch = {"cat_col": original.clone()} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + masked_data, _, _ = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=7, + ) + + assert torch.equal( + masked_data["cat_col"], + torch.tensor( + [ + [ + SPECIAL_TOKEN_IDS.mask, + 4, + SPECIAL_TOKEN_IDS.mask, + SPECIAL_TOKEN_IDS.mask, + ] + ] + ), + ) + assert torch.equal(data_batch["cat_col"], original) + + +def test_apply_bert_masking_replaces_categorical_with_random_tokens_without_mutation(): + valid_mask = torch.ones((1, 5), dtype=torch.bool) + config = _bert_masking_config( + masking_probability=1.0, + categorical_columns=["cat_col"], + n_classes={"cat_col": 12}, + replacement_distribution=SimpleNamespace( + masked=0.0, + random=1.0, + identical=0.0, + ), + ) + original = torch.tensor([[3, 4, 5, 6, 7]]) + data_batch = {"cat_col": original.clone()} + targets_batch = {"cat_col": original.clone()} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + masked_data, _, _ = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=7, + ) + + assert torch.all(masked_data["cat_col"] >= SPECIAL_TOKEN_IDS.user_start) + assert torch.all(masked_data["cat_col"] < config.n_classes["cat_col"]) + assert not torch.equal(masked_data["cat_col"], original) + assert torch.equal(data_batch["cat_col"], original) + + +def test_apply_bert_masking_replaces_real_with_zero_without_mutation(): + valid_mask = torch.tensor([[True, False, True, True]]) + config = _bert_masking_config( + masking_probability=1.0, + real_columns=["real_col"], + replacement_distribution=SimpleNamespace( + masked=1.0, + random=0.0, + identical=0.0, + ), + ) + original = torch.tensor([[1.5, 2.5, 3.5, 4.5]]) + data_batch = {"real_col": original.clone()} + targets_batch = {"real_col": original.clone()} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + masked_data, _, _ = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=7, + ) + + assert torch.equal( + masked_data["real_col"], + torch.tensor([[0.0, 2.5, 0.0, 0.0]]), + ) + assert torch.equal(data_batch["real_col"], original) + + +def test_apply_bert_masking_replaces_real_with_random_noise_without_mutation(): + valid_mask = torch.tensor([[True, True, False, True]]) + config = _bert_masking_config( + masking_probability=1.0, + real_columns=["real_col"], + replacement_distribution=SimpleNamespace( + masked=0.0, + random=1.0, + identical=0.0, + ), + ) + original = torch.tensor([[10.0, 11.0, 12.0, 13.0]]) + data_batch = {"real_col": original.clone()} + targets_batch = {"real_col": original.clone()} + metadata = { + "attention_valid_mask": valid_mask, + "target_valid_mask": valid_mask.clone(), + } + + masked_data, _, _ = apply_bert_masking( + data_batch, + targets_batch, + metadata, + config, + eval_seed=7, + ) + + assert torch.equal(masked_data["real_col"][~valid_mask], original[~valid_mask]) + assert torch.all(masked_data["real_col"][valid_mask] != original[valid_mask]) + assert torch.equal(data_batch["real_col"], original) + + def test_apply_bert_masking_uses_explicit_valid_mask_for_zero_values(): config = SimpleNamespace( categorical_columns=[], diff --git a/tests/unit/test_probabilities.py b/tests/unit/test_probabilities.py new file mode 100644 index 00000000..d413d841 --- /dev/null +++ b/tests/unit/test_probabilities.py @@ -0,0 +1,51 @@ +import pytest +import torch + +from sequifier.config.probabilities import ( + GeometricDistribution, + LogNormalDistributionDiscretizedFloor, + NormalDistributionDiscretizedFloor, + PoissonDistributionFloor, +) + + +@pytest.mark.parametrize( + "distribution", + [ + GeometricDistribution(p=0.35), + NormalDistributionDiscretizedFloor(mean=2.0, standard_deviation=0.5), + LogNormalDistributionDiscretizedFloor(mean=0.5, standard_deviation=0.4), + PoissonDistributionFloor(rate=2.0), + ], +) +def test_probability_distributions_use_local_generator_without_global_rng( + distribution, +): + device = torch.device("cpu") + torch.manual_seed(123) + rng_state = torch.get_rng_state().clone() + + first_generator = torch.Generator(device=device) + first_generator.manual_seed(99) + first_samples = distribution.sample( + (64,), + device=device, + generator=first_generator, + ) + after_first = torch.get_rng_state().clone() + + second_generator = torch.Generator(device=device) + second_generator.manual_seed(99) + second_samples = distribution.sample( + (64,), + device=device, + generator=second_generator, + ) + after_second = torch.get_rng_state().clone() + + assert torch.equal(first_samples, second_samples) + assert first_samples.device == device + assert first_samples.dtype == torch.long + assert torch.all(first_samples >= 1) + assert torch.equal(after_first, rng_state) + assert torch.equal(after_second, rng_state) From 5e620f3f2fc8ad3335f4acab44f8f5f0087c944b Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 15 Jun 2026 22:04:50 +0200 Subject: [PATCH 63/81] improve tests --- src/sequifier/infer.py | 32 +- src/sequifier/preprocess.py | 65 ++-- tests/integration/test_inference.py | 320 +++++++++++++++--- ...uifier_dataset_from_folder_parquet_lazy.py | 77 ++++- tests/unit/test_infer.py | 72 +++- tests/unit/test_preprocess.py | 21 ++ tests/unit/test_train.py | 2 +- tests/unit/test_train_distributed_loss.py | 185 +++++++++- tests/unit/test_train_fsdp_loss.py | 189 ++++++++++- 9 files changed, 844 insertions(+), 119 deletions(-) diff --git a/src/sequifier/infer.py b/src/sequifier/infer.py index 57b9093f..df26023b 100644 --- a/src/sequifier/infer.py +++ b/src/sequifier/infer.py @@ -1368,26 +1368,40 @@ def expand_to_batch_size(self, x: np.ndarray) -> np.ndarray: @beartype def normalize(outs: dict[str, np.ndarray]) -> dict[str, np.ndarray]: """Softmax logits by target column.""" - normalizer = { - target_column: np.repeat( - np.sum(np.exp(target_values), axis=1), target_values.shape[1] - ).reshape(target_values.shape) + shifted_values = { + target_column: target_values - np.max(target_values, axis=1, keepdims=True) for target_column, target_values in outs.items() } + exp_values = { + target_column: np.exp(target_values) + for target_column, target_values in shifted_values.items() + } probs = { - target_column: np.exp(target_values) / normalizer[target_column] - for target_column, target_values in outs.items() + target_column: target_values / np.sum(target_values, axis=1, keepdims=True) + for target_column, target_values in exp_values.items() } return probs @beartype def sample_with_cumsum(probs: np.ndarray, is_log_probs: bool = True) -> np.ndarray: - """Sample class indices from logits or probabilities.""" + """Sample class indices from log-probabilities or probabilities.""" if is_log_probs: - cumulative_probs = np.cumsum(np.exp(probs), axis=1) + sampling_probs = np.exp(probs) else: - cumulative_probs = np.cumsum(probs, axis=1) + sampling_probs = probs + + if not np.isfinite(sampling_probs).all(): + raise ValueError("Sampling probabilities must be finite.") + if np.any(sampling_probs < 0): + raise ValueError("Sampling probabilities must be non-negative.") + + row_sums = sampling_probs.sum(axis=1) + if not np.allclose(row_sums, 1.0): + raise ValueError("Sampling probabilities must sum to 1.0 for each row.") + + cumulative_probs = np.cumsum(sampling_probs, axis=1) + cumulative_probs[:, -1] = 1.0 random_threshold = np.random.rand(cumulative_probs.shape[0], 1) random_threshold = np.repeat(random_threshold, probs.shape[1], axis=1) return (random_threshold < cumulative_probs).argmax(axis=1) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 9a2f4938..cd5bd024 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1518,32 +1518,51 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] @beartype def get_batch_limits(data: pl.DataFrame, n_batches: int) -> list[tuple[int, int]]: """Split rows into batches without crossing sequenceId boundaries.""" + if n_batches <= 0: + raise ValueError("n_batches must be positive.") + if data.is_empty(): + raise ValueError("Cannot split an empty dataset into batches.") + sequence_ids = data.get_column("sequenceId").to_numpy() - new_sequence_id_indices = np.concatenate( - [ - [0], - np.where( - np.concatenate([[False], sequence_ids[1:] != sequence_ids[:-1]], axis=0) - )[0], - ] + sequence_start_indices = np.concatenate( + [[0], np.where(sequence_ids[1:] != sequence_ids[:-1])[0] + 1] ) + sequence_boundaries = np.concatenate([sequence_start_indices, [data.shape[0]]]) + sequence_count = len(sequence_start_indices) - ideal_step = math.ceil(data.shape[0] / n_batches) - ideal_limits = np.array( - [ideal_step * m for m in range(n_batches)] + [data.shape[0]] - ) - distances = [ - np.abs(new_sequence_id_indices - ideal_limit) - for ideal_limit in ideal_limits[:-1] - ] - actual_limit_indices = [ - np.where(distance == np.min(distance))[0] for distance in distances - ] - actual_limits = [ - int(new_sequence_id_indices[limit_index[0]]) - for limit_index in actual_limit_indices - ] + [data.shape[0]] - return list(zip(actual_limits[:-1], actual_limits[1:])) + if n_batches > sequence_count: + raise ValueError( + "Cannot create more non-empty batches than there are sequences without " + "splitting a sequence." + ) + + interior_boundaries = sequence_boundaries[1:-1] + ideal_limits = np.linspace(0, data.shape[0], n_batches + 1)[1:-1] + + selected_boundaries: list[int] = [] + previous_boundary = 0 + for batch_index, ideal_limit in enumerate(ideal_limits): + remaining_boundaries_needed = len(ideal_limits) - batch_index - 1 + candidates = [ + int(boundary) + for boundary in interior_boundaries + if boundary > previous_boundary + and (data.shape[0] - boundary) >= remaining_boundaries_needed + ] + if not candidates: + raise ValueError( + "Cannot create requested non-empty batches without splitting a sequence." + ) + + selected_boundary = min( + candidates, + key=lambda boundary: abs(boundary - ideal_limit), + ) + selected_boundaries.append(selected_boundary) + previous_boundary = selected_boundary + + limits = [0, *selected_boundaries, data.shape[0]] + return list(zip(limits[:-1], limits[1:])) @beartype diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py index 5cc4ec89..1f9d9887 100644 --- a/tests/integration/test_inference.py +++ b/tests/integration/test_inference.py @@ -1,14 +1,254 @@ import json import os +import re +from collections import Counter import numpy as np import polars as pl import torch +from sequifier.helpers import ( + ModelWindowView, + StoredWindowLayout, + resolve_window_view, + stored_window_layout_from_metadata, +) + TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} BERT_SEQ_LENGTH = 8 BERT_EMBEDDING_DIM = 16 BERT_DATA_NAME = "test-data-categorical-1-lookahead-0" +CAUSAL_CONTEXT_LENGTH = 8 + + +def _project_path(project_root, path): + if os.path.isabs(path) or path.startswith(project_root): + return path + return os.path.join(project_root, path) + + +def _causal_storage_layout(data_path): + metadata_path = ( + os.path.join(data_path, "metadata.json") if os.path.isdir(data_path) else None + ) + if metadata_path is not None and os.path.exists(metadata_path): + with open(metadata_path, "r") as f: + return stored_window_layout_from_metadata(json.load(f)) + + return StoredWindowLayout( + stored_context_width=CAUSAL_CONTEXT_LENGTH + 1, + max_target_offset=1, + version=2, + ) + + +def _target_valid_mask(left_pad_lengths, storage_layout, prediction_length): + resolved_view = resolve_window_view( + storage_layout, + ModelWindowView( + context_length=CAUSAL_CONTEXT_LENGTH, + objective="causal", + target_offset=1, + ), + ) + masks = resolved_view.build_masks(torch.tensor(left_pad_lengths, dtype=torch.int64)) + return masks["target_valid_mask"][:, -prediction_length:].reshape(-1).numpy() + + +def _read_pt_window_metadata(data_path): + contents = [] + for root, _, files in os.walk(data_path): + for file in sorted(files): + if not file.endswith(".pt"): + continue + + loaded = torch.load(os.path.join(root, file), weights_only=False) + if len(loaded) == 5: + _, sequence_ids, _, start_positions, left_pad_lengths = loaded + else: + _, sequence_ids, _, start_positions = loaded + left_pad_lengths = torch.zeros_like(sequence_ids) + + contents.append( + pl.DataFrame( + { + "sequenceId": sequence_ids.detach().cpu().numpy(), + "startItemPosition": start_positions.detach().cpu().numpy(), + "leftPadLength": left_pad_lengths.detach().cpu().numpy(), + } + ) + ) + + assert len(contents) > 0, f"no files found for {data_path}" + return pl.concat(contents, how="vertical") + + +def _read_long_window_metadata(data_path): + paths = [] + if os.path.isdir(data_path): + for root, _, files in os.walk(data_path): + paths.extend( + os.path.join(root, file) + for file in sorted(files) + if file.endswith((".csv", ".parquet")) + ) + else: + paths = [data_path] + + contents = [] + for path in paths: + data = pl.read_csv(path) if path.endswith(".csv") else pl.read_parquet(path) + if "leftPadLength" not in data.columns: + data = data.with_columns(pl.lit(0).alias("leftPadLength")) + contents.append( + data.group_by(["sequenceId", "subsequenceId"], maintain_order=True).agg( + pl.col("startItemPosition").first(), + pl.col("leftPadLength").first(), + ) + ) + + assert len(contents) > 0, f"no files found for {data_path}" + return pl.concat(contents, how="vertical") + + +def _prediction_source_spec(project_root, model_name): + if model_name == "model-categorical-multitarget-5-best-3": + return { + "path": _project_path( + project_root, "data/test-data-categorical-multitarget-5-split2" + ), + "format": "parquet", + "prediction_length": 1, + "autoregression_total_steps": None, + } + if model_name == "model-categorical-multitarget-5-last-3": + return { + "path": _project_path( + project_root, "data/test-data-categorical-multitarget-5-split2" + ), + "format": "parquet", + "prediction_length": 1, + "autoregression_total_steps": None, + } + if model_name == "model-categorical-distributed-best-3": + return { + "path": _project_path(project_root, "data/test-data-categorical-3-split2"), + "format": "pt", + "prediction_length": 1, + "autoregression_total_steps": None, + } + if model_name == "model-categorical-lazy-best-3": + return { + "path": _project_path(project_root, "data/test-data-categorical-3-split2"), + "format": "pt", + "prediction_length": 1, + "autoregression_total_steps": None, + } + if model_name == "model-categorical-1-best-3-autoregression": + return { + "path": _project_path(project_root, "data/test-data-categorical-1-split2"), + "format": "pt", + "prediction_length": 1, + "autoregression_total_steps": 20, + } + if model_name == "model-real-1-best-3-autoregression": + return { + "path": _project_path( + project_root, "data/test-data-real-1-split1-autoregression.csv" + ), + "format": "csv", + "prediction_length": 1, + "autoregression_total_steps": 20, + "csv_autoregression": True, + } + + match = re.fullmatch(r"model-categorical-(\d+)-inf-size-best-3", model_name) + if match is not None: + data_number = int(match.group(1)) + return { + "path": _project_path( + project_root, f"data/test-data-categorical-{data_number}-split2" + ), + "format": "pt", + "prediction_length": 3, + "autoregression_total_steps": None, + } + + match = re.fullmatch(r"model-categorical-(\d+)-best-3", model_name) + if match is not None: + data_number = int(match.group(1)) + return { + "path": _project_path( + project_root, f"data/test-data-categorical-{data_number}-split2" + ), + "format": "pt", + "prediction_length": 1, + "autoregression_total_steps": None, + } + + match = re.fullmatch(r"model-real-(\d+)-best-3", model_name) + if match is not None: + data_number = int(match.group(1)) + return { + "path": _project_path( + project_root, f"data/test-data-real-{data_number}-split1.parquet" + ), + "format": "parquet", + "prediction_length": 1, + "autoregression_total_steps": None, + } + + raise AssertionError(f"No source metadata mapping for {model_name}") + + +def _expected_prediction_positions(project_root, model_name): + spec = _prediction_source_spec(project_root, model_name) + metadata = ( + _read_pt_window_metadata(spec["path"]) + if spec["format"] == "pt" + else _read_long_window_metadata(spec["path"]) + ) + storage_layout = _causal_storage_layout(spec["path"]) + prediction_length = spec["prediction_length"] + + if spec["autoregression_total_steps"] is not None: + total_steps = spec["autoregression_total_steps"] + if spec.get("csv_autoregression", False): + metadata = metadata.group_by("sequenceId", maintain_order=True).head(1) + + sequence_ids = np.repeat(metadata["sequenceId"].to_numpy(), total_steps) + item_positions = np.concatenate( + [ + np.arange(start, start + total_steps) + for start in ( + metadata["startItemPosition"].to_numpy() + CAUSAL_CONTEXT_LENGTH + ) + ], + axis=0, + ) + valid_mask = np.repeat( + _target_valid_mask( + metadata["leftPadLength"].to_numpy(), storage_layout, prediction_length + ), + total_steps, + ) + else: + starts = metadata["startItemPosition"].to_numpy() + offsets = np.arange(-prediction_length + 1, 1) + sequence_ids = np.repeat(metadata["sequenceId"].to_numpy(), prediction_length) + item_positions = np.repeat( + starts + CAUSAL_CONTEXT_LENGTH, prediction_length + ) + np.tile(offsets, len(starts)) + valid_mask = _target_valid_mask( + metadata["leftPadLength"].to_numpy(), storage_layout, prediction_length + ) + + return pl.DataFrame( + { + "sequenceId": sequence_ids[valid_mask], + "itemPosition": item_positions[valid_mask], + } + ) def _categorical_metadata(project_root): @@ -260,67 +500,37 @@ def test_bert_embeddings(bert_predictions, bert_embeddings, project_root): ) -def test_predictions_item_position(predictions): - """ - Checks if itemPosition increments correctly within each sequenceId. - """ +def test_predictions_item_position(predictions, project_root): + """Check itemPosition values against source preprocessing metadata.""" for model_name, preds_df in predictions.items(): - # Ensure correct sorting for comparison - preds_df_sorted = preds_df.sort("sequenceId", "itemPosition") + expected_positions = _expected_prediction_positions(project_root, model_name) + actual_pairs = list(preds_df.select(["sequenceId", "itemPosition"]).iter_rows()) + expected_pairs = list(expected_positions.iter_rows()) - # Calculate differences and sequence changes - preds_with_diffs = preds_df_sorted.with_columns( - (pl.col("itemPosition") - pl.col("itemPosition").shift(1)).alias( - "pos_diff" - ), - (pl.col("sequenceId") == pl.col("sequenceId").shift(1)).alias("same_seq"), + duplicate_pairs = [ + pair for pair, count in Counter(actual_pairs).items() if count > 1 + ] + assert duplicate_pairs == [], ( + f"Model '{model_name}': Found duplicate sequence-position pairs:\n" + f"{duplicate_pairs[:10]}" ) - # Filter for rows within the same sequence (excluding the first row of each sequence) - within_sequence_diffs = preds_with_diffs.filter(pl.col("same_seq")) - - # Check if all position differences within sequences are 1 - incorrect_increments = within_sequence_diffs.filter(pl.col("pos_diff") != 1) - - assert incorrect_increments.height == 0, ( - f"Model '{model_name}': Found incorrect itemPosition increments within sequences:\n" - f"{incorrect_increments}" - ) + assert Counter(actual_pairs) == Counter( + expected_pairs + ), f"Model '{model_name}': itemPosition values do not match source metadata." def test_embeddings_subsequence_id(embeddings): """Check subsequenceId increments within each sequence.""" for model_name, embeds_df in embeddings.items(): - embeds_df_sorted = embeds_df.sort("sequenceId", "subsequenceId") - - shift_val = 0 - if "categorical-1" in model_name: - shift_val = 1 - if "categorical-3" in model_name: - shift_val = 3 - - # Calculate differences and sequence changes - embeds_with_diffs = embeds_df_sorted.with_columns( - (pl.col("subsequenceId") - pl.col("subsequenceId").shift(shift_val)).alias( - "subseq_diff" - ), - (pl.col("sequenceId") == pl.col("sequenceId").shift(shift_val)).alias( - "same_seq" - ), - ) - - first_subsequences = embeds_with_diffs.filter( - pl.col("same_seq") == False # noqa: E712 - ) - incorrect_starts = first_subsequences.filter(pl.col("subsequenceId") != 0) - assert incorrect_starts.height == 0, ( - f"Model '{model_name}': Found sequences where subsequenceId does not start at 0:\n" - f"{incorrect_starts}" - ) - - within_sequence_diffs = embeds_with_diffs.filter(pl.col("same_seq")) - incorrect_increments = within_sequence_diffs.filter(pl.col("subseq_diff") != 1) - assert incorrect_increments.height == 0, ( - f"Model '{model_name}': Found incorrect subsequenceId increments within sequences:\n" - f"{incorrect_increments}" - ) + for sequence_id, sequence_df in embeds_df.group_by( + "sequenceId", maintain_order=True + ): + subsequence_ids = sorted( + sequence_df.get_column("subsequenceId").unique().to_list() + ) + expected_ids = list(range(len(subsequence_ids))) + assert subsequence_ids == expected_ids, ( + f"Model '{model_name}', sequenceId {sequence_id}: expected " + f"subsequenceIds {expected_ids}, found {subsequence_ids}." + ) diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index 3d61a5ed..baa87136 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -64,13 +64,25 @@ def dataset_path(tmp_path): "0": pl.Float64, } - # Populate 4 files with 10 rows (10 sequences) each + # Populate 4 files with distinct row markers so sharding can be observed. batch_files = [] for i in range(1, 5): filename = f"file_{i}.parquet" rows = [] for s in range(10): - rows.append((s, 0, s * 2, 0, "item", float(s), float(s + 1), float(s + 2))) + marker = i * 100 + s + rows.append( + ( + s, + 0, + s * 2, + 0, + "item", + float(marker), + float(marker + 1), + float(marker + 2), + ) + ) df = pl.DataFrame(rows, schema=schema, orient="row") df.write_parquet(data_dir / filename) @@ -84,6 +96,16 @@ def dataset_path(tmp_path): return str(data_dir) +def _input_markers(batches): + return torch.cat([batch.inputs["item"][:, 0] for batch in batches]).tolist() + + +def _sample_valid_mask(batches): + return torch.cat( + [batch.metadata["sample_valid_mask"] for batch in batches] + ).tolist() + + def test_initialization(mock_config, dataset_path): """Metadata-backed batch length.""" dataset = SequifierDatasetFromFolderParquetLazy(dataset_path, mock_config) @@ -194,6 +216,12 @@ def test_distributed_sharding(mock_ws, mock_rank, mock_init, mock_config, datase for batch in batches: assert batch.inputs["item"].shape[0] == 5 + assert _input_markers(batches) == [ + *[float(100 + i) for i in range(10)], + *[float(300 + i) for i in range(10)], + ] + assert _sample_valid_mask(batches) == [True] * 20 + def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): """FSDP exact mode rejects uneven ranks.""" @@ -218,7 +246,8 @@ def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): assert "different number of samples per rank/GPU" in str(exc_info.value) -def test_oversampling_strategy(mock_config, tmp_path): +@patch("torch.distributed.get_rank", return_value=1) +def test_oversampling_strategy(mock_rank, mock_config, tmp_path): """Oversampling pads short ranks.""" data_dir = tmp_path / "oversample_parquet_data" data_dir.mkdir() @@ -227,6 +256,7 @@ def test_oversampling_strategy(mock_config, tmp_path): "sequenceId": pl.Int64, "subsequenceId": pl.Int64, "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, "inputCol": pl.String, "2": pl.Float64, "1": pl.Float64, @@ -236,7 +266,16 @@ def test_oversampling_strategy(mock_config, tmp_path): # File 1 has 15 rows, File 2 has 10 rows for i, num_rows in [(1, 15), (2, 10)]: rows = [ - (s, 0, s * 2, "item", float(s), float(s + 1), float(s + 2)) + ( + s, + 0, + s * 2, + 0, + "item", + float(i * 100 + s), + float(i * 100 + s + 1), + float(i * 100 + s + 2), + ) for s in range(num_rows) ] pl.DataFrame(rows, schema=schema, orient="row").write_parquet( @@ -261,9 +300,19 @@ def test_oversampling_strategy(mock_config, tmp_path): ) # Should match max(15, 10) assert dataset.target_samples == 15 + assert len(dataset) == 3 + + batches = list(dataset) + assert len(batches) == 3 + assert _input_markers(batches) == [ + *[float(200 + i) for i in range(10)], + *[float(200 + i) for i in range(5)], + ] + assert _sample_valid_mask(batches) == [True] * 10 + [False] * 5 -def test_undersampling_strategy(mock_config, tmp_path): +@patch("torch.distributed.get_rank", return_value=0) +def test_undersampling_strategy(mock_rank, mock_config, tmp_path): """Undersampling truncates long ranks.""" data_dir = tmp_path / "undersample_parquet_data" data_dir.mkdir() @@ -272,6 +321,7 @@ def test_undersampling_strategy(mock_config, tmp_path): "sequenceId": pl.Int64, "subsequenceId": pl.Int64, "startItemPosition": pl.Int64, + "leftPadLength": pl.Int64, "inputCol": pl.String, "2": pl.Float64, "1": pl.Float64, @@ -280,7 +330,16 @@ def test_undersampling_strategy(mock_config, tmp_path): for i, num_rows in [(1, 15), (2, 10)]: rows = [ - (s, 0, s * 2, "item", float(s), float(s + 1), float(s + 2)) + ( + s, + 0, + s * 2, + 0, + "item", + float(i * 100 + s), + float(i * 100 + s + 1), + float(i * 100 + s + 2), + ) for s in range(num_rows) ] pl.DataFrame(rows, schema=schema, orient="row").write_parquet( @@ -305,3 +364,9 @@ def test_undersampling_strategy(mock_config, tmp_path): ) # Should match min(15, 10) assert dataset.target_samples == 10 + assert len(dataset) == 2 + + batches = list(dataset) + assert len(batches) == 2 + assert _input_markers(batches) == [float(100 + i) for i in range(10)] + assert _sample_valid_mask(batches) == [True] * 10 diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index acd000d8..2c9d8c78 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -45,16 +45,34 @@ def test_normalize(): np.testing.assert_allclose(probs.sum(axis=1), [1.0, 1.0, 1.0]) +def test_normalize_is_stable_for_large_logits(): + """Softmax remains finite for large-magnitude logits.""" + outs = { + "target_col": np.array( + [[1000.0, 1001.0], [-1001.0, -1000.0], [1000.0, -1000.0]] + ) + } + + probs = normalize(outs)["target_col"] + + assert np.isfinite(probs).all() + np.testing.assert_allclose(probs.sum(axis=1), [1.0, 1.0, 1.0]) + np.testing.assert_allclose( + probs[0], + [1.0 / (1.0 + np.e), np.e / (1.0 + np.e)], + ) + + @patch("numpy.random.rand") def test_sample_with_cumsum(mock_rand): - """Inverse-CDF sampling for logits and probabilities.""" + """Inverse-CDF sampling for log-probabilities and probabilities.""" # Mock the random thresholds to strictly control the sampling outcome. mock_rand.return_value = np.array([[0.05], [0.90]]) - # Path 1: Test with logits=True (default) - raw_logits = np.array([[np.log(0.1), np.log(0.9)], [np.log(0.8), np.log(0.2)]]) - sampled_from_logits = sample_with_cumsum(raw_logits, is_log_probs=True) - np.testing.assert_array_equal(sampled_from_logits, [0, 1]) + # Path 1: Test with log-probabilities=True (default) + log_probs = np.array([[np.log(0.1), np.log(0.9)], [np.log(0.8), np.log(0.2)]]) + sampled_from_log_probs = sample_with_cumsum(log_probs, is_log_probs=True) + np.testing.assert_array_equal(sampled_from_log_probs, [0, 1]) # Path 2: Test with logits=False (pre-normalized probabilities) pure_probs = np.array([[0.1, 0.9], [0.8, 0.2]]) @@ -62,6 +80,32 @@ def test_sample_with_cumsum(mock_rand): np.testing.assert_array_equal(sampled_from_probs, [0, 1]) +@patch("numpy.random.rand") +def test_sample_with_cumsum_clamps_final_cumulative_probability(mock_rand): + """Tiny floating-point deficits still allow the final class to be sampled.""" + mock_rand.return_value = np.array([[0.9999999999999999]]) + probs = np.array([[0.1, 0.8999999999999998]]) + + sampled = sample_with_cumsum(probs, is_log_probs=False) + + np.testing.assert_array_equal(sampled, [1]) + + +def test_sample_with_cumsum_rejects_invalid_probability_mass(): + """Invalid probability rows fail instead of falling through to class zero.""" + with pytest.raises(ValueError, match="sum to 1.0"): + sample_with_cumsum(np.array([[0.4, 0.4]]), is_log_probs=False) + + +@pytest.fixture +def empty_parquet_path(tmp_path): + path = tmp_path / "empty.parquet" + pl.DataFrame({"target_col": []}, schema={"target_col": pl.Float64}).write_parquet( + path + ) + return str(path) + + @pytest.fixture def mock_inferer(): """Sets up an Inferer instance with mocked heavy dependencies (ONNX/PyTorch).""" @@ -157,14 +201,16 @@ def test_inferer_prepare_inference_batches_split(mock_inferer): np.testing.assert_array_equal(batches[2]["cat_col"], [[5]]) -def test_infer_config_defaults_bert_prediction_length_to_context_length(): +def test_infer_config_defaults_bert_prediction_length_to_context_length( + empty_parquet_path, +): config = InfererModel( project_root=".", metadata_config_path="dummy.json", model_path="dummy.onnx", model_type="generative", training_objective="bert", - data_path="tests/unit/data/empty.parquet", + data_path=empty_parquet_path, input_columns=["target_col"], categorical_columns=[], real_columns=["target_col"], @@ -189,14 +235,14 @@ def test_infer_config_defaults_bert_prediction_length_to_context_length(): assert config.prediction_length == config.window_view.context_length -def test_infer_config_defaults_causal_prediction_length_to_one(): +def test_infer_config_defaults_causal_prediction_length_to_one(empty_parquet_path): config = InfererModel( project_root=".", metadata_config_path="dummy.json", model_path="dummy.onnx", model_type="generative", training_objective="causal", - data_path="tests/unit/data/empty.parquet", + data_path=empty_parquet_path, input_columns=["target_col"], categorical_columns=[], real_columns=["target_col"], @@ -221,7 +267,7 @@ def test_infer_config_defaults_causal_prediction_length_to_one(): assert config.prediction_length == 1 -def test_infer_config_rejects_bert_prediction_length_mismatch(): +def test_infer_config_rejects_bert_prediction_length_mismatch(empty_parquet_path): with pytest.raises(ValueError, match="prediction_length must be equal"): InfererModel( project_root=".", @@ -229,7 +275,7 @@ def test_infer_config_rejects_bert_prediction_length_mismatch(): model_path="dummy.onnx", model_type="generative", training_objective="bert", - data_path="tests/unit/data/empty.parquet", + data_path=empty_parquet_path, input_columns=["target_col"], categorical_columns=[], real_columns=["target_col"], @@ -580,7 +626,7 @@ def capture_write(dataframe, path, write_format): @pytest.fixture -def ar_config(): +def ar_config(empty_parquet_path): """Provides an actual InfererModel configuration for autoregressive inference.""" return InfererModel( project_root=".", @@ -588,7 +634,7 @@ def ar_config(): model_path="dummy.onnx", model_type="generative", training_objective="causal", - data_path="tests/unit/data/empty.parquet", + data_path=empty_parquet_path, input_columns=["target_col"], categorical_columns=[], real_columns=["target_col"], diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py index cb222176..6fb2a5c0 100644 --- a/tests/unit/test_preprocess.py +++ b/tests/unit/test_preprocess.py @@ -625,6 +625,15 @@ def test_get_batch_limits_uneven_split(): limits = get_batch_limits(data, n_batches=2) + assert len(limits) == 2 + assert limits[0][0] == 0 + assert limits[-1][1] == data.height + assert all(start < end for start, end in limits) + assert all( + left_end == right_start + for (_, left_end), (right_start, _) in zip(limits, limits[1:]) + ) + # Check that split points are valid sequence boundaries for start, end in limits: # Start of batch must match start of a sequence (unless 0) @@ -632,6 +641,18 @@ def test_get_batch_limits_uneven_split(): prev_id = data["sequenceId"][start - 1] curr_id = data["sequenceId"][start] assert prev_id != curr_id, f"Batch split at {start} broke a sequence" + if end != data.height: + prev_id = data["sequenceId"][end - 1] + curr_id = data["sequenceId"][end] + assert prev_id != curr_id, f"Batch split at {end} broke a sequence" + + +def test_get_batch_limits_rejects_too_many_nonempty_batches(): + """Too many requested chunks fail instead of producing empty batches.""" + data = pl.DataFrame({"sequenceId": [1, 2, 3, 3], "val": np.arange(4)}) + + with pytest.raises(ValueError, match="more non-empty batches"): + get_batch_limits(data, n_batches=4) def test_get_combined_statistics_logic(): diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 3600d9c7..837337ff 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -561,7 +561,7 @@ def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): assert torch.isclose(component_losses["real_col"], torch.tensor(2.0)) -def test_calculate_loss_uses_target_columns_for_fallback_mask_inference(): +def test_calculate_loss_uses_explicit_target_mask_for_target_columns(): model = TransformerModel.__new__(TransformerModel) model.target_column_types = {"real_target": "real"} model.criterion = {"real_target": torch.nn.MSELoss(reduction="none")} diff --git a/tests/unit/test_train_distributed_loss.py b/tests/unit/test_train_distributed_loss.py index 51423489..99c06f0d 100644 --- a/tests/unit/test_train_distributed_loss.py +++ b/tests/unit/test_train_distributed_loss.py @@ -7,7 +7,9 @@ import torch.distributed as dist import torch.multiprocessing as mp from torch.nn.parallel import DistributedDataParallel as DDP +from torch.utils.data import DataLoader +from sequifier.io.batch import SequifierBatch from sequifier.train import TransformerModel @@ -20,6 +22,16 @@ def forward(self, seq_len): return {"real_col": self.param.expand(seq_len, 1, 1)} +class _TinyTrainEpochRealModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.param = torch.nn.Parameter(torch.tensor(0.0)) + + def forward(self, data, metadata=None, return_logits=False): + seq_len = data["real_col"].shape[1] + return {"real_col": self.param.expand(seq_len, 1, 1)} + + class _TinyMultiTargetModel(torch.nn.Module): def __init__(self): super().__init__() @@ -46,7 +58,13 @@ def _loss_shell(target_column_types, *, data_parallelism=None, loss_weights=None model.loss_weights = loss_weights model.device = "cpu" model.hparams = SimpleNamespace( - training_spec=SimpleNamespace(data_parallelism=data_parallelism) + training_spec=SimpleNamespace( + data_parallelism=data_parallelism, + distributed=data_parallelism is not None, + training_objective="causal", + layer_autocast=False, + layer_type_dtypes=None, + ) ) model.criterion = {} model.n_classes = {} @@ -63,6 +81,28 @@ def _loss_shell(target_column_types, *, data_parallelism=None, loss_weights=None return model +class _IdentityScaler: + def scale(self, loss): + return loss + + def unscale_(self, optimizer): + return None + + def step(self, optimizer): + optimizer.step() + + def update(self): + return None + + +class _NoopLogger: + def info(self, *args, **kwargs): + return None + + def warning(self, *args, **kwargs): + return None + + def _real_batch(seq_len, selected_count, target_value): targets = {"real_col": torch.full((1, seq_len), float(target_value))} mask = torch.zeros(1, seq_len, dtype=torch.bool) @@ -71,6 +111,18 @@ def _real_batch(seq_len, selected_count, target_value): return targets, metadata +def _real_epoch_batch(seq_len, selected_count, target_value): + targets, metadata = _real_batch(seq_len, selected_count, target_value) + return SequifierBatch( + inputs={"real_col": torch.ones(1, seq_len, dtype=torch.float32)}, + targets=targets, + metadata={ + "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), + **metadata, + }, + ) + + def _concat_real_batch(seq_lens, selected_counts, target_values): target_parts = [] mask_parts = [] @@ -138,6 +190,37 @@ def _single_process_accumulated_real_update(microbatches, lr): return model.param.detach().clone() +def _analytical_accumulated_real_update(microbatches, lr): + accumulated_grad = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + token_count = selected_counts.sum().item() + if token_count == 0: + continue + + weighted_target_mean = ( + selected_counts * target_values + ).sum().item() / token_count + accumulated_grad += -2.0 * weighted_target_mean + + return torch.tensor(-lr * accumulated_grad) + + +def _analytical_combined_real_update(microbatches, lr): + weighted_target_sum = 0.0 + token_count = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + weighted_target_sum += (selected_counts * target_values).sum().item() + token_count += selected_counts.sum().item() + + if token_count == 0: + return torch.tensor(0.0) + return torch.tensor(lr * 2.0 * weighted_target_sum / token_count) + + def _single_process_multi_target_grad( seq_lens, cat_targets, real_targets, loss_weights ): @@ -190,7 +273,67 @@ def put_result(tensor): "empty_grad", "accumulation_update", "empty_window_state", + "train_epoch_empty_window_state", }: + if case["kind"] == "train_epoch_empty_window_state": + model = _TinyTrainEpochRealModel() + ddp_model = DDP(model) + shell = _loss_shell({"real_col": "real"}, data_parallelism="DDP") + shell.input_columns = ["real_col"] + shell.rank = rank + shell.device = "cpu" + shell.accumulation_steps = case["accumulation_steps"] + shell.scheduler_step_on = "batch" + shell.start_batch = 0 + shell.log_interval = case["accumulation_steps"] + shell.scaler = _IdentityScaler() + shell.logger = _NoopLogger() + shell.save_latest_interval_minutes = None + shell.save_batch_interval_minutes = None + shell.save_batch_interval_minutes_val_loss = False + shell.last_latest_save_time = 0.0 + shell.last_batch_save_time = 0.0 + shell.parameters = model.parameters + shell.optimizer = torch.optim.AdamW( + model.parameters(), + lr=case["lr"], + weight_decay=case["weight_decay"], + ) + shell.scheduler = torch.optim.lr_scheduler.StepLR( + shell.optimizer, + step_size=1, + gamma=0.1, + ) + + train_loader = [ + _real_epoch_batch( + microbatch["seq_lens"][rank], + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + ) + for microbatch in case["microbatches"] + ] + before = model.param.detach().clone() + + TransformerModel._train_epoch( + shell, + DataLoader(train_loader, batch_size=None), + DataLoader([], batch_size=None), + epoch=1, + ddp_model=ddp_model, + ) + + if rank == 0: + queue.put( + [ + float((model.param.detach() - before).abs().item()), + float(shell.scheduler.get_last_lr()[0]), + float(shell.scheduler.last_epoch), + float(len(shell.optimizer.state)), + ] + ) + return + model = _TinyRealModel() ddp_model = DDP(model) shell = _loss_shell({"real_col": "real"}, data_parallelism="DDP") @@ -517,16 +660,44 @@ def test_ddp_globally_empty_accumulation_window_leaves_state_unchanged(): assert optimizer_state_len == 0 +def test_ddp_train_epoch_globally_empty_accumulation_window_leaves_state_unchanged(): + case = { + "kind": "train_epoch_empty_window_state", + "microbatches": [ + { + "seq_lens": [3, 4], + "selected_counts": [0, 0], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [2, 5], + "selected_counts": [0, 0], + "target_values": [2.0, 4.0], + }, + ], + "accumulation_steps": 2, + "lr": 0.01, + "weight_decay": 0.1, + } + + param_delta, lr, scheduler_epoch, optimizer_state_len = _run_ddp_case(case) + + assert param_delta == 0 + assert lr == pytest.approx(case["lr"]) + assert scheduler_epoch == 0 + assert optimizer_state_len == 0 + + def test_ddp_gradient_accumulation_preserves_per_microbatch_weighting(): microbatches = [ { - "seq_lens": [4, 2], - "selected_counts": [4, 2], + "seq_lens": [1, 1], + "selected_counts": [1, 1], "target_values": [1.0, 3.0], }, { - "seq_lens": [1, 5], - "selected_counts": [1, 5], + "seq_lens": [5, 5], + "selected_counts": [5, 5], "target_values": [10.0, 2.0], }, ] @@ -537,9 +708,11 @@ def test_ddp_gradient_accumulation_preserves_per_microbatch_weighting(): } ddp_param = _run_ddp_case(case) - reference_param = _single_process_accumulated_real_update(microbatches, case["lr"]) + reference_param = _analytical_accumulated_real_update(microbatches, case["lr"]) + combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) assert torch.allclose(ddp_param, reference_param, atol=1e-6) + assert not torch.allclose(ddp_param, combined_batch_param, atol=1e-3) def test_ddp_global_training_metric_finalization_matches_manual_sum_count(): diff --git a/tests/unit/test_train_fsdp_loss.py b/tests/unit/test_train_fsdp_loss.py index b4f4a6b9..dbdd09cc 100644 --- a/tests/unit/test_train_fsdp_loss.py +++ b/tests/unit/test_train_fsdp_loss.py @@ -11,7 +11,9 @@ StateDictOptions, get_model_state_dict, ) +from torch.utils.data import DataLoader +from sequifier.io.batch import SequifierBatch from sequifier.train import TransformerModel _train_module = importlib.import_module("sequifier.train") @@ -37,6 +39,16 @@ def forward(self, seq_len): return {"real_col": self.param[0].expand(seq_len, 1, 1)} +class _TinyTrainEpochRealModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.param = torch.nn.Parameter(torch.zeros(2)) + + def forward(self, data, metadata=None, return_logits=False): + seq_len = data["real_col"].shape[1] + return {"real_col": self.param[0].expand(seq_len, 1, 1)} + + class _TinyMultiTargetModel(torch.nn.Module): def __init__(self): super().__init__() @@ -63,7 +75,13 @@ def _loss_shell(target_column_types, *, device, loss_weights=None): model.loss_weights = loss_weights model.device = device model.hparams = SimpleNamespace( - training_spec=SimpleNamespace(data_parallelism="FSDP") + training_spec=SimpleNamespace( + data_parallelism="FSDP", + distributed=True, + training_objective="causal", + layer_autocast=False, + layer_type_dtypes=None, + ) ) model.criterion = {} model.n_classes = {} @@ -80,6 +98,28 @@ def _loss_shell(target_column_types, *, device, loss_weights=None): return model +class _IdentityScaler: + def scale(self, loss): + return loss + + def unscale_(self, optimizer): + return None + + def step(self, optimizer): + optimizer.step() + + def update(self): + return None + + +class _NoopLogger: + def info(self, *args, **kwargs): + return None + + def warning(self, *args, **kwargs): + return None + + def _real_batch(seq_len, selected_count, target_value, device): targets = {"real_col": torch.full((1, seq_len), float(target_value), device=device)} mask = torch.zeros(1, seq_len, dtype=torch.bool, device=device) @@ -88,6 +128,20 @@ def _real_batch(seq_len, selected_count, target_value, device): return targets, metadata +def _real_epoch_batch(seq_len, selected_count, target_value): + targets = {"real_col": torch.full((1, seq_len), float(target_value))} + mask = torch.zeros(1, seq_len, dtype=torch.bool) + mask[:, :selected_count] = True + return SequifierBatch( + inputs={"real_col": torch.ones(1, seq_len, dtype=torch.float32)}, + targets=targets, + metadata={ + "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), + "target_valid_mask": mask, + }, + ) + + def _concat_real_batch(seq_lens, selected_counts, target_values): target_parts = [] mask_parts = [] @@ -141,6 +195,37 @@ def _single_process_accumulated_real_update(microbatches, lr): return model.param.detach().clone() +def _analytical_accumulated_real_update(microbatches, lr): + accumulated_grad = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + token_count = selected_counts.sum().item() + if token_count == 0: + continue + + weighted_target_mean = ( + selected_counts * target_values + ).sum().item() / token_count + accumulated_grad += -2.0 * weighted_target_mean + + return torch.tensor([-lr * accumulated_grad, 0.0]) + + +def _analytical_combined_real_update(microbatches, lr): + weighted_target_sum = 0.0 + token_count = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + weighted_target_sum += (selected_counts * target_values).sum().item() + token_count += selected_counts.sum().item() + + if token_count == 0: + return torch.tensor([0.0, 0.0]) + return torch.tensor([lr * 2.0 * weighted_target_sum / token_count, 0.0]) + + def _single_process_multi_target_update( seq_lens, cat_targets, @@ -218,7 +303,69 @@ def _fsdp_case_worker(rank, world_size, init_method, case, queue): "real_update", "accumulation_update", "empty_window_state", + "train_epoch_empty_window_state", }: + if case["kind"] == "train_epoch_empty_window_state": + model = _TinyTrainEpochRealModel().to(device) + fully_shard(model, mesh=mesh, mp_policy=mp_policy) + shell = _loss_shell({"real_col": "real"}, device=str(device)) + shell._data_parallel_group = mesh.get_group() + shell.input_columns = ["real_col"] + shell.rank = rank + shell.accumulation_steps = case["accumulation_steps"] + shell.scheduler_step_on = "batch" + shell.start_batch = 0 + shell.log_interval = case["accumulation_steps"] + shell.scaler = _IdentityScaler() + shell.logger = _NoopLogger() + shell.save_latest_interval_minutes = None + shell.save_batch_interval_minutes = None + shell.save_batch_interval_minutes_val_loss = False + shell.last_latest_save_time = 0.0 + shell.last_batch_save_time = 0.0 + shell.parameters = model.parameters + shell.optimizer = torch.optim.AdamW( + model.parameters(), + lr=case["lr"], + weight_decay=case["weight_decay"], + ) + shell.scheduler = torch.optim.lr_scheduler.StepLR( + shell.optimizer, + step_size=1, + gamma=0.1, + ) + before = _state_vector(model, ["param"], rank) + train_loader = [ + _real_epoch_batch( + microbatch["seq_lens"][rank], + microbatch["selected_counts"][rank], + microbatch["target_values"][rank], + ) + for microbatch in case["microbatches"] + ] + + TransformerModel._train_epoch( + shell, + DataLoader(train_loader, batch_size=None), + DataLoader([], batch_size=None), + epoch=1, + ddp_model=model, + ) + + after = _state_vector(model, ["param"], rank) + if rank == 0: + assert before is not None + assert after is not None + queue.put( + [ + float((after - before).abs().max().item()), + float(shell.scheduler.get_last_lr()[0]), + float(shell.scheduler.last_epoch), + float(len(shell.optimizer.state)), + ] + ) + return + model = _TinyRealModel().to(device) fully_shard(model, mesh=mesh, mp_policy=mp_policy) shell = _loss_shell({"real_col": "real"}, device=str(device)) @@ -503,13 +650,13 @@ def test_fsdp_world_size_two_optimizer_update_matches_single_process_reference() def test_fsdp_gradient_accumulation_preserves_per_microbatch_weighting(): microbatches = [ { - "seq_lens": [4, 2], - "selected_counts": [4, 2], + "seq_lens": [1, 1], + "selected_counts": [1, 1], "target_values": [1.0, 3.0], }, { - "seq_lens": [1, 5], - "selected_counts": [1, 5], + "seq_lens": [5, 5], + "selected_counts": [5, 5], "target_values": [10.0, 2.0], }, ] @@ -520,9 +667,11 @@ def test_fsdp_gradient_accumulation_preserves_per_microbatch_weighting(): } fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_accumulated_real_update(microbatches, case["lr"]) + reference_param = _analytical_accumulated_real_update(microbatches, case["lr"]) + combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + assert not torch.allclose(fsdp_param, combined_batch_param, atol=1e-3) def test_fsdp_globally_empty_accumulation_window_leaves_state_unchanged(): @@ -551,3 +700,31 @@ def test_fsdp_globally_empty_accumulation_window_leaves_state_unchanged(): assert lr == pytest.approx(case["lr"]) assert scheduler_epoch == 0 assert optimizer_state_len == 0 + + +def test_fsdp_train_epoch_globally_empty_accumulation_window_leaves_state_unchanged(): + case = { + "kind": "train_epoch_empty_window_state", + "microbatches": [ + { + "seq_lens": [3, 4], + "selected_counts": [0, 0], + "target_values": [1.0, 3.0], + }, + { + "seq_lens": [2, 5], + "selected_counts": [0, 0], + "target_values": [2.0, 4.0], + }, + ], + "accumulation_steps": 2, + "lr": 0.01, + "weight_decay": 0.1, + } + + param_delta, lr, scheduler_epoch, optimizer_state_len = _run_fsdp_case(case) + + assert param_delta == 0 + assert lr == pytest.approx(case["lr"]) + assert scheduler_epoch == 0 + assert optimizer_state_len == 0 From a303826c2e0d64c6374a3f28174d877a033cefe4 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 16 Jun 2026 11:42:16 +0200 Subject: [PATCH 64/81] Improve tests --- src/sequifier/config/train_config.py | 5 +- src/sequifier/train.py | 16 +- tests/integration/conftest.py | 9 +- .../integration/test_hyperparameter_search.py | 3 - tests/integration/test_identities.py | 56 ++- tests/integration/test_make.py | 7 +- tests/integration/test_onnx_export.py | 58 ++- tests/integration/test_training.py | 282 ++++++------ ...orical-1-best-embedding-3-0-embeddings.csv | 2 +- ...orical-1-best-embedding-3-1-embeddings.csv | 2 +- ...orical-1-best-embedding-3-2-embeddings.csv | 2 +- ...orical-1-best-embedding-3-3-embeddings.csv | 4 +- ...orical-1-best-embedding-3-4-embeddings.csv | 2 +- ...orical-1-best-embedding-3-5-embeddings.csv | 4 +- ...orical-1-best-embedding-3-6-embeddings.csv | 2 +- ...orical-1-best-embedding-3-7-embeddings.csv | 2 +- ...inf-size-best-embedding-3-0-embeddings.csv | 6 +- ...inf-size-best-embedding-3-1-embeddings.csv | 6 +- ...inf-size-best-embedding-3-2-embeddings.csv | 6 +- ...inf-size-best-embedding-3-3-embeddings.csv | 12 +- ...inf-size-best-embedding-3-4-embeddings.csv | 6 +- ...inf-size-best-embedding-3-5-embeddings.csv | 12 +- ...inf-size-best-embedding-3-6-embeddings.csv | 6 +- ...inf-size-best-embedding-3-7-embeddings.csv | 6 +- ...cal-bert-best-embedding-1-0-embeddings.csv | 10 +- ...cal-bert-best-embedding-1-1-embeddings.csv | 10 +- ...cal-bert-best-embedding-1-2-embeddings.csv | 8 +- ...cal-bert-best-embedding-1-3-embeddings.csv | 16 +- ...cal-bert-best-embedding-1-4-embeddings.csv | 8 +- ...cal-bert-best-embedding-1-5-embeddings.csv | 18 +- ...cal-bert-best-embedding-1-6-embeddings.csv | 10 +- ...cal-bert-best-embedding-1-7-embeddings.csv | 8 +- ...-categorical-bert-best-1-0-predictions.csv | 6 +- ...-categorical-bert-best-1-1-predictions.csv | 4 +- ...-categorical-bert-best-1-2-predictions.csv | 4 +- ...-categorical-bert-best-1-3-predictions.csv | 2 +- ...-categorical-bert-best-1-4-predictions.csv | 2 +- ...-categorical-bert-best-1-5-predictions.csv | 10 +- ...-categorical-bert-best-1-6-predictions.csv | 4 +- ...-categorical-bert-best-1-7-predictions.csv | 2 +- ...rical-distributed-best-3-6-predictions.csv | 2 +- ...cal-multitarget-5-best-3-0-predictions.csv | 2 +- ...cal-multitarget-5-best-3-1-predictions.csv | 2 +- ...cal-multitarget-5-best-3-2-predictions.csv | 2 +- ...cal-multitarget-5-best-3-3-predictions.csv | 4 +- ...cal-multitarget-5-best-3-4-predictions.csv | 2 +- ...cal-multitarget-5-best-3-5-predictions.csv | 4 +- ...cal-multitarget-5-best-3-6-predictions.csv | 2 +- ...cal-multitarget-5-best-3-7-predictions.csv | 2 +- ...cal-multitarget-5-last-3-0-predictions.csv | 2 +- ...cal-multitarget-5-last-3-1-predictions.csv | 2 +- ...cal-multitarget-5-last-3-2-predictions.csv | 2 +- ...cal-multitarget-5-last-3-3-predictions.csv | 4 +- ...cal-multitarget-5-last-3-4-predictions.csv | 2 +- ...cal-multitarget-5-last-3-5-predictions.csv | 4 +- ...cal-multitarget-5-last-3-6-predictions.csv | 2 +- ...cal-multitarget-5-last-3-7-predictions.csv | 2 +- ...al-1-best-3-autoregression-predictions.csv | 400 +++++++++--------- ...uifier-model-real-1-best-3-predictions.csv | 48 +-- ...uifier-model-real-3-best-3-predictions.csv | 48 +-- ...uifier-model-real-5-best-3-predictions.csv | 48 +-- ...ifier-model-real-50-best-3-predictions.csv | 48 +-- ...ustom-eval-run-0-best-3-0-predictions.csv} | 0 ...ustom-eval-run-0-best-3-1-predictions.csv} | 0 ...ustom-eval-run-0-best-3-2-predictions.csv} | 0 ...ustom-eval-run-0-best-3-3-predictions.csv} | 0 ...ustom-eval-run-0-best-3-4-predictions.csv} | 0 ...ustom-eval-run-0-best-3-5-predictions.csv} | 0 ...ustom-eval-run-0-best-3-6-predictions.csv} | 0 ...ustom-eval-run-0-best-3-7-predictions.csv} | 0 ...ustom-eval-run-1-best-3-0-predictions.csv} | 6 +- ...ustom-eval-run-1-best-3-1-predictions.csv} | 6 +- ...ustom-eval-run-1-best-3-2-predictions.csv} | 32 +- ...ustom-eval-run-1-best-3-3-predictions.csv} | 60 +-- ...ustom-eval-run-1-best-3-4-predictions.csv} | 14 +- ...ustom-eval-run-1-best-3-5-predictions.csv} | 34 +- ...ustom-eval-run-1-best-3-6-predictions.csv} | 8 +- ...custom-eval-run-1-best-3-7-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-0-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-1-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-3-predictions.csv | 61 +++ ...custom-eval-run-2-best-3-4-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-5-predictions.csv | 61 +++ ...custom-eval-run-2-best-3-6-predictions.csv | 31 ++ ...custom-eval-run-2-best-3-7-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-0-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-1-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-2-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-3-predictions.csv | 61 +++ ...custom-eval-run-3-best-3-4-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-5-predictions.csv | 61 +++ ...custom-eval-run-3-best-3-6-predictions.csv | 31 ++ ...custom-eval-run-3-best-3-7-predictions.csv | 31 ++ ...custom-eval-run-4-best-3-0-predictions.csv | 31 -- ...custom-eval-run-4-best-3-1-predictions.csv | 31 -- ...custom-eval-run-4-best-3-2-predictions.csv | 31 -- ...custom-eval-run-4-best-3-3-predictions.csv | 61 --- ...custom-eval-run-4-best-3-4-predictions.csv | 31 -- ...custom-eval-run-4-best-3-5-predictions.csv | 61 --- ...custom-eval-run-4-best-3-6-predictions.csv | 31 -- ...custom-eval-run-4-best-3-7-predictions.csv | 31 -- ...custom-eval-run-5-best-3-0-predictions.csv | 31 -- ...custom-eval-run-5-best-3-1-predictions.csv | 31 -- ...custom-eval-run-5-best-3-2-predictions.csv | 31 -- ...custom-eval-run-5-best-3-3-predictions.csv | 61 --- ...custom-eval-run-5-best-3-4-predictions.csv | 31 -- ...custom-eval-run-5-best-3-5-predictions.csv | 61 --- ...custom-eval-run-5-best-3-6-predictions.csv | 31 -- ...custom-eval-run-5-best-3-7-predictions.csv | 31 -- ...custom-eval-run-6-best-3-7-predictions.csv | 31 -- ...l-categorical-1-best-3-0-probabilities.csv | 2 +- ...l-categorical-1-best-3-1-probabilities.csv | 2 +- ...l-categorical-1-best-3-2-probabilities.csv | 2 +- ...l-categorical-1-best-3-3-probabilities.csv | 4 +- ...l-categorical-1-best-3-4-probabilities.csv | 2 +- ...l-categorical-1-best-3-5-probabilities.csv | 4 +- ...l-categorical-1-best-3-6-probabilities.csv | 2 +- ...l-categorical-1-best-3-7-probabilities.csv | 2 +- ...l-categorical-3-best-3-0-probabilities.csv | 2 +- ...l-categorical-3-best-3-1-probabilities.csv | 2 +- ...l-categorical-3-best-3-2-probabilities.csv | 2 +- ...l-categorical-3-best-3-3-probabilities.csv | 4 +- ...l-categorical-3-best-3-4-probabilities.csv | 2 +- ...l-categorical-3-best-3-5-probabilities.csv | 4 +- ...l-categorical-3-best-3-6-probabilities.csv | 2 +- ...l-categorical-3-best-3-7-probabilities.csv | 2 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-0-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-1-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-2-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-3-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-4-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-5-probabilities.csv | 12 +- ...ical-3-inf-size-best-3-6-probabilities.csv | 6 +- ...ical-3-inf-size-best-3-7-probabilities.csv | 6 +- ...l-categorical-5-best-3-0-probabilities.csv | 2 +- ...l-categorical-5-best-3-1-probabilities.csv | 2 +- ...l-categorical-5-best-3-2-probabilities.csv | 2 +- ...l-categorical-5-best-3-3-probabilities.csv | 4 +- ...l-categorical-5-best-3-4-probabilities.csv | 2 +- ...l-categorical-5-best-3-5-probabilities.csv | 4 +- ...l-categorical-5-best-3-6-probabilities.csv | 2 +- ...l-categorical-5-best-3-7-probabilities.csv | 2 +- ...-categorical-50-best-3-0-probabilities.csv | 2 +- ...-categorical-50-best-3-1-probabilities.csv | 2 +- ...-categorical-50-best-3-2-probabilities.csv | 2 +- ...-categorical-50-best-3-3-probabilities.csv | 4 +- ...-categorical-50-best-3-4-probabilities.csv | 2 +- ...-categorical-50-best-3-5-probabilities.csv | 4 +- ...-categorical-50-best-3-6-probabilities.csv | 2 +- ...-categorical-50-best-3-7-probabilities.csv | 2 +- ...ategorical-bert-best-1-0-probabilities.csv | 10 +- ...ategorical-bert-best-1-1-probabilities.csv | 10 +- ...ategorical-bert-best-1-2-probabilities.csv | 8 +- ...ategorical-bert-best-1-3-probabilities.csv | 16 +- ...ategorical-bert-best-1-4-probabilities.csv | 8 +- ...ategorical-bert-best-1-5-probabilities.csv | 18 +- ...ategorical-bert-best-1-6-probabilities.csv | 10 +- ...ategorical-bert-best-1-7-probabilities.csv | 8 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 4 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 4 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- ...l-multitarget-5-best-3-0-probabilities.csv | 2 +- ...l-multitarget-5-best-3-1-probabilities.csv | 2 +- ...l-multitarget-5-best-3-2-probabilities.csv | 2 +- ...l-multitarget-5-best-3-3-probabilities.csv | 4 +- ...l-multitarget-5-best-3-4-probabilities.csv | 2 +- ...l-multitarget-5-best-3-5-probabilities.csv | 4 +- ...l-multitarget-5-best-3-6-probabilities.csv | 2 +- ...l-multitarget-5-best-3-7-probabilities.csv | 2 +- ...uifier_dataset_from_folder_parquet_lazy.py | 2 +- ...t_sequifier_dataset_from_folder_pt_lazy.py | 78 +++- tests/unit/test_infer.py | 37 +- tests/unit/test_train.py | 113 ++++- tests/unit/test_train_distributed_loss.py | 42 +- tests/unit/test_train_fsdp_loss.py | 38 +- 197 files changed, 1845 insertions(+), 1579 deletions(-) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-0-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-1-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-2-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-3-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-4-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-5-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-6-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv => sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-7-predictions.csv} (100%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-0-predictions.csv} (88%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-1-predictions.csv} (88%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-2-predictions.csv} (51%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-3-predictions.csv} (52%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-4-predictions.csv} (76%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-5-predictions.csv} (71%) rename tests/resources/target_outputs/predictions/{sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv => sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-6-predictions.csv} (84%) create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-7-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-7-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-0-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-1-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-2-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-3-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-4-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-5-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-6-predictions.csv create mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index f855a972..21d2457d 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -152,7 +152,10 @@ def load_train_config( config_values["id_maps"] = metadata_config["id_maps"] config_values["special_token_ids"] = validate_special_token_ids( - metadata_config["special_token_ids"], + metadata_config.get( + "special_token_ids", + SPECIAL_TOKEN_IDS.ids_by_label, + ), source=f"metadata config '{metadata_config_path}'", ) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 71a0363d..b0b28bed 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1439,7 +1439,19 @@ def _train_epoch( global_token_count, ) = self._calculate_training_loss(output, targets, metadata) - self.scaler.scale(loss).backward() + if self.accumulation_steps is None: + accumulation_divisor = 1 + else: + window_start = ( + batch_count // self.accumulation_steps + ) * self.accumulation_steps + accumulation_divisor = min( + self.accumulation_steps, + num_batches - window_start, + ) + + backward_loss = loss / accumulation_divisor + self.scaler.scale(backward_loss).backward() self._accumulate_loss_components( train_loss_sums, train_token_count, @@ -1507,7 +1519,7 @@ def _train_epoch( start_time = time.time() self._check_and_terminate() - del data, targets, output, loss, backward_components + del data, targets, output, loss, backward_loss, backward_components if self.scheduler_step_on == "batch" and optimizer_step_performed: if ( diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index a8575c49..f96c0f61 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -2,6 +2,7 @@ import os import shutil import subprocess +import sys import time import polars as pl @@ -326,8 +327,6 @@ def format_configs_locally( inference_config_path_lazy, hp_search_configs, ): - from sys import platform - config_paths = [ preprocessing_config_path_cat, preprocessing_config_path_cat_multitarget, @@ -371,7 +370,7 @@ def format_configs_locally( cuda_available = torch.cuda.is_available() for config_path in config_paths: - if str(platform).startswith("win") or cuda_available: + if sys.platform.startswith("win") or cuda_available: with open(config_path, "r") as f: config = yaml.safe_load(f) @@ -380,7 +379,7 @@ def format_configs_locally( assert config is not None, config_path - if platform == "windows": + if sys.platform.startswith("win"): config = { attr: reformat_parameter(attr, param, "linux->local") for attr, param in config.items() @@ -397,7 +396,7 @@ def format_configs_locally( yield - if str(platform).startswith("win") or cuda_available: + if sys.platform.startswith("win") or cuda_available: for config_path in config_paths: with open(config_path, "w") as f: yaml.dump( diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py index ebe52dd2..17c83460 100644 --- a/tests/integration/test_hyperparameter_search.py +++ b/tests/integration/test_hyperparameter_search.py @@ -37,9 +37,6 @@ def test_hp_search_bert_outputs(run_hp_search, project_root): with open(generated_configs[0], "r") as f: generated_config = yaml.safe_load(f) - assert generated_config["metadata_config_path"].endswith( - "test-data-categorical-1-lookahead-0.json" - ) assert generated_config["metadata_config_path"].endswith( "test-data-categorical-1-lookahead-0.json" ) diff --git a/tests/integration/test_identities.py b/tests/integration/test_identities.py index 0495a56e..f2ecee46 100644 --- a/tests/integration/test_identities.py +++ b/tests/integration/test_identities.py @@ -2,22 +2,48 @@ import pytest +def _frame_mismatches(actual, expected, *, rtol=1e-5, atol=1e-6): + mismatches = [] + for column in actual.columns: + actual_values = actual[column].to_numpy() + expected_values = expected[column].to_numpy() + if np.issubdtype(actual_values.dtype, np.floating): + try: + np.testing.assert_allclose( + actual_values, + expected_values, + rtol=rtol, + atol=atol, + ) + except AssertionError as exc: + mismatches.append((column, str(exc))) + elif not np.array_equal(actual_values, expected_values): + mismatches.append( + ( + column, + f"{actual_values = } != {expected_values = }", + ) + ) + return mismatches + + @pytest.mark.optional def test_identities(targets, predictions, probabilities, embeddings): failed_models = [] for model_name, preds in predictions.items(): - equal = preds.to_numpy() == targets["preds"][model_name].to_numpy() - mean_equal = np.mean(equal.astype(int)) + mismatches = _frame_mismatches(preds, targets["preds"][model_name]) if model_name != "model-real-1-best-3-autoregression": - if not mean_equal == 1.0: + if mismatches: failed_models.append( ( model_name, - equal, - f"{model_name} preds are not identical to target: {preds.to_numpy() = } != {targets['preds'][model_name].to_numpy() = }: {equal = }, {mean_equal = }", + mismatches, + f"{model_name} preds differ from target: {mismatches = }", ) ) else: + equal = preds.to_numpy() == targets["preds"][model_name].to_numpy() + mean_equal = np.mean(equal.astype(int)) if mean_equal == 1.0: failed_models.append( ( @@ -28,22 +54,24 @@ def test_identities(targets, predictions, probabilities, embeddings): ) for model_name, probs in probabilities.items(): - equal = probs.to_numpy() == targets["probs"][model_name].to_numpy() - all_equal = np.all(equal) - if not all_equal: + mismatches = _frame_mismatches(probs, targets["probs"][model_name]) + if mismatches: failed_models.append( - (model_name, equal, f"{model_name} probs are not identical to target") + ( + model_name, + mismatches, + f"{model_name} probs differ from target: {mismatches = }", + ) ) for model_name, embeds in embeddings.items(): - equal = embeds.to_numpy() == targets["embeds"][model_name].to_numpy() - all_equal = np.all(equal) - if not all_equal: + mismatches = _frame_mismatches(embeds, targets["embeds"][model_name]) + if mismatches: failed_models.append( ( model_name, - equal, - f"{model_name} embeddings are not identical to target", + mismatches, + f"{model_name} embeddings differ from target: {mismatches = }", ) ) diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py index 5b09d088..88d1f366 100644 --- a/tests/integration/test_make.py +++ b/tests/integration/test_make.py @@ -1,5 +1,6 @@ import os import shutil +import sys import time import pytest @@ -125,9 +126,7 @@ def adapt_configs(config_strings): with open(infer_config_path, "w") as f: f.write(infer_config_string) - from sys import platform - - if platform == "windows": + if sys.platform.startswith("win"): for config_path in [ preprocess_config_path, train_config_path, @@ -165,7 +164,7 @@ def test_make(adapt_configs): else: assert False, f"Training for 'sequifier train --config-path {test_project_name}/configs/train.yaml' was unsuccessful" else: - assert False, f"Preprocessing for 'sequifier preprocess --config-path {test_project_name}/configs/train.yaml' was unsuccessful" + assert False, f"Preprocessing for 'sequifier preprocess --config-path {test_project_name}/configs/preprocess.yaml' was unsuccessful" # clean up, only if tests didn't fail shutil.rmtree(test_project_name) diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py index 4a4be821..c7f2bd72 100644 --- a/tests/integration/test_onnx_export.py +++ b/tests/integration/test_onnx_export.py @@ -2,6 +2,7 @@ import numpy as np import onnxruntime +import torch from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel from sequifier.helpers import ModelWindowView, StoredWindowLayout @@ -84,6 +85,7 @@ def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): ), ) model = TransformerModel(config) + model.eval() model._export_model(model, "best", 1) export_path = os.path.join( @@ -195,15 +197,51 @@ def test_onnx_export_preserves_feature_name_order(tmp_path): assert input_names == ["cat2_in", "cat10_in", "attention_valid_mask"] - outputs = session.run( - None, - { - "cat2_in": np.array([[3, 4, 5, 6], [6, 5, 4, 3]], dtype=np.int64), - "cat10_in": np.array([[3, 4, 5, 3], [5, 4, 3, 5]], dtype=np.int64), - "attention_valid_mask": np.ones( - (inference_batch_size, context_length), dtype=np.bool_ - ), - }, - ) + ort_inputs = { + "cat2_in": np.array([[3, 4, 5, 6], [6, 5, 4, 3]], dtype=np.int64), + "cat10_in": np.array([[3, 4, 5, 3], [5, 4, 3, 5]], dtype=np.int64), + "attention_valid_mask": np.ones( + (inference_batch_size, context_length), dtype=np.bool_ + ), + } + outputs = session.run(None, ort_inputs) assert outputs[0].shape == (1, inference_batch_size, config.n_classes["cat2"]) + + def assert_onnx_matches_torch(onnx_inputs): + torch_inputs_for_case = { + "cat2": torch.tensor(onnx_inputs["cat2_in"], dtype=torch.long), + "cat10": torch.tensor(onnx_inputs["cat10_in"], dtype=torch.long), + } + torch_metadata_for_case = { + "attention_valid_mask": torch.tensor( + onnx_inputs["attention_valid_mask"], dtype=torch.bool + ) + } + with torch.no_grad(): + torch_outputs = model(torch_inputs_for_case, torch_metadata_for_case) + + onnx_outputs = session.run(None, onnx_inputs) + np.testing.assert_allclose( + onnx_outputs[0], + torch_outputs["cat2"].detach().numpy(), + rtol=1e-4, + atol=1e-5, + ) + return onnx_outputs[0] + + base_outputs = assert_onnx_matches_torch(ort_inputs) + + cat2_changed_inputs = { + **ort_inputs, + "cat2_in": np.array([[6, 6, 5, 4], [3, 3, 4, 5]], dtype=np.int64), + } + cat2_changed_outputs = assert_onnx_matches_torch(cat2_changed_inputs) + assert not np.allclose(base_outputs, cat2_changed_outputs, rtol=1e-5, atol=1e-6) + + cat10_changed_inputs = { + **ort_inputs, + "cat10_in": np.array([[5, 5, 4, 3], [3, 3, 5, 4]], dtype=np.int64), + } + cat10_changed_outputs = assert_onnx_matches_torch(cat10_changed_inputs) + assert not np.allclose(base_outputs, cat10_changed_outputs, rtol=1e-5, atol=1e-6) diff --git a/tests/integration/test_training.py b/tests/integration/test_training.py index d90c32ef..ca8a4ab6 100644 --- a/tests/integration/test_training.py +++ b/tests/integration/test_training.py @@ -1,162 +1,148 @@ import os -import numpy as np - def test_checkpoint_files_exists( - run_training, run_training_from_checkpoint, project_root + run_training, run_training_from_checkpoint, run_hp_search, project_root ): - found_items = np.array( - sorted(list(os.listdir(os.path.join(project_root, "checkpoints")))) - ) - expected_items = np.array( - sorted( - [ - f"model-{model_type}-{j}-epoch-{i}.pt" - for model_type in ["categorical", "real"] - for j in [1, 3, 5, 50] - for i in range(1, 4) - ] - + [ - f"model-real-{j}-epoch-{i}-batch-1.pt" - for j in [1, 3, 5, 50] - for i in range(1, 4) - ] - + [f"model-real-{j}-latest.pt" for j in [1, 3, 5, 50]] - + [f"model-real-1-from-epoch-checkpoint-epoch-{i}.pt" for i in range(1, 4)] - + [ - f"model-categorical-3-from-mid-epoch-checkpoint-epoch-{i}.pt" - for i in range(1, 4) - ] - + [ - f"model-categorical-{j}-inf-size-epoch-{i}.pt" - for j in [1, 3] - for i in range(1, 4) - ] - + ["model-categorical-bert-epoch-1.pt"] - + ["model-real-bert-epoch-1.pt"] - + [f"model-categorical-multitarget-5-epoch-{i}.pt" for i in range(1, 4)] - + [ - f"model-categorical-multitarget-5-eager-epoch-{i}.pt" - for i in range(1, 4) - ] - + [f"model-categorical-distributed-epoch-{i}.pt" for i in range(1, 4)] - + [ - f"model-categorical-distributed-lazy-parquet-epoch-{i}.pt" - for i in range(1, 4) - ] - + [f"model-categorical-lazy-epoch-{i}.pt" for i in range(1, 4)] - ) + found_items = sorted(os.listdir(os.path.join(project_root, "checkpoints"))) + expected_items = sorted( + [ + f"model-{model_type}-{j}-epoch-{i}.pt" + for model_type in ["categorical", "real"] + for j in [1, 3, 5, 50] + for i in range(1, 4) + ] + + [ + f"model-real-{j}-epoch-{i}-batch-1.pt" + for j in [1, 3, 5, 50] + for i in range(1, 4) + ] + + [f"model-real-{j}-latest.pt" for j in [1, 3, 5, 50]] + + [f"model-real-1-from-epoch-checkpoint-epoch-{i}.pt" for i in range(1, 4)] + + [ + f"model-categorical-3-from-mid-epoch-checkpoint-epoch-{i}.pt" + for i in range(1, 4) + ] + + [ + f"model-categorical-{j}-inf-size-epoch-{i}.pt" + for j in [1, 3] + for i in range(1, 4) + ] + + ["model-categorical-bert-epoch-1.pt"] + + ["model-real-bert-epoch-1.pt"] + + [f"model-categorical-multitarget-5-epoch-{i}.pt" for i in range(1, 4)] + + [f"model-categorical-multitarget-5-eager-epoch-{i}.pt" for i in range(1, 4)] + + [f"model-categorical-distributed-epoch-{i}.pt" for i in range(1, 4)] + + [ + f"model-categorical-distributed-lazy-parquet-epoch-{i}.pt" + for i in range(1, 4) + ] + + [f"model-categorical-lazy-epoch-{i}.pt" for i in range(1, 4)] ) - print(f"{expected_items = }") - print(f"{found_items = }") + assert set(found_items) == set(expected_items), { + "missing": sorted(set(expected_items) - set(found_items)), + "unexpected": sorted(set(found_items) - set(expected_items)), + } - assert np.all( - found_items == expected_items - ), f"{found_items = } != {expected_items = }" - -def test_model_files_exists(run_training, run_training_from_checkpoint, project_root): +def test_model_files_exists( + run_training, run_hp_search, run_training_from_checkpoint, project_root +): model_type_formats = {"categorical": ["onnx", "pt"], "real": ["onnx", "pt"]} - found_items = np.array( - sorted( - [ - f - for f in os.listdir(os.path.join(project_root, "models")) - if not f.endswith(".onnx.data") - ] - ) + found_items = sorted( + [ + f + for f in os.listdir(os.path.join(project_root, "models")) + if not f.endswith(".onnx.data") + ] ) - expected_items = np.array( - sorted( - [ - f"sequifier-model-{model_type2}-{j}-{kind}{model_type}-3.{model_type_format}" - for model_type2 in ["categorical", "real"] - for model_type in ["", "-embedding"] - for model_type_format in model_type_formats[model_type2] - for j in [1, 3, 5, 50] - for kind in ["best", "last"] - ] - + [ - f"sequifier-model-categorical-3-from-mid-epoch-checkpoint-{kind}{model_type}-3.{model_type_format}" - for model_type in ["", "-embedding"] - for kind in ["best", "last"] - for model_type_format in ["pt", "onnx"] - ] - + [ - f"sequifier-model-real-1-from-epoch-checkpoint-{kind}-embedding-3.{model_type_format}" - for kind in ["best", "last"] - for model_type_format in ["pt", "onnx"] - ] - + [ - "sequifier-model-categorical-multitarget-5-best-3.onnx", - "sequifier-model-categorical-multitarget-5-last-3.onnx", - "sequifier-model-categorical-multitarget-5-best-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-last-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-best-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-last-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-best-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-last-embedding-3.onnx", - "sequifier-model-real-1-best-3-autoregression.pt", - "sequifier-model-categorical-1-best-3-autoregression.onnx", - "sequifier-model-categorical-1-inf-size-best-3.onnx", - "sequifier-model-categorical-1-inf-size-last-3.onnx", - "sequifier-model-categorical-1-inf-size-best-embedding-3.onnx", - "sequifier-model-categorical-1-inf-size-last-embedding-3.onnx", - "sequifier-model-categorical-3-inf-size-best-3.pt", - "sequifier-model-categorical-3-inf-size-last-3.pt", - "sequifier-model-categorical-3-inf-size-best-embedding-3.pt", - "sequifier-model-categorical-3-inf-size-last-embedding-3.pt", - "sequifier-model-categorical-bert-best-1.pt", - "sequifier-model-categorical-bert-last-1.pt", - "sequifier-model-categorical-bert-best-embedding-1.pt", - "sequifier-model-categorical-bert-last-embedding-1.pt", - "sequifier-model-real-bert-best-1.pt", - "sequifier-model-real-bert-last-1.pt", - "sequifier-model-categorical-distributed-best-3.pt", - "sequifier-model-categorical-distributed-best-3.onnx", - "sequifier-model-categorical-distributed-last-3.pt", - "sequifier-model-categorical-distributed-last-3.onnx", - "sequifier-model-categorical-distributed-lazy-parquet-best-3.pt", - "sequifier-model-categorical-distributed-lazy-parquet-best-3.onnx", - "sequifier-model-categorical-distributed-lazy-parquet-last-3.pt", - "sequifier-model-categorical-distributed-lazy-parquet-last-3.onnx", - "sequifier-model-categorical-lazy-best-3.pt", - "sequifier-model-categorical-lazy-best-3.onnx", - "sequifier-model-categorical-lazy-last-3.pt", - "sequifier-model-categorical-lazy-last-3.onnx", - ] - + [ - f"sequifier-test-hp-search-sample-run-{i}-{suffix}-1.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-bert-run-0-{suffix}-1.pt" - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-grid-run-{i}-{suffix}-2.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-bayesian-run-{i}-{suffix}-1.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-custom-eval-run-{i}-{suffix}-3.onnx" - for i in range(4) - for suffix in ["best", "last"] - ] - ) + expected_items = sorted( + [ + f"sequifier-model-{model_type2}-{j}-{kind}{model_type}-3.{model_type_format}" + for model_type2 in ["categorical", "real"] + for model_type in ["", "-embedding"] + for model_type_format in model_type_formats[model_type2] + for j in [1, 3, 5, 50] + for kind in ["best", "last"] + ] + + [ + f"sequifier-model-categorical-3-from-mid-epoch-checkpoint-{kind}{model_type}-3.{model_type_format}" + for model_type in ["", "-embedding"] + for kind in ["best", "last"] + for model_type_format in ["pt", "onnx"] + ] + + [ + f"sequifier-model-real-1-from-epoch-checkpoint-{kind}-embedding-3.{model_type_format}" + for kind in ["best", "last"] + for model_type_format in ["pt", "onnx"] + ] + + [ + "sequifier-model-categorical-multitarget-5-best-3.onnx", + "sequifier-model-categorical-multitarget-5-last-3.onnx", + "sequifier-model-categorical-multitarget-5-best-embedding-3.onnx", + "sequifier-model-categorical-multitarget-5-last-embedding-3.onnx", + "sequifier-model-categorical-multitarget-5-eager-best-3.onnx", + "sequifier-model-categorical-multitarget-5-eager-last-3.onnx", + "sequifier-model-categorical-multitarget-5-eager-best-embedding-3.onnx", + "sequifier-model-categorical-multitarget-5-eager-last-embedding-3.onnx", + "sequifier-model-real-1-best-3-autoregression.pt", + "sequifier-model-categorical-1-best-3-autoregression.onnx", + "sequifier-model-categorical-1-inf-size-best-3.onnx", + "sequifier-model-categorical-1-inf-size-last-3.onnx", + "sequifier-model-categorical-1-inf-size-best-embedding-3.onnx", + "sequifier-model-categorical-1-inf-size-last-embedding-3.onnx", + "sequifier-model-categorical-3-inf-size-best-3.pt", + "sequifier-model-categorical-3-inf-size-last-3.pt", + "sequifier-model-categorical-3-inf-size-best-embedding-3.pt", + "sequifier-model-categorical-3-inf-size-last-embedding-3.pt", + "sequifier-model-categorical-bert-best-1.pt", + "sequifier-model-categorical-bert-last-1.pt", + "sequifier-model-categorical-bert-best-embedding-1.pt", + "sequifier-model-categorical-bert-last-embedding-1.pt", + "sequifier-model-real-bert-best-1.pt", + "sequifier-model-real-bert-last-1.pt", + "sequifier-model-categorical-distributed-best-3.pt", + "sequifier-model-categorical-distributed-best-3.onnx", + "sequifier-model-categorical-distributed-last-3.pt", + "sequifier-model-categorical-distributed-last-3.onnx", + "sequifier-model-categorical-distributed-lazy-parquet-best-3.pt", + "sequifier-model-categorical-distributed-lazy-parquet-best-3.onnx", + "sequifier-model-categorical-distributed-lazy-parquet-last-3.pt", + "sequifier-model-categorical-distributed-lazy-parquet-last-3.onnx", + "sequifier-model-categorical-lazy-best-3.pt", + "sequifier-model-categorical-lazy-best-3.onnx", + "sequifier-model-categorical-lazy-last-3.pt", + "sequifier-model-categorical-lazy-last-3.onnx", + ] + + [ + f"sequifier-test-hp-search-sample-run-{i}-{suffix}-1.pt" + for i in range(4) + for suffix in ["best", "last"] + ] + + [ + f"sequifier-test-hp-search-bert-run-0-{suffix}-1.pt" + for suffix in ["best", "last"] + ] + + [ + f"sequifier-test-hp-search-grid-run-{i}-{suffix}-2.pt" + for i in range(4) + for suffix in ["best", "last"] + ] + + [ + f"sequifier-test-hp-search-bayesian-run-{i}-{suffix}-1.pt" + for i in range(4) + for suffix in ["best", "last"] + ] + + [ + f"sequifier-test-hp-search-custom-eval-run-{i}-{suffix}-3.onnx" + for i in range(4) + for suffix in ["best", "last"] + ] ) - print(f"{expected_items = }") - print(f"{found_items = }") - assert np.all( - found_items == expected_items - ), f"{found_items = } != {expected_items = }" + assert set(found_items) == set(expected_items), { + "missing": sorted(set(expected_items) - set(found_items)), + "unexpected": sorted(set(found_items) - set(expected_items)), + } diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv index b6602347..ef886f9d 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,3,0.129906,-0.5716,0.18384615,0.48382017,-0.95800894,-0.06879192,-1.5230852,0.32024476,-0.032266557,-0.2324689,1.2026423,1.2646347,-1.6631967,0.8923384,1.0081543,2.146518,1.260503,-0.024123436,-0.4261092,0.71811444,0.6665925,-0.83603954,0.7274643,0.081591725,-0.46056688,-0.7607759,-0.5974563,0.5428709,0.04133952,0.6946457,0.54585093,-1.3706633,0.9921805,-1.1147716,-1.1846336,-0.6535198,1.6928166,-0.6169712,1.1777917,-0.33404595,-1.2148309,0.16786538,1.4557567,-0.7030484,0.40415078,-2.0602548,-0.44774872,-0.9443908,-0.37846982,-1.4340259,-1.0351791,-0.54817986,-1.3410672,1.057497,0.6667623,1.8221252,-1.484842,1.5296896,0.2569867,-2.118917,0.27047974,-0.802363,-0.34508198,-0.7845012,0.29995131,-1.5465921,0.3353841,-0.85972494,0.9633959,0.1057641,0.77337104,1.4520825,-2.3267972,0.8137759,-0.9976677,0.25013983,-0.27935335,0.8346441,-0.33092296,-1.0873228,0.49370176,-0.4727684,-0.7608272,-0.8022482,1.3239352,-2.2216249,0.55208087,-1.1424916,1.1881708,-0.4595066,-0.09527821,0.9202227,0.57056504,-2.0961475,1.643413,-1.046783,-0.116270036,-0.3729071,-0.61354154,-0.8894295,-1.1429787,-0.78733057,0.57443416,1.4698808,0.43613648,-0.075808406,-0.14003257,-2.9505506,-0.016151994,0.6177055,0.68450046,0.5607075,0.87257403,-1.3993292,0.35658643,-0.0063092983,-0.25653496,-0.31633425,-3.5138404,0.88777286,1.6519107,0.40932092,-0.027439872,-0.79843307,-1.1049063,0.07724614,0.56875324,-1.0056511,0.48330793,-0.157245,-1.6178644,0.1934022,-1.9760464,0.0589674,0.5110818,0.089602806,-0.968479,-1.0943018,-0.7229412,1.4727569,0.47599703,-0.6288432,-2.055541,-1.011629,0.9921429,0.5582884,0.50531685,-0.097561255,0.731814,0.6783084,0.3472921,-1.7636684,0.27717423,0.28878227,0.5271399,1.5502092,0.1620326,-0.50224847,1.5970831,-0.6694094,-0.53928703,-1.924573,-0.013257886,-0.10813448,-2.0357018,-1.6700076,0.2103319,1.2394764,-1.1461264,0.036453854,0.40960938,-0.83274007,-0.008255889,-0.30468202,0.5700774,0.6194162,-1.6036439,0.2115395,0.6522949,-0.39073604,0.21115232,-0.46797746,-0.018942848,0.09517513,-0.61526686,0.67094487,-0.45691407,-0.42524102,-0.8716745,0.07637033,-0.72497505,-1.2465461,-0.4429114,1.5433344,-0.8214027,1.8114822,-0.90004414,-0.6661404,0.8775225,0.91526055 +0,0,3,0.12990583,-0.57160014,0.1838459,0.48382023,-0.95800894,-0.06879183,-1.5230852,0.32024524,-0.032266203,-0.23246907,1.2026421,1.264635,-1.6631967,0.8923387,1.008154,2.1465178,1.2605029,-0.024123702,-0.4261095,0.7181141,0.6665921,-0.8360398,0.7274644,0.08159177,-0.46056688,-0.7607759,-0.59745675,0.5428708,0.041339252,0.6946458,0.54585075,-1.3706634,0.99218065,-1.1147714,-1.1846339,-0.65351975,1.6928166,-0.61697114,1.1777916,-0.33404547,-1.2148314,0.16786565,1.4557565,-0.7030481,0.40415096,-2.0602548,-0.44774878,-0.9443907,-0.3784696,-1.4340262,-1.0351793,-0.54817986,-1.341067,1.0574965,0.66676235,1.8221258,-1.4848418,1.5296896,0.25698647,-2.118917,0.2704801,-0.8023632,-0.34508163,-0.7845013,0.29995131,-1.5465924,0.3353845,-0.8597248,0.96339536,0.10576437,0.7733713,1.4520824,-2.3267972,0.81377566,-0.99766785,0.25014007,-0.27935317,0.8346441,-0.33092317,-1.087323,0.4937019,-0.47276843,-0.7608273,-0.80224836,1.3239352,-2.2216246,0.5520812,-1.1424915,1.1881708,-0.45950648,-0.09527827,0.9202227,0.5705651,-2.0961478,1.6434134,-1.0467834,-0.116270155,-0.37290683,-0.6135416,-0.88942945,-1.1429784,-0.78733057,0.57443386,1.4698808,0.43613678,-0.075808465,-0.14003229,-2.95055,-0.016151935,0.6177054,0.6845007,0.56070817,0.87257427,-1.3993288,0.35658634,-0.0063095656,-0.25653526,-0.3163344,-3.5138404,0.887773,1.6519105,0.40932044,-0.027439797,-0.7984332,-1.1049061,0.07724614,0.5687538,-1.0056508,0.48330805,-0.15724464,-1.6178644,0.19340196,-1.9760467,0.058967575,0.5110821,0.08960242,-0.9684786,-1.094302,-0.72294104,1.4727569,0.47599727,-0.628843,-2.055541,-1.0116285,0.992143,0.55828834,0.50531685,-0.09756176,0.7318141,0.67830867,0.34729233,-1.7636684,0.27717403,0.28878212,0.52713984,1.5502089,0.16203246,-0.50224864,1.5970831,-0.6694091,-0.53928715,-1.9245727,-0.013257689,-0.10813395,-2.0357018,-1.6700076,0.21033196,1.2394766,-1.1461272,0.036453612,0.4096094,-0.8327397,-0.008255711,-0.30468205,0.5700773,0.61941594,-1.6036438,0.21153934,0.6522951,-0.39073592,0.21115246,-0.46797752,-0.018942907,0.09517552,-0.61526686,0.6709447,-0.45691368,-0.42524138,-0.8716745,0.07637033,-0.72497517,-1.246546,-0.44291162,1.5433346,-0.82140267,1.8114822,-0.9000441,-0.6661404,0.8775227,0.9152606 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv index 03e75139..91bd4f31 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,3,0.6310362,0.334674,0.16728853,0.36186692,-0.9478092,-0.3926634,-1.3003972,-0.044596065,-0.20526434,-0.026398035,0.19380486,0.8118285,-2.0392873,1.2787219,1.2542659,1.4919833,1.088667,-0.010551525,-0.8448257,0.43219802,0.56950766,-0.8026797,0.74732757,-0.42725757,-1.0895562,-0.21274805,-0.7626764,0.026918262,-0.5983657,0.28117272,0.73443246,-0.9515915,0.81785864,-1.6458837,-0.71132445,0.23738682,1.6034894,0.019240104,1.3241774,-0.20347075,-0.7043628,0.38013214,1.2755842,-1.4004871,0.46275398,-1.9880224,-0.9198009,-1.0473716,-0.65675557,-0.84835905,-1.3224105,-0.70712143,-0.7341193,1.1134466,0.6568125,1.3994768,-0.954168,1.3808511,0.251891,-1.9545913,0.2308793,-0.26487717,-0.64339316,-0.2622317,0.603964,-1.4150456,0.6588127,0.08482099,1.1321739,-0.099473916,0.010979951,1.831232,-1.8722236,0.88451487,-0.76108027,0.080021404,-0.06698817,1.07159,-0.9351867,-1.0435191,0.026436348,-0.41959018,-0.52513933,-0.5412578,2.0294697,-2.7480896,0.53006375,-1.0863824,0.33880177,-0.14623298,0.6506472,1.0939751,-0.48882413,-1.810358,1.3499824,-0.89643645,-0.008765998,-0.06027395,-0.48046795,-1.2652203,-1.4560691,-0.946743,-0.27704963,1.9105397,0.20772824,-0.3049073,-0.34610513,-3.3094442,-0.46867853,0.65010065,0.4332434,0.5593448,0.8796511,-0.8775561,0.56195873,0.2979048,0.54411083,-0.49651542,-2.4436908,1.2963794,1.9646289,0.41595295,0.077845775,-0.8488377,-1.2093579,-0.2594095,0.12893897,-0.5105848,0.64491534,-0.017900532,-2.1271238,0.27657434,-1.7817888,-0.6613088,0.2365224,-0.07435218,-1.0712526,-0.80908316,-0.77087396,1.1399101,0.7127807,-0.94809335,-2.0319622,-0.7065952,1.1998774,0.56364894,0.62384087,-0.25050914,-0.12355562,0.011005514,0.4171477,-2.2401168,1.0053111,0.10580753,0.5745275,1.6763166,0.3952029,-0.3734366,2.0440457,-0.5067878,-0.59976774,-2.560222,0.28748652,-0.068856396,-1.7209245,-1.5318912,0.7257471,0.8677974,-0.9443491,0.32327485,0.09680152,-1.0634658,0.2343228,-0.73152024,0.6149891,0.50479555,-1.6433326,0.36874586,1.5886227,-0.48504025,-0.5036868,-0.24184056,-0.20931806,-0.046914995,-0.6832404,0.3294942,0.5522635,-0.77527386,-1.4231143,0.22487257,-0.16668221,-1.7301935,0.025722886,1.6323115,-1.0889417,1.2082901,-0.3673339,0.19397202,0.32195246,1.1962756 +1,0,3,0.6310361,0.33467388,0.16728823,0.36186728,-0.94780934,-0.39266327,-1.3003972,-0.044595696,-0.20526414,-0.026398215,0.1938047,0.81182855,-2.039287,1.2787219,1.2542659,1.4919837,1.0886672,-0.010551577,-0.8448256,0.43219796,0.5695074,-0.80267984,0.7473274,-0.42725766,-1.0895563,-0.21274823,-0.7626765,0.026918093,-0.5983658,0.28117266,0.73443246,-0.9515915,0.8178587,-1.6458836,-0.71132463,0.23738661,1.6034894,0.019240078,1.3241775,-0.20347083,-0.7043624,0.38013235,1.2755847,-1.4004868,0.46275395,-1.9880222,-0.91980124,-1.0473715,-0.65675545,-0.84835905,-1.3224108,-0.70712143,-0.7341194,1.1134468,0.6568125,1.3994766,-0.95416814,1.3808515,0.25189096,-1.9545913,0.23087955,-0.26487717,-0.64339334,-0.2622316,0.6039643,-1.415046,0.6588125,0.08482099,1.1321739,-0.09947382,0.01097981,1.8312315,-1.8722234,0.88451487,-0.7610804,0.08002127,-0.06698804,1.0715898,-0.93518686,-1.0435194,0.026436012,-0.41959038,-0.5251393,-0.54125756,2.0294697,-2.7480886,0.5300638,-1.0863824,0.3388017,-0.14623287,0.6506474,1.0939751,-0.4888243,-1.8103579,1.3499825,-0.8964366,-0.008765843,-0.060274,-0.4804681,-1.2652204,-1.4560695,-0.9467429,-0.2770497,1.9105395,0.20772837,-0.30490705,-0.34610507,-3.309444,-0.46867862,0.6501004,0.43324322,0.559345,0.87965095,-0.87755597,0.5619585,0.29790485,0.5441109,-0.49651536,-2.4436905,1.2963796,1.9646293,0.41595292,0.07784585,-0.8488378,-1.2093579,-0.25940973,0.12893897,-0.51058507,0.64491534,-0.017900245,-2.127124,0.27657425,-1.7817887,-0.66130847,0.2365224,-0.07435237,-1.0712522,-0.8090829,-0.7708737,1.1399105,0.71278065,-0.9480938,-2.0319617,-0.7065952,1.1998773,0.56364936,0.62384117,-0.25050887,-0.123555444,0.011005579,0.41714785,-2.2401168,1.005311,0.10580762,0.57452756,1.6763165,0.39520282,-0.37343678,2.0440457,-0.50678766,-0.59976757,-2.5602221,0.28748658,-0.06885617,-1.7209247,-1.531891,0.72574735,0.8677975,-0.944349,0.32327467,0.09680159,-1.0634657,0.23432283,-0.73151994,0.61498916,0.50479555,-1.6433319,0.36874565,1.5886225,-0.4850403,-0.5036866,-0.24184072,-0.20931797,-0.046914864,-0.6832405,0.32949412,0.5522636,-0.77527416,-1.4231143,0.22487274,-0.16668202,-1.7301934,0.025722574,1.6323113,-1.0889417,1.2082905,-0.36733398,0.19397217,0.32195246,1.1962752 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv index ae9e5907..6fefa7ce 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,2,0.14896812,-0.7527326,0.098616265,1.5360665,-0.83212125,-0.8661572,0.87993956,0.7707245,0.8990906,0.35979807,1.5049816,0.9981651,-2.2045355,0.46189427,1.3522851,0.81136656,-0.3787586,-0.41562492,-1.6569216,0.9181141,0.8893558,-0.6614972,0.35581687,1.0705252,0.61813873,-1.6933419,-1.6523572,0.4721115,-0.6415743,-0.8052874,-1.1905364,-1.3483986,0.7520653,-1.4446422,0.032763932,-0.77299255,0.8698881,-0.9012206,-0.105312526,-0.03295452,-1.7241203,0.40647608,1.3450831,0.00073365227,0.23433386,-0.9771891,-0.1076481,1.2662536,-0.7311288,-0.6664411,0.006385311,-0.31623417,0.108964175,0.43619278,0.284846,0.34632137,0.13046862,1.7500304,-0.31573698,-2.1822793,-0.073760144,-0.63938767,-2.4171443,-1.3825034,1.4659554,0.061223067,-2.0762868,-1.1751351,-0.081808135,-1.6416469,0.61133504,1.4318693,-1.5806884,1.4651628,-0.42543516,0.27195463,-1.9691073,0.5124442,0.7785031,-1.2194265,-1.2140163,-0.21277447,-0.64433247,-0.34592688,1.480311,-1.6828288,0.5201631,-0.45541105,-0.17800705,-0.29835147,0.06779409,0.17683165,-0.5690362,-0.4795994,0.24317117,0.7038561,0.47528592,0.38569337,-0.92215085,0.12652376,-0.5222174,0.79115415,0.1062228,1.2142566,0.57600933,0.3640244,1.4705232,-1.8675983,-0.151888,0.84477943,0.5522926,0.25622973,0.50753284,-0.87316334,-1.7905984,-0.8826149,-0.80747306,1.2090178,-2.0752993,-0.18883346,0.35716313,0.12954345,-0.5863821,-0.3407679,-0.8663318,0.8249107,1.2127439,-1.0448643,-0.53810304,-0.6317458,-0.50353926,0.4781922,-0.91658026,-0.21077591,0.49530765,0.66140443,-0.061057545,-0.011890421,-1.4830853,-0.5170973,1.2860987,-0.48179677,-1.2840593,-0.12392463,-0.5612262,0.5283732,1.6894128,-0.015182488,1.6194154,0.6165103,0.846802,-1.259089,-0.19867773,0.05881237,0.87158996,1.7141718,-2.1852305,-0.17253563,1.7481165,0.7287171,-0.9333205,-0.5228718,-1.1484395,-1.0014697,-1.5860218,-0.9670557,0.5662043,-0.6358826,0.6285491,1.4611297,-1.5053117,-0.73541224,-1.1782357,0.4759477,0.56338716,0.29015008,-0.5925466,0.4408311,-0.23582521,-1.1164836,1.0048937,-0.39400414,-0.7058568,0.99132824,-1.3044466,2.0163782,-1.8661258,0.013690879,-0.98518753,-0.2840235,-1.4385029,-0.70052123,-1.5944667,1.7985247,0.9840921,1.857999,-0.74875927,1.5471251,0.73758185,0.14302142 +2,0,2,0.14896777,-0.7527335,0.09861636,1.5360669,-0.8321218,-0.8661579,0.8799402,0.7707242,0.89909035,0.3597984,1.5049816,0.99816555,-2.204535,0.4618939,1.3522851,0.811366,-0.37875888,-0.4156246,-1.6569219,0.918114,0.88935566,-0.6614972,0.3558165,1.0705256,0.6181391,-1.6933414,-1.6523575,0.47211194,-0.64157414,-0.8052875,-1.1905366,-1.3483986,0.75206506,-1.4446423,0.032763835,-0.77299273,0.8698887,-0.90122116,-0.105313264,-0.032954592,-1.7241205,0.4064759,1.3450825,0.00073461805,0.2343334,-0.9771892,-0.10764814,1.2662542,-0.7311291,-0.6664417,0.0063853106,-0.31623444,0.10896421,0.43619284,0.28484625,0.34632155,0.1304682,1.7500312,-0.3157372,-2.1822789,-0.07376069,-0.63938814,-2.4171436,-1.382503,1.4659556,0.061222862,-2.076287,-1.1751353,-0.08180853,-1.6416469,0.61133516,1.4318693,-1.5806879,1.4651626,-0.42543525,0.27195483,-1.9691069,0.51244324,0.77850366,-1.2194266,-1.2140155,-0.2127739,-0.64433223,-0.3459279,1.4803112,-1.6828287,0.5201632,-0.4554113,-0.17800674,-0.29835144,0.06779454,0.17683099,-0.5690358,-0.47959915,0.24317142,0.70385575,0.47528574,0.38569346,-0.92215097,0.12652385,-0.52221704,0.79115444,0.106221735,1.2142566,0.5760093,0.36402392,1.4705237,-1.8675978,-0.151888,0.84478027,0.55229247,0.25622958,0.5075333,-0.8731629,-1.790598,-0.88261557,-0.80747306,1.2090179,-2.0752997,-0.18883318,0.35716256,0.12954298,-0.58638185,-0.34076798,-0.8663316,0.82491094,1.212744,-1.0448644,-0.53810245,-0.63174623,-0.5035392,0.4781915,-0.9165807,-0.21077545,0.49530777,0.6614037,-0.06105711,-0.011890445,-1.4830858,-0.5170972,1.2860987,-0.48179644,-1.2840594,-0.123924315,-0.561227,0.5283733,1.6894126,-0.015183194,1.619416,0.61651087,0.84680295,-1.2590885,-0.19867837,0.058812138,0.8715905,1.7141719,-2.1852307,-0.17253566,1.748117,0.72871757,-0.93332094,-0.5228718,-1.1484399,-1.0014701,-1.5860217,-0.9670559,0.5662045,-0.63588244,0.62854993,1.4611295,-1.5053114,-0.7354125,-1.1782357,0.4759481,0.56338674,0.29015055,-0.5925469,0.44083118,-0.23582503,-1.1164836,1.0048939,-0.39400432,-0.705857,0.9913283,-1.3044467,2.0163794,-1.8661263,0.013690455,-0.9851868,-0.28402337,-1.4385033,-0.7005213,-1.5944669,1.7985251,0.98409235,1.8579992,-0.7487591,1.5471251,0.7375818,0.14302124 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv index 26935d23..baf0de12 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,2,0.3853767,-0.7623611,0.5445376,1.1489445,-0.93219095,-1.0841124,-0.27961808,0.19042599,0.06699983,0.6020505,0.7307122,0.9754021,-2.318475,0.97368747,1.6034338,0.94340336,1.2762036,-0.30378067,-0.97008324,0.62717986,1.3900626,-0.9464742,0.4837369,-0.030570975,-0.4290407,-1.1276956,-0.7923079,0.563961,-0.40978292,-0.23345281,-0.27136502,-0.8576837,0.69629353,-1.6003033,0.11132374,-0.5791753,1.9399358,-0.92576635,0.53490555,-0.49527624,-1.3456327,-0.176038,1.349483,-1.1282389,0.20037875,-0.955993,-0.8822724,-0.07519414,-0.77170074,-0.9350284,-0.5532876,-0.94019765,-0.10448791,1.1707093,0.6575927,1.3083346,-0.6112351,1.6713382,0.16979486,-2.0898654,0.00984007,-0.44183394,-1.1921827,-1.2657421,1.6432866,-1.130562,-0.46437404,-0.8430221,0.7453206,-0.65720564,0.35852155,1.6237744,-2.0383017,1.1427602,-0.8917945,0.20761068,-1.3489536,0.62074554,-0.44713894,-1.8621219,-0.5244267,-0.45581624,-0.39755735,-0.43458134,1.8005577,-2.0100255,0.3588848,-1.2393866,0.95991385,-0.65878445,0.741961,0.43640068,-0.37811747,-1.3537853,1.0124421,0.12569562,0.45669925,-0.062139705,-0.6899904,-0.7770923,-1.2683299,-0.42139253,-0.4123218,1.7224118,0.38184428,-0.5022623,0.1969878,-2.748319,-0.18802647,1.3159317,0.4502178,-0.26388726,0.5703611,-0.85277075,-0.46127146,0.23827219,-0.4298961,0.41151482,-2.6187694,0.5646321,1.1139392,-0.032928437,0.1021941,-0.6601091,-1.3054987,0.09395422,0.43201578,-1.4673975,0.08933542,-0.71540993,-1.6057761,0.4075759,-1.6277498,0.05748504,-0.18920064,0.1056629,-0.8918468,-0.17913246,-1.4436157,0.077475116,0.6109399,-0.83478075,-1.3056538,-0.87130284,0.28275952,0.87232274,0.8705629,-0.14861424,0.91572547,0.6586051,0.6749446,-1.7701945,0.1629751,0.4728509,1.0638493,1.7032028,-0.6542733,-0.017882407,2.1696196,-0.047487322,-0.77344674,-2.259672,-1.1815661,-0.5823015,-1.638453,-1.8893389,0.9176421,0.32815483,0.4039307,0.17879207,-0.32735565,-1.1835169,-1.0626798,-0.12413608,-0.13082603,0.5998312,-1.7939893,0.5362146,1.2261001,-1.4384091,0.4796257,-0.45061567,-0.100991376,0.51506233,-1.2538948,1.3633755,-0.58895797,-0.21253212,-1.3333261,0.50792605,-0.97876984,-1.5163478,-0.6666502,1.8272516,-1.4814882,2.3199954,-0.6350161,0.1867251,0.83364874,0.9136821 -4,0,2,1.8327771,0.9652215,-0.25314748,0.21621384,1.9031243,0.7036974,-0.930624,-0.8883423,0.55273986,0.5570372,1.0132973,-0.96464247,-0.51950616,-0.05579906,-0.37479147,0.44072837,0.16671647,0.5790387,0.41375738,0.80011296,-1.5359617,-0.22593148,1.7854865,-0.71542114,-1.0921632,-0.041372035,-0.21795599,-0.3369114,-1.2671196,-0.7473329,0.18677177,-1.8774186,2.0318227,0.2733341,-0.9697609,-0.58609706,-0.36415994,0.22731349,0.4721085,-1.3540337,-0.25599056,0.65862226,1.5556433,-0.81543595,1.168724,-2.2140863,0.42116505,0.47876942,-0.6478898,0.44233415,0.20755047,-0.5501464,-0.5956206,-0.60861623,-1.3033564,-0.9219007,1.9484233,-0.02818083,0.9555862,-0.6107661,1.3185904,0.4262676,-1.1561952,-0.5161904,-0.8352084,0.22098036,-0.32627368,-1.1956955,1.7369198,-1.1766452,0.07778335,-1.4228516,-2.164931,0.61946803,-0.4467436,-0.01088463,-0.43634295,1.737324,0.6609657,-0.20005353,-0.56503403,0.29499987,0.11585043,-0.05404717,1.7766248,-1.624335,0.4819137,1.0377663,-1.2305183,0.8004889,-1.9219416,1.6361125,0.13642022,-1.2401025,0.56233984,-0.15820779,1.5966985,-0.25904042,-0.5514964,0.43703973,0.4001095,-0.12492117,1.6866364,2.0976322,-0.49593046,0.8581702,0.2179227,-0.6346643,-1.7050065,-1.6924847,-0.08375938,-0.38175428,-0.32693657,-0.9640046,-0.9026502,-0.5941344,0.19496141,-0.8319495,-0.55289805,-0.80228716,1.650307,1.2991756,-1.0835283,0.39504835,0.29286614,-0.13108593,-0.38219267,-0.59767234,-1.3788447,-0.26507112,0.34214637,1.0462471,1.5181249,-0.59406966,0.58952206,2.7725644,-1.0286809,1.18978,0.3369609,-1.0014182,-0.02982089,-0.5898692,-0.99967504,0.01042568,1.4441023,-0.87508506,0.57642156,2.5007522,-1.5390786,-1.6458069,-1.7197639,-0.74723464,1.1642295,-0.31345525,-0.0055794707,1.5905838,-0.9592406,-0.4174035,-0.6339656,0.8530592,1.2996758,-0.11439483,0.3914311,0.46125937,-3.0907335,-0.27514952,0.20107323,-1.4204425,-1.7638282,-0.48746726,-1.2546072,-0.2341572,-0.10110028,-0.24766739,1.7387944,-0.7589158,0.75030494,0.5836463,0.10834081,0.7989048,-0.4846295,-0.62584215,0.5027704,1.1866003,-0.28132582,-0.80156577,0.44897035,1.1347668,0.07279313,-0.61313444,0.8892234,0.71706593,0.65837866,0.33229896,1.174505,-0.7435528,0.5451965,0.36238024,1.4138215,0.37747207 +3,0,2,0.38537654,-0.7623611,0.5445376,1.1489445,-0.93219095,-1.0841125,-0.27961814,0.19042616,0.06699963,0.6020508,0.7307117,0.975402,-2.3184752,0.97368747,1.6034342,0.94340354,1.2762038,-0.30378082,-0.97008324,0.62717956,1.3900623,-0.9464736,0.48373678,-0.030571124,-0.42904106,-1.1276956,-0.7923078,0.5639612,-0.40978295,-0.23345235,-0.27136517,-0.8576837,0.69629353,-1.600303,0.11132369,-0.5791752,1.9399357,-0.92576593,0.5349059,-0.49527636,-1.3456329,-0.17603783,1.3494829,-1.1282393,0.20037884,-0.955993,-0.8822727,-0.0751942,-0.7717005,-0.93502855,-0.5532879,-0.9401976,-0.10448796,1.1707094,0.6575927,1.3083345,-0.611235,1.6713382,0.16979468,-2.0898654,0.0098398905,-0.44183353,-1.1921822,-1.2657422,1.6432862,-1.1305616,-0.46437377,-0.8430222,0.7453205,-0.6572058,0.3585215,1.6237743,-2.0383017,1.1427608,-0.8917951,0.20761041,-1.3489532,0.62074584,-0.447139,-1.8621218,-0.52442676,-0.45581636,-0.39755735,-0.43458155,1.8005574,-2.0100255,0.35888514,-1.2393867,0.95991373,-0.65878403,0.74196094,0.43640032,-0.37811738,-1.3537853,1.012442,0.12569553,0.45669976,-0.0621398,-0.68999076,-0.7770921,-1.2683296,-0.42139223,-0.41232187,1.7224118,0.3818442,-0.5022627,0.1969878,-2.7483199,-0.18802676,1.315932,0.45021772,-0.2638872,0.5703608,-0.85277075,-0.4612713,0.23827244,-0.42989627,0.41151485,-2.6187692,0.564632,1.1139395,-0.03292864,0.102194116,-0.6601094,-1.3054988,0.09395442,0.43201578,-1.4673973,0.08933548,-0.71541005,-1.6057762,0.40757605,-1.6277497,0.057484966,-0.18920068,0.10566316,-0.89184695,-0.17913231,-1.4436156,0.07747503,0.6109399,-0.83478105,-1.3056535,-0.87130284,0.28275958,0.87232304,0.8705628,-0.1486141,0.91572547,0.6586048,0.6749444,-1.7701942,0.16297537,0.47285134,1.0638492,1.7032028,-0.65427315,-0.017882247,2.1696198,-0.047487043,-0.773447,-2.2596717,-1.181566,-0.58230144,-1.6384531,-1.8893386,0.9176424,0.32815474,0.4039305,0.17879185,-0.32735547,-1.1835169,-1.0626794,-0.124136135,-0.13082623,0.5998316,-1.793989,0.5362147,1.2261003,-1.4384094,0.4796257,-0.45061588,-0.100991115,0.5150622,-1.253895,1.3633755,-0.5889575,-0.21253206,-1.333326,0.5079265,-0.97876984,-1.5163475,-0.6666502,1.8272516,-1.481488,2.3199954,-0.6350159,0.1867249,0.83364856,0.9136824 +4,0,2,1.8327769,0.9652212,-0.25314742,0.2162136,1.9031242,0.70369756,-0.93062437,-0.8883426,0.5527405,0.5570374,1.0132976,-0.9646425,-0.5195063,-0.05579895,-0.37479118,0.44072798,0.16671617,0.5790385,0.41375798,0.80011284,-1.535962,-0.22593139,1.7854862,-0.7154213,-1.0921632,-0.041371867,-0.21795613,-0.33691156,-1.2671199,-0.74733275,0.18677123,-1.8774186,2.0318227,0.27333388,-0.9697611,-0.5860972,-0.36415997,0.22731379,0.47210854,-1.3540338,-0.25599036,0.6586218,1.5556432,-0.8154355,1.1687236,-2.214086,0.42116502,0.47876915,-0.64788955,0.44233435,0.20754997,-0.55014664,-0.5956206,-0.6086165,-1.3033571,-0.9219002,1.9484233,-0.028180521,0.9555862,-0.6107659,1.3185904,0.42626792,-1.1561952,-0.51619065,-0.83520895,0.2209806,-0.3262739,-1.1956955,1.7369201,-1.1766452,0.07778294,-1.4228518,-2.164931,0.61946815,-0.44674355,-0.0108849695,-0.4363428,1.737323,0.6609657,-0.20005423,-0.5650333,0.29500026,0.11585065,-0.054047324,1.7766253,-1.624335,0.48191375,1.0377663,-1.2305183,0.8004891,-1.9219418,1.6361127,0.13642037,-1.2401029,0.56233984,-0.158208,1.5966983,-0.25904053,-0.55149657,0.43704,0.40011016,-0.12492106,1.6866363,2.0976322,-0.49593005,0.85817003,0.21792285,-0.6346643,-1.7050064,-1.6924843,-0.083759315,-0.38175458,-0.32693613,-0.96400416,-0.9026496,-0.594135,0.19496153,-0.8319494,-0.55289817,-0.802287,1.6503073,1.2991755,-1.083528,0.3950478,0.29286572,-0.13108596,-0.38219288,-0.59767187,-1.3788453,-0.26507127,0.3421463,1.0462469,1.5181253,-0.59406966,0.58952194,2.7725646,-1.0286808,1.1897799,0.33696112,-1.0014181,-0.029820807,-0.5898688,-0.99967515,0.010425864,1.4441029,-0.87508553,0.5764213,2.5007524,-1.539079,-1.6458069,-1.7197638,-0.74723464,1.1642295,-0.313455,-0.005579108,1.5905834,-0.9592405,-0.4174034,-0.6339656,0.85305965,1.299676,-0.114394456,0.39143074,0.46125907,-3.0907335,-0.27514967,0.20107278,-1.4204426,-1.7638285,-0.48746756,-1.254607,-0.23415706,-0.101100445,-0.24766745,1.738794,-0.75891614,0.7503048,0.58364636,0.10834089,0.79890466,-0.48462954,-0.62584233,0.50277036,1.1866002,-0.28132573,-0.8015658,0.44897038,1.1347669,0.072793104,-0.6131346,0.88922364,0.71706647,0.6583793,0.3322992,1.1745046,-0.7435528,0.5451967,0.36237976,1.4138212,0.3774721 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv index 0777c948..a053e062 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,2,0.8678487,-1.1492083,-0.2957783,0.9786945,-1.9542453,-0.07664241,-0.039730284,-0.09718514,-0.465507,0.088307,0.014937709,1.1039451,-1.9457144,0.7994327,1.8773037,1.5537523,0.39788526,-0.4953133,-1.4370357,1.0003625,0.84108806,-0.99132866,0.15745479,0.4423289,-1.5118519,-1.9748083,-1.3705087,0.11752797,0.04718379,0.7227247,0.15624402,-1.3321223,0.8274153,-0.5020909,-0.8579634,-0.8208209,1.370573,-0.32510355,0.9213625,-0.45679018,-2.0167282,0.77819085,1.3592292,-1.6879606,0.35116172,-1.6433353,-0.8796014,0.47101834,-0.49356297,-1.540319,-0.56203103,-0.74793,0.114850305,0.5929445,1.0806793,0.8520335,-0.28449142,2.3426988,-0.71767795,-2.077216,0.4469343,-0.51118195,-1.8134437,-0.31995004,0.5275096,-0.7924808,-0.90600455,-0.5945146,0.62720716,-0.76678073,1.4406855,0.8350828,-1.3691337,0.43675637,-0.93423057,-0.58701897,-0.53982204,1.3742961,-0.3684079,-1.3804277,-1.3538327,-1.2029366,-0.6361641,-0.2061667,1.1179498,-0.8696951,0.46374846,-0.9316529,0.36905092,0.18406926,0.5726551,-0.097014,-0.3084513,-1.0851082,1.2294934,-0.43448213,0.4714254,0.29762262,-0.66758883,-0.2411063,-0.8684391,-0.15433899,0.3217168,1.7343627,0.6421659,-0.39611214,1.2057977,-3.0774305,0.8041049,1.0713868,0.3196744,0.885012,0.5413774,-1.8904048,-0.6433149,-0.7131405,-0.89828914,0.49162254,-1.7892698,1.266022,1.2143357,0.16972247,-0.4222612,-0.9209112,-1.2874361,-0.30553934,0.78019506,-1.3130422,-0.54638046,-0.06269859,-1.2766076,0.3067186,-1.1979859,-0.5041537,0.24134871,0.9985403,-0.20058915,-0.19003288,-0.9156221,0.73883057,0.60628974,-0.39632013,-1.401826,0.26617125,1.2859261,1.7502289,1.1291437,-0.2593595,1.014177,-0.002415313,-0.0126089025,-1.6622946,0.84452736,0.40896028,0.24172997,0.849172,-1.2459072,0.4409478,2.3070042,-0.20285252,-0.9055849,-1.9905902,-0.6291581,-0.70495003,-1.5236276,-1.6411536,0.28731304,0.23528825,-0.85808456,0.8726922,-0.8224612,-1.3814898,-0.8996288,0.0075938655,1.4490063,0.62249285,-1.3583359,-0.39259228,0.55505204,-1.1764418,1.2858897,-0.5120127,-0.3620197,0.028119635,-1.0583314,0.6261959,-0.93444824,-0.68522364,-0.5574861,0.12772661,-1.1170981,-1.7487799,-0.62091166,1.1936655,-0.55242705,1.6852115,-1.5539129,0.93077433,0.54523623,-0.32935345 +5,0,2,0.8678485,-1.1492082,-0.29577842,0.9786945,-1.9542456,-0.0766423,-0.039730456,-0.097185545,-0.46550742,0.0883074,0.014938131,1.1039449,-1.9457139,0.79943234,1.8773037,1.5537525,0.39788535,-0.49531272,-1.4370352,1.0003623,0.8410879,-0.9913289,0.15745485,0.44232905,-1.5118521,-1.9748081,-1.3705083,0.11752842,0.047184132,0.72272474,0.1562442,-1.3321223,0.82741535,-0.50209045,-0.85796386,-0.8208208,1.3705729,-0.32510337,0.92136246,-0.45679024,-2.0167284,0.77819073,1.3592293,-1.6879604,0.35116142,-1.6433353,-0.8796013,0.4710182,-0.49356297,-1.540319,-0.56203073,-0.74792975,0.11485019,0.59294385,1.0806789,0.85203356,-0.2844916,2.3426995,-0.7176778,-2.077216,0.44693428,-0.5111819,-1.8134439,-0.31994978,0.52750957,-0.79248077,-0.9060044,-0.5945146,0.62720716,-0.7667804,1.4406855,0.8350828,-1.3691337,0.436756,-0.9342305,-0.58701885,-0.5398224,1.3742958,-0.36840814,-1.3804276,-1.3538328,-1.2029362,-0.6361641,-0.20616648,1.1179501,-0.8696952,0.463748,-0.9316529,0.36905104,0.18406911,0.57265526,-0.09701394,-0.30845135,-1.0851074,1.229493,-0.4344818,0.47142524,0.29762283,-0.6675888,-0.24110633,-0.8684386,-0.1543391,0.32171702,1.7343627,0.6421661,-0.39611164,1.2057976,-3.07743,0.80410504,1.0713863,0.3196743,0.8850115,0.54137725,-1.8904045,-0.6433146,-0.7131403,-0.89828914,0.4916221,-1.7892698,1.2660217,1.2143362,0.16972245,-0.42226088,-0.9209111,-1.2874365,-0.30553946,0.78019506,-1.3130425,-0.54638034,-0.06269859,-1.2766078,0.3067184,-1.197986,-0.50415367,0.24134831,0.99854076,-0.20058848,-0.19003294,-0.91562223,0.7388306,0.6062894,-0.39632004,-1.4018264,0.2661708,1.2859259,1.7502286,1.1291435,-0.25935975,1.0141768,-0.0024153837,-0.012609187,-1.6622946,0.84452695,0.40896052,0.24173,0.8491717,-1.2459071,0.44094783,2.3070037,-0.20285298,-0.9055851,-1.99059,-0.629158,-0.7049506,-1.5236279,-1.641153,0.2873126,0.23528822,-0.8580843,0.8726923,-0.8224612,-1.3814898,-0.8996295,0.007593808,1.4490062,0.6224926,-1.3583354,-0.39259246,0.5550518,-1.1764413,1.2858899,-0.5120128,-0.36201936,0.028119579,-1.0583311,0.62619597,-0.93444824,-0.6852235,-0.5574866,0.12772661,-1.117098,-1.7487797,-0.62091154,1.1936653,-0.5524274,1.6852114,-1.5539129,0.9307747,0.54523605,-0.32935366 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv index 79e33b1c..22cbffa0 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv @@ -1,3 +1,3 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,3,0.47420236,1.2638448,-0.2942875,0.6063466,0.32506454,-0.011651637,-1.3833891,-1.2344038,-0.45170528,1.0377885,1.8840404,-0.33119497,-1.0696628,0.9726884,0.80814546,0.9354395,0.7167119,0.42845112,-0.015223959,0.81312424,-1.2162951,-1.1050558,0.6366257,-1.6387163,-0.9819105,-0.4953311,0.12158322,-0.67469686,-1.7174512,-0.2108714,1.0931984,-1.6311551,1.6655928,-1.1295462,-0.82908773,-0.27834365,0.35710472,0.7679168,1.2862792,-1.5655477,-0.47575817,0.38371342,0.8257985,-0.6541342,-0.06021277,-1.688667,0.31571636,-1.3439896,-1.3430765,0.0015745121,-0.87187445,-1.2474327,-0.82622105,0.53904265,0.4325758,0.7165552,-0.013134802,1.0078027,1.2916025,-1.6230769,0.1835245,1.4117191,-0.9933948,-0.17660141,-0.85399544,0.1709921,1.0725634,-0.23263937,1.7940853,0.49845877,-0.58278996,0.9100562,-2.1336787,-0.0805108,-0.15371813,0.5364138,0.036808733,0.27225935,0.43129516,-0.5169288,0.8617008,0.37777528,-0.3340564,-0.50667363,2.3349266,-3.2664785,0.23907632,0.13636121,-0.1356525,-0.2975334,-0.56251806,1.5495608,-0.25081053,-2.012842,1.4139545,-0.16621536,0.7844478,0.5935697,-0.85539633,-0.5690532,-0.5415988,-0.8971024,1.8330035,2.7651486,1.039496,-0.23426563,-0.57880294,-1.180363,-1.095461,-0.30837286,0.20563056,-0.45784765,0.799281,-0.585805,0.84253716,0.11244704,0.7201907,-1.2291319,-1.666961,-0.44462907,2.2034056,1.0664692,0.81338817,-0.4559743,-1.2628946,-0.22252318,-1.3892785,-0.74601096,0.09792413,-0.9173109,-1.1128796,0.4023642,-0.7147697,-0.77360827,0.39257395,2.3405876,-0.2756536,0.4053474,-0.8130045,-0.097918354,0.619593,-1.450402,-1.562418,-1.1680082,1.2857003,-1.2578353,0.41585723,1.0423979,-0.53722227,-0.38153183,-0.51949257,-1.5859616,1.3256049,-0.097610995,0.5610497,2.6576302,1.24299,-0.7566359,0.91003966,0.73991305,-0.10965724,-2.0155516,-0.009600935,-0.68587035,-1.7821821,-1.0589889,-0.13436046,0.4220983,-1.1379086,0.48460454,-0.61625963,-0.3349504,0.53863937,0.18685772,0.26678517,-0.20175351,-0.7204558,0.21726036,1.1120167,0.79319596,-0.36998117,-0.6713484,0.72676253,-0.18856229,0.46767554,-1.068567,0.32332298,-0.06708165,-1.2248515,-0.7845498,0.5460865,-0.61680746,1.510683,1.7673895,-0.68418354,0.44412625,0.7936944,-0.8888349,0.03981725,1.6578218 -7,0,2,-0.087797716,-0.72064584,0.3919503,0.30277744,-1.0405561,-0.8779837,-0.7976403,0.071234636,-0.29967022,0.2773496,-0.10566512,0.77108765,-1.7671878,0.824929,1.5373951,1.5010269,1.4846264,-0.7896349,-0.88700837,0.6919234,0.6787521,-0.4330691,0.6862605,-0.2904699,-0.9619546,-0.36133736,-0.9279964,0.18862396,-0.13149612,0.33348706,0.35246968,-0.86275643,0.7647198,-1.5118189,-0.24293631,-0.62797725,1.9434764,-0.15230915,1.2640054,-0.53051674,-1.571733,-0.23882791,1.2569784,-1.5155659,0.31609696,-1.4623228,-1.5276749,-0.63017756,-0.15530244,-1.2590177,-1.1136601,-0.8283698,-0.33160418,1.6386752,0.7145629,1.4172399,-0.9240341,1.155421,-0.20543078,-2.2690709,0.032772336,-0.6074186,-0.8408421,-0.43909267,1.1674483,-1.5343087,0.394567,-0.6319556,0.69497925,-0.17052399,0.66387993,1.6770401,-1.6856111,0.8501759,-1.0100725,-0.06956196,-0.49753228,0.45815924,-0.8491857,-1.5388991,-0.21994229,-0.61590695,-0.43685135,-0.54839456,1.844041,-1.9056602,0.23943688,-0.8901972,1.0178715,-0.4182901,0.47147426,0.28248206,-0.42557982,-1.3693498,1.378879,-0.832486,0.2925802,0.03857666,-0.99315274,-0.88979,-1.3541446,-0.38844082,-0.56667507,2.0802116,0.20410404,-0.5688037,-0.25536713,-2.8470826,0.22910759,1.339881,0.41405326,0.3723613,1.0213392,-0.61211425,0.20765173,0.22666255,-0.052260146,0.20032822,-2.3570492,1.4302993,1.4743407,-0.2883624,0.44256923,-0.7141606,-0.87645143,-0.20459794,0.5313736,-1.1576004,0.2882262,-0.3185675,-2.041501,0.55573565,-1.3157725,0.2728311,0.18704554,-0.34522107,-0.7096739,-0.43224367,-1.601502,1.0732054,0.91898465,-0.68341035,-1.5872612,-0.59699357,0.90725124,1.1939424,0.6279298,-0.49085775,0.9603635,0.668255,0.66679686,-1.698892,0.26019427,0.57732755,0.5378443,1.2200284,0.32803506,-0.15348187,2.141097,-0.014183752,-1.0378197,-2.6077065,-0.3066731,-0.06714382,-1.3892245,-1.7354015,0.53556174,0.9041617,-0.32855996,0.12410693,-0.40722385,-1.3432457,-0.73200125,-0.25400352,0.17272082,1.1034756,-2.2850537,0.6256181,1.7550697,-1.3452938,-0.017986335,-0.54053277,0.05288191,0.28705782,-0.98898697,0.7631376,0.15638618,-0.6830087,-1.3387133,0.62448514,-0.7181843,-1.9862368,0.070950225,1.8409837,-1.5815738,1.639628,-0.8540574,0.19265085,0.4421182,0.67777854 +6,0,3,0.47420266,1.2638454,-0.29428756,0.60634655,0.32506496,-0.011651864,-1.3833889,-1.2344038,-0.45170534,1.037789,1.8840408,-0.33119506,-1.0696626,0.9726885,0.8081458,0.93543977,0.71671206,0.42845142,-0.015223262,0.8131241,-1.2162951,-1.1050558,0.6366258,-1.6387162,-0.981911,-0.4953308,0.12158294,-0.6746963,-1.7174507,-0.21087167,1.0931985,-1.6311551,1.6655928,-1.1295464,-0.82908833,-0.2783438,0.35710457,0.7679168,1.2862791,-1.565548,-0.47575852,0.38371316,0.8257988,-0.6541346,-0.06021297,-1.6886668,0.3157164,-1.34399,-1.3430762,0.0015743595,-0.87187505,-1.2474334,-0.82622164,0.5390428,0.43257558,0.7165556,-0.0131348735,1.0078024,1.2916025,-1.6230769,0.18352437,1.4117194,-0.9933953,-0.17660153,-0.85399514,0.17099203,1.0725635,-0.23263934,1.7940859,0.49845862,-0.5827904,0.9100559,-2.1336787,-0.08051071,-0.15371832,0.5364136,0.036808893,0.2722593,0.4312951,-0.5169293,0.86170137,0.37777555,-0.33405718,-0.50667346,2.3349266,-3.2664793,0.23907636,0.13636166,-0.13565257,-0.2975336,-0.56251824,1.5495615,-0.25081053,-2.0128424,1.4139546,-0.1662151,0.78444827,0.5935687,-0.8553964,-0.56905305,-0.5415987,-0.8971025,1.8330035,2.7651489,1.0394961,-0.234266,-0.5788035,-1.1803628,-1.0954615,-0.30837297,0.20563039,-0.45784846,0.7992813,-0.58580524,0.8425376,0.11244689,0.720191,-1.2291318,-1.6669607,-0.4446297,2.2034054,1.0664696,0.81338793,-0.45597473,-1.262895,-0.22252297,-1.3892789,-0.7460112,0.09792392,-0.9173114,-1.1128796,0.4023646,-0.7147693,-0.7736084,0.39257377,2.3405874,-0.27565384,0.40534794,-0.8130043,-0.097918786,0.61959296,-1.450402,-1.5624176,-1.1680084,1.2857002,-1.2578357,0.41585746,1.0423982,-0.53722286,-0.38153228,-0.519493,-1.5859611,1.3256052,-0.09761098,0.5610493,2.6576302,1.2429906,-0.7566362,0.9100397,0.73991334,-0.10965712,-2.0155513,-0.009600936,-0.68587065,-1.7821826,-1.0589895,-0.13436031,0.42209822,-1.1379088,0.4846043,-0.61625975,-0.3349506,0.5386397,0.18685767,0.2667846,-0.20175363,-0.72045606,0.21726064,1.1120164,0.79319555,-0.36998132,-0.67134815,0.72676235,-0.18856223,0.4676755,-1.068567,0.32332298,-0.06708162,-1.2248513,-0.78454924,0.5460869,-0.6168076,1.5106833,1.7673894,-0.6841837,0.44412613,0.79369456,-0.8888351,0.039817635,1.6578221 +7,0,2,-0.087797664,-0.72064584,0.39195046,0.3027774,-1.0405561,-0.877984,-0.79764,0.07123449,-0.29967046,0.27734974,-0.10566526,0.7710878,-1.7671878,0.82492906,1.5373951,1.5010266,1.4846263,-0.78963494,-0.8870087,0.6919234,0.6787521,-0.43306896,0.68626046,-0.29046977,-0.96195453,-0.36133754,-0.9279964,0.1886242,-0.13149588,0.33348688,0.3524693,-0.8627565,0.7647197,-1.5118191,-0.24293655,-0.6279771,1.9434764,-0.15230925,1.2640053,-0.5305171,-1.5717331,-0.23882796,1.2569784,-1.515566,0.31609678,-1.4623228,-1.5276749,-0.6301773,-0.15530233,-1.2590178,-1.11366,-0.8283696,-0.3316043,1.6386755,0.71456283,1.4172398,-0.9240341,1.1554213,-0.20543054,-2.2690706,0.03277201,-0.60741836,-0.84084237,-0.43909258,1.1674479,-1.5343083,0.39456686,-0.63195604,0.69497895,-0.17052427,0.66388005,1.6770406,-1.6856107,0.8501753,-1.0100727,-0.069561884,-0.49753237,0.4581591,-0.8491859,-1.5388991,-0.21994227,-0.6159067,-0.4368516,-0.54839456,1.8440411,-1.9056602,0.23943676,-0.8901972,1.0178717,-0.41829002,0.47147444,0.28248173,-0.4255799,-1.3693498,1.3788788,-0.832486,0.2925802,0.038576376,-0.9931526,-0.8897898,-1.3541447,-0.38844064,-0.5666752,2.0802116,0.20410384,-0.56880385,-0.25536695,-2.847082,0.22910748,1.3398811,0.4140531,0.37236091,1.0213392,-0.6121137,0.20765178,0.22666255,-0.052260183,0.2003284,-2.3570495,1.430299,1.474341,-0.28836238,0.44256905,-0.7141607,-0.87645155,-0.20459776,0.5313733,-1.1576004,0.28822646,-0.3185678,-2.0415008,0.5557355,-1.3157727,0.27283114,0.18704557,-0.345221,-0.70967424,-0.43224388,-1.6015024,1.0732054,0.91898453,-0.6834103,-1.5872614,-0.59699357,0.9072513,1.1939424,0.62792987,-0.49085766,0.9603636,0.668255,0.6667969,-1.698892,0.26019427,0.57732755,0.53784436,1.2200284,0.3280351,-0.15348202,2.1410975,-0.0141839655,-1.0378197,-2.6077065,-0.30667314,-0.067144245,-1.3892245,-1.7354017,0.5355618,0.9041617,-0.32855982,0.12410726,-0.40722403,-1.3432459,-0.7320008,-0.25400352,0.17272069,1.1034757,-2.285054,0.6256184,1.7550694,-1.3452939,-0.017986381,-0.5405325,0.05288163,0.28705782,-0.98898715,0.76313794,0.15638609,-0.6830085,-1.3387135,0.62448525,-0.7181843,-1.9862365,0.070949845,1.8409837,-1.5815736,1.6396283,-0.85405725,0.19265085,0.4421183,0.6777789 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv index 902c22b2..3df20b08 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,3,1.6896031,0.2908513,-0.23292185,1.3335884,0.4545921,0.34372616,-0.4165884,-0.42207703,0.60733074,1.2122438,0.8359352,0.5889715,-1.7851549,1.4177665,0.7491191,0.5095494,0.26941696,0.21018945,-0.880237,0.5611264,0.49656537,-0.8069379,1.1553068,-0.0126349665,-0.10190317,-1.7098439,-0.7785349,0.08457157,-1.0872965,-0.46575686,0.17051879,-1.0981392,1.2801948,-0.20283222,-0.37779662,-1.045028,0.8350199,-0.4449086,0.37728134,-1.3267673,-1.3647467,0.49804264,1.072318,-1.5584799,0.62113297,-1.7105299,0.936378,0.96202284,-0.5543043,-0.22153261,0.5113075,-0.5170268,0.11910198,-0.16186874,0.33424348,-0.8031384,1.6559254,0.47857162,0.5240287,-0.85450006,1.1488028,-0.12382944,-2.3143659,-1.7480177,0.34907168,0.3368916,-0.96712863,-1.1980493,1.7140709,-1.4368651,0.66559404,-0.27778557,-1.7404891,1.0585526,-0.3457661,-0.026605887,-1.9635391,2.3253458,0.7187862,-0.6399079,-2.111302,-0.7639529,-0.3719801,-0.0044646794,1.4715577,-1.4121687,0.046070594,0.049432546,-0.67208856,0.77220047,-0.78486633,1.6651013,-0.5048683,-1.0169152,0.19552465,0.6060275,1.0623702,0.15507454,-0.3246709,0.2723275,-0.9548158,-0.060560215,1.6082474,1.8419513,-0.6165263,0.5530547,0.53137124,-1.6408414,-0.083764516,-0.6223381,0.053751897,0.17250697,-0.5837834,-1.9890918,-2.1878116,-0.63507724,-1.3977062,-0.09614903,-0.99611247,-0.8769,0.8914697,1.3250514,-1.3865021,0.070221275,0.14449106,-0.4635786,0.22937016,-1.06633,-1.124088,0.17105861,0.38474694,1.002527,0.062628046,-1.4390727,-0.07946947,2.1103234,-1.7293836,1.1202102,-0.1935348,-1.0497704,-0.1828823,-0.8191538,-0.9199905,-0.0011521083,1.4552091,0.028564112,1.5781827,1.5662959,-0.37651274,-0.75987285,-0.96915853,-1.9078714,1.1331102,-0.114896916,0.53727424,2.130492,-2.0829363,0.2657546,0.7349715,-0.30037367,0.7455469,-1.2468303,-0.94141734,-0.96966463,-2.640029,-1.1223298,0.8763038,-0.96782756,-0.92439544,1.2501682,-1.4089605,-0.8066179,-0.87894547,0.5093231,0.8661666,-1.0657727,-0.44514516,0.16784558,-0.82460415,-0.62026,0.22096872,-0.5744515,-0.05113996,0.9549697,-0.7317686,0.2157382,-0.73088646,1.3564851,-0.56419,-0.3550247,-1.0255395,-0.57220864,-0.9036402,0.36711925,-0.09569928,0.6653445,-0.5859867,1.2525154,1.7926836,0.031228034 +8,0,3,1.6896036,0.2908516,-0.23292227,1.333588,0.4545924,0.34372577,-0.41658887,-0.4220771,0.60733056,1.2122439,0.8359348,0.58897126,-1.7851542,1.4177668,0.74911904,0.5095494,0.26941735,0.21018945,-0.8802367,0.56112623,0.49656504,-0.8069377,1.1553066,-0.012634999,-0.1019033,-1.7098432,-0.7785347,0.08457122,-1.0872964,-0.46575698,0.17051879,-1.0981392,1.2801946,-0.20283177,-0.377797,-1.0450277,0.8350198,-0.44490838,0.37728155,-1.326767,-1.3647465,0.49804258,1.0723178,-1.5584799,0.62113315,-1.7105298,0.9363782,0.962023,-0.5543043,-0.22153258,0.51130754,-0.517027,0.119101755,-0.16186844,0.33424366,-0.80313826,1.655926,0.4785711,0.5240289,-0.8545002,1.1488025,-0.12382955,-2.314366,-1.7480171,0.34907153,0.3368917,-0.9671285,-1.1980494,1.7140709,-1.4368649,0.6655941,-0.27778602,-1.7404888,1.058552,-0.34576625,-0.026606066,-1.9635391,2.325346,0.718786,-0.63990754,-2.1113021,-0.7639529,-0.37198016,-0.00446413,1.4715579,-1.4121689,0.046070803,0.04943272,-0.67208874,0.77220094,-0.7848665,1.6651015,-0.50486845,-1.0169153,0.19552442,0.60602796,1.06237,0.15507467,-0.32467127,0.27232736,-0.9548156,-0.060560405,1.6082474,1.8419516,-0.6165264,0.5530548,0.531371,-1.6408411,-0.08376483,-0.6223387,0.053751606,0.17250703,-0.58378434,-1.9890922,-2.1878114,-0.63507706,-1.3977063,-0.09614923,-0.996112,-0.87689984,0.8914697,1.3250511,-1.3865025,0.07022147,0.14449127,-0.4635789,0.22937027,-1.0663304,-1.1240877,0.1710589,0.38474682,1.002527,0.06262817,-1.4390726,-0.07946953,2.1103234,-1.7293843,1.1202103,-0.19353478,-1.0497701,-0.18288228,-0.8191537,-0.91999054,-0.001152092,1.4552096,0.02856364,1.5781829,1.566296,-0.37651303,-0.75987285,-0.9691587,-1.9078715,1.1331105,-0.11489664,0.5372741,2.1304917,-2.0829363,0.2657544,0.73497146,-0.30037382,0.7455473,-1.2468303,-0.9414173,-0.96966416,-2.6400287,-1.1223292,0.87630415,-0.9678274,-0.9243957,1.250168,-1.4089605,-0.8066182,-0.8789456,0.509323,0.8661667,-1.0657727,-0.44514495,0.1678456,-0.8246042,-0.62025964,0.22096853,-0.5744515,-0.051140007,0.9549694,-0.7317687,0.21573786,-0.73088586,1.3564854,-0.5641902,-0.35502443,-1.0255394,-0.57220846,-0.90364045,0.36711854,-0.095699474,0.6653445,-0.5859865,1.2525156,1.7926835,0.031228162 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv index f9df3070..80e7457d 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv @@ -1,2 +1,2 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,2,-0.16720563,-0.95600957,0.28606522,0.6061068,-0.3845801,-0.20699826,-1.1377771,0.20950346,-0.13692231,-0.39809802,1.1865551,1.4303648,-1.0548229,0.47550696,0.9458502,2.1207294,2.1566582,-0.24435441,-0.64201504,1.7221576,0.93151706,-0.7352646,0.34909317,0.72475654,-0.53412133,-0.38585177,-0.7807762,0.55336505,0.0011219378,1.0769404,0.178836,-1.3198038,1.3214653,-1.3146976,-0.7111258,-0.48764378,1.6924084,-0.51583934,1.3672884,-0.5570951,-0.8911707,-0.7621178,1.6342849,-1.217147,0.21610765,-2.0004432,-0.9046609,-0.66080266,0.099175125,-1.5156087,-1.408444,-1.4207674,-1.6178051,1.1580858,0.932027,1.5196209,-1.0533147,1.2685812,0.0013257095,-1.983875,-0.02037545,-0.64693433,-1.3806919,-1.0592809,0.54943085,-1.3961786,-0.15649292,-0.5929407,0.9686789,-0.40543142,1.0557822,0.863148,-2.2666905,0.6786515,-0.98612607,-0.46339324,-0.5806146,1.359029,-0.97610635,-1.6902065,0.015555903,-1.0601696,-0.68368477,-0.4881073,1.0633672,-2.1536195,0.27614263,-0.94285184,0.8829792,-0.1332724,-0.69135016,0.057943374,0.29546717,-1.8476412,1.6050953,-0.77256185,-0.34552783,-0.39992267,-0.9135076,-1.4197912,-1.4342732,0.05444667,0.38957366,1.6343316,-0.018683603,0.20149979,-0.5184369,-2.7988343,-0.23812824,0.39474156,0.7759951,0.26147765,0.7695459,-0.8783734,0.24983662,0.22944757,-0.50273734,0.17921253,-2.96453,0.8493479,0.8776484,0.17855343,-0.3165259,-0.49537572,-1.4034132,-0.5197445,0.6516528,-1.1936586,0.4376411,-0.31979737,-1.1554341,-0.094374776,-1.4360906,-0.666431,0.19690529,0.22096215,-0.77558017,-0.6480959,-1.0999115,1.1237246,0.32265925,-0.7196827,-2.2545595,-1.4951689,0.5562803,1.1043608,1.1391095,0.12772338,0.39196157,0.68036157,-0.48576477,-1.285276,0.81914747,0.30907387,-0.07296551,1.534054,0.30991095,-0.007137307,1.7125996,-0.8783491,-0.07996723,-2.1059916,-0.3130489,-0.31512117,-1.8248315,-1.5771933,0.51070344,0.7182178,-0.2582489,-0.45623493,-0.2644527,-0.9527642,-0.7283463,0.17178611,0.21193407,0.9493434,-1.3720604,0.15322249,0.701293,-0.551722,-0.15245207,0.06241879,-0.6320952,0.5529451,-0.4287735,1.0122428,-0.07743517,-0.28508037,-1.175873,0.21220748,-1.3312136,-1.4357239,0.21157013,0.5917681,-1.1742185,1.9612663,-1.2883047,0.06013697,1.073086,0.5143654 +9,0,2,-0.1672056,-0.9560093,0.28606495,0.60610676,-0.3845802,-0.20699823,-1.1377773,0.2095035,-0.13692239,-0.3980985,1.1865553,1.430365,-1.054823,0.47550726,0.9458505,2.1207294,2.1566586,-0.24435459,-0.64201486,1.7221576,0.9315173,-0.73526466,0.3490929,0.724757,-0.53412163,-0.38585144,-0.78077614,0.5533652,0.0011221742,1.0769403,0.17883608,-1.3198036,1.3214654,-1.3146971,-0.7111261,-0.4876436,1.6924083,-0.51583886,1.3672888,-0.55709535,-0.89117086,-0.7621175,1.6342846,-1.2171476,0.2161075,-2.0004432,-0.90466124,-0.6608028,0.09917505,-1.515609,-1.4084437,-1.4207675,-1.6178051,1.1580858,0.932027,1.5196207,-1.0533146,1.2685808,0.001325828,-1.9838752,-0.020375686,-0.64693415,-1.3806916,-1.0592812,0.5494306,-1.396179,-0.15649273,-0.5929404,0.96867883,-0.40543112,1.0557821,0.8631483,-2.2666907,0.67865187,-0.9861259,-0.46339324,-0.5806145,1.3590288,-0.9761064,-1.6902065,0.015556082,-1.0601697,-0.6836848,-0.48810717,1.0633674,-2.1536198,0.27614254,-0.9428517,0.88297933,-0.13327223,-0.69135034,0.05794356,0.2954672,-1.8476416,1.6050957,-0.7725617,-0.34552756,-0.399923,-0.91350776,-1.4197913,-1.434273,0.05444653,0.38957354,1.6343312,-0.01868396,0.20149925,-0.51843625,-2.798834,-0.2381288,0.39474154,0.77599514,0.26147756,0.769546,-0.8783735,0.24983686,0.2294478,-0.5027371,0.1792123,-2.9645298,0.849348,0.8776484,0.17855346,-0.31652552,-0.49537584,-1.4034135,-0.5197447,0.6516527,-1.1936587,0.43764108,-0.31979695,-1.1554341,-0.09437473,-1.4360908,-0.666431,0.19690526,0.22096193,-0.7755801,-0.64809597,-1.0999116,1.1237248,0.32265925,-0.71968305,-2.2545598,-1.4951686,0.55628073,1.1043607,1.1391095,0.12772316,0.3919614,0.6803616,-0.48576495,-1.285276,0.8191475,0.3090739,-0.07296532,1.5340542,0.30991074,-0.0071372786,1.7126004,-0.8783499,-0.07996719,-2.1059916,-0.3130492,-0.31512108,-1.8248317,-1.577193,0.5107035,0.71821797,-0.25824943,-0.4562349,-0.26445264,-0.95276433,-0.7283461,0.17178622,0.211934,0.949343,-1.3720604,0.15322232,0.7012931,-0.5517222,-0.15245192,0.062418915,-0.6320953,0.5529452,-0.42877352,1.0122427,-0.0774351,-0.28508034,-1.1758733,0.21220773,-1.3312134,-1.4357238,0.21157022,0.591768,-1.174219,1.9612663,-1.2883047,0.06013686,1.073086,0.5143656 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv index b7a6d23e..8e069e93 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -0,0,1,0.25,-0.0029144287,-1.1171875,-0.29296875,1.234375,0.76953125,-0.5703125,1.0390625,0.96875,-0.13964844,0.67578125,2.8125,0.44726562,0.28320312,-0.90234375,-0.04638672,-0.67578125,0.5625,3.265625,1.6875,1.015625,-0.90625,0.640625,0.2578125,0.030883789,0.79296875,-0.56640625,-0.4375,-0.921875,-0.87890625,0.09814453,0.05859375,0.16503906,1.140625,-1.125,0.0069274902,0.2890625,0.23144531,0.19335938,0.017700195,-0.37890625,-0.42578125,-0.25585938,-1.0703125,0.119628906,0.7578125,0.14355469,-1.484375,0.13476562,0.1328125,0.5,-1.5390625,0.068847656,0.119628906,-1.3515625,0.05126953,-0.33789062,-0.44726562,1.2265625,-1.2734375,-0.068359375,-0.36132812,2.1875,-0.40820312,-0.6953125,-1.1640625,0.025756836,-1.3984375,-0.2578125,0.8203125,0.047607422,1.4140625,-0.53125,-0.78515625,1.09375,2.859375,-0.90234375,-0.13671875,-2.34375,0.025390625,0.49414062,-0.068359375,0.54296875,0.31054688,0.04711914,-0.296875,-1.15625,-1.3359375,0.390625,1.65625,1.421875,0.66796875,-1.625,1.640625,-0.013427734,-0.026367188,-0.32617188,0.5390625,-0.765625,-0.25195312,-0.16503906,0.24121094,1.0078125,-1.234375,-1.4609375,0.27148438,-0.640625,0.6953125,-0.45507812,-0.14746094,1.203125,0.5,0.14160156,-0.24804688,1.4375,-1.5390625,-1.0,-0.41992188,0.8203125,0.18652344,-0.21972656,0.39257812,0.47460938,-0.125,-1.484375,2.40625,-0.49804688,-1.2890625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40625,-1.6953125,0.546875,-1.3671875,-0.62109375,-0.08544922,-0.78515625,1.4140625,-1.640625,-0.875,2.03125,-0.671875,-0.375,-0.14160156,0.99609375,-0.76953125,0.38671875,1.1015625,-0.94140625,0.55078125,-0.875,-1.03125,-0.088378906,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.3984375,0.73046875,2.28125,0.068847656,0.079589844,-1.28125,-2.375,1.7734375,0.033935547,0.3828125,-0.79296875,-0.33398438,0.7421875,-0.94921875,-0.19433594,-0.90234375,-1.125,-0.6953125,0.64453125,-0.765625,-0.052490234,0.4140625,1.109375,-1.4453125,0.9375,-0.9609375,-1.2890625,1.796875,-0.9375,-1.4140625,-0.5390625,0.43554688,-0.58203125,-0.20507812,1.3828125,-0.4140625,0.30859375,0.33789062,1.2265625 -0,0,2,0.29882812,0.50390625,0.65625,-0.48828125,0.25976562,-0.027954102,0.671875,-0.6015625,0.59375,-0.66796875,0.68359375,0.09765625,1.609375,-0.73046875,0.0064086914,-0.31640625,-0.19628906,0.00049972534,2.625,0.16210938,-0.15332031,-1.3984375,0.66796875,0.05883789,-0.703125,-1.0078125,0.296875,-0.3125,-0.3828125,1.609375,0.64453125,-1.0703125,1.5078125,-1.40625,0.19335938,0.20996094,0.06640625,-1.046875,-0.84765625,0.8203125,-2.15625,0.29101562,-0.828125,-0.6484375,-0.27539062,-0.51953125,0.3125,-0.97265625,1.3359375,0.67578125,-0.78515625,0.34570312,-0.93359375,1.5390625,0.20117188,-0.30078125,0.13769531,-0.42382812,-1.140625,-0.83203125,1.3515625,0.5078125,-0.05419922,1.2578125,-0.18945312,0.4453125,-0.06201172,-1.8046875,-1.265625,1.546875,-0.66796875,0.5859375,0.64453125,0.061279297,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.015563965,-0.80859375,-0.6640625,0.5625,-0.1796875,-0.27734375,-0.609375,-1.234375,-1.9375,1.484375,-0.5078125,1.1953125,0.94921875,-0.96484375,0.328125,-1.1015625,-0.73828125,-1.921875,-0.75390625,-1.296875,0.042236328,-1.375,1.125,1.796875,-0.018066406,0.44335938,2.609375,-1.0390625,0.59375,0.28710938,-0.62109375,0.703125,1.1484375,0.64453125,-0.075683594,0.46484375,0.31054688,-0.21679688,0.24121094,-0.06591797,1.3046875,0.54296875,-0.61328125,1.1953125,-0.91015625,-1.1171875,1.1171875,-1.8125,-1.3984375,-0.19140625,-0.10058594,1.109375,-0.609375,-0.54296875,-1.359375,0.3828125,0.40234375,0.39453125,-0.40429688,0.21484375,-1.875,2.5,0.5703125,-0.67578125,2.328125,-0.25,-1.5234375,2.21875,-1.0859375,-1.34375,0.82421875,-0.9609375,0.203125,1.03125,-1.4140625,-0.32421875,-0.034423828,1.2578125,-0.82421875,1.09375,0.31835938,-0.39257812,-0.53515625,2.390625,1.78125,-0.953125,-0.7734375,-1.1484375,1.015625,1.1015625,-0.39453125,-0.30859375,-0.5,-1.7265625,-0.9140625,-0.890625,0.265625,0.98046875,-1.4375,0.50390625,0.26171875,-1.921875,-1.015625,1.171875,0.2734375,-1.5390625,-0.41796875,0.43164062,-0.20996094,-0.65234375,-0.05810547,-1.703125,1.78125,1.1796875,-0.53125,-1.0859375,0.90234375,1.796875,-0.3515625,1.3671875,1.0703125 -0,0,3,0.66796875,1.21875,-1.203125,-1.3125,-0.515625,-1.90625,0.31640625,1.1875,-0.52734375,-0.67578125,-0.053466797,-1.203125,-1.828125,-0.33203125,-0.9296875,1.0625,-0.27734375,0.91796875,0.1640625,0.020629883,0.90234375,-0.234375,-0.03466797,1.3359375,-1.71875,-0.96484375,-2.375,0.6640625,1.9921875,0.9765625,0.76953125,1.3984375,-1.5234375,-0.38671875,0.734375,-0.017211914,0.9375,1.3671875,-0.049804688,0.62109375,-2.15625,-0.27539062,0.072753906,1.7578125,0.71484375,2.015625,0.43164062,0.59765625,0.1875,1.25,0.28320312,-0.22949219,-1.3515625,-0.796875,-0.13183594,-0.43359375,-0.98046875,0.012390137,-0.06347656,-0.61328125,-0.1640625,0.53515625,0.34960938,-0.38085938,1.328125,0.23535156,0.16503906,0.06347656,-1.0703125,0.59765625,0.049316406,-0.171875,0.390625,-0.8359375,0.6796875,0.08544922,2.09375,-0.043945312,-0.42773438,0.03857422,1.2734375,0.609375,1.5703125,0.9140625,-0.08544922,0.98828125,-1.328125,0.515625,-1.7421875,0.3515625,0.95703125,2.21875,1.796875,-0.41015625,-0.068847656,-1.40625,-0.328125,0.013549805,0.96875,1.0390625,0.875,-0.18457031,1.03125,-0.17382812,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0077819824,-0.37890625,-0.22558594,2.546875,-0.8828125,-0.4765625,-0.88671875,-0.35351562,-1.0390625,0.98828125,0.68359375,2.046875,-1.875,-0.86328125,-2.953125,-0.21582031,0.18847656,-0.98046875,1.25,0.17382812,-1.9765625,0.90234375,-0.37695312,0.67578125,-1.0703125,-1.8828125,0.58984375,0.53515625,-0.55078125,0.111816406,-2.1875,0.32421875,0.89453125,1.7109375,1.2109375,-0.6171875,-0.49804688,-1.625,1.0703125,-0.37695312,0.13085938,-0.041992188,-1.3515625,-0.7890625,1.4375,0.19433594,-0.7109375,-0.6015625,1.0625,-0.37695312,1.90625,-2.0625,0.9609375,-0.32617188,0.078125,-1.3046875,-0.15039062,-0.26953125,0.29296875,0.46679688,-0.5859375,-0.32421875,0.46875,-1.1015625,0.984375,0.953125,0.25,0.99609375,-1.546875,0.041992188,-0.1015625,1.0,0.53515625,0.62109375,-0.8828125,-0.50390625,-0.32617188,-0.24804688,0.064453125,-0.5390625,-1.0546875,-1.234375,0.31640625,-0.037841797,-0.87890625,1.296875,0.1171875,1.8984375,-0.2265625,0.09667969,0.42578125 +0,0,1,0.24902344,-0.004058838,-1.1171875,-0.29101562,1.21875,0.76953125,-0.56640625,1.03125,0.9609375,-0.14453125,0.66796875,2.828125,0.4453125,0.28320312,-0.91015625,-0.04663086,-0.67578125,0.5625,3.265625,1.6875,1.015625,-0.8984375,0.63671875,0.25585938,0.028808594,0.7890625,-0.56640625,-0.4453125,-0.91796875,-0.875,0.095703125,0.056152344,0.16601562,1.1328125,-1.125,0.00289917,0.2890625,0.2265625,0.19140625,0.016479492,-0.37890625,-0.42578125,-0.25195312,-1.078125,0.11669922,0.76171875,0.14355469,-1.484375,0.13183594,0.13085938,0.49804688,-1.546875,0.0703125,0.119140625,-1.3515625,0.05053711,-0.33789062,-0.44726562,1.234375,-1.2578125,-0.06982422,-0.359375,2.21875,-0.40820312,-0.6953125,-1.15625,0.02746582,-1.4140625,-0.25976562,0.8125,0.044433594,1.40625,-0.53125,-0.77734375,1.0859375,2.875,-0.91015625,-0.13769531,-2.328125,0.02319336,0.4921875,-0.06640625,0.546875,0.3125,0.045654297,-0.296875,-1.15625,-1.34375,0.38671875,1.65625,1.421875,0.671875,-1.625,1.640625,-0.013549805,-0.024658203,-0.32617188,0.546875,-0.76953125,-0.25195312,-0.1640625,0.24316406,1.0078125,-1.2421875,-1.4765625,0.26953125,-0.63671875,0.69140625,-0.45507812,-0.14648438,1.203125,0.49804688,0.13867188,-0.24902344,1.4296875,-1.53125,-1.0,-0.4140625,0.81640625,0.18652344,-0.21289062,0.39257812,0.4765625,-0.12597656,-1.4765625,2.421875,-0.49804688,-1.265625,2.21875,1.4296875,0.57421875,-2.328125,-1.6484375,-0.40625,-1.6875,0.546875,-1.3671875,-0.609375,-0.08544922,-0.78515625,1.4140625,-1.640625,-0.87890625,2.03125,-0.671875,-0.37695312,-0.14160156,1.0,-0.76953125,0.39257812,1.09375,-0.9375,0.54296875,-0.875,-1.0390625,-0.08886719,1.046875,0.515625,0.6015625,-1.15625,0.11279297,1.375,0.73046875,2.28125,0.064941406,0.080078125,-1.28125,-2.359375,1.7734375,0.03564453,0.37890625,-0.7890625,-0.3359375,0.7421875,-0.95703125,-0.19726562,-0.90234375,-1.109375,-0.69140625,0.6484375,-0.76953125,-0.053222656,0.41210938,1.109375,-1.4453125,0.9453125,-0.9609375,-1.2890625,1.8046875,-0.93359375,-1.4296875,-0.53515625,0.43359375,-0.578125,-0.20507812,1.375,-0.421875,0.31054688,0.33398438,1.21875 +0,0,2,0.29882812,0.50390625,0.66015625,-0.47851562,0.26171875,-0.026367188,0.6796875,-0.6171875,0.58984375,-0.66796875,0.68359375,0.095703125,1.6015625,-0.73046875,0.00793457,-0.31054688,-0.19433594,-0.004638672,2.625,0.16601562,-0.15136719,-1.3984375,0.6640625,0.05517578,-0.703125,-1.0,0.29492188,-0.3125,-0.37890625,1.609375,0.64453125,-1.0625,1.515625,-1.4140625,0.19726562,0.20996094,0.07080078,-1.046875,-0.84765625,0.82421875,-2.140625,0.29101562,-0.82421875,-0.64453125,-0.27734375,-0.51953125,0.31445312,-0.984375,1.3515625,0.671875,-0.78515625,0.33984375,-0.93359375,1.5390625,0.20019531,-0.30273438,0.140625,-0.421875,-1.1484375,-0.828125,1.3359375,0.50390625,-0.051757812,1.25,-0.1953125,0.44921875,-0.05859375,-1.796875,-1.265625,1.5390625,-0.6640625,0.578125,0.640625,0.06738281,0.31640625,1.578125,0.94921875,0.98046875,-1.125,-0.012817383,-0.80078125,-0.66796875,0.5625,-0.1796875,-0.27734375,-0.609375,-1.2421875,-1.953125,1.484375,-0.50390625,1.1953125,0.953125,-0.9609375,0.33007812,-1.109375,-0.74609375,-1.8984375,-0.75,-1.296875,0.04248047,-1.375,1.125,1.796875,-0.018920898,0.44335938,2.609375,-1.03125,0.5859375,0.28515625,-0.625,0.69921875,1.15625,0.640625,-0.07714844,0.46484375,0.30859375,-0.21582031,0.24707031,-0.06347656,1.296875,0.5390625,-0.6171875,1.1875,-0.9140625,-1.1171875,1.1171875,-1.8203125,-1.40625,-0.18652344,-0.10205078,1.109375,-0.609375,-0.54296875,-1.3515625,0.38476562,0.40234375,0.40039062,-0.40625,0.21582031,-1.8828125,2.484375,0.57421875,-0.671875,2.34375,-0.25,-1.5234375,2.21875,-1.0703125,-1.3359375,0.82421875,-0.9609375,0.20019531,1.0390625,-1.4140625,-0.32226562,-0.03173828,1.2578125,-0.82421875,1.0703125,0.32421875,-0.38867188,-0.53515625,2.390625,1.7734375,-0.94921875,-0.7734375,-1.15625,1.015625,1.1015625,-0.39453125,-0.30664062,-0.50390625,-1.734375,-0.9140625,-0.88671875,0.265625,0.98046875,-1.4375,0.51171875,0.2578125,-1.9296875,-1.015625,1.171875,0.26953125,-1.5390625,-0.41796875,0.43164062,-0.20898438,-0.65625,-0.05859375,-1.7109375,1.7890625,1.1875,-0.53125,-1.0859375,0.8984375,1.796875,-0.34765625,1.359375,1.0703125 +0,0,3,0.6640625,1.21875,-1.203125,-1.3125,-0.515625,-1.8984375,0.31445312,1.1875,-0.53125,-0.68359375,-0.05419922,-1.1796875,-1.828125,-0.33203125,-0.9375,1.0703125,-0.27929688,0.91796875,0.1640625,0.022338867,0.90234375,-0.23535156,-0.03564453,1.328125,-1.7265625,-0.96484375,-2.390625,0.6640625,1.984375,0.9765625,0.76953125,1.3984375,-1.515625,-0.3828125,0.73828125,-0.01928711,0.9453125,1.359375,-0.044433594,0.62109375,-2.15625,-0.27734375,0.072265625,1.7421875,0.71484375,2.03125,0.43359375,0.58984375,0.1875,1.25,0.28320312,-0.23144531,-1.3515625,-0.80078125,-0.1328125,-0.43359375,-0.9765625,0.013122559,-0.06591797,-0.60546875,-0.1640625,0.53515625,0.34765625,-0.38085938,1.328125,0.23535156,0.16503906,0.0625,-1.0625,0.58984375,0.049560547,-0.16796875,0.390625,-0.828125,0.67578125,0.08935547,2.09375,-0.044677734,-0.42578125,0.03930664,1.2734375,0.609375,1.578125,0.9140625,-0.08691406,0.9765625,-1.328125,0.51953125,-1.75,0.35351562,0.9609375,2.203125,1.7890625,-0.40820312,-0.06640625,-1.421875,-0.33203125,0.014221191,0.97265625,1.03125,0.87890625,-0.18457031,1.0234375,-0.17382812,-0.94921875,-0.34570312,-1.515625,-1.4375,-0.8046875,-0.0061035156,-0.37890625,-0.22851562,2.546875,-0.8828125,-0.47851562,-0.88671875,-0.35546875,-1.03125,0.9921875,0.6875,2.0625,-1.8828125,-0.86328125,-2.953125,-0.21777344,0.19042969,-0.98046875,1.2421875,0.17285156,-1.9765625,0.90234375,-0.37890625,0.67578125,-1.078125,-1.875,0.58984375,0.53515625,-0.546875,0.11035156,-2.1875,0.32226562,0.890625,1.71875,1.21875,-0.62109375,-0.49414062,-1.625,1.078125,-0.37695312,0.12988281,-0.041259766,-1.359375,-0.7890625,1.4296875,0.19433594,-0.71484375,-0.6015625,1.0546875,-0.37695312,1.90625,-2.0625,0.96875,-0.33007812,0.083496094,-1.296875,-0.14648438,-0.26757812,0.29492188,0.47070312,-0.5859375,-0.32421875,0.47265625,-1.109375,0.9921875,0.953125,0.24804688,0.9921875,-1.546875,0.04248047,-0.103027344,1.0,0.52734375,0.62109375,-0.88671875,-0.50390625,-0.32421875,-0.24609375,0.0625,-0.54296875,-1.046875,-1.2421875,0.31445312,-0.036132812,-0.86328125,1.296875,0.119140625,1.921875,-0.23046875,0.09277344,0.42382812 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv index 9633bd19..4c736c3e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -1,0,1,1.0546875,0.89453125,-0.55078125,0.83203125,-0.65234375,-0.37890625,0.77734375,1.6484375,0.5625,-1.6171875,-0.53515625,0.54296875,0.76953125,-0.1015625,-1.4453125,0.828125,-0.05859375,0.58203125,0.34179688,-0.37304688,0.83984375,-0.9375,-0.032226562,-0.9140625,0.15820312,-0.953125,-1.5078125,-0.14160156,-1.1484375,-0.87890625,1.3203125,-1.3359375,1.71875,0.76171875,0.22167969,-1.578125,-0.122558594,-1.7265625,-0.7265625,-1.125,-1.2421875,-1.296875,-1.28125,0.017822266,-1.8828125,0.9296875,0.48046875,1.0078125,1.125,1.546875,-1.3046875,-0.13378906,-0.73046875,1.7421875,-0.671875,0.5078125,1.15625,0.66796875,-0.15234375,-0.23046875,0.05883789,0.51171875,0.08251953,-0.12207031,0.72265625,-0.5859375,-0.90625,-0.40429688,-0.7109375,0.25195312,1.5859375,-1.8125,0.57421875,-1.0390625,2.296875,2.609375,1.5390625,0.82421875,-0.34179688,-1.1328125,-0.38085938,-1.25,-0.42578125,-1.2734375,0.9296875,-1.1875,1.28125,0.59765625,-0.3046875,1.4921875,2.25,-1.3359375,0.16992188,0.734375,-0.45703125,0.57421875,0.19042969,-0.67578125,-0.21484375,0.5859375,-1.5703125,1.15625,1.03125,-0.02734375,1.9921875,-0.55859375,0.40429688,0.57421875,0.87890625,1.59375,-0.31835938,0.0119018555,0.296875,-0.61328125,1.0,-0.2890625,-1.6953125,0.16992188,-0.15234375,-0.28125,-0.66796875,-0.40039062,0.22363281,-0.026977539,-0.57421875,0.5859375,0.5703125,-0.59375,-0.48828125,-0.515625,-0.38476562,0.2109375,-0.25195312,-1.28125,-1.7578125,-0.46484375,-0.609375,0.37695312,-0.49609375,-2.328125,2.15625,-0.66796875,-0.5234375,-1.9453125,-0.30859375,-0.19140625,-0.7265625,-1.09375,0.61328125,3.640625,-0.44921875,1.0625,-1.7890625,0.828125,0.19335938,-0.9921875,0.14355469,1.2109375,0.29492188,-0.8515625,0.2578125,0.36523438,-0.029418945,0.12792969,-0.83984375,0.53125,0.15625,0.8359375,1.9765625,-2.328125,-0.33203125,0.29882812,-0.41601562,-0.25195312,0.27539062,1.1328125,1.0078125,1.203125,-0.42773438,0.38476562,-0.83203125,1.4375,0.875,0.13183594,0.32617188,-1.203125,1.4296875,0.91015625,-1.328125,-0.1953125,-0.41015625,-0.8203125,0.8203125,0.29101562,-1.6875,1.109375,0.049072266,-0.037353516,-0.34960938,-0.3828125 -1,0,2,-0.5546875,1.265625,-1.3671875,-1.5078125,0.30664062,-1.9453125,0.34375,1.6328125,1.609375,-0.58984375,0.21875,1.03125,-0.9453125,0.515625,-1.21875,0.53515625,0.2734375,0.21972656,-0.37109375,-0.07373047,0.33984375,-0.39453125,1.3359375,-0.0390625,-0.7421875,-0.921875,-2.421875,1.1015625,1.578125,-0.4765625,1.3671875,0.21191406,-1.1171875,0.14941406,1.5703125,-1.0859375,0.6640625,0.86328125,-0.7734375,1.046875,-1.546875,0.43164062,-0.22070312,-0.26953125,-0.32421875,2.625,-0.06201172,1.8125,1.140625,1.609375,-1.03125,1.0859375,-0.640625,-0.09033203,-0.82421875,-0.08984375,-0.51953125,0.48828125,-1.109375,1.40625,0.3984375,0.94140625,-0.16015625,0.609375,0.54296875,-1.203125,-0.12695312,0.71875,-1.65625,1.265625,0.52734375,0.7890625,2.046875,-0.53515625,0.55859375,2.09375,0.51171875,0.703125,-0.8359375,-0.40039062,0.48242188,-0.36523438,0.76171875,-0.13378906,-0.119628906,0.94140625,-1.421875,-0.27148438,-1.1640625,-0.6796875,0.5859375,1.53125,0.98046875,-0.25976562,0.7890625,-1.875,-0.53515625,-0.26171875,0.40625,-0.55859375,0.14160156,0.49414062,0.6953125,0.15527344,-0.76953125,0.068847656,-1.046875,-0.40039062,0.041259766,0.56640625,-1.6484375,-0.068359375,1.6640625,-2.3125,0.6484375,-0.14941406,-1.5625,-0.3125,0.91796875,0.08203125,1.171875,-2.34375,0.026367188,-1.359375,0.37890625,0.96484375,-0.26171875,-1.359375,1.0390625,-0.24902344,-1.328125,-0.91796875,-0.5390625,0.578125,-1.8984375,1.5390625,1.1875,-0.1953125,0.91015625,-2.03125,1.296875,0.123535156,0.6484375,0.8359375,-1.2421875,-1.3359375,-0.81640625,-1.3203125,-1.453125,-0.703125,0.60546875,-0.61328125,-0.48242188,0.875,-0.73828125,1.828125,0.5625,0.39453125,0.45898438,0.29101562,-0.27148438,1.1171875,0.73046875,0.36914062,0.026733398,-0.72265625,-0.38671875,0.7578125,-0.49414062,-1.9921875,-1.03125,-0.05883789,-1.578125,-0.6953125,0.8515625,-0.13183594,1.0703125,0.84375,-0.31445312,0.021362305,0.08154297,-1.1171875,0.30664062,0.16894531,0.33203125,0.06640625,-0.82421875,-0.8515625,-1.7734375,-1.0,0.2890625,0.81640625,-0.7265625,0.68359375,-0.81640625,2.640625,2.03125,0.09814453,-0.8984375,-0.48242188 -1,0,3,1.2578125,0.5703125,-0.9921875,0.103515625,-1.359375,-0.11767578,0.609375,1.0078125,-1.1640625,-1.4453125,-0.21582031,-0.37890625,-0.42382812,0.453125,-1.7421875,-0.8203125,-1.0625,0.28320312,-0.953125,-0.53125,0.59375,-0.21972656,-0.57421875,-0.46679688,-0.107421875,-2.171875,-2.390625,-0.4375,-0.008850098,0.19433594,-0.38085938,-1.4453125,0.2890625,0.87890625,-0.328125,-0.546875,-0.09423828,-2.390625,0.45507812,-0.08203125,0.40820312,-0.20996094,-0.859375,1.2421875,0.9375,0.3515625,-1.0234375,0.60546875,-0.025146484,1.1640625,0.16015625,-0.19824219,-1.65625,0.70703125,-0.90625,-0.67578125,-0.63671875,1.25,-1.0625,-1.03125,-0.28125,0.765625,1.265625,0.7734375,1.921875,-0.34960938,-0.28125,-0.5078125,-1.9296875,0.5,1.21875,-0.36132812,1.6640625,-0.6953125,0.8828125,0.828125,2.53125,1.234375,0.609375,0.099609375,-0.41210938,-0.3828125,0.37109375,-1.3359375,-0.27734375,0.99609375,0.31835938,-0.60546875,0.24121094,0.984375,0.5390625,1.34375,0.21972656,0.58203125,-0.95703125,-1.2890625,-0.734375,-0.13476562,1.1484375,1.0859375,0.38085938,1.2578125,-0.296875,-1.2265625,1.2578125,-1.078125,-0.71484375,0.69140625,0.41015625,-0.33398438,-0.96875,1.015625,1.578125,0.26367188,0.119628906,0.46679688,-0.3046875,0.515625,0.122558594,1.921875,0.30664062,-2.109375,-1.1484375,-0.59765625,-0.056152344,-1.25,0.171875,-1.046875,0.001335144,-0.16796875,0.421875,-0.5703125,-0.18945312,-0.022338867,-1.046875,2.4375,-0.9140625,-1.6875,1.40625,-2.3125,0.64453125,-0.671875,-0.28320312,-0.65234375,0.8671875,0.30664062,0.375,0.20214844,2.203125,3.59375,0.41992188,0.26367188,-1.609375,1.015625,-0.0071411133,0.29492188,0.65625,1.1484375,-1.359375,0.62890625,0.97265625,1.75,0.8046875,-0.62109375,-0.51171875,-0.55078125,-0.3515625,1.6796875,0.5234375,-1.7578125,-0.62109375,-0.94140625,0.23242188,-0.55078125,0.703125,1.3984375,-0.3125,1.1171875,1.3125,-0.14257812,0.064941406,0.122558594,1.3671875,-0.64453125,0.49023438,-0.2890625,0.640625,1.4140625,-0.0033111572,-1.515625,0.21582031,-1.6015625,0.5390625,-1.7421875,-0.81640625,1.2109375,0.30273438,-1.09375,-1.234375,-0.36328125 +1,0,1,1.0546875,0.8984375,-0.5546875,0.82421875,-0.65625,-0.375,0.77734375,1.6484375,0.5625,-1.6171875,-0.53515625,0.5390625,0.76171875,-0.09814453,-1.4453125,0.82421875,-0.056884766,0.5859375,0.33984375,-0.37304688,0.8359375,-0.9375,-0.03515625,-0.91796875,0.16015625,-0.9453125,-1.515625,-0.14648438,-1.1484375,-0.8828125,1.328125,-1.328125,1.71875,0.7578125,0.22460938,-1.578125,-0.12792969,-1.7265625,-0.7265625,-1.125,-1.2421875,-1.3046875,-1.28125,0.018188477,-1.875,0.9296875,0.48046875,1.015625,1.125,1.546875,-1.3125,-0.12792969,-0.734375,1.7578125,-0.671875,0.5078125,1.15625,0.66796875,-0.15332031,-0.22460938,0.05493164,0.515625,0.084472656,-0.12011719,0.7265625,-0.5859375,-0.90234375,-0.40625,-0.703125,0.25,1.59375,-1.8125,0.5703125,-1.046875,2.296875,2.578125,1.5390625,0.82421875,-0.34375,-1.125,-0.38671875,-1.25,-0.42578125,-1.265625,0.9375,-1.1875,1.28125,0.59375,-0.30859375,1.4921875,2.234375,-1.34375,0.16894531,0.734375,-0.4609375,0.56640625,0.18457031,-0.67578125,-0.21484375,0.58984375,-1.578125,1.15625,1.03125,-0.028076172,2.0,-0.55859375,0.40234375,0.57421875,0.8828125,1.5859375,-0.31835938,0.015380859,0.296875,-0.61328125,1.0,-0.29101562,-1.6875,0.17382812,-0.15039062,-0.28710938,-0.6640625,-0.40820312,0.22265625,-0.02709961,-0.578125,0.58984375,0.57421875,-0.58984375,-0.49804688,-0.515625,-0.37890625,0.2109375,-0.2578125,-1.28125,-1.75,-0.46875,-0.60546875,0.37890625,-0.49414062,-2.328125,2.171875,-0.6640625,-0.51953125,-1.9375,-0.30664062,-0.19335938,-0.7265625,-1.0859375,0.61328125,3.640625,-0.44921875,1.0546875,-1.8046875,0.828125,0.19824219,-0.984375,0.14550781,1.2109375,0.296875,-0.859375,0.2578125,0.36914062,-0.02758789,0.12451172,-0.8359375,0.53125,0.14941406,0.83203125,1.96875,-2.34375,-0.33398438,0.296875,-0.4140625,-0.25390625,0.27734375,1.15625,1.0078125,1.203125,-0.4296875,0.38085938,-0.828125,1.4375,0.87109375,0.13378906,0.32226562,-1.203125,1.4375,0.91796875,-1.3203125,-0.19238281,-0.40429688,-0.828125,0.81640625,0.29101562,-1.6875,1.109375,0.05078125,-0.03540039,-0.35546875,-0.38085938 +1,0,2,-0.5546875,1.265625,-1.359375,-1.5078125,0.30859375,-1.9609375,0.34375,1.6328125,1.6015625,-0.58203125,0.21777344,1.03125,-0.953125,0.51953125,-1.2109375,0.53515625,0.26953125,0.22363281,-0.37109375,-0.071777344,0.33789062,-0.39257812,1.328125,-0.037109375,-0.73828125,-0.9296875,-2.421875,1.1015625,1.578125,-0.4765625,1.375,0.20800781,-1.125,0.1484375,1.5703125,-1.09375,0.6640625,0.8671875,-0.7734375,1.0546875,-1.5546875,0.43164062,-0.21679688,-0.265625,-0.3203125,2.609375,-0.059814453,1.8125,1.15625,1.609375,-1.0234375,1.0859375,-0.640625,-0.08886719,-0.828125,-0.088378906,-0.51953125,0.484375,-1.109375,1.3984375,0.39453125,0.9453125,-0.15527344,0.609375,0.546875,-1.1953125,-0.12451172,0.71875,-1.6484375,1.2578125,0.53125,0.78125,2.0625,-0.5390625,0.5625,2.078125,0.5078125,0.703125,-0.83203125,-0.40429688,0.48242188,-0.36328125,0.765625,-0.13183594,-0.119628906,0.9375,-1.421875,-0.26953125,-1.15625,-0.68359375,0.58203125,1.5390625,0.99609375,-0.26171875,0.78515625,-1.875,-0.5390625,-0.25976562,0.41015625,-0.5625,0.14746094,0.49609375,0.6953125,0.15820312,-0.76171875,0.06542969,-1.0546875,-0.40039062,0.044677734,0.5703125,-1.6484375,-0.06689453,1.6640625,-2.328125,0.64453125,-0.1484375,-1.578125,-0.31054688,0.921875,0.083496094,1.1796875,-2.359375,0.028686523,-1.3671875,0.37890625,0.97265625,-0.25976562,-1.359375,1.03125,-0.24902344,-1.3203125,-0.91015625,-0.5390625,0.5859375,-1.90625,1.5390625,1.1875,-0.19335938,0.91015625,-2.03125,1.3046875,0.12597656,0.6484375,0.828125,-1.234375,-1.3359375,-0.81640625,-1.3046875,-1.453125,-0.6953125,0.60546875,-0.61328125,-0.48632812,0.87109375,-0.73828125,1.8125,0.5625,0.39648438,0.45898438,0.29492188,-0.26953125,1.1171875,0.7265625,0.36523438,0.02722168,-0.7265625,-0.38671875,0.7578125,-0.49414062,-2.0,-1.03125,-0.059326172,-1.578125,-0.6953125,0.8515625,-0.125,1.0703125,0.83984375,-0.31445312,0.022705078,0.08300781,-1.1171875,0.30664062,0.16894531,0.33203125,0.06591797,-0.83203125,-0.84765625,-1.7734375,-0.99609375,0.29101562,0.8125,-0.7265625,0.6796875,-0.81640625,2.625,2.03125,0.10107422,-0.8984375,-0.48632812 +1,0,3,1.2578125,0.56640625,-0.9921875,0.10546875,-1.359375,-0.11669922,0.61328125,1.0078125,-1.15625,-1.4609375,-0.21484375,-0.38085938,-0.43164062,0.45507812,-1.75,-0.8203125,-1.0625,0.2890625,-0.953125,-0.53125,0.59765625,-0.22167969,-0.57421875,-0.46289062,-0.10205078,-2.1875,-2.390625,-0.43554688,-0.012329102,0.19042969,-0.3828125,-1.453125,0.28710938,0.87890625,-0.32617188,-0.546875,-0.09863281,-2.375,0.453125,-0.08154297,0.41210938,-0.21386719,-0.859375,1.2421875,0.94140625,0.34960938,-1.0234375,0.60546875,-0.019897461,1.171875,0.16308594,-0.19824219,-1.65625,0.703125,-0.90625,-0.671875,-0.640625,1.265625,-1.0625,-1.0234375,-0.28125,0.765625,1.2734375,0.7734375,1.921875,-0.34960938,-0.28125,-0.5078125,-1.9375,0.49804688,1.2109375,-0.36328125,1.671875,-0.69140625,0.890625,0.828125,2.515625,1.2265625,0.60546875,0.10253906,-0.4140625,-0.38867188,0.375,-1.3359375,-0.28125,1.0,0.32421875,-0.60546875,0.24023438,0.984375,0.5390625,1.34375,0.22167969,0.578125,-0.9609375,-1.28125,-0.7421875,-0.13378906,1.1484375,1.078125,0.38671875,1.2421875,-0.30078125,-1.2421875,1.2734375,-1.078125,-0.71484375,0.6875,0.41210938,-0.3359375,-0.9609375,1.0078125,1.578125,0.27148438,0.119628906,0.46875,-0.30664062,0.515625,0.12597656,1.921875,0.30664062,-2.09375,-1.1484375,-0.6015625,-0.055664062,-1.2578125,0.171875,-1.046875,0.002670288,-0.17089844,0.43359375,-0.5703125,-0.19433594,-0.022949219,-1.046875,2.453125,-0.91015625,-1.703125,1.3984375,-2.3125,0.6484375,-0.671875,-0.28320312,-0.65234375,0.875,0.31054688,0.37695312,0.19921875,2.1875,3.578125,0.421875,0.265625,-1.6171875,1.0234375,-0.008728027,0.29492188,0.66015625,1.140625,-1.3515625,0.625,0.9765625,1.734375,0.80859375,-0.62109375,-0.5078125,-0.546875,-0.34765625,1.6796875,0.51953125,-1.7578125,-0.61328125,-0.93359375,0.23632812,-0.55078125,0.703125,1.390625,-0.31445312,1.1171875,1.328125,-0.14257812,0.06738281,0.123535156,1.359375,-0.640625,0.48828125,-0.29101562,0.640625,1.4140625,-0.0029296875,-1.5234375,0.21484375,-1.6015625,0.54296875,-1.7265625,-0.80859375,1.2109375,0.30664062,-1.0859375,-1.2421875,-0.35742188 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv index 2451ec01..4202cade 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -2,0,0,1.203125,-0.09814453,-1.3359375,-0.6015625,0.96484375,-1.4765625,-0.8203125,3.140625,-0.5234375,-1.671875,0.023925781,1.5859375,-0.53125,-0.74609375,-0.57421875,1.7421875,-0.26953125,-1.3984375,0.059326172,0.48828125,-1.3671875,-0.6796875,-0.44921875,1.234375,-0.09033203,0.32617188,-2.5,-0.15136719,-0.8828125,-0.06982422,-0.022216797,0.78515625,0.69140625,0.7734375,-0.07470703,-1.0546875,1.2578125,-0.17285156,0.515625,0.6875,-0.0625,-0.008483887,0.11669922,-0.7890625,-0.11816406,0.65625,-0.46875,0.96875,-0.43945312,2.21875,-0.60546875,-2.21875,-1.3359375,-0.04736328,-0.15039062,-0.33203125,0.91796875,0.296875,0.40039062,-1.046875,-0.36523438,1.484375,-0.1328125,0.53515625,-0.265625,-0.03125,-0.002380371,1.4921875,0.16699219,-0.11767578,-0.4140625,-0.29296875,0.8984375,-0.671875,1.625,2.140625,0.625,0.2734375,-0.2421875,-0.75,1.671875,0.75,0.53515625,-0.62890625,-0.44140625,-1.1640625,1.328125,1.828125,0.49414062,1.65625,1.7421875,-0.7734375,-1.046875,1.3671875,-0.28710938,0.03100586,-1.7265625,-0.734375,-1.0859375,-0.21777344,-1.0625,-0.24414062,1.4375,0.94140625,-0.47265625,0.25195312,-1.640625,-0.62109375,-0.29101562,0.0234375,-1.140625,-1.9296875,1.4140625,-2.265625,0.84765625,0.27929688,-2.046875,1.2734375,-0.30078125,-1.21875,1.25,-0.4765625,-0.92578125,-0.36523438,0.4140625,2.75,-0.43164062,-0.40625,0.44335938,-1.8671875,-1.4765625,-1.640625,0.36914062,-1.1015625,-0.890625,-0.012817383,1.328125,0.34570312,0.43554688,-1.3515625,1.46875,-1.8203125,-0.62890625,-0.15527344,0.16113281,0.46875,-0.32421875,0.83203125,-0.73828125,0.83203125,-0.6171875,-0.018188477,0.8125,-0.4453125,0.045898438,-0.7578125,0.3203125,0.015563965,1.65625,1.015625,-1.1484375,1.875,1.2890625,0.8203125,-0.57421875,0.77734375,0.16894531,1.3125,1.2578125,0.76953125,-1.296875,-0.17089844,0.060546875,1.0859375,-1.28125,0.43359375,0.3515625,-0.69140625,-0.059326172,-1.171875,0.45898438,0.38476562,0.30273438,-1.09375,0.22363281,-0.24414062,-1.3984375,0.0134887695,-0.83984375,-1.3515625,0.20996094,1.421875,-0.11621094,-0.43164062,0.12207031,1.1953125,0.49609375,0.6015625,-1.0703125,0.4609375 -2,0,1,0.31445312,-0.33398438,-0.72265625,-0.4453125,0.40429688,-0.546875,-0.006439209,1.5859375,-0.13769531,-0.828125,-0.53515625,-0.375,1.2265625,0.49804688,-1.6484375,0.44726562,-0.5234375,-1.984375,0.42578125,-0.6875,0.5625,-0.32421875,-0.27734375,-0.06640625,-1.328125,-1.8203125,-1.640625,-0.08984375,-2.078125,0.49023438,-0.6875,-1.1171875,0.5625,0.07519531,0.546875,1.6796875,0.62109375,-1.453125,-1.8671875,1.1953125,-1.4765625,0.3515625,-0.54296875,-0.043701172,0.23144531,1.0625,0.5625,-0.546875,0.24023438,1.71875,-2.109375,-1.328125,-1.40625,0.73046875,-1.9921875,0.62109375,0.125,-0.66796875,-0.19140625,-2.140625,1.1796875,-0.16113281,0.42578125,-0.072265625,0.17675781,0.055908203,-1.0859375,0.18847656,-0.671875,2.0,0.90625,-1.6015625,-0.4609375,-0.49609375,0.044189453,1.921875,1.1171875,1.109375,-0.61328125,-0.8828125,1.5546875,0.31835938,0.27734375,-0.5078125,-0.67578125,-0.030639648,0.28710938,0.9609375,-0.66796875,0.67578125,2.125,-0.17285156,0.14941406,0.41796875,-1.390625,-0.19921875,-0.30273438,-0.53125,1.4140625,-0.328125,-2.25,0.14160156,2.25,1.15625,-0.46679688,-0.22851562,1.484375,-0.9296875,0.40039062,0.71484375,0.2734375,0.36328125,0.8515625,-1.4296875,0.30664062,-0.46875,0.18554688,-0.27148438,-0.65234375,-0.65625,1.328125,-0.55078125,0.4140625,-1.1875,-0.24609375,1.2734375,-0.44921875,-2.296875,-0.005645752,-0.041015625,0.671875,-0.061767578,0.19238281,-1.3046875,-1.34375,-0.19921875,-0.35351562,-0.47070312,-0.019042969,-1.8046875,3.0625,-0.76953125,0.39257812,-0.053955078,-0.06933594,1.828125,-1.234375,-0.01977539,-1.9375,1.921875,0.23632812,1.125,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.4375,1.6171875,1.4296875,0.671875,-0.71484375,1.3515625,1.375,0.49804688,-1.3359375,0.53515625,-1.1171875,-0.33984375,2.375,-0.25195312,0.2265625,-0.14550781,-0.66796875,-0.31835938,0.118652344,0.453125,-0.9375,-0.91796875,0.93359375,-0.58984375,-0.18164062,-0.10888672,1.265625,0.48828125,0.6640625,-0.30273438,1.3203125,0.82421875,-0.5390625,-1.0390625,-0.23242188,0.53125,2.15625,0.024658203,0.83203125,-0.15625,1.40625,-0.20996094,1.21875,0.27148438 -2,0,2,0.76953125,0.111328125,-0.36523438,-0.22363281,0.20703125,-0.7578125,-0.2734375,1.4140625,0.5546875,-1.09375,0.5859375,1.4140625,0.4375,0.54296875,-1.6015625,0.8046875,0.19335938,-1.2109375,-0.11230469,0.119628906,0.98828125,-0.5390625,-0.39257812,0.578125,-0.29296875,-0.73046875,-0.51171875,0.06201172,-1.0078125,-0.059814453,-0.68359375,-0.51171875,1.78125,-0.45117188,1.296875,1.59375,0.83203125,-0.16015625,-2.21875,1.7265625,-1.8359375,0.375,-0.59765625,-0.05078125,0.6328125,0.81640625,-0.33984375,-0.1328125,-0.4453125,1.90625,-1.375,-0.11328125,-0.6875,-0.08935547,-0.796875,0.71484375,0.62109375,0.60546875,-0.07861328,-1.2421875,1.609375,-0.21484375,1.8671875,-0.34375,-1.7421875,0.8515625,-1.171875,0.53515625,-0.53125,1.265625,-0.10449219,-1.1640625,-0.09814453,0.6171875,-0.15527344,1.9296875,1.390625,0.38671875,-1.0,-1.46875,1.3828125,-0.20019531,0.59765625,-1.2890625,-1.3671875,-0.3359375,0.19433594,1.40625,-0.81640625,0.36132812,1.9609375,-0.03540039,-0.8203125,0.62109375,-1.546875,0.93359375,-0.17773438,0.890625,0.734375,0.9921875,-2.46875,0.013305664,2.0,1.03125,-1.3984375,0.35546875,0.91015625,-1.6640625,-1.0703125,0.18652344,0.578125,-0.36132812,1.546875,-1.5078125,-0.359375,-1.21875,0.95703125,-0.045410156,-0.3046875,-1.296875,2.125,0.44140625,-0.59765625,-1.2734375,0.60546875,0.41992188,-0.73046875,-2.1875,0.26367188,-0.36523438,0.18261719,-1.1640625,-0.54296875,-0.79296875,-1.84375,1.65625,0.30859375,-0.62109375,-0.53125,-1.34375,1.8203125,-1.6953125,-0.68359375,-0.3828125,-0.17871094,1.3125,-0.58203125,0.51953125,-2.6875,-0.1171875,0.25976562,1.125,0.69921875,-1.0390625,-0.22753906,-0.78515625,0.90234375,0.47851562,1.1171875,0.54296875,-0.41015625,0.3671875,-0.26171875,0.91796875,-1.5703125,1.28125,-1.109375,-0.58203125,1.3984375,0.08935547,-1.6796875,-0.79296875,-0.64453125,-0.34960938,0.16503906,0.36328125,0.80078125,-0.4609375,0.31054688,-0.828125,-0.49804688,-0.03466797,0.640625,-0.48828125,1.234375,-1.5546875,0.47070312,0.61328125,0.24902344,-0.85546875,1.09375,1.546875,0.86328125,-0.7421875,-0.7109375,-0.67578125,2.21875,1.6484375,1.1953125,-0.23925781 +2,0,0,1.2109375,-0.096191406,-1.3359375,-0.6015625,0.9609375,-1.484375,-0.8203125,3.140625,-0.5234375,-1.6640625,0.0234375,1.5859375,-0.53515625,-0.75,-0.5703125,1.75,-0.27148438,-1.40625,0.059570312,0.48632812,-1.375,-0.6796875,-0.44921875,1.2421875,-0.095703125,0.33007812,-2.484375,-0.15527344,-0.890625,-0.06933594,-0.020019531,0.7890625,0.69140625,0.7734375,-0.07324219,-1.0546875,1.25,-0.171875,0.515625,0.6953125,-0.06201172,-0.008239746,0.11279297,-0.78125,-0.115234375,0.65625,-0.46484375,0.96484375,-0.43945312,2.21875,-0.609375,-2.234375,-1.3359375,-0.048095703,-0.15039062,-0.33398438,0.921875,0.29882812,0.40234375,-1.046875,-0.3671875,1.4765625,-0.12988281,0.53515625,-0.26953125,-0.029663086,-0.000705719,1.4765625,0.16796875,-0.11328125,-0.4140625,-0.2890625,0.9140625,-0.67578125,1.6328125,2.140625,0.62890625,0.26953125,-0.24414062,-0.75390625,1.671875,0.7578125,0.53515625,-0.6328125,-0.44140625,-1.1484375,1.328125,1.84375,0.5078125,1.65625,1.734375,-0.7734375,-1.046875,1.375,-0.28320312,0.033691406,-1.7265625,-0.73828125,-1.0859375,-0.21875,-1.0703125,-0.24804688,1.4296875,0.94140625,-0.46875,0.25390625,-1.640625,-0.62109375,-0.28515625,0.016723633,-1.140625,-1.9453125,1.421875,-2.265625,0.84765625,0.27539062,-2.0625,1.2734375,-0.30273438,-1.21875,1.2578125,-0.47265625,-0.92578125,-0.36523438,0.4140625,2.71875,-0.43945312,-0.41210938,0.4453125,-1.8671875,-1.484375,-1.640625,0.3671875,-1.1015625,-0.8984375,-0.012634277,1.3203125,0.3515625,0.43554688,-1.3515625,1.453125,-1.8203125,-0.6328125,-0.15917969,0.16210938,0.47070312,-0.32226562,0.83984375,-0.73828125,0.828125,-0.6171875,-0.019165039,0.80859375,-0.453125,0.046142578,-0.76171875,0.31835938,0.014831543,1.6640625,1.015625,-1.1484375,1.859375,1.2890625,0.8203125,-0.57421875,0.77734375,0.17285156,1.3203125,1.2578125,0.7734375,-1.2890625,-0.16796875,0.06640625,1.09375,-1.28125,0.4296875,0.35351562,-0.6953125,-0.057128906,-1.171875,0.46679688,0.38476562,0.3046875,-1.0859375,0.22363281,-0.24023438,-1.40625,0.01373291,-0.84375,-1.34375,0.21386719,1.4375,-0.11621094,-0.42773438,0.123046875,1.1953125,0.49804688,0.6015625,-1.0703125,0.45703125 +2,0,1,0.31445312,-0.33398438,-0.72265625,-0.44140625,0.40625,-0.546875,-0.0046691895,1.578125,-0.13769531,-0.8359375,-0.5390625,-0.37695312,1.2265625,0.50390625,-1.6484375,0.44140625,-0.5234375,-1.984375,0.42578125,-0.6953125,0.5625,-0.328125,-0.27734375,-0.06689453,-1.328125,-1.8125,-1.625,-0.088378906,-2.0625,0.48828125,-0.6875,-1.1171875,0.55859375,0.076171875,0.546875,1.671875,0.625,-1.453125,-1.8671875,1.1875,-1.4765625,0.34960938,-0.546875,-0.040771484,0.23144531,1.0625,0.5546875,-0.55078125,0.2421875,1.734375,-2.109375,-1.3203125,-1.4140625,0.7265625,-1.96875,0.6171875,0.12695312,-0.671875,-0.19042969,-2.171875,1.1875,-0.16015625,0.42773438,-0.07324219,0.17675781,0.055419922,-1.0859375,0.19042969,-0.66796875,2.0,0.90625,-1.609375,-0.45898438,-0.5,0.04248047,1.921875,1.109375,1.1015625,-0.61328125,-0.8828125,1.5546875,0.32226562,0.27539062,-0.51171875,-0.671875,-0.028320312,0.28515625,0.9609375,-0.6640625,0.6796875,2.109375,-0.17285156,0.15039062,0.41796875,-1.3984375,-0.19824219,-0.30664062,-0.53515625,1.421875,-0.33203125,-2.25,0.13964844,2.21875,1.15625,-0.47070312,-0.23046875,1.484375,-0.9296875,0.40820312,0.7109375,0.27539062,0.35742188,0.859375,-1.4375,0.3046875,-0.47070312,0.18554688,-0.26953125,-0.65625,-0.65625,1.3359375,-0.55078125,0.4140625,-1.171875,-0.24511719,1.2734375,-0.4453125,-2.3125,-0.00579834,-0.04345703,0.6796875,-0.061035156,0.19140625,-1.3046875,-1.328125,-0.20019531,-0.35351562,-0.46875,-0.018432617,-1.8046875,3.09375,-0.7734375,0.38671875,-0.052246094,-0.07080078,1.8359375,-1.21875,-0.017944336,-1.9296875,1.921875,0.23535156,1.140625,1.0234375,-0.6015625,-0.083496094,-0.89453125,0.43359375,1.625,1.4453125,0.66796875,-0.71875,1.34375,1.3671875,0.49609375,-1.3359375,0.53515625,-1.1171875,-0.33789062,2.375,-0.25390625,0.22949219,-0.14746094,-0.66796875,-0.31445312,0.11816406,0.453125,-0.9375,-0.91796875,0.9296875,-0.5859375,-0.17871094,-0.107421875,1.265625,0.48242188,0.6640625,-0.30078125,1.328125,0.8203125,-0.53515625,-1.046875,-0.23632812,0.53515625,2.15625,0.026489258,0.828125,-0.15429688,1.4140625,-0.2109375,1.2265625,0.26757812 +2,0,2,0.7734375,0.110839844,-0.37109375,-0.22460938,0.20996094,-0.76171875,-0.26953125,1.4140625,0.5546875,-1.09375,0.5859375,1.421875,0.44140625,0.55078125,-1.59375,0.796875,0.18847656,-1.203125,-0.11621094,0.11767578,0.9921875,-0.5390625,-0.39648438,0.578125,-0.29492188,-0.72265625,-0.51171875,0.060791016,-1.0078125,-0.061035156,-0.68359375,-0.51171875,1.796875,-0.453125,1.28125,1.59375,0.828125,-0.15917969,-2.21875,1.7265625,-1.8359375,0.375,-0.59375,-0.052001953,0.62890625,0.81640625,-0.3359375,-0.1328125,-0.4453125,1.90625,-1.3671875,-0.10986328,-0.69140625,-0.08984375,-0.796875,0.71484375,0.6171875,0.609375,-0.08105469,-1.25,1.609375,-0.21484375,1.8671875,-0.34765625,-1.7421875,0.8515625,-1.171875,0.53515625,-0.52734375,1.265625,-0.103027344,-1.171875,-0.09863281,0.609375,-0.15820312,1.9375,1.390625,0.38867188,-1.0,-1.46875,1.3828125,-0.20019531,0.59765625,-1.2890625,-1.375,-0.3359375,0.19042969,1.40625,-0.8125,0.359375,1.96875,-0.035888672,-0.8203125,0.6171875,-1.5390625,0.9453125,-0.17675781,0.8828125,0.7421875,0.9921875,-2.46875,0.012023926,2.0,1.03125,-1.3984375,0.35351562,0.90625,-1.6640625,-1.0703125,0.18164062,0.578125,-0.36523438,1.546875,-1.5078125,-0.35742188,-1.21875,0.953125,-0.044677734,-0.3046875,-1.2890625,2.140625,0.44140625,-0.59765625,-1.2578125,0.60546875,0.41992188,-0.73046875,-2.171875,0.26171875,-0.36523438,0.18066406,-1.171875,-0.54296875,-0.78515625,-1.8515625,1.6640625,0.31054688,-0.625,-0.5390625,-1.3515625,1.8125,-1.6953125,-0.68359375,-0.3828125,-0.17675781,1.3125,-0.5859375,0.51953125,-2.6875,-0.1171875,0.2578125,1.1328125,0.69921875,-1.03125,-0.23144531,-0.77734375,0.89453125,0.4765625,1.1171875,0.546875,-0.41015625,0.36523438,-0.265625,0.91796875,-1.5625,1.2734375,-1.1015625,-0.578125,1.3984375,0.08886719,-1.6796875,-0.7890625,-0.640625,-0.34960938,0.1640625,0.36523438,0.80078125,-0.46875,0.30859375,-0.83203125,-0.49804688,-0.03173828,0.640625,-0.49023438,1.234375,-1.5625,0.47070312,0.61328125,0.24804688,-0.86328125,1.09375,1.546875,0.859375,-0.7421875,-0.7109375,-0.66796875,2.21875,1.6484375,1.2109375,-0.2421875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv index d4d5cdcd..e1904552 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -3,0,0,1.0859375,-0.07324219,-1.484375,0.24511719,0.85546875,-1.703125,-0.57421875,2.953125,-0.0625,-0.76171875,0.23046875,2.65625,0.26757812,-0.36328125,-0.69921875,1.734375,0.2734375,-1.328125,0.359375,0.92578125,-0.24414062,-0.73828125,-0.65625,0.5390625,0.9375,1.3359375,-2.703125,0.38671875,-0.59375,-1.0234375,0.34375,-0.045166016,1.6953125,1.34375,0.54296875,-0.62890625,0.99609375,-0.021362305,-0.40820312,0.10644531,0.04736328,0.30859375,-0.17773438,-1.6484375,-0.13574219,0.8828125,-1.5625,0.44726562,0.07519531,0.79296875,-0.84765625,-1.421875,-1.171875,-1.046875,-0.19042969,-0.20800781,0.74609375,0.30078125,-0.24511719,-1.0625,0.21191406,0.71484375,1.3203125,0.8125,-1.265625,-0.32226562,0.30859375,0.27929688,-0.57421875,-0.40234375,0.41601562,-0.42382812,0.49609375,-0.47070312,2.28125,3.09375,1.046875,0.02355957,-0.81640625,-0.84765625,1.453125,0.6875,0.82421875,-1.6015625,0.04321289,-0.3984375,0.47070312,1.328125,0.578125,2.203125,1.875,-0.765625,-1.015625,1.359375,-0.61328125,-0.08691406,-1.3984375,0.0048828125,-0.14941406,0.6796875,-0.51171875,0.16015625,0.052734375,1.265625,-1.046875,-0.18261719,-1.125,0.028930664,-1.3828125,-0.35351562,-1.125,-1.53125,1.765625,-1.8984375,0.61328125,-0.03857422,-1.4609375,0.69140625,-0.0063476562,-0.39453125,1.2734375,0.11425781,-0.890625,-0.11328125,-0.04321289,2.421875,-0.75,-0.62109375,1.3828125,-1.5390625,-1.171875,-2.828125,0.103027344,-0.890625,-1.2109375,0.33984375,1.15625,-0.27539062,0.18066406,-1.171875,0.92578125,-1.2734375,-1.3984375,-0.54296875,-0.19824219,0.54296875,-0.82421875,0.765625,-0.34960938,0.026489258,0.41992188,-0.5390625,0.21484375,-1.2109375,0.28125,-0.12695312,0.96875,0.041503906,1.3359375,0.58984375,-0.18261719,2.46875,0.421875,0.94921875,-0.05883789,0.40039062,0.18945312,0.4765625,1.2734375,1.265625,-1.0234375,-0.640625,-0.88671875,0.91015625,-1.2890625,0.29492188,0.14355469,-0.30078125,0.23828125,-0.30078125,-0.5390625,-0.328125,0.49023438,-1.2109375,0.546875,-0.5234375,-1.1015625,-0.91015625,-0.515625,-0.97265625,0.57421875,0.96484375,-0.42773438,-0.8046875,-0.16699219,1.921875,-0.18457031,0.93359375,-1.453125,-0.171875 -3,0,1,-0.31054688,0.4609375,-1.6953125,-1.1796875,-0.61328125,0.16113281,-0.45703125,2.109375,0.5625,-0.8203125,1.734375,1.125,1.453125,-0.36328125,0.07763672,0.9609375,-0.07128906,-0.9375,0.76171875,-0.53515625,0.62109375,-0.012634277,0.8671875,0.96875,-0.055664062,0.13867188,0.2265625,-0.30859375,-1.2890625,-1.7265625,-0.31054688,1.6953125,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.2421875,0.53515625,0.75,-0.20214844,-0.45703125,0.16113281,-1.5,0.27539062,0.84375,0.23828125,0.55078125,0.3984375,-0.30273438,-2.21875,0.80078125,-0.9140625,0.35546875,-0.85546875,-1.015625,-0.24023438,-0.61328125,0.28125,-0.050048828,-0.12060547,0.86328125,0.69140625,1.5546875,1.40625,0.08886719,-1.28125,0.5390625,-0.765625,0.5390625,-0.40625,0.12109375,0.484375,0.09765625,-0.62109375,2.421875,-0.609375,0.017333984,-0.14648438,-0.03149414,-0.88671875,0.09033203,0.99609375,-0.8359375,0.88671875,0.76171875,-0.6171875,-0.4140625,1.0859375,-0.34570312,1.390625,-0.24902344,-0.875,0.8359375,-0.1171875,-1.125,0.6796875,-0.83203125,-1.3984375,-1.2109375,-1.4140625,0.6796875,3.15625,-0.81640625,-1.234375,-1.1640625,-0.6796875,0.30664062,-0.15429688,0.91796875,-0.546875,-0.47070312,0.8828125,-1.25,1.7734375,-0.30273438,-0.5546875,-0.36523438,0.011047363,-0.64453125,-0.0018310547,-0.828125,0.45507812,-0.44140625,-1.03125,1.28125,-0.88671875,-1.6640625,1.6015625,0.53125,-0.93359375,-0.78125,0.37304688,-0.984375,-1.734375,1.5,0.69140625,0.3359375,-0.43359375,-1.96875,2.484375,-1.375,-1.0078125,-0.061523438,-0.18261719,-0.26171875,0.32421875,-1.59375,-1.1953125,0.24121094,-0.068359375,1.59375,1.421875,-2.140625,0.106933594,-0.18359375,0.41210938,-1.0234375,1.6796875,-0.58203125,0.42382812,-0.27734375,0.90234375,-0.71484375,-0.013977051,2.234375,-0.953125,-0.110839844,1.5859375,-0.2578125,-1.6171875,-1.1015625,-2.0625,-1.5546875,-0.734375,0.47460938,-0.030151367,0.001625061,-1.328125,-1.2734375,-0.12890625,-0.48632812,0.7421875,-0.03100586,0.734375,-1.0546875,-0.45507812,0.15820312,-1.09375,1.0703125,1.734375,-0.21289062,0.6953125,-0.46679688,-0.95703125,0.75,1.90625,1.609375,0.66015625,1.421875 -3,0,2,0.578125,0.41992188,-0.9765625,-0.27929688,-1.546875,-1.1796875,0.515625,1.3671875,-0.12890625,-0.91015625,1.6640625,1.390625,0.76171875,0.19921875,0.42773438,0.95703125,-0.8359375,-0.28320312,1.0625,-0.7265625,0.80078125,-0.29101562,2.28125,2.0,-0.28125,0.5546875,-0.17382812,-1.1640625,-0.57421875,-0.32617188,0.35546875,0.6484375,1.078125,2.125,-0.0016326904,-0.47460938,-0.20605469,0.5,0.60546875,-1.2734375,-1.0546875,-1.84375,1.0078125,-0.4765625,0.66796875,0.19921875,0.3515625,-0.19433594,-2.375,-0.13085938,-0.34765625,0.14355469,-1.6640625,0.95703125,1.625,-0.106933594,-0.53515625,-0.020629883,-0.53125,0.026367188,0.2421875,0.25976562,-1.40625,-1.1796875,1.1484375,1.53125,-1.078125,-0.23925781,1.0234375,0.092285156,-1.4296875,0.88671875,-0.88671875,0.49609375,0.9453125,0.65625,1.0703125,0.61328125,-0.67578125,0.39257812,-0.76953125,0.546875,1.7734375,0.037597656,1.0390625,0.057128906,-0.39453125,1.265625,0.06640625,0.828125,1.2265625,-0.90625,-1.3046875,0.52734375,-0.42578125,-0.75390625,1.5546875,-0.31640625,-0.5078125,-0.5078125,-0.921875,-1.0234375,2.40625,-0.26367188,-1.9453125,-1.6953125,0.7109375,-1.5234375,0.86328125,0.64453125,-0.26171875,-1.6171875,0.921875,-1.234375,0.27539062,-0.53125,0.028320312,0.421875,0.3515625,-1.3515625,1.34375,0.4765625,-0.31445312,-2.140625,0.45507812,2.015625,-0.734375,-0.119628906,1.796875,-1.59375,0.453125,1.234375,1.2109375,-2.625,-2.296875,-0.28710938,-1.015625,0.5625,-0.030273438,-1.4765625,0.89453125,-0.09814453,-0.28710938,0.296875,-0.40234375,0.54296875,-0.9921875,-0.30273438,-0.8046875,0.640625,-0.43945312,0.29492188,-0.69140625,-0.15136719,-0.29101562,-2.109375,-0.78125,-0.55859375,0.53515625,1.4609375,-0.80859375,-1.3828125,0.078125,-0.8515625,0.90625,-0.040039062,-2.0,-1.515625,2.046875,-0.59765625,-0.30664062,0.5390625,-1.5234375,-0.47265625,-0.22363281,-0.09326172,1.5390625,0.22265625,-0.34960938,0.11425781,0.4765625,1.7578125,0.47851562,-0.25390625,0.63671875,-0.7109375,-0.37695312,0.31640625,0.52734375,1.546875,0.8359375,0.60546875,-0.21386719,-0.50390625,0.40820312,-1.53125,0.76953125,0.12988281,1.8046875,0.21191406 -4,0,0,2.046875,0.015991211,-1.2265625,1.3203125,1.1015625,-1.015625,-0.7109375,1.546875,-0.13476562,-0.93359375,1.03125,1.0546875,1.0390625,0.23828125,-1.75,0.83984375,-0.37109375,-0.0859375,0.375,0.013183594,0.875,0.49804688,0.625,0.36523438,0.40429688,0.08935547,-1.7578125,0.33007812,-1.6640625,0.45507812,0.16796875,0.79296875,1.34375,1.765625,0.7109375,0.41015625,0.24316406,-1.2421875,0.734375,0.91015625,-0.80078125,0.203125,-1.0546875,-0.734375,0.40429688,-0.106933594,1.2890625,-0.21386719,-0.81640625,-0.78125,-0.4453125,-1.1953125,-2.203125,-1.5390625,-1.6796875,-0.8203125,0.27929688,0.29296875,0.3828125,-0.6953125,0.09716797,0.23046875,0.049072266,0.76171875,-0.21875,-1.2578125,-0.049560547,0.20996094,0.13867188,0.92578125,1.1875,-2.8125,0.037597656,-0.033935547,0.62109375,2.046875,0.40039062,-0.6484375,0.1484375,-1.9375,-0.48046875,0.29492188,0.114746094,-1.640625,1.1328125,0.6484375,0.25195312,-0.3671875,1.2734375,-0.0703125,1.9609375,0.92578125,0.002456665,0.47460938,0.49804688,-1.546875,-0.19433594,-0.63671875,-0.67578125,-0.064941406,-0.90625,1.3125,0.94140625,-0.29296875,-0.6328125,-1.875,-1.2578125,-0.1796875,-0.12109375,1.3984375,-0.37695312,0.5078125,0.38476562,-0.3203125,1.0,1.296875,-0.78125,-0.859375,0.071777344,-0.265625,-0.12597656,-0.7265625,-1.0859375,0.8359375,-1.3828125,1.5234375,-0.8984375,-1.0859375,0.1484375,0.29101562,0.6171875,-0.7890625,-0.3984375,-0.62109375,-0.84375,0.6953125,0.13183594,-1.1640625,0.48632812,-2.28125,1.96875,-1.984375,-1.1015625,0.44726562,0.76953125,0.31054688,-1.3359375,0.671875,1.4296875,2.46875,-0.029663086,0.85546875,0.45703125,0.2890625,1.53125,1.0859375,-0.953125,0.27148438,0.78125,-0.98046875,-0.18945312,1.4921875,1.0,1.15625,-0.6640625,0.88671875,-0.26757812,-0.15527344,1.125,-1.1328125,-1.203125,-1.375,0.09814453,-1.828125,-1.6484375,-0.82421875,0.35546875,-1.8515625,0.5390625,-0.09033203,-0.49023438,-0.88671875,0.5234375,-1.9921875,1.5,0.39648438,0.58984375,-0.5,-0.052001953,-2.0625,1.1171875,-0.055664062,1.15625,-0.47265625,-0.171875,2.65625,0.6171875,0.014770508,0.3046875,1.015625 -4,0,1,0.38867188,1.015625,-0.84375,-1.046875,1.4921875,0.36523438,-1.2578125,1.28125,0.83203125,-0.13476562,0.16894531,0.7109375,-0.65234375,0.14550781,-0.390625,-0.63671875,-1.1953125,0.2109375,1.8671875,1.171875,0.6640625,-0.39257812,0.9375,0.6796875,-0.84375,-0.7734375,-2.078125,-1.0625,-2.015625,-0.031982422,-0.38671875,0.07421875,0.22460938,1.0546875,-0.57421875,0.09472656,0.38085938,-0.24316406,0.546875,0.86328125,-1.6796875,0.47265625,-0.044433594,0.08251953,0.26953125,0.37890625,0.7890625,-0.875,0.703125,0.65234375,0.984375,-1.2734375,0.107910156,0.28320312,-1.9921875,-0.6484375,-0.34570312,-1.0078125,0.62109375,-1.390625,0.2890625,0.76171875,2.03125,-0.73046875,0.47851562,-1.0546875,-0.05053711,-1.2734375,-0.16992188,1.484375,0.49804688,1.4140625,0.044189453,-1.046875,-0.04296875,0.83203125,-0.37695312,0.3046875,-0.71484375,0.064941406,0.51171875,-0.9140625,0.46484375,-0.32617188,-0.37890625,-0.26367188,-0.50390625,-1.3359375,1.5078125,0.38671875,1.3125,1.75,-1.0,1.453125,-0.53515625,-0.7421875,-0.4140625,-0.028686523,-0.98046875,-0.09326172,-0.62890625,1.234375,1.6640625,-1.609375,-1.1015625,0.5859375,-0.9296875,0.11279297,0.31054688,0.021728516,0.35351562,0.3984375,0.106933594,0.38867188,1.0,-0.53125,-0.5703125,-0.3203125,0.67578125,0.07324219,0.25195312,-0.22070312,-1.0,0.22167969,-1.15625,2.078125,-0.1875,-2.203125,1.359375,2.84375,0.62109375,-1.625,-2.03125,0.47851562,-1.6875,-0.69921875,-1.1640625,-1.4765625,0.41015625,-1.6875,2.140625,-2.296875,-0.98828125,1.875,0.796875,-0.75390625,0.7734375,0.22265625,-0.37695312,1.75,0.375,-0.22753906,1.1640625,-0.37695312,0.051513672,0.83203125,1.6875,0.35351562,0.7578125,-2.046875,0.875,1.203125,0.9765625,2.203125,-1.03125,1.03125,-1.6171875,-1.421875,2.03125,-0.81640625,0.39453125,-1.515625,0.11816406,-0.1875,-0.72265625,-1.0390625,-0.49023438,-1.3828125,0.22851562,0.0050354004,-0.8203125,-0.61328125,0.8359375,0.6015625,-0.35351562,1.2265625,-0.06347656,-0.56640625,1.0625,-0.9765625,-1.109375,0.034423828,0.45898438,-0.5859375,-1.03125,1.953125,0.79296875,0.66796875,-0.421875,0.6640625 -4,0,2,1.265625,-0.80859375,-0.62890625,0.19921875,-0.29101562,-0.51171875,-0.76953125,0.8828125,-0.671875,-0.6328125,0.32617188,1.1875,1.0546875,0.5234375,-0.66015625,1.515625,-0.31445312,-0.44921875,2.265625,-0.46289062,1.6953125,0.15039062,-0.20507812,0.05078125,2.1875,-0.5390625,-0.98046875,-1.3125,-0.5546875,0.49023438,-0.29882812,0.54296875,1.03125,-0.008605957,-1.984375,-0.13183594,0.5390625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.86328125,-1.0625,-0.23925781,-0.099609375,0.921875,0.19726562,-0.6796875,-1.2578125,-0.103515625,-0.44140625,-1.0078125,-1.59375,-0.59375,-0.50390625,1.9765625,0.48632812,0.014526367,0.23632812,-0.7109375,1.328125,-0.578125,0.5234375,1.5234375,0.58203125,0.18652344,-0.48632812,-0.4609375,2.265625,-0.023071289,0.17675781,0.029907227,-0.37890625,0.28515625,1.0859375,2.375,-0.25,0.083984375,-1.6484375,-0.34375,0.88671875,-0.51953125,-0.45703125,0.111328125,1.0,-0.15722656,0.31445312,1.578125,0.55859375,1.6015625,1.578125,-0.40429688,0.28710938,0.97265625,-1.7265625,1.5703125,-0.90625,-0.034179688,0.375,-0.22167969,-0.83984375,0.19335938,-0.22460938,0.28710938,-0.92578125,-0.29882812,-0.48828125,-2.6875,-0.64453125,0.328125,0.48046875,-0.953125,0.65234375,-0.6796875,-0.61328125,-0.100097656,-0.79296875,0.96875,-0.24511719,0.21386719,0.77734375,1.15625,-0.25195312,-1.7265625,-1.2109375,0.8984375,-1.421875,-0.94921875,0.022949219,0.23046875,0.97265625,-0.30273438,-0.2890625,-1.28125,-0.60546875,-0.20898438,1.8515625,-0.62890625,-1.6796875,-2.625,2.171875,0.64453125,-1.078125,-0.12597656,-0.83984375,-0.20507812,0.671875,-0.87109375,0.296875,1.9296875,-0.36523438,-0.111816406,1.3125,-2.09375,-0.30859375,-1.6015625,1.609375,1.265625,1.40625,-0.84765625,-0.48242188,-0.8046875,0.37890625,-0.28710938,-1.140625,0.18652344,0.096191406,-1.0859375,1.8359375,-0.390625,0.30859375,-0.28125,-1.2890625,0.4609375,-0.51171875,1.5859375,0.21289062,-0.12695312,0.96484375,0.09326172,-1.328125,0.22460938,-0.020507812,0.5,0.018676758,-0.546875,1.0,-0.44335938,1.5625,-0.89453125,-0.15917969,-0.53515625,1.25,-0.67578125,-0.81640625,0.48632812,0.7109375,2.765625,2.171875,0.546875 +3,0,0,1.09375,-0.07519531,-1.4921875,0.24316406,0.8515625,-1.703125,-0.57421875,2.953125,-0.059814453,-0.76171875,0.22753906,2.6875,0.265625,-0.36328125,-0.703125,1.734375,0.27929688,-1.328125,0.35742188,0.921875,-0.24414062,-0.734375,-0.65234375,0.55078125,0.94140625,1.328125,-2.703125,0.38085938,-0.60546875,-1.0234375,0.34570312,-0.042236328,1.6953125,1.3515625,0.55078125,-0.62890625,0.99609375,-0.015625,-0.40429688,0.107910156,0.044433594,0.30859375,-0.18066406,-1.65625,-0.13964844,0.87890625,-1.5703125,0.44726562,0.072265625,0.7890625,-0.8515625,-1.421875,-1.1796875,-1.046875,-0.18945312,-0.20703125,0.74609375,0.29882812,-0.24804688,-1.0703125,0.21289062,0.71484375,1.3125,0.80859375,-1.265625,-0.32421875,0.3125,0.28320312,-0.57421875,-0.40234375,0.4140625,-0.42578125,0.50390625,-0.46679688,2.265625,3.09375,1.0390625,0.024291992,-0.8125,-0.84375,1.4453125,0.68359375,0.82421875,-1.609375,0.03930664,-0.39648438,0.47265625,1.3125,0.578125,2.203125,1.8671875,-0.765625,-1.0078125,1.359375,-0.6171875,-0.091308594,-1.390625,0.00680542,-0.14648438,0.6796875,-0.51171875,0.16601562,0.055664062,1.265625,-1.0390625,-0.18261719,-1.109375,0.03173828,-1.3828125,-0.359375,-1.1328125,-1.53125,1.765625,-1.8828125,0.61328125,-0.036865234,-1.4609375,0.6953125,-0.0054016113,-0.39257812,1.2734375,0.11328125,-0.8828125,-0.109375,-0.045166016,2.421875,-0.7578125,-0.62890625,1.40625,-1.546875,-1.1640625,-2.8125,0.10205078,-0.89453125,-1.203125,0.33984375,1.1640625,-0.27929688,0.18359375,-1.1875,0.92578125,-1.2734375,-1.3984375,-0.55078125,-0.20117188,0.53515625,-0.8203125,0.765625,-0.34960938,0.02746582,0.41796875,-0.54296875,0.21386719,-1.203125,0.28125,-0.12988281,0.96875,0.044433594,1.328125,0.58984375,-0.18164062,2.46875,0.42578125,0.94921875,-0.064453125,0.3984375,0.18652344,0.48046875,1.2734375,1.2578125,-1.03125,-0.640625,-0.88671875,0.9140625,-1.2890625,0.29492188,0.14257812,-0.29882812,0.23535156,-0.3046875,-0.546875,-0.32421875,0.49023438,-1.203125,0.546875,-0.5234375,-1.1015625,-0.90625,-0.51953125,-0.9921875,0.5703125,0.96875,-0.4296875,-0.80859375,-0.16503906,1.9296875,-0.1875,0.93359375,-1.4609375,-0.16992188 +3,0,1,-0.31054688,0.45898438,-1.703125,-1.1796875,-0.609375,0.15917969,-0.45703125,2.109375,0.5625,-0.81640625,1.7421875,1.1171875,1.453125,-0.3671875,0.08105469,0.95703125,-0.072753906,-0.93359375,0.76171875,-0.52734375,0.625,-0.012329102,0.8671875,0.96484375,-0.055419922,0.13378906,0.22558594,-0.30664062,-1.2890625,-1.7265625,-0.3125,1.6796875,1.2578125,2.65625,0.9453125,-0.14648438,0.30078125,0.24414062,0.52734375,0.74609375,-0.203125,-0.453125,0.16503906,-1.5078125,0.2734375,0.83984375,0.23828125,0.5546875,0.39648438,-0.30273438,-2.21875,0.796875,-0.9140625,0.35546875,-0.8671875,-1.015625,-0.24023438,-0.6171875,0.28320312,-0.047607422,-0.12011719,0.87109375,0.6875,1.5390625,1.4140625,0.08886719,-1.28125,0.54296875,-0.765625,0.54296875,-0.40625,0.119628906,0.48632812,0.099609375,-0.62890625,2.421875,-0.609375,0.018310547,-0.14453125,-0.032226562,-0.88671875,0.092285156,1.0,-0.8359375,0.8828125,0.76171875,-0.61328125,-0.41210938,1.0859375,-0.34570312,1.390625,-0.24707031,-0.875,0.8359375,-0.114746094,-1.1171875,0.66796875,-0.8359375,-1.3984375,-1.21875,-1.4140625,0.6796875,3.140625,-0.8125,-1.2421875,-1.1796875,-0.6796875,0.3046875,-0.15136719,0.9140625,-0.546875,-0.47070312,0.87890625,-1.25,1.765625,-0.3046875,-0.5546875,-0.359375,0.015197754,-0.64453125,-0.0015182495,-0.82421875,0.45898438,-0.43945312,-1.0234375,1.28125,-0.88671875,-1.65625,1.59375,0.52734375,-0.9296875,-0.78125,0.37304688,-0.984375,-1.734375,1.4921875,0.69140625,0.33398438,-0.43359375,-1.96875,2.5,-1.375,-1.0078125,-0.064453125,-0.1796875,-0.26367188,0.328125,-1.59375,-1.1953125,0.2421875,-0.06982422,1.59375,1.4140625,-2.109375,0.10546875,-0.18457031,0.41210938,-1.03125,1.6875,-0.578125,0.42382812,-0.27539062,0.90234375,-0.71484375,-0.01361084,2.265625,-0.9453125,-0.110839844,1.59375,-0.25585938,-1.625,-1.1015625,-2.078125,-1.5546875,-0.734375,0.484375,-0.03149414,0.0038757324,-1.328125,-1.265625,-0.13671875,-0.48632812,0.7421875,-0.029785156,0.73828125,-1.0546875,-0.45703125,0.15429688,-1.1015625,1.0859375,1.734375,-0.21386719,0.69140625,-0.46484375,-0.94921875,0.75,1.90625,1.6015625,0.65625,1.4296875 +3,0,2,0.57421875,0.41992188,-0.9765625,-0.28125,-1.546875,-1.1796875,0.51171875,1.3671875,-0.12890625,-0.9140625,1.6796875,1.40625,0.7578125,0.19824219,0.4296875,0.94921875,-0.8359375,-0.28125,1.0625,-0.7265625,0.796875,-0.2890625,2.296875,1.9921875,-0.28125,0.5546875,-0.17382812,-1.1640625,-0.578125,-0.32226562,0.35546875,0.64453125,1.0703125,2.125,-0.0005455017,-0.4765625,-0.20605469,0.5,0.60546875,-1.2734375,-1.0703125,-1.84375,1.0,-0.4765625,0.66796875,0.20019531,0.3515625,-0.19335938,-2.375,-0.12988281,-0.34960938,0.14355469,-1.65625,0.95703125,1.6328125,-0.11035156,-0.53515625,-0.022827148,-0.53125,0.029052734,0.24609375,0.26171875,-1.40625,-1.1796875,1.140625,1.53125,-1.0703125,-0.23925781,1.0234375,0.08984375,-1.4375,0.89453125,-0.890625,0.5,0.9375,0.65625,1.0703125,0.609375,-0.671875,0.39257812,-0.77734375,0.54296875,1.7578125,0.029663086,1.0390625,0.059326172,-0.39257812,1.2578125,0.06640625,0.82421875,1.2265625,-0.90625,-1.3046875,0.52734375,-0.42578125,-0.7578125,1.5625,-0.31640625,-0.51171875,-0.51171875,-0.91796875,-1.015625,2.421875,-0.26171875,-1.953125,-1.6875,0.71484375,-1.515625,0.859375,0.640625,-0.26171875,-1.609375,0.92578125,-1.2421875,0.2734375,-0.53515625,0.028930664,0.42382812,0.3515625,-1.359375,1.359375,0.47265625,-0.3125,-2.140625,0.45117188,2.03125,-0.73828125,-0.119628906,1.796875,-1.59375,0.44921875,1.25,1.203125,-2.609375,-2.28125,-0.28515625,-1.0078125,0.5625,-0.028442383,-1.4765625,0.89453125,-0.1015625,-0.29101562,0.29296875,-0.40234375,0.54296875,-0.9921875,-0.30078125,-0.80078125,0.64453125,-0.43945312,0.29882812,-0.6953125,-0.15136719,-0.2890625,-2.109375,-0.7734375,-0.55859375,0.53515625,1.46875,-0.80859375,-1.375,0.075683594,-0.84765625,0.8984375,-0.041503906,-2.0,-1.5234375,2.046875,-0.60546875,-0.31054688,0.54296875,-1.5234375,-0.47265625,-0.22558594,-0.09326172,1.546875,0.22070312,-0.3515625,0.11376953,0.47851562,1.765625,0.48046875,-0.25585938,0.63671875,-0.70703125,-0.37695312,0.31445312,0.52734375,1.5390625,0.828125,0.6015625,-0.21679688,-0.5078125,0.4140625,-1.546875,0.765625,0.13378906,1.8046875,0.20996094 +4,0,0,2.046875,0.01586914,-1.2265625,1.3046875,1.1015625,-1.015625,-0.7109375,1.5546875,-0.13476562,-0.9296875,1.03125,1.0625,1.0546875,0.23828125,-1.7578125,0.84765625,-0.37304688,-0.08251953,0.37695312,0.010253906,0.88671875,0.49609375,0.6328125,0.36523438,0.40820312,0.08544922,-1.7734375,0.33007812,-1.6640625,0.45898438,0.16015625,0.79296875,1.34375,1.7578125,0.7109375,0.41015625,0.24414062,-1.2421875,0.73046875,0.9140625,-0.80078125,0.20703125,-1.0546875,-0.73046875,0.40429688,-0.106933594,1.296875,-0.20605469,-0.81640625,-0.78125,-0.4453125,-1.1953125,-2.203125,-1.546875,-1.6796875,-0.8203125,0.28125,0.29492188,0.38085938,-0.6953125,0.099121094,0.23046875,0.046142578,0.75390625,-0.21777344,-1.2578125,-0.05053711,0.20996094,0.13378906,0.921875,1.1953125,-2.828125,0.03955078,-0.037841797,0.6171875,2.03125,0.40039062,-0.65234375,0.14941406,-1.9375,-0.48046875,0.29882812,0.114746094,-1.6328125,1.125,0.64453125,0.25195312,-0.36914062,1.2734375,-0.07128906,1.953125,0.9296875,0.00340271,0.4765625,0.50390625,-1.546875,-0.18945312,-0.6328125,-0.67578125,-0.06640625,-0.8984375,1.3203125,0.9453125,-0.29296875,-0.62890625,-1.859375,-1.25,-0.1796875,-0.119140625,1.390625,-0.37695312,0.51171875,0.38867188,-0.3203125,1.0,1.296875,-0.77734375,-0.8671875,0.07861328,-0.26757812,-0.12597656,-0.72265625,-1.0859375,0.83984375,-1.3671875,1.515625,-0.90625,-1.09375,0.14941406,0.29101562,0.609375,-0.7890625,-0.40039062,-0.6171875,-0.83984375,0.703125,0.13183594,-1.171875,0.484375,-2.28125,1.9765625,-1.984375,-1.1015625,0.4453125,0.76953125,0.30859375,-1.328125,0.66796875,1.421875,2.46875,-0.028198242,0.84765625,0.45898438,0.29101562,1.5234375,1.0859375,-0.953125,0.26953125,0.78515625,-0.97265625,-0.18945312,1.5,1.0078125,1.15625,-0.67578125,0.88671875,-0.26367188,-0.15332031,1.1171875,-1.125,-1.2109375,-1.3828125,0.100097656,-1.828125,-1.6328125,-0.828125,0.35351562,-1.8515625,0.5390625,-0.09033203,-0.4921875,-0.8828125,0.52734375,-2.0,1.5,0.39648438,0.58984375,-0.50390625,-0.052246094,-2.09375,1.125,-0.057861328,1.15625,-0.47070312,-0.16796875,2.65625,0.609375,0.014770508,0.296875,1.0234375 +4,0,1,0.38671875,1.015625,-0.84375,-1.046875,1.4921875,0.36328125,-1.2421875,1.2734375,0.828125,-0.13476562,0.16992188,0.70703125,-0.64453125,0.14550781,-0.390625,-0.62890625,-1.2109375,0.21484375,1.8671875,1.171875,0.6640625,-0.39257812,0.94921875,0.6796875,-0.84765625,-0.78515625,-2.0625,-1.0625,-2.046875,-0.030639648,-0.390625,0.075683594,0.22460938,1.046875,-0.5703125,0.096191406,0.3828125,-0.23925781,0.54296875,0.8671875,-1.6640625,0.47460938,-0.041503906,0.08251953,0.26953125,0.38085938,0.78125,-0.87109375,0.70703125,0.65234375,0.98046875,-1.28125,0.10498047,0.28320312,-2.0,-0.6484375,-0.34179688,-1.0078125,0.625,-1.390625,0.2890625,0.76171875,2.0625,-0.72265625,0.47460938,-1.0625,-0.048583984,-1.265625,-0.171875,1.484375,0.50390625,1.390625,0.048339844,-1.0390625,-0.04321289,0.8359375,-0.37890625,0.30273438,-0.71875,0.064941406,0.515625,-0.921875,0.46289062,-0.32617188,-0.37890625,-0.26367188,-0.5078125,-1.34375,1.5078125,0.38671875,1.3125,1.7421875,-0.99609375,1.4453125,-0.53515625,-0.7421875,-0.41601562,-0.023925781,-0.9765625,-0.09423828,-0.62890625,1.2265625,1.6640625,-1.6015625,-1.1015625,0.5859375,-0.9296875,0.111328125,0.31445312,0.01928711,0.3515625,0.3984375,0.10888672,0.38671875,0.99609375,-0.52734375,-0.5703125,-0.31835938,0.671875,0.07519531,0.25195312,-0.22265625,-1.0,0.22558594,-1.1640625,2.09375,-0.18554688,-2.1875,1.359375,2.84375,0.6171875,-1.6171875,-2.03125,0.49023438,-1.6875,-0.6953125,-1.1640625,-1.46875,0.40625,-1.6875,2.140625,-2.296875,-0.9921875,1.8671875,0.796875,-0.7578125,0.78125,0.22460938,-0.36914062,1.75,0.375,-0.22363281,1.171875,-0.38085938,0.052978516,0.8359375,1.6875,0.35351562,0.7578125,-2.03125,0.875,1.1875,0.97265625,2.203125,-1.03125,1.0390625,-1.6171875,-1.4140625,2.03125,-0.81640625,0.390625,-1.515625,0.11816406,-0.18847656,-0.71875,-1.046875,-0.49023438,-1.375,0.23046875,0.004486084,-0.82421875,-0.609375,0.8359375,0.60546875,-0.35546875,1.21875,-0.064453125,-0.56640625,1.0703125,-0.9765625,-1.109375,0.036865234,0.46289062,-0.5859375,-1.03125,1.9453125,0.7890625,0.66796875,-0.421875,0.66015625 +4,0,2,1.2578125,-0.80078125,-0.62890625,0.20019531,-0.296875,-0.51953125,-0.765625,0.88671875,-0.68359375,-0.62890625,0.32421875,1.1953125,1.0546875,0.52734375,-0.6640625,1.5078125,-0.3125,-0.45117188,2.265625,-0.46289062,1.6953125,0.14453125,-0.20410156,0.04711914,2.1875,-0.53515625,-0.984375,-1.3125,-0.546875,0.49023438,-0.3046875,0.5390625,1.0390625,-0.012756348,-1.984375,-0.13378906,0.5390625,-1.640625,-2.015625,-0.6953125,-1.5234375,-0.859375,-1.0625,-0.24023438,-0.10058594,0.91796875,0.19628906,-0.68359375,-1.2578125,-0.10205078,-0.44335938,-1.0078125,-1.5859375,-0.59375,-0.50390625,1.9609375,0.49023438,0.018676758,0.23535156,-0.71875,1.3203125,-0.578125,0.52734375,1.53125,0.58203125,0.18652344,-0.48828125,-0.45898438,2.265625,-0.023071289,0.18457031,0.032470703,-0.38085938,0.28320312,1.0859375,2.375,-0.25390625,0.083984375,-1.6484375,-0.34375,0.88671875,-0.5234375,-0.45703125,0.111816406,0.99609375,-0.15722656,0.31640625,1.5859375,0.5625,1.6015625,1.5859375,-0.40429688,0.28515625,0.97265625,-1.7265625,1.5546875,-0.91015625,-0.028198242,0.375,-0.21972656,-0.83984375,0.19140625,-0.22167969,0.28710938,-0.91796875,-0.29296875,-0.4921875,-2.6875,-0.64453125,0.32617188,0.484375,-0.953125,0.6484375,-0.67578125,-0.61328125,-0.099609375,-0.79296875,0.96484375,-0.24609375,0.21582031,0.77734375,1.171875,-0.25390625,-1.703125,-1.2109375,0.8984375,-1.421875,-0.9453125,0.025268555,0.23046875,0.9765625,-0.30078125,-0.29296875,-1.296875,-0.61328125,-0.20507812,1.8671875,-0.62109375,-1.6875,-2.640625,2.171875,0.640625,-1.0703125,-0.12597656,-0.83984375,-0.20703125,0.6796875,-0.87109375,0.29882812,1.9140625,-0.36328125,-0.111328125,1.3203125,-2.09375,-0.30664062,-1.5859375,1.625,1.2734375,1.3984375,-0.83984375,-0.48242188,-0.80859375,0.36914062,-0.28320312,-1.1328125,0.1875,0.099121094,-1.0859375,1.828125,-0.390625,0.30859375,-0.28125,-1.2890625,0.45703125,-0.515625,1.6015625,0.2109375,-0.123046875,0.96875,0.09033203,-1.3359375,0.22558594,-0.020263672,0.5,0.018676758,-0.5546875,1.0,-0.44335938,1.5546875,-0.89453125,-0.16308594,-0.5390625,1.25,-0.671875,-0.8203125,0.48632812,0.7109375,2.78125,2.171875,0.546875 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv index 254cb8d4..25531275 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -5,0,0,0.58984375,0.99609375,-0.34570312,-1.3515625,-0.484375,-0.91015625,-0.88671875,0.4609375,0.94921875,-1.25,-0.1953125,-0.58203125,-1.09375,1.546875,-1.6640625,0.671875,-0.33007812,0.453125,-0.81640625,0.87109375,1.671875,0.70703125,0.06347656,0.34570312,0.41015625,-0.58984375,-1.8828125,-0.15136719,-1.0,1.2109375,-0.92578125,-0.22558594,0.83984375,0.20800781,-0.22753906,0.91015625,0.40039062,-0.060546875,-0.58984375,0.6171875,-1.8046875,0.38085938,-0.12109375,0.40625,-0.0045166016,1.34375,0.703125,0.13867188,-0.40039062,1.25,-0.41796875,-0.66796875,-1.515625,-0.021972656,-0.045654297,1.8203125,0.018310547,-0.23730469,0.40429688,-1.546875,0.29101562,0.39453125,1.2890625,0.2421875,0.9765625,1.1875,-1.5859375,1.4765625,0.013549805,-0.22753906,-0.80078125,-1.2109375,-0.765625,-0.07080078,-0.58203125,0.013427734,0.4921875,0.55859375,0.3125,0.64453125,1.078125,-1.046875,1.0,0.42382812,-0.53125,0.49804688,0.34375,0.62890625,-0.5859375,-0.50390625,3.578125,0.421875,0.79296875,1.2734375,-0.52734375,1.03125,-0.97265625,0.31640625,-0.578125,0.34179688,-0.82421875,0.17285156,1.375,-1.140625,0.04663086,0.17480469,-0.38671875,-1.859375,-0.4453125,0.828125,-0.15234375,-0.40429688,0.43554688,-0.8125,-0.6171875,-0.609375,-0.34570312,0.6953125,0.42773438,-0.125,0.73046875,-1.0703125,-0.62890625,-1.8359375,-0.82421875,1.6484375,-0.35742188,-1.6328125,-1.1015625,-0.96484375,1.3125,0.25585938,-2.375,-0.58984375,-1.5625,2.0,0.13769531,-0.45507812,-1.3515625,-2.5625,1.1015625,-2.25,0.5859375,-0.092285156,0.64453125,0.35351562,-0.20507812,-0.76171875,-0.087402344,1.5546875,-1.578125,0.59375,0.60546875,-0.10253906,1.2890625,-0.061279297,0.41601562,0.9375,0.796875,0.41992188,-0.87890625,-0.6640625,-0.37109375,0.09082031,-2.6875,2.40625,0.22851562,-0.012207031,1.421875,-0.91796875,-1.9140625,-0.8671875,-1.1171875,-0.92578125,-0.44921875,1.5078125,1.1875,-1.0078125,-0.18554688,-0.91015625,0.44921875,1.3203125,0.50390625,-0.041992188,1.0078125,-1.109375,-0.13476562,1.609375,0.58203125,-1.3125,-0.23535156,1.3671875,1.2265625,0.3828125,-0.55078125,0.44140625,3.265625,-0.100097656,-0.18652344,0.44726562 -5,0,1,-0.43945312,-0.69921875,-0.38476562,-1.4296875,0.18261719,-1.203125,-0.9453125,1.6484375,0.064453125,0.8125,-0.8671875,-0.53125,1.4140625,0.87890625,-2.140625,0.92578125,-0.515625,-0.86328125,0.10058594,0.5078125,2.453125,-0.18164062,-0.84765625,0.23925781,0.484375,-0.37890625,-2.0625,-1.1328125,-0.421875,1.7421875,-0.26367188,0.50390625,-0.98046875,0.546875,-1.2578125,0.49609375,-0.37304688,-0.49609375,-0.27734375,-0.6015625,-0.94921875,0.33203125,-0.6953125,-0.28515625,0.5390625,2.5,-0.10595703,-0.31640625,1.390625,1.0625,-1.0,-2.421875,-2.328125,0.4375,-0.609375,1.671875,-0.28125,-0.80859375,-0.26367188,-1.5546875,-0.87890625,-0.80859375,1.5859375,0.9609375,1.4296875,2.015625,-1.671875,1.6328125,-0.96875,0.62109375,1.296875,-1.296875,-0.69921875,-0.26367188,-0.23632812,0.24609375,0.26367188,-0.33789062,0.7265625,0.73046875,1.5703125,-0.43359375,0.27929688,1.75,-0.84375,0.64453125,-0.8203125,0.049316406,0.13769531,-0.11621094,1.4765625,-0.36132812,1.7734375,-0.103515625,-0.14453125,0.025878906,-1.84375,0.78125,-0.5390625,0.375,-0.28710938,-0.26953125,0.35742188,0.17578125,0.3671875,1.3125,-1.671875,-2.625,-1.0703125,-0.62109375,-0.19824219,0.7734375,-1.0546875,-0.53125,-0.100097656,-2.375,-0.09667969,0.81640625,0.33007812,1.5859375,0.11230469,-0.3828125,-0.15625,-1.65625,-1.265625,0.63671875,-1.359375,-0.77734375,-0.78515625,0.4765625,2.0625,-0.75390625,-1.71875,-0.5546875,-0.28515625,0.83984375,-0.13671875,0.079589844,-0.100097656,-2.046875,-0.328125,1.609375,0.58984375,0.95703125,0.52734375,0.15820312,-0.5234375,0.20507812,-0.59375,1.0390625,0.034423828,-0.90234375,0.54296875,-0.53515625,0.4375,-0.1796875,1.40625,1.0078125,0.55078125,0.359375,-0.19433594,0.875,0.41601562,0.49804688,-1.7890625,1.7265625,0.734375,0.20996094,0.45898438,0.037597656,-0.49609375,0.63671875,-0.039794922,0.18457031,-1.1171875,1.9921875,0.18261719,-1.6640625,-0.5703125,-0.09667969,-0.66015625,0.875,0.91796875,0.3828125,0.28515625,-0.28515625,0.27734375,0.3984375,0.32226562,-0.7890625,-1.4609375,0.7578125,1.5,0.15039062,-0.55078125,0.27734375,2.375,-0.39453125,1.015625,1.109375 -5,0,2,0.90234375,0.56640625,0.828125,0.19921875,-1.140625,-0.07861328,-1.1953125,-0.034179688,2.609375,-1.453125,1.8359375,-0.03930664,0.34960938,1.3671875,-0.625,-0.42578125,-0.46484375,0.18164062,2.265625,1.1484375,0.24023438,-0.51171875,-0.15625,0.578125,-0.48242188,-0.53515625,0.6484375,-0.52734375,0.90625,0.5078125,-0.40625,-0.008117676,0.78125,-0.6796875,0.38085938,0.91796875,0.953125,-0.19042969,-0.21191406,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24707031,-0.234375,0.50390625,-0.29101562,0.87890625,0.6796875,-0.16015625,-0.265625,-0.74609375,0.95703125,0.9375,0.41015625,-0.65234375,-0.49804688,-0.578125,0.7734375,1.1953125,-0.37890625,1.2578125,0.099609375,0.640625,0.51953125,-0.20703125,-1.2578125,-1.46875,0.41210938,-0.111328125,1.3828125,0.78515625,-0.640625,-0.65234375,0.47851562,-0.52734375,0.48046875,-1.09375,1.2578125,-1.8828125,-0.70703125,0.9375,-1.1640625,-0.6953125,0.5078125,-0.36132812,-1.515625,0.48242188,0.28710938,1.5390625,1.2109375,-0.46875,0.87109375,-0.453125,0.16308594,-1.7890625,0.73828125,-0.640625,-0.36914062,-1.6875,0.609375,0.9140625,-1.296875,-0.34960938,2.171875,-0.6328125,-0.7890625,-0.375,0.78515625,-0.47265625,0.25976562,1.2265625,-0.58203125,0.26757812,0.34960938,-0.625,0.453125,-0.41210938,0.55859375,0.6875,-0.0054626465,0.4453125,-1.6796875,-1.9140625,0.55859375,-0.16894531,-0.19921875,-0.34765625,1.140625,1.0703125,0.61328125,-1.5078125,-0.265625,-1.09375,1.578125,0.16503906,-0.734375,-0.41601562,-1.75,1.6875,-0.26953125,-0.62890625,1.5078125,-0.28710938,-0.075683594,1.4609375,-0.73046875,-1.1875,0.22167969,-1.0859375,-0.16503906,2.15625,-0.578125,-0.609375,0.19628906,1.40625,-0.39648438,0.65625,0.390625,-0.75,-0.3046875,1.390625,1.2421875,-1.171875,-0.14550781,-0.6640625,-0.6171875,0.6484375,-1.6953125,-2.109375,-0.25585938,-2.984375,-0.40234375,-0.578125,2.484375,0.80078125,-1.0546875,-0.4765625,0.36132812,-0.33007812,-0.092285156,-0.068359375,-0.65625,-1.15625,0.20800781,1.1171875,0.58984375,-0.38671875,-0.8203125,-1.5234375,0.296875,0.546875,-0.8671875,-2.8125,1.2578125,3.171875,0.20019531,0.34375,0.85546875 +5,0,0,0.58984375,0.99609375,-0.34179688,-1.34375,-0.48828125,-0.9140625,-0.88671875,0.46484375,0.94921875,-1.2421875,-0.19433594,-0.5859375,-1.09375,1.5390625,-1.671875,0.66796875,-0.33789062,0.453125,-0.8125,0.87890625,1.6640625,0.703125,0.063964844,0.34765625,0.40625,-0.58984375,-1.8828125,-0.15234375,-1.0,1.2265625,-0.9296875,-0.2265625,0.84375,0.2109375,-0.22949219,0.90625,0.3984375,-0.060791016,-0.58984375,0.62109375,-1.7890625,0.38085938,-0.12158203,0.41210938,-0.0056152344,1.3359375,0.69921875,0.13671875,-0.40234375,1.2578125,-0.41796875,-0.6796875,-1.5234375,-0.018310547,-0.041503906,1.8125,0.014404297,-0.23632812,0.40429688,-1.546875,0.29296875,0.39648438,1.2890625,0.24316406,0.96875,1.1796875,-1.578125,1.46875,0.012939453,-0.22949219,-0.80078125,-1.203125,-0.76171875,-0.07324219,-0.5859375,0.015197754,0.49609375,0.5546875,0.30664062,0.6484375,1.078125,-1.046875,1.0078125,0.42773438,-0.53125,0.49609375,0.3515625,0.640625,-0.58984375,-0.50390625,3.59375,0.41992188,0.796875,1.2734375,-0.51953125,1.0390625,-0.98828125,0.31835938,-0.58203125,0.34570312,-0.828125,0.17089844,1.3828125,-1.140625,0.045410156,0.17773438,-0.390625,-1.8671875,-0.4453125,0.83203125,-0.15625,-0.40625,0.4296875,-0.80859375,-0.625,-0.609375,-0.34960938,0.6953125,0.4296875,-0.12792969,0.734375,-1.0703125,-0.62890625,-1.8515625,-0.828125,1.65625,-0.35742188,-1.625,-1.1015625,-0.96875,1.3203125,0.2578125,-2.375,-0.5859375,-1.5703125,2.015625,0.14648438,-0.453125,-1.34375,-2.5625,1.1015625,-2.21875,0.5859375,-0.092285156,0.6484375,0.35742188,-0.20410156,-0.76953125,-0.087890625,1.5625,-1.5859375,0.59765625,0.60546875,-0.09814453,1.296875,-0.06542969,0.41015625,0.9375,0.7890625,0.41601562,-0.87890625,-0.66015625,-0.37109375,0.09082031,-2.6875,2.390625,0.22851562,-0.014282227,1.4140625,-0.9140625,-1.8984375,-0.86328125,-1.1171875,-0.9296875,-0.45117188,1.5078125,1.1875,-1.0,-0.18261719,-0.91015625,0.44921875,1.3125,0.50390625,-0.041015625,1.0078125,-1.109375,-0.13085938,1.6015625,0.578125,-1.3125,-0.23730469,1.359375,1.21875,0.38085938,-0.546875,0.43554688,3.265625,-0.09814453,-0.18554688,0.45117188 +5,0,1,-0.44140625,-0.69921875,-0.38476562,-1.4375,0.17578125,-1.203125,-0.9609375,1.640625,0.057373047,0.8203125,-0.8671875,-0.53125,1.3984375,0.875,-2.15625,0.93359375,-0.51953125,-0.85546875,0.1015625,0.5078125,2.46875,-0.18164062,-0.8515625,0.2421875,0.48046875,-0.38671875,-2.078125,-1.125,-0.42578125,1.75,-0.26757812,0.50390625,-0.98046875,0.5546875,-1.25,0.49804688,-0.37695312,-0.49414062,-0.27734375,-0.6015625,-0.9453125,0.33203125,-0.6953125,-0.28710938,0.53515625,2.484375,-0.106933594,-0.3125,1.390625,1.0703125,-1.0078125,-2.421875,-2.34375,0.43554688,-0.609375,1.6640625,-0.28125,-0.80859375,-0.26757812,-1.5546875,-0.87890625,-0.80859375,1.578125,0.96484375,1.4375,2.015625,-1.671875,1.6171875,-0.953125,0.6171875,1.296875,-1.2890625,-0.6953125,-0.265625,-0.234375,0.25195312,0.265625,-0.33984375,0.7265625,0.734375,1.578125,-0.42382812,0.27929688,1.734375,-0.84375,0.64453125,-0.8203125,0.049316406,0.13476562,-0.111816406,1.4765625,-0.36523438,1.78125,-0.09765625,-0.15332031,0.025878906,-1.84375,0.78125,-0.5390625,0.37695312,-0.2890625,-0.27148438,0.36328125,0.17675781,0.36523438,1.3125,-1.671875,-2.609375,-1.0703125,-0.61328125,-0.19921875,0.78125,-1.0546875,-0.53125,-0.099121094,-2.359375,-0.09667969,0.81640625,0.33007812,1.5859375,0.11376953,-0.3828125,-0.15917969,-1.6484375,-1.2578125,0.6328125,-1.359375,-0.77734375,-0.78515625,0.48046875,2.078125,-0.7578125,-1.71875,-0.546875,-0.28515625,0.8359375,-0.13867188,0.078125,-0.09765625,-2.046875,-0.32226562,1.609375,0.58984375,0.95703125,0.52734375,0.16015625,-0.51953125,0.20507812,-0.59375,1.0234375,0.034179688,-0.90625,0.54296875,-0.52734375,0.43554688,-0.17382812,1.4140625,1.0078125,0.55078125,0.35546875,-0.19433594,0.875,0.41601562,0.5,-1.7890625,1.734375,0.73828125,0.20800781,0.46289062,0.03955078,-0.49804688,0.63671875,-0.036865234,0.18261719,-1.1171875,1.984375,0.18164062,-1.671875,-0.57421875,-0.09863281,-0.6640625,0.875,0.91796875,0.3828125,0.28320312,-0.28710938,0.28710938,0.39453125,0.3203125,-0.79296875,-1.453125,0.7578125,1.5078125,0.14746094,-0.546875,0.2734375,2.375,-0.3984375,1.0078125,1.125 +5,0,2,0.91015625,0.5625,0.828125,0.203125,-1.140625,-0.080078125,-1.1953125,-0.03112793,2.609375,-1.46875,1.8359375,-0.040283203,0.35351562,1.3671875,-0.62890625,-0.42578125,-0.46289062,0.18359375,2.265625,1.1484375,0.2421875,-0.5078125,-0.15820312,0.58203125,-0.484375,-0.53515625,0.6484375,-0.52734375,0.90625,0.5078125,-0.40625,-0.008361816,0.78125,-0.66796875,0.37695312,0.90625,0.94921875,-0.19042969,-0.20898438,1.3671875,-2.828125,-0.94140625,-1.578125,0.8203125,-0.24804688,-0.23339844,0.5078125,-0.29296875,0.87890625,0.68359375,-0.15917969,-0.26367188,-0.74609375,0.95703125,0.9296875,0.40820312,-0.65234375,-0.49804688,-0.578125,0.77734375,1.1875,-0.3828125,1.2578125,0.09765625,0.64453125,0.515625,-0.20703125,-1.2578125,-1.453125,0.41210938,-0.110839844,1.3828125,0.78125,-0.63671875,-0.65234375,0.47851562,-0.52734375,0.48046875,-1.09375,1.2578125,-1.8984375,-0.71484375,0.92578125,-1.1640625,-0.703125,0.51171875,-0.36523438,-1.5078125,0.47851562,0.28710938,1.5390625,1.1953125,-0.47070312,0.875,-0.453125,0.1640625,-1.78125,0.73046875,-0.640625,-0.36523438,-1.6953125,0.609375,0.9140625,-1.296875,-0.34570312,2.171875,-0.63671875,-0.7890625,-0.375,0.78125,-0.47460938,0.26171875,1.203125,-0.578125,0.265625,0.34960938,-0.625,0.453125,-0.41015625,0.5546875,0.6875,-0.0032958984,0.4453125,-1.6796875,-1.90625,0.5625,-0.16699219,-0.1953125,-0.34570312,1.140625,1.078125,0.61328125,-1.5078125,-0.265625,-1.1015625,1.578125,0.16601562,-0.73046875,-0.41601562,-1.75,1.671875,-0.26953125,-0.62890625,1.5,-0.28320312,-0.075683594,1.4609375,-0.73046875,-1.1796875,0.22070312,-1.078125,-0.16601562,2.140625,-0.578125,-0.60546875,0.19335938,1.40625,-0.39648438,0.65625,0.390625,-0.75,-0.30273438,1.390625,1.2421875,-1.171875,-0.14550781,-0.6640625,-0.625,0.6484375,-1.703125,-2.109375,-0.25585938,-3.0,-0.40234375,-0.578125,2.5,0.80078125,-1.046875,-0.47460938,0.36328125,-0.33398438,-0.09277344,-0.068847656,-0.6640625,-1.1640625,0.20605469,1.125,0.58984375,-0.38867188,-0.8203125,-1.5234375,0.296875,0.546875,-0.86328125,-2.796875,1.2578125,3.171875,0.20019531,0.34570312,0.859375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv index 76476f56..dc74307e 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv @@ -1,7 +1,7 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -6,0,1,0.13964844,0.10888672,0.27539062,-0.88671875,1.390625,0.61328125,0.48828125,1.0234375,-0.4921875,-1.046875,0.12597656,-0.26757812,0.57421875,0.35351562,-1.25,0.48632812,-0.546875,-1.9140625,1.1328125,-0.53125,-0.087402344,-0.6640625,1.28125,0.5234375,-1.234375,-1.5078125,-0.953125,-0.8671875,-1.7890625,0.44335938,-0.64453125,-0.26171875,0.010559082,-0.4609375,-0.5234375,0.953125,0.91796875,-0.73828125,-1.4609375,1.578125,-1.8046875,0.030517578,-0.07519531,0.09814453,0.38671875,0.5234375,0.63671875,-0.69921875,0.38085938,1.8515625,-1.1953125,-1.6015625,-0.98046875,1.1015625,-2.421875,0.091796875,-0.21289062,-0.80859375,1.328125,-1.6953125,1.734375,0.18359375,0.29296875,0.30273438,-0.5078125,-0.06640625,-1.0703125,0.16210938,0.546875,1.84375,0.05517578,-0.31835938,0.57421875,-0.13574219,-0.66796875,1.8515625,0.76953125,1.1796875,-1.7734375,-0.5234375,1.28125,0.89453125,-0.11816406,0.12207031,-0.63671875,-0.20117188,-0.46484375,1.4453125,-0.36132812,0.98828125,1.3828125,0.21386719,-0.921875,0.36523438,-1.4296875,0.22363281,-0.59375,-0.640625,0.625,-0.890625,-2.375,-0.18066406,2.515625,0.78125,-0.79296875,0.0051574707,0.063964844,-1.0703125,0.49609375,0.98828125,0.703125,0.036376953,0.56640625,-0.796875,0.49414062,-0.31640625,-0.47851562,-0.34765625,-0.484375,-1.1796875,0.71484375,-0.78515625,0.60546875,-1.5703125,-0.22460938,1.265625,-1.3203125,-2.40625,0.013122559,0.17382812,-0.18652344,0.044921875,-0.025512695,-1.3671875,-1.03125,-0.13671875,-0.65234375,0.25390625,0.20507812,-1.7265625,3.375,-0.40429688,1.3125,1.109375,-1.234375,1.0703125,-0.6015625,-0.671875,-2.515625,1.1015625,-0.30859375,-0.03564453,1.0625,-0.484375,-1.078125,-1.2109375,0.38085938,1.359375,1.015625,1.4375,-0.26367188,-0.011962891,1.8203125,1.2421875,-1.78125,1.6640625,-1.671875,-0.24511719,2.125,-0.20117188,0.36914062,-0.40234375,0.099609375,0.62109375,0.68359375,0.041992188,-0.86328125,-0.84765625,0.859375,-0.61328125,-0.3046875,-0.890625,0.13964844,0.86328125,0.1484375,0.54296875,0.59375,0.037841797,0.87109375,-1.8046875,0.09863281,1.375,1.2578125,0.28710938,0.43554688,-0.17871094,1.6875,0.15625,1.40625,0.51953125 -6,0,2,0.828125,0.83203125,-0.3984375,0.84375,1.40625,0.62890625,-0.3515625,0.39257812,-0.10253906,-1.4375,1.109375,-0.19335938,0.53125,-0.54296875,-0.99609375,-0.37109375,-0.81640625,-0.39648438,1.1171875,1.25,0.20410156,-1.8984375,0.36132812,0.35742188,-0.90234375,-1.609375,-1.3828125,-0.34960938,0.22753906,0.057861328,-0.23632812,-0.328125,1.71875,0.20703125,-0.33007812,-0.16992188,0.31445312,-0.6015625,-0.26367188,0.78125,-0.6015625,0.71875,-0.26757812,1.2578125,-0.27929688,0.25390625,-0.734375,-1.0234375,0.43554688,1.7109375,1.140625,-1.7734375,-0.49414062,-0.26757812,-1.0859375,-2.140625,0.3828125,1.3046875,-0.11279297,-1.015625,1.609375,1.59375,1.734375,-0.34570312,-1.0390625,-0.71875,0.05029297,-2.078125,-0.30078125,0.85546875,0.38476562,0.17382812,1.3515625,-1.4921875,0.45898438,0.51953125,0.18359375,-0.20214844,-1.71875,0.39648438,-0.2734375,0.71875,-0.016235352,0.32226562,-0.76171875,0.734375,-2.828125,0.45507812,1.578125,1.2109375,1.4296875,1.203125,1.125,0.22558594,-0.6328125,-0.9375,-0.87109375,1.25,-0.22753906,0.123535156,-0.54296875,-0.40039062,0.890625,-0.11279297,-1.0390625,0.78125,-0.98828125,-0.18164062,-0.34765625,-0.328125,0.18261719,1.96875,0.13378906,-0.63671875,-0.57421875,0.6796875,-0.4140625,0.33398438,-0.46484375,0.83984375,0.052490234,-1.09375,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.59765625,-0.24511719,0.765625,-0.04272461,-2.5,-0.93359375,0.73828125,-1.3125,2.546875,-0.31445312,0.013977051,1.8203125,-1.3203125,1.4296875,-0.75,0.12158203,1.171875,0.6640625,-0.20117188,-0.22558594,-0.28320312,-0.56640625,0.203125,0.4296875,-0.32226562,-1.34375,1.0234375,-1.140625,1.2265625,0.69921875,-0.36523438,-0.39257812,1.0546875,0.78515625,1.1484375,1.0078125,3.03125,-2.671875,1.6171875,-2.25,1.1796875,0.16796875,-0.29492188,-1.7734375,-1.84375,0.7265625,-0.6484375,0.65625,0.27734375,-0.66796875,-1.96875,1.40625,-0.35351562,0.09667969,0.15332031,0.83984375,-0.11230469,-1.015625,1.578125,-0.49609375,-0.26757812,0.5078125,-0.36914062,0.65625,1.546875,-0.31835938,-1.046875,-0.8125,-0.46289062,-0.46875,-0.19726562,0.19726562,0.51953125 -6,0,3,-0.9140625,0.041748047,-0.34179688,1.09375,1.3671875,-0.032226562,-0.43945312,1.0625,0.59765625,-0.66015625,0.27539062,1.84375,-0.2890625,-0.65625,-0.97265625,0.22949219,-0.00076293945,-1.046875,1.96875,-0.48046875,-0.123046875,-2.0625,-0.8125,0.53515625,-0.11816406,-0.62890625,0.71484375,0.73828125,0.68359375,0.40820312,0.44140625,0.2734375,1.328125,-0.515625,2.125,0.88671875,1.171875,-0.82421875,-1.015625,0.6640625,-0.40429688,-0.80859375,-1.8671875,-1.875,-0.828125,0.890625,-0.3984375,-0.94140625,0.86328125,1.75,1.140625,-0.5703125,-1.1484375,0.31054688,-0.12109375,-2.03125,0.35546875,1.515625,0.43359375,0.15722656,0.78125,0.83203125,-0.3515625,1.2890625,-1.3203125,0.5546875,-1.3359375,-1.9140625,0.47851562,-0.049316406,0.8046875,1.4453125,1.765625,-1.7734375,0.8203125,0.921875,-0.08251953,-0.69140625,-0.2890625,0.92578125,-1.03125,0.5703125,-0.28710938,-0.91015625,0.04296875,-1.359375,-0.4375,-0.19238281,1.5625,0.859375,1.4453125,-0.13574219,-0.20117188,1.0859375,-0.3203125,-0.27734375,-0.8203125,-0.9609375,-1.0234375,-0.21289062,0.083984375,0.40625,1.390625,1.1875,-1.0703125,1.3671875,0.61328125,0.19824219,-0.049560547,0.5234375,0.74609375,0.84375,2.484375,-1.578125,0.77734375,-0.35546875,-1.53125,0.66796875,-0.83984375,-0.7890625,1.328125,0.4609375,-0.671875,-0.64453125,-1.296875,2.015625,-0.06689453,0.7578125,0.8203125,-1.28125,1.484375,-2.328125,0.15722656,0.19335938,-0.110839844,0.8984375,0.72265625,-0.12988281,0.41210938,-1.0,1.5703125,0.26367188,-1.4453125,1.3828125,-0.36523438,-1.015625,0.49804688,-0.31640625,-0.1875,-1.25,0.7890625,0.22851562,2.671875,-0.921875,-0.8125,0.0390625,0.140625,-1.59375,1.1953125,0.12207031,0.63671875,0.59765625,1.1328125,0.47851562,0.0546875,0.73046875,0.020141602,0.98046875,-0.33398438,-0.005218506,-1.1953125,-1.40625,-2.359375,-1.2890625,-0.41796875,0.99609375,-0.49804688,-1.53125,-1.640625,-0.953125,0.7109375,0.16601562,0.25585938,-1.234375,-0.83984375,-1.21875,-0.25,0.19042969,-1.2578125,1.078125,-1.2109375,-0.030517578,-0.8671875,-1.1875,-1.609375,0.578125,-0.1875,0.21386719,0.203125,1.609375 -7,0,0,0.8671875,1.2109375,-0.828125,-0.984375,-1.28125,0.32617188,-0.5,1.5234375,-0.7890625,-0.71484375,1.625,0.010192871,-0.060791016,-0.28125,-1.15625,1.640625,-0.28515625,-1.5234375,0.15039062,-0.66796875,1.34375,0.84375,0.47851562,1.125,0.88671875,-0.85546875,-0.9296875,-1.9453125,-1.6171875,-0.62890625,-1.2578125,2.453125,1.015625,2.515625,-0.16992188,0.14550781,-0.40234375,-0.59765625,0.86328125,0.5546875,-0.62890625,0.28125,0.640625,0.20019531,1.3046875,0.36328125,0.58203125,0.27539062,0.6484375,-1.1796875,-0.83984375,-0.5078125,-1.890625,-1.609375,-1.03125,0.59375,0.08642578,-0.33789062,0.31445312,-0.75,-0.19042969,-0.515625,1.8515625,1.0,1.1796875,0.7109375,-0.890625,-0.13964844,0.22460938,0.24707031,-0.03857422,-0.36132812,-0.6796875,-0.18847656,-0.47265625,-0.15332031,-0.23339844,-0.13085938,-0.014709473,0.45898438,-0.48046875,-0.5390625,1.1328125,0.4296875,1.109375,1.2890625,-0.97265625,0.53125,1.359375,-1.015625,1.3359375,0.40625,0.546875,1.2109375,0.21875,-1.3125,0.765625,1.0,-1.71875,-0.29882812,-0.64453125,0.328125,2.234375,-1.7734375,-1.2265625,-1.484375,-2.0,-1.7265625,-0.48242188,0.93359375,0.21289062,-1.0078125,0.09082031,0.57421875,0.52734375,0.203125,0.008850098,-0.984375,-0.265625,0.22753906,-0.36914062,-0.31054688,-1.4375,-1.0,-1.46875,1.0625,-1.7578125,-0.55078125,1.0390625,0.98828125,0.90625,-0.484375,-1.140625,-0.64453125,-1.7578125,0.83203125,1.109375,-0.18359375,-1.6640625,-2.421875,1.4765625,-0.55078125,-0.640625,0.59765625,0.4765625,0.18261719,-0.24902344,-0.52734375,0.71875,1.5390625,-0.75390625,0.27539062,1.2734375,-1.2109375,0.67578125,0.3125,0.59375,-0.86328125,0.77734375,-1.1328125,0.796875,-0.40234375,0.64453125,-0.6484375,-1.140625,3.46875,-0.7578125,-1.1953125,0.33007812,-1.0234375,-1.0,-0.47460938,-1.28125,-1.1171875,-0.38085938,1.171875,0.78515625,-0.72265625,1.0390625,-0.49804688,0.39453125,0.3515625,0.73046875,-1.2890625,1.1484375,-0.053710938,0.08935547,0.28515625,0.25,0.3828125,2.03125,-0.14257812,-0.033203125,-0.7265625,-0.011657715,0.84375,2.0625,1.796875,0.84765625,0.66796875 -7,0,1,0.58984375,1.3984375,-0.609375,-0.51171875,-1.9140625,-0.7421875,1.0234375,0.9765625,0.18652344,0.0099487305,0.11669922,0.44335938,-0.01940918,-0.82421875,-0.51953125,1.796875,-1.2578125,-0.82421875,0.34960938,0.27929688,0.45703125,-0.6015625,1.046875,0.3671875,1.2734375,-0.50390625,-1.984375,-0.71875,0.5,-0.6328125,-0.73828125,-0.008544922,2.21875,-0.43359375,-0.62109375,-0.07519531,0.25976562,-1.28125,-0.515625,-0.6875,-0.42773438,0.18847656,0.29882812,-0.09863281,-0.73046875,0.15234375,0.37890625,0.6640625,-0.27734375,-0.20019531,0.89453125,0.546875,-3.765625,-0.15625,1.15625,1.71875,-0.15332031,0.34375,0.47070312,-0.100097656,-1.0546875,-1.1171875,1.0390625,0.328125,1.6015625,-0.375,-0.23828125,-0.34765625,0.04638672,0.35546875,-0.32617188,1.125,-0.045654297,-0.9921875,2.4375,0.83203125,0.88671875,-0.12792969,-1.4453125,0.34179688,0.59765625,-0.27929688,1.5234375,0.123046875,0.37304688,0.003616333,-1.203125,1.125,1.59375,-0.24609375,0.87890625,-0.34570312,1.0,0.52734375,-1.2734375,0.57421875,-0.84375,1.8203125,-1.3984375,0.35742188,0.33789062,0.9765625,-0.5546875,0.71484375,-0.625,-0.21484375,-1.6875,-1.75,-0.29296875,0.33398438,-1.4609375,-2.3125,0.31445312,-0.20410156,-1.4140625,1.15625,-0.66796875,1.0390625,-1.140625,-0.54296875,-0.13085938,0.41210938,-1.203125,-1.328125,0.484375,0.765625,-1.6328125,-0.09716797,-0.18652344,-1.1328125,1.1484375,-0.23730469,-0.110839844,-2.1875,-0.765625,-0.6640625,1.65625,0.048095703,-1.421875,-2.78125,1.453125,0.15136719,-1.3984375,-1.203125,-0.328125,-0.44921875,0.40625,0.77734375,2.21875,1.9765625,-0.5390625,-1.0703125,0.17578125,-0.3203125,-0.23925781,-1.2734375,1.234375,0.08105469,0.99609375,0.09765625,-0.27148438,-0.072753906,0.22949219,-0.40234375,-1.15625,0.62890625,-0.515625,-1.375,0.58203125,0.46875,0.84375,0.61328125,-0.796875,0.80859375,-1.6015625,1.1328125,2.75,-0.35546875,1.6796875,1.90625,-0.25390625,0.65234375,0.625,-1.0234375,0.047607422,-1.03125,0.49023438,-0.087890625,0.84375,-0.04272461,0.18847656,0.96875,-0.0099487305,0.3125,-1.09375,-0.20214844,0.014343262,1.9921875,1.0703125,0.028198242 -7,0,2,0.9609375,0.671875,-1.0234375,-0.95703125,0.057128906,-0.6953125,-0.15332031,1.9921875,0.82421875,0.625,-1.3359375,1.84375,-0.36328125,1.15625,0.025634766,0.765625,0.62890625,-0.35546875,0.87890625,1.4140625,0.22949219,-0.049072266,-0.74609375,-0.33203125,-0.6171875,1.3828125,-0.64453125,0.028442383,0.8984375,-2.203125,0.5703125,1.796875,1.1796875,0.16113281,-0.59375,-0.4140625,0.22558594,1.4609375,0.080078125,-0.107421875,-0.9765625,-0.07910156,-0.53125,0.49023438,0.26171875,0.05053711,-0.24121094,-0.33203125,0.071777344,0.18066406,0.09472656,-1.390625,-0.35742188,-0.73828125,0.07324219,0.49804688,-1.6484375,0.15332031,0.28515625,-0.64453125,-1.1484375,-0.6875,1.6171875,-0.33789062,0.45117188,0.55859375,0.25195312,-0.18261719,-0.29492188,1.046875,0.22167969,2.078125,-0.859375,-0.7421875,0.86328125,1.5859375,0.16601562,-0.81640625,-2.84375,0.70703125,1.6015625,0.578125,1.859375,2.0625,-0.66796875,0.80078125,-0.6796875,-0.65625,-0.55859375,1.375,1.140625,1.0,-0.16992188,1.2890625,0.020141602,0.111816406,-1.640625,1.03125,-0.12890625,0.45507812,0.66796875,-0.50390625,-0.484375,-0.34375,-0.59765625,0.9375,-0.3359375,-0.9140625,-1.71875,-0.875,-0.17871094,-0.47265625,1.59375,-0.83203125,-0.15039062,-1.078125,0.21484375,0.19238281,0.8984375,0.8046875,1.234375,0.06225586,-1.0703125,-0.78515625,-0.46679688,0.73828125,-0.17675781,-0.23925781,1.2265625,-0.53125,0.8984375,-1.859375,0.29492188,-1.1640625,-1.359375,0.765625,-1.578125,0.16601562,0.22460938,-2.046875,0.071777344,-0.13378906,-1.375,1.234375,-0.23828125,0.06689453,-0.53515625,1.7109375,0.21679688,-1.875,1.5859375,-2.109375,0.34375,0.20410156,0.15039062,0.46679688,1.421875,0.68359375,-0.54296875,0.23535156,-1.578125,2.234375,-0.8359375,0.796875,1.1484375,-0.78515625,-0.484375,-2.875,0.23535156,1.25,-0.55859375,0.73828125,-1.1171875,1.3203125,0.091308594,1.703125,0.23144531,-1.4921875,-0.765625,0.82421875,-0.61328125,0.51953125,-0.41601562,0.47070312,-1.7109375,0.29882812,-1.6796875,-2.046875,1.484375,-0.9765625,-1.5703125,-0.92578125,-1.5234375,0.48242188,0.06982422,0.064941406,0.24121094,-0.37890625,-0.859375,1.265625 +6,0,1,0.13867188,0.10498047,0.2734375,-0.88671875,1.3984375,0.6171875,0.49023438,1.0234375,-0.4921875,-1.0390625,0.12792969,-0.26757812,0.58203125,0.35351562,-1.25,0.48828125,-0.546875,-1.90625,1.1328125,-0.5234375,-0.0859375,-0.6640625,1.28125,0.53125,-1.234375,-1.5078125,-0.95703125,-0.86328125,-1.7890625,0.44335938,-0.63671875,-0.26367188,0.011413574,-0.46484375,-0.52734375,0.953125,0.9140625,-0.7421875,-1.4609375,1.578125,-1.7890625,0.029663086,-0.075683594,0.09765625,0.38476562,0.52734375,0.63671875,-0.703125,0.37304688,1.8671875,-1.1953125,-1.6015625,-0.96875,1.109375,-2.421875,0.09277344,-0.21289062,-0.8046875,1.328125,-1.71875,1.75,0.18945312,0.29101562,0.29882812,-0.51171875,-0.064453125,-1.078125,0.16601562,0.546875,1.8359375,0.060791016,-0.31640625,0.57421875,-0.13769531,-0.671875,1.8671875,0.765625,1.1796875,-1.78125,-0.5234375,1.2890625,0.890625,-0.12011719,0.12109375,-0.63671875,-0.20214844,-0.46679688,1.4609375,-0.35742188,0.9921875,1.3828125,0.21289062,-0.921875,0.36914062,-1.421875,0.22460938,-0.59375,-0.640625,0.62109375,-0.890625,-2.375,-0.17675781,2.515625,0.77734375,-0.79296875,0.0059814453,0.06689453,-1.0703125,0.48632812,0.984375,0.703125,0.03515625,0.5703125,-0.796875,0.49023438,-0.31835938,-0.47460938,-0.35351562,-0.48632812,-1.1875,0.7109375,-0.7890625,0.6015625,-1.5703125,-0.22363281,1.2578125,-1.3203125,-2.421875,0.016235352,0.17382812,-0.18554688,0.044921875,-0.022460938,-1.3671875,-1.03125,-0.13769531,-0.65625,0.25390625,0.20605469,-1.734375,3.375,-0.40625,1.3125,1.1015625,-1.2265625,1.0703125,-0.6015625,-0.6640625,-2.515625,1.1015625,-0.31054688,-0.032958984,1.0625,-0.48828125,-1.09375,-1.1953125,0.38085938,1.3515625,1.015625,1.421875,-0.26171875,-0.012084961,1.828125,1.2421875,-1.78125,1.65625,-1.671875,-0.24511719,2.109375,-0.20117188,0.3671875,-0.40234375,0.09765625,0.6171875,0.6875,0.0390625,-0.8671875,-0.84375,0.86328125,-0.609375,-0.3046875,-0.88671875,0.13964844,0.85546875,0.14746094,0.5390625,0.59765625,0.040527344,0.86328125,-1.828125,0.095703125,1.375,1.2578125,0.28710938,0.4375,-0.18261719,1.6796875,0.15722656,1.4140625,0.51953125 +6,0,2,0.82421875,0.82421875,-0.3984375,0.84375,1.390625,0.62890625,-0.35546875,0.39257812,-0.10058594,-1.4375,1.109375,-0.19238281,0.53515625,-0.54296875,-1.0,-0.37109375,-0.81640625,-0.40039062,1.109375,1.2421875,0.20507812,-1.8984375,0.36132812,0.359375,-0.90234375,-1.609375,-1.3828125,-0.35742188,0.22753906,0.05883789,-0.23632812,-0.32617188,1.71875,0.20800781,-0.328125,-0.16894531,0.31640625,-0.6015625,-0.26367188,0.78125,-0.60546875,0.71484375,-0.26953125,1.2734375,-0.27539062,0.25195312,-0.734375,-1.0234375,0.43945312,1.71875,1.140625,-1.765625,-0.4921875,-0.26367188,-1.0859375,-2.125,0.38476562,1.3046875,-0.109375,-1.015625,1.6171875,1.59375,1.734375,-0.34960938,-1.0390625,-0.7109375,0.05029297,-2.078125,-0.30273438,0.85546875,0.3828125,0.16992188,1.34375,-1.4921875,0.4609375,0.515625,0.18457031,-0.20605469,-1.7109375,0.39648438,-0.27539062,0.71875,-0.018310547,0.31835938,-0.76171875,0.7421875,-2.828125,0.453125,1.5859375,1.203125,1.421875,1.1953125,1.125,0.22753906,-0.6328125,-0.9375,-0.875,1.2421875,-0.22949219,0.123535156,-0.54296875,-0.39453125,0.89453125,-0.11621094,-1.0390625,0.77734375,-0.9921875,-0.18164062,-0.34960938,-0.33203125,0.18261719,1.96875,0.13378906,-0.6328125,-0.57421875,0.671875,-0.41601562,0.33203125,-0.46484375,0.83984375,0.05102539,-1.1015625,-1.15625,-0.59375,-1.328125,1.78125,-0.70703125,-0.59765625,-0.2421875,0.76171875,-0.04321289,-2.515625,-0.9375,0.7421875,-1.3203125,2.546875,-0.31835938,0.01574707,1.8125,-1.3125,1.421875,-0.75390625,0.119628906,1.171875,0.6640625,-0.20214844,-0.22460938,-0.27929688,-0.56640625,0.20019531,0.43164062,-0.32421875,-1.34375,1.015625,-1.1328125,1.234375,0.6953125,-0.36523438,-0.38867188,1.046875,0.78515625,1.15625,1.0078125,3.046875,-2.671875,1.609375,-2.234375,1.1875,0.16699219,-0.29492188,-1.7734375,-1.828125,0.734375,-0.65234375,0.65625,0.27539062,-0.66796875,-1.984375,1.40625,-0.35742188,0.10107422,0.15136719,0.84375,-0.115722656,-1.0234375,1.578125,-0.48828125,-0.26953125,0.5078125,-0.36523438,0.66015625,1.546875,-0.31640625,-1.0390625,-0.82421875,-0.47070312,-0.46875,-0.20019531,0.19726562,0.51953125 +6,0,3,-0.91015625,0.041748047,-0.34375,1.078125,1.359375,-0.030395508,-0.43945312,1.0546875,0.59765625,-0.6640625,0.27539062,1.84375,-0.29296875,-0.6640625,-0.97265625,0.23046875,0.0031280518,-1.046875,1.9765625,-0.4765625,-0.12402344,-2.0625,-0.8203125,0.54296875,-0.12060547,-0.62890625,0.7109375,0.73828125,0.69140625,0.41015625,0.4375,0.2734375,1.3203125,-0.52734375,2.140625,0.88671875,1.1796875,-0.828125,-1.015625,0.6640625,-0.40429688,-0.80859375,-1.859375,-1.875,-0.82421875,0.8984375,-0.40039062,-0.94140625,0.8515625,1.7578125,1.125,-0.5703125,-1.15625,0.31445312,-0.123046875,-2.03125,0.35351562,1.515625,0.43359375,0.15722656,0.78125,0.828125,-0.3515625,1.28125,-1.3125,0.55078125,-1.3359375,-1.90625,0.47460938,-0.0546875,0.8203125,1.4453125,1.7734375,-1.7734375,0.81640625,0.921875,-0.08251953,-0.69140625,-0.2890625,0.9296875,-1.0390625,0.578125,-0.29101562,-0.9140625,0.041992188,-1.3671875,-0.43554688,-0.19140625,1.5703125,0.859375,1.4453125,-0.13769531,-0.20117188,1.0859375,-0.31835938,-0.27539062,-0.82421875,-0.9609375,-1.03125,-0.21972656,0.083984375,0.40625,1.3984375,1.1796875,-1.0703125,1.359375,0.6171875,0.19921875,-0.049804688,0.51953125,0.75390625,0.83984375,2.5,-1.59375,0.76953125,-0.35351562,-1.53125,0.671875,-0.84765625,-0.7890625,1.3125,0.46289062,-0.671875,-0.6484375,-1.296875,2.03125,-0.06982422,0.76953125,0.8125,-1.2734375,1.4765625,-2.3125,0.15332031,0.19628906,-0.10644531,0.8984375,0.7265625,-0.12988281,0.41015625,-0.99609375,1.5625,0.265625,-1.453125,1.3828125,-0.36523438,-1.0234375,0.49414062,-0.31640625,-0.18554688,-1.2578125,0.78515625,0.22363281,2.671875,-0.92578125,-0.8203125,0.040527344,0.13964844,-1.578125,1.1875,0.119140625,0.63671875,0.59765625,1.125,0.48046875,0.052734375,0.7265625,0.024047852,0.984375,-0.33203125,-0.004211426,-1.1875,-1.3984375,-2.359375,-1.28125,-0.4140625,0.9921875,-0.5,-1.5234375,-1.6328125,-0.953125,0.703125,0.15820312,0.25585938,-1.234375,-0.828125,-1.21875,-0.25,0.18945312,-1.2578125,1.078125,-1.21875,-0.030395508,-0.87109375,-1.1953125,-1.6171875,0.578125,-0.1875,0.21777344,0.20019531,1.609375 +7,0,0,0.86328125,1.2109375,-0.83203125,-0.984375,-1.2890625,0.32617188,-0.49804688,1.515625,-0.7890625,-0.70703125,1.625,0.0032348633,-0.060791016,-0.28125,-1.15625,1.6328125,-0.2890625,-1.5234375,0.15039062,-0.6640625,1.34375,0.84765625,0.47851562,1.125,0.8984375,-0.859375,-0.93359375,-1.9375,-1.6171875,-0.63671875,-1.2578125,2.453125,1.0078125,2.515625,-0.16796875,0.14746094,-0.40234375,-0.59765625,0.8671875,0.5625,-0.625,0.28125,0.63671875,0.20019531,1.3046875,0.36328125,0.578125,0.26953125,0.65625,-1.1796875,-0.84765625,-0.51171875,-1.890625,-1.609375,-1.03125,0.59765625,0.08544922,-0.33984375,0.3125,-0.74609375,-0.19042969,-0.515625,1.8515625,1.0,1.1796875,0.70703125,-0.88671875,-0.13574219,0.22558594,0.25195312,-0.036376953,-0.36132812,-0.671875,-0.18847656,-0.4765625,-0.15820312,-0.234375,-0.13183594,-0.014892578,0.45507812,-0.48242188,-0.546875,1.1328125,0.42382812,1.109375,1.2890625,-0.97265625,0.52734375,1.375,-1.0234375,1.3359375,0.41015625,0.546875,1.2109375,0.21972656,-1.3203125,0.765625,0.99609375,-1.703125,-0.296875,-0.6484375,0.33007812,2.21875,-1.7734375,-1.2265625,-1.4765625,-2.015625,-1.7109375,-0.47851562,0.93359375,0.20996094,-1.0078125,0.088378906,0.5703125,0.53125,0.20117188,0.0043640137,-0.98046875,-0.27148438,0.22851562,-0.3671875,-0.31054688,-1.4375,-1.0,-1.4609375,1.0625,-1.75,-0.55078125,1.0390625,0.984375,0.9140625,-0.484375,-1.1328125,-0.6484375,-1.7734375,0.82421875,1.1171875,-0.18359375,-1.6640625,-2.4375,1.484375,-0.5546875,-0.640625,0.59375,0.4765625,0.18652344,-0.24804688,-0.5234375,0.72265625,1.5390625,-0.75390625,0.2734375,1.2734375,-1.21875,0.6796875,0.3125,0.59375,-0.859375,0.76953125,-1.140625,0.80078125,-0.40234375,0.64453125,-0.64453125,-1.140625,3.453125,-0.76171875,-1.1796875,0.328125,-1.015625,-1.0,-0.47070312,-1.2890625,-1.1171875,-0.38476562,1.1796875,0.7890625,-0.72265625,1.046875,-0.49804688,0.39453125,0.3515625,0.73046875,-1.2890625,1.1484375,-0.053710938,0.09082031,0.28515625,0.24609375,0.37890625,2.03125,-0.14257812,-0.033203125,-0.7265625,-0.009887695,0.8359375,2.0625,1.796875,0.8515625,0.66796875 +7,0,1,0.5859375,1.3984375,-0.61328125,-0.51953125,-1.9140625,-0.7578125,1.0234375,0.9765625,0.18945312,0.010009766,0.115234375,0.43945312,-0.021118164,-0.828125,-0.51171875,1.796875,-1.2578125,-0.82421875,0.34960938,0.28125,0.45703125,-0.6015625,1.046875,0.3671875,1.2890625,-0.515625,-1.984375,-0.72265625,0.5,-0.62890625,-0.73828125,-0.009216309,2.21875,-0.43554688,-0.625,-0.076660156,0.26171875,-1.28125,-0.51953125,-0.68359375,-0.4296875,0.18847656,0.29882812,-0.103027344,-0.73046875,0.15332031,0.37890625,0.65625,-0.28125,-0.20117188,0.89453125,0.546875,-3.75,-0.15527344,1.15625,1.71875,-0.14941406,0.34375,0.47070312,-0.095703125,-1.0546875,-1.1171875,1.0390625,0.33007812,1.59375,-0.375,-0.234375,-0.34765625,0.040771484,0.35742188,-0.32226562,1.125,-0.045410156,-0.984375,2.453125,0.83203125,0.87890625,-0.13183594,-1.4375,0.34179688,0.59765625,-0.28125,1.53125,0.125,0.37304688,0.0048828125,-1.203125,1.1328125,1.6015625,-0.24316406,0.8828125,-0.3515625,1.0,0.52734375,-1.265625,0.57421875,-0.83984375,1.828125,-1.3984375,0.35742188,0.33789062,0.97265625,-0.5625,0.71875,-0.6171875,-0.20898438,-1.6796875,-1.75,-0.29101562,0.33398438,-1.46875,-2.296875,0.30859375,-0.20117188,-1.4140625,1.15625,-0.66796875,1.03125,-1.140625,-0.546875,-0.12988281,0.41210938,-1.203125,-1.3359375,0.49023438,0.76171875,-1.625,-0.10107422,-0.18554688,-1.125,1.140625,-0.23339844,-0.11035156,-2.171875,-0.765625,-0.6640625,1.6484375,0.048339844,-1.4296875,-2.796875,1.4453125,0.14941406,-1.390625,-1.21875,-0.33007812,-0.44921875,0.40039062,0.77734375,2.25,1.9765625,-0.5390625,-1.0703125,0.17675781,-0.31835938,-0.23925781,-1.2734375,1.234375,0.084472656,0.9921875,0.096191406,-0.2734375,-0.07128906,0.22753906,-0.40429688,-1.1484375,0.625,-0.515625,-1.375,0.578125,0.46679688,0.84765625,0.609375,-0.8046875,0.8046875,-1.6015625,1.1328125,2.75,-0.35351562,1.6796875,1.8984375,-0.25195312,0.65234375,0.62109375,-1.0234375,0.043945312,-1.046875,0.4921875,-0.087402344,0.83984375,-0.043701172,0.18652344,0.96875,-0.011230469,0.31445312,-1.09375,-0.20605469,0.013671875,2.0,1.0703125,0.027832031 +7,0,2,0.9609375,0.67578125,-1.0078125,-0.953125,0.055419922,-0.69921875,-0.1484375,1.9921875,0.8203125,0.62109375,-1.328125,1.8359375,-0.36328125,1.15625,0.020263672,0.7734375,0.62109375,-0.35742188,0.875,1.421875,0.234375,-0.05126953,-0.75390625,-0.328125,-0.6171875,1.375,-0.64453125,0.026977539,0.8984375,-2.203125,0.5625,1.7890625,1.1796875,0.15917969,-0.59765625,-0.41601562,0.22753906,1.4609375,0.08642578,-0.104003906,-0.984375,-0.07714844,-0.52734375,0.49414062,0.265625,0.05053711,-0.23925781,-0.33203125,0.06738281,0.17675781,0.09814453,-1.390625,-0.359375,-0.7421875,0.06982422,0.50390625,-1.6484375,0.15429688,0.28320312,-0.63671875,-1.1484375,-0.69140625,1.6171875,-0.34179688,0.453125,0.55859375,0.25390625,-0.17871094,-0.296875,1.0390625,0.22070312,2.09375,-0.86328125,-0.7421875,0.8671875,1.5859375,0.171875,-0.8125,-2.859375,0.7109375,1.6171875,0.578125,1.84375,2.0625,-0.66796875,0.8046875,-0.6796875,-0.65234375,-0.5625,1.375,1.1484375,1.0,-0.16992188,1.2890625,0.021362305,0.11230469,-1.6328125,1.03125,-0.13183594,0.453125,0.66796875,-0.50390625,-0.48828125,-0.34375,-0.59765625,0.94140625,-0.34375,-0.90625,-1.7265625,-0.87109375,-0.17871094,-0.47070312,1.5859375,-0.83203125,-0.15136719,-1.0859375,0.21484375,0.19140625,0.8984375,0.80859375,1.2265625,0.06738281,-1.078125,-0.78125,-0.46875,0.73046875,-0.18164062,-0.23535156,1.21875,-0.54296875,0.8984375,-1.859375,0.29296875,-1.1640625,-1.359375,0.7734375,-1.5703125,0.16601562,0.22167969,-2.0625,0.0703125,-0.13085938,-1.359375,1.2421875,-0.24121094,0.06738281,-0.53515625,1.71875,0.21972656,-1.8828125,1.5703125,-2.09375,0.34765625,0.20410156,0.14941406,0.46679688,1.4140625,0.68359375,-0.54296875,0.23535156,-1.578125,2.25,-0.83203125,0.796875,1.15625,-0.78515625,-0.484375,-2.859375,0.23925781,1.25,-0.55859375,0.7421875,-1.1171875,1.3203125,0.092285156,1.703125,0.22558594,-1.4921875,-0.765625,0.82421875,-0.609375,0.51953125,-0.41992188,0.47070312,-1.7109375,0.29882812,-1.6953125,-2.046875,1.484375,-0.97265625,-1.5703125,-0.92578125,-1.5390625,0.484375,0.072265625,0.06689453,0.23925781,-0.38085938,-0.85546875,1.265625 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv index 439e2692..24fc7499 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -8,0,1,1.078125,0.25195312,-0.16601562,-0.296875,0.109375,-0.42578125,-1.28125,0.7890625,0.23632812,0.46484375,0.13574219,0.921875,1.2421875,-0.13476562,-0.55859375,-0.13183594,-1.078125,-2.25,0.9375,0.21386719,1.7890625,-1.0234375,-1.2890625,-0.2109375,1.40625,-0.30078125,-0.71484375,-0.013305664,0.2578125,-0.14648438,-0.84765625,-0.61328125,1.9453125,-0.94921875,-0.93359375,-0.41601562,0.09472656,-1.140625,-2.578125,-0.453125,0.44726562,-0.87890625,-0.71484375,-0.29882812,-1.21875,0.5234375,-0.3203125,0.5,1.765625,1.4296875,-0.27148438,0.36328125,-1.6640625,1.2578125,-0.10595703,0.38671875,-0.5,1.8828125,0.71484375,-0.82421875,-0.69140625,-1.9453125,0.76953125,0.80078125,1.328125,1.46875,-1.4609375,-1.875,0.41601562,0.9375,1.421875,1.2265625,-0.41992188,-0.94921875,2.90625,1.78125,-0.3515625,-0.11669922,-0.5,0.26953125,-0.34765625,0.26757812,0.0007362366,2.34375,-0.48046875,-0.58984375,-0.41601562,2.5,1.0546875,0.91015625,0.8125,0.5390625,0.8203125,0.06933594,-0.84765625,-0.13769531,0.5546875,1.0390625,0.5078125,-0.9453125,0.19824219,1.0390625,-0.46484375,0.37109375,-0.16796875,0.76953125,-1.171875,-1.15625,0.375,0.33398438,-1.015625,-0.15820312,-0.55859375,-1.9453125,-1.78125,0.10253906,-0.625,1.2265625,-1.2578125,0.44140625,0.61328125,0.41210938,-2.203125,-1.359375,-0.8046875,0.18847656,-0.5625,0.43945312,0.6640625,-0.62890625,1.7578125,-0.25390625,0.14550781,-1.5078125,-0.65234375,0.5703125,0.55859375,0.19726562,-0.75,-2.5,1.0703125,2.59375,-0.7109375,-1.21875,-1.265625,1.234375,0.31640625,-0.15332031,0.31640625,0.6015625,0.56640625,0.98046875,0.6328125,-0.6171875,-0.77734375,-1.4609375,0.29296875,-0.049316406,1.171875,-0.64453125,0.35546875,0.57421875,0.080078125,-1.0703125,0.5859375,-0.28515625,0.57421875,-0.74609375,-1.2890625,1.2890625,0.14550781,0.65234375,-0.8984375,-0.52734375,-1.6953125,1.84375,-0.17871094,-0.58203125,0.07861328,-0.48632812,1.25,0.40625,0.828125,-0.68359375,-1.0703125,-1.5546875,0.18652344,0.36328125,0.6953125,0.625,-0.30078125,0.36328125,0.796875,-0.93359375,-0.6328125,-1.8828125,-0.6953125,1.25,1.03125,0.72265625 -8,0,2,0.87109375,0.984375,-0.17871094,0.12597656,0.08203125,-0.60546875,0.765625,1.0703125,1.078125,-0.80859375,1.3203125,1.5546875,0.053710938,-1.03125,-0.14355469,0.30078125,-0.67578125,-1.0078125,0.8359375,0.3359375,0.026489258,-0.36328125,-0.24609375,1.640625,-0.18164062,0.14550781,-2.78125,0.21191406,0.3203125,0.7890625,-0.5078125,-0.90625,1.3671875,-0.78125,0.57421875,0.59375,0.53515625,-0.93359375,-0.21972656,1.0859375,-1.2109375,1.109375,-0.34179688,-2.421875,-0.8671875,-0.7890625,0.25976562,-0.22949219,1.3046875,1.6015625,0.5546875,-0.47070312,-0.92578125,0.6796875,0.46875,0.26757812,0.19921875,-0.5078125,-1.0703125,-0.036376953,1.4765625,0.20703125,0.6328125,0.859375,0.50390625,-0.43554688,-0.14160156,0.55859375,-1.3671875,0.66796875,-0.09863281,0.5390625,0.84765625,-0.42578125,1.8359375,0.8046875,1.3984375,1.046875,-0.35546875,0.36914062,-0.0859375,-1.125,0.83984375,-1.4375,-0.45507812,0.3671875,-0.03173828,-0.036132812,1.75,0.1875,1.34375,-0.5390625,-1.03125,1.2421875,-1.09375,-0.59765625,-2.75,0.49023438,-0.6015625,-0.3671875,-1.453125,1.171875,0.38085938,0.19140625,-0.58984375,1.84375,-0.75,0.16601562,-1.1640625,0.30859375,-0.56640625,-0.42578125,0.91796875,-0.26367188,0.36328125,1.765625,-0.5078125,0.5546875,-0.15917969,-0.44335938,0.57421875,-0.62890625,-0.4921875,-0.94140625,-1.328125,2.109375,-1.2578125,-1.0546875,0.71875,-1.265625,1.3203125,-1.2109375,-0.6875,-0.76171875,-1.59375,0.65234375,1.09375,-0.52734375,0.057373047,-2.46875,1.703125,-0.9453125,-1.7578125,1.3671875,0.71484375,-0.04272461,0.875,-0.89453125,-1.171875,0.9140625,-1.296875,-0.70703125,0.68359375,-1.0234375,1.109375,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.07128906,1.65625,2.453125,1.4609375,-1.53125,0.100097656,-0.5390625,0.084472656,0.859375,-0.16113281,-1.015625,-0.296875,-1.6328125,-0.14746094,-1.5390625,1.0390625,0.9140625,-1.1640625,0.29492188,0.046875,-1.2734375,-1.4140625,0.54296875,-1.0,-0.45703125,0.24902344,0.022705078,0.56640625,-1.6171875,-1.625,-0.234375,2.46875,-0.3671875,-0.9609375,-1.546875,1.03125,1.4921875,1.09375,-0.421875,-0.59375 -8,0,3,1.25,1.5546875,0.10205078,-0.26171875,-1.609375,-0.016479492,-1.328125,1.4375,1.40625,-2.640625,1.7578125,-0.69140625,0.03100586,1.1171875,-0.49609375,0.46679688,0.29101562,0.41210938,1.859375,-0.016845703,-0.8046875,-0.034179688,-0.39453125,-0.25195312,-0.8671875,-1.0546875,-0.71484375,-0.22363281,0.09765625,-0.20605469,-0.25195312,0.01928711,1.0546875,0.71875,0.099609375,0.28710938,1.421875,0.14550781,-0.8828125,1.6875,-2.3125,-0.22265625,0.114746094,2.140625,0.26367188,0.921875,-0.87109375,0.71484375,-0.0625,0.87890625,-0.6484375,-0.09033203,-0.34960938,-0.25390625,-0.4140625,-0.45703125,0.19628906,0.8125,-1.1328125,0.16796875,0.546875,0.65234375,1.65625,-0.41601562,1.359375,0.43359375,-0.36328125,-1.2578125,-0.98046875,0.076660156,-0.2734375,-0.234375,0.6171875,0.04272461,-0.9140625,0.734375,0.14160156,0.34375,-1.53125,1.3203125,-0.81640625,-0.66796875,0.95703125,-1.2421875,-0.17773438,0.3359375,0.24609375,-1.3046875,0.10058594,0.51171875,1.953125,1.5859375,-0.35546875,1.0546875,-0.89453125,-0.14648438,-0.6796875,0.0028839111,0.19433594,-0.703125,-2.390625,0.87890625,1.71875,-1.7421875,0.03149414,1.5390625,-1.109375,-0.46484375,0.053466797,0.20800781,-0.08691406,-0.3125,1.328125,-0.7265625,0.06738281,0.080078125,-0.37890625,0.24707031,-0.25390625,0.859375,1.640625,-0.56640625,-0.15332031,-1.796875,-0.51171875,0.20214844,0.39257812,-1.5546875,-0.11767578,1.3828125,-0.890625,1.1171875,-1.3984375,0.6484375,-2.09375,1.515625,0.9140625,-0.59765625,-0.7109375,-2.328125,1.5859375,-1.1640625,-0.765625,0.03930664,-0.18945312,0.203125,0.48046875,-0.5859375,-0.76171875,1.2421875,-1.40625,0.29492188,0.578125,-0.114746094,-0.31835938,0.09765625,1.1953125,0.34179688,0.53125,0.03564453,-0.66796875,0.16796875,0.44140625,0.13085938,-1.2578125,0.84375,-0.6015625,0.67578125,0.671875,-2.015625,-2.109375,-1.328125,-2.171875,-0.49414062,0.34765625,2.28125,0.36914062,-0.5234375,0.036865234,-0.44726562,0.64453125,-0.27734375,-0.25390625,0.21191406,-0.38085938,0.14160156,0.91796875,1.453125,-0.47460938,0.048583984,0.084472656,0.2578125,0.77734375,-1.421875,-3.140625,1.265625,3.359375,0.6484375,-0.44726562,0.4921875 +8,0,1,1.0703125,0.24707031,-0.1640625,-0.29101562,0.11035156,-0.42382812,-1.28125,0.7890625,0.23632812,0.46875,0.13476562,0.91796875,1.2421875,-0.13476562,-0.56640625,-0.13183594,-1.078125,-2.234375,0.93359375,0.21582031,1.78125,-1.03125,-1.2890625,-0.20996094,1.40625,-0.30273438,-0.71875,-0.009643555,0.2578125,-0.14453125,-0.84375,-0.6171875,1.9453125,-0.953125,-0.9296875,-0.41796875,0.09423828,-1.140625,-2.578125,-0.46484375,0.44726562,-0.87890625,-0.70703125,-0.29882812,-1.2265625,0.5234375,-0.31445312,0.50390625,1.7578125,1.4375,-0.27148438,0.359375,-1.65625,1.2578125,-0.103027344,0.3828125,-0.5,1.8828125,0.7109375,-0.82421875,-0.6953125,-1.9453125,0.76953125,0.8046875,1.3359375,1.4765625,-1.4609375,-1.8671875,0.41992188,0.9375,1.421875,1.21875,-0.41992188,-0.94921875,2.90625,1.78125,-0.35546875,-0.11279297,-0.49414062,0.2734375,-0.34375,0.26757812,0.0005950928,2.359375,-0.48046875,-0.58984375,-0.41601562,2.5,1.0625,0.92578125,0.8125,0.5390625,0.81640625,0.06640625,-0.84375,-0.13378906,0.55078125,1.0390625,0.51171875,-0.94140625,0.1953125,1.0390625,-0.47070312,0.36914062,-0.16601562,0.7734375,-1.171875,-1.140625,0.37890625,0.33007812,-1.0234375,-0.15527344,-0.5625,-1.9453125,-1.78125,0.10498047,-0.6328125,1.21875,-1.265625,0.4453125,0.61328125,0.41796875,-2.21875,-1.3671875,-0.8046875,0.18652344,-0.5625,0.44140625,0.6640625,-0.6328125,1.7734375,-0.25,0.14453125,-1.5,-0.65625,0.56640625,0.55078125,0.19335938,-0.74609375,-2.5,1.078125,2.578125,-0.71484375,-1.21875,-1.265625,1.2265625,0.32421875,-0.15625,0.32421875,0.60546875,0.5625,0.98046875,0.6328125,-0.62109375,-0.78125,-1.453125,0.29101562,-0.05419922,1.171875,-0.65625,0.35742188,0.57421875,0.078125,-1.0625,0.5859375,-0.28320312,0.578125,-0.74609375,-1.28125,1.265625,0.14160156,0.65234375,-0.8984375,-0.53125,-1.703125,1.84375,-0.17773438,-0.578125,0.07519531,-0.48242188,1.25,0.40625,0.81640625,-0.68359375,-1.0703125,-1.5625,0.18847656,0.36328125,0.69140625,0.62890625,-0.30078125,0.36132812,0.796875,-0.9375,-0.640625,-1.84375,-0.6953125,1.2578125,1.0234375,0.7265625 +8,0,2,0.875,0.9921875,-0.1796875,0.12597656,0.080566406,-0.609375,0.765625,1.0703125,1.0703125,-0.80078125,1.328125,1.546875,0.05419922,-1.03125,-0.14648438,0.296875,-0.6796875,-1.0078125,0.83984375,0.33398438,0.026733398,-0.36523438,-0.24511719,1.625,-0.18164062,0.14550781,-2.78125,0.21484375,0.3125,0.7890625,-0.5078125,-0.8984375,1.3671875,-0.77734375,0.578125,0.59375,0.53515625,-0.9375,-0.22070312,1.078125,-1.203125,1.1171875,-0.33984375,-2.40625,-0.8671875,-0.78125,0.2578125,-0.23046875,1.296875,1.609375,0.5625,-0.47460938,-0.92578125,0.67578125,0.47265625,0.265625,0.19921875,-0.515625,-1.0625,-0.035888672,1.4765625,0.2109375,0.6328125,0.86328125,0.50390625,-0.4296875,-0.140625,0.5625,-1.359375,0.67578125,-0.10058594,0.54296875,0.84765625,-0.42773438,1.8359375,0.8046875,1.3828125,1.0546875,-0.35351562,0.37109375,-0.08251953,-1.1328125,0.8359375,-1.4453125,-0.453125,0.36523438,-0.03149414,-0.032470703,1.7421875,0.19042969,1.3515625,-0.5390625,-1.03125,1.2421875,-1.1015625,-0.59375,-2.734375,0.49414062,-0.6015625,-0.37109375,-1.4609375,1.1640625,0.38085938,0.19433594,-0.59765625,1.8359375,-0.75390625,0.16699219,-1.15625,0.30664062,-0.56640625,-0.42773438,0.91796875,-0.26171875,0.36328125,1.765625,-0.5078125,0.5546875,-0.15917969,-0.44140625,0.57421875,-0.625,-0.49023438,-0.9375,-1.328125,2.109375,-1.265625,-1.046875,0.71875,-1.2890625,1.3203125,-1.21875,-0.6875,-0.76953125,-1.6015625,0.65234375,1.09375,-0.5234375,0.05810547,-2.46875,1.703125,-0.94921875,-1.765625,1.375,0.71484375,-0.04248047,0.8671875,-0.89453125,-1.1640625,0.9140625,-1.2890625,-0.703125,0.68359375,-1.015625,1.1171875,0.35546875,1.6796875,-0.8671875,1.1640625,-0.20800781,-0.0703125,1.6484375,2.453125,1.453125,-1.5234375,0.09863281,-0.5390625,0.084472656,0.859375,-0.15722656,-1.015625,-0.29492188,-1.640625,-0.1484375,-1.5390625,1.0390625,0.9140625,-1.1640625,0.29492188,0.050048828,-1.2734375,-1.40625,0.54296875,-1.0,-0.45507812,0.24804688,0.021484375,0.56640625,-1.6171875,-1.6328125,-0.23339844,2.46875,-0.3671875,-0.97265625,-1.5625,1.03125,1.4921875,1.09375,-0.41992188,-0.59375 +8,0,3,1.2578125,1.5546875,0.1015625,-0.25585938,-1.5859375,-0.018310547,-1.328125,1.4375,1.4140625,-2.65625,1.7578125,-0.6875,0.03100586,1.1171875,-0.4921875,0.46484375,0.2890625,0.40625,1.859375,-0.014160156,-0.8046875,-0.036132812,-0.390625,-0.25,-0.86328125,-1.0625,-0.71484375,-0.22070312,0.100097656,-0.20605469,-0.25,0.018432617,1.0546875,0.71484375,0.09716797,0.29101562,1.40625,0.1484375,-0.88671875,1.6953125,-2.3125,-0.22363281,0.114746094,2.140625,0.25976562,0.91796875,-0.87109375,0.7109375,-0.061767578,0.87890625,-0.64453125,-0.09033203,-0.3515625,-0.25,-0.41210938,-0.45507812,0.19433594,0.80859375,-1.1328125,0.16601562,0.546875,0.65625,1.65625,-0.40820312,1.3671875,0.43164062,-0.36328125,-1.265625,-0.98046875,0.07763672,-0.27148438,-0.23730469,0.6171875,0.037841797,-0.91015625,0.734375,0.14160156,0.34179688,-1.53125,1.3203125,-0.81640625,-0.66015625,0.953125,-1.2265625,-0.1796875,0.33398438,0.24902344,-1.3046875,0.1015625,0.51171875,1.9453125,1.5859375,-0.35742188,1.0546875,-0.89453125,-0.14648438,-0.68359375,0.004760742,0.19335938,-0.703125,-2.390625,0.87890625,1.7265625,-1.7421875,0.03515625,1.546875,-1.109375,-0.46289062,0.0546875,0.20410156,-0.091308594,-0.3125,1.3359375,-0.73046875,0.063964844,0.080566406,-0.38085938,0.24902344,-0.25390625,0.859375,1.6484375,-0.56640625,-0.15429688,-1.796875,-0.515625,0.20117188,0.39257812,-1.5546875,-0.11816406,1.390625,-0.890625,1.109375,-1.3984375,0.6484375,-2.078125,1.515625,0.90625,-0.6015625,-0.7109375,-2.328125,1.5859375,-1.171875,-0.76171875,0.033691406,-0.19140625,0.203125,0.48046875,-0.59375,-0.7578125,1.234375,-1.3984375,0.29492188,0.58203125,-0.119628906,-0.31835938,0.09667969,1.1953125,0.34570312,0.52734375,0.037353516,-0.67578125,0.16894531,0.4375,0.12695312,-1.265625,0.83984375,-0.6015625,0.6796875,0.671875,-2.015625,-2.109375,-1.3359375,-2.171875,-0.49023438,0.34765625,2.296875,0.3671875,-0.5234375,0.037597656,-0.4453125,0.64453125,-0.27929688,-0.2578125,0.20898438,-0.38476562,0.14257812,0.91796875,1.4375,-0.4765625,0.045410156,0.080566406,0.25976562,0.78125,-1.4140625,-3.125,1.2578125,3.359375,0.6484375,-0.44921875,0.49609375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv index 90369015..c18d2d33 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv @@ -1,4 +1,4 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 -9,0,0,0.78515625,1.0,-0.059326172,0.65234375,0.359375,-0.50390625,0.3359375,1.0859375,-0.15917969,-1.0546875,0.72265625,-0.24804688,-1.1328125,-0.8515625,-1.046875,0.14648438,-1.0859375,1.3671875,-0.43164062,0.30273438,-0.024780273,0.80078125,-0.33203125,-0.13867188,-0.61328125,-1.4765625,-2.765625,0.3125,-0.6328125,0.5078125,-1.0390625,-1.109375,-0.38671875,0.21972656,-0.63671875,-0.8984375,0.51171875,-1.265625,0.63671875,-0.10107422,-0.7578125,0.43554688,0.40039062,1.5859375,0.29882812,0.6953125,0.059570312,0.296875,-2.15625,0.80859375,1.28125,-1.2890625,-2.3125,-0.14160156,-0.92578125,-0.4453125,0.07861328,1.0078125,-0.27734375,-0.8125,-0.07714844,1.265625,-0.076660156,-0.171875,1.3046875,-0.58984375,0.33789062,-0.0034332275,0.22070312,0.94140625,0.18554688,-2.0,0.8984375,-1.1015625,-0.13476562,1.2734375,1.7578125,-0.1328125,0.22949219,-0.36328125,0.8984375,0.47265625,-0.17578125,-1.0859375,-0.46289062,1.0078125,0.07128906,-1.3203125,0.14355469,0.60546875,0.625,1.6875,0.88671875,0.59765625,-0.28125,-0.20898438,-1.1015625,0.80078125,0.12158203,0.6015625,1.6640625,0.671875,-0.90625,-0.21191406,0.5,-0.34960938,-0.9453125,-0.53125,0.42382812,-0.16308594,-1.59375,2.015625,0.078125,0.50390625,-0.359375,0.16796875,-0.4765625,1.5625,-0.3046875,1.4453125,1.46875,-1.296875,-0.78515625,-1.03125,0.025268555,0.20703125,0.3359375,-1.0546875,-2.203125,0.18457031,0.22167969,-0.78515625,-0.8515625,0.21289062,0.24511719,1.0,-0.44140625,-1.1015625,1.2421875,-1.890625,1.3515625,-0.54296875,-0.4375,-0.12060547,1.1796875,0.33398438,-0.96875,-0.115722656,2.21875,3.484375,-0.27734375,-0.74609375,-2.359375,2.203125,-0.48828125,0.23925781,0.20214844,1.265625,-1.5,0.4453125,-0.95703125,1.0546875,0.671875,1.75,-1.9375,0.234375,-1.2578125,0.828125,1.21875,-1.140625,-0.06640625,-1.0703125,1.8359375,-0.80078125,-0.48046875,0.0024719238,0.038330078,-0.7265625,1.2265625,0.17480469,-0.5625,0.31054688,1.53125,0.30273438,-0.06640625,0.43554688,1.3046875,0.50390625,0.953125,-2.96875,-0.12597656,-0.103027344,0.011413574,-1.2421875,-1.4140625,1.6640625,1.234375,-0.5390625,-0.890625,-0.50390625 -9,0,1,-0.16210938,1.3515625,-0.18554688,-0.9375,0.55859375,0.32421875,0.58203125,-0.81640625,1.578125,-1.453125,2.109375,-1.2890625,-0.4609375,-0.17871094,-0.43554688,-0.48242188,-1.0625,0.029785156,0.9296875,0.63671875,0.30664062,-0.98046875,1.2578125,0.07373047,-1.6171875,-2.0625,-0.64453125,-0.014831543,-0.08935547,1.328125,0.62109375,-0.2734375,0.703125,0.83984375,0.114746094,-0.17382812,0.59375,0.65234375,-0.30859375,0.00042533875,-0.45117188,0.56640625,1.0546875,0.90625,-0.72265625,0.99609375,0.07324219,-1.6484375,-0.703125,2.234375,0.578125,-1.109375,-0.609375,0.84765625,0.34960938,-0.515625,-0.0063476562,1.09375,0.55078125,-0.171875,0.96875,1.671875,0.20996094,0.49804688,0.99609375,0.24511719,-0.8515625,-0.90234375,0.24316406,0.9765625,-1.1015625,0.49609375,0.38476562,-0.53515625,-0.53515625,-0.34375,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.09033203,-0.040039062,2.171875,0.28320312,0.023925781,-2.203125,-0.55078125,0.671875,-0.13183594,2.203125,0.045898438,1.328125,-0.72265625,-0.11621094,-0.049804688,-1.2109375,0.20996094,-0.80859375,-1.5390625,-0.41210938,-0.6171875,1.4921875,-0.45507812,-0.54296875,1.109375,-2.046875,0.33007812,-0.21484375,-0.34179688,-0.4921875,2.109375,-0.43164062,-2.609375,-0.58203125,0.65625,-0.984375,0.84765625,-0.25,0.13378906,0.5625,-1.171875,0.026733398,-2.21875,-1.265625,2.296875,-1.46875,-0.70703125,-0.4140625,-0.38085938,1.0859375,0.07324219,-1.0546875,-0.03540039,-1.078125,2.375,-0.54296875,0.625,0.72265625,-0.8984375,1.421875,0.22167969,0.17089844,2.203125,0.06591797,-1.0703125,-0.053222656,-0.75,-1.265625,0.6484375,-0.49804688,-0.65234375,-0.68359375,0.052490234,-0.86328125,-0.05078125,0.19726562,-0.27148438,-1.2265625,2.296875,-0.69921875,-0.6484375,1.5,1.125,-2.421875,1.90625,-0.78515625,2.03125,-0.029541016,-0.14746094,-1.2421875,-0.02709961,-0.48242188,-1.125,0.6015625,0.3359375,-0.11328125,-2.6875,-0.5,-0.94140625,1.28125,0.578125,0.5078125,0.796875,-0.98828125,1.7734375,-1.28125,-0.25390625,-0.71484375,0.12695312,0.48632812,0.6640625,0.36523438,0.41796875,-0.12597656,-1.734375,0.2109375,-0.034423828,1.0,0.7265625 -9,0,2,-0.31445312,0.34179688,0.55859375,-2.0625,-0.025634766,0.67578125,1.8046875,-0.69921875,1.046875,-0.98046875,1.1171875,-1.359375,1.3671875,-0.6484375,-0.54296875,0.6953125,-0.045166016,-0.62890625,2.09375,-0.7421875,-0.78515625,-1.4140625,1.25,-0.15234375,-2.484375,-1.6171875,0.18164062,-0.7890625,-0.51171875,1.65625,0.52734375,-0.546875,-0.118652344,0.099121094,1.1015625,0.78125,-0.20898438,-0.13964844,-1.8203125,0.953125,-1.546875,0.51953125,0.94921875,0.97265625,0.6015625,1.375,-0.984375,-1.140625,-0.2265625,1.609375,-1.78125,0.25390625,-1.0078125,1.8671875,-0.25,0.625,0.20898438,0.27734375,-0.045166016,-0.34375,0.60546875,-0.045654297,-0.703125,0.52734375,0.6328125,1.4140625,-0.78515625,-1.1015625,-0.984375,2.109375,-1.1015625,-0.5703125,0.083496094,0.87109375,-0.40625,0.76953125,1.5703125,0.19335938,-0.21386719,0.22753906,1.125,0.4609375,-0.16113281,1.25,0.17089844,-0.82421875,-0.66015625,-1.2734375,-0.5703125,-0.328125,0.87109375,0.03540039,-0.83984375,-1.0,-1.546875,0.48242188,-0.5703125,-0.60546875,-0.25585938,-0.625,-1.3828125,0.0625,2.3125,1.1875,0.17480469,1.7890625,-0.92578125,-0.10107422,0.53125,-0.78515625,0.40039062,1.015625,0.90625,-2.578125,0.546875,-0.34179688,0.28710938,0.19042969,-0.76953125,0.5390625,1.75,-0.38671875,1.2421875,-2.0625,0.83203125,0.15625,-2.140625,-1.6015625,-0.19628906,0.24804688,0.7109375,0.6875,0.32421875,-1.5078125,0.578125,0.40429688,-0.25195312,0.6015625,-0.328125,-0.62890625,2.546875,1.671875,-0.25390625,1.71875,-0.875,-0.36132812,0.19042969,-0.15136719,-2.421875,0.66015625,-0.5390625,-0.140625,-0.4140625,-1.2578125,-1.234375,-0.92578125,0.33789062,-0.07519531,-0.055908203,2.09375,-2.078125,-0.67578125,1.1640625,-0.014465332,-1.6875,-0.109375,-0.17285156,1.3515625,0.024536133,0.46679688,0.34960938,0.50390625,-1.375,-0.30078125,0.035888672,-0.14941406,0.765625,-1.2890625,-0.25390625,0.111328125,-0.26953125,-1.140625,1.0546875,0.79296875,-0.640625,-0.17480469,0.3671875,0.0234375,-1.1484375,-0.17480469,-0.54296875,1.203125,1.265625,0.1328125,-0.029907227,-0.45703125,1.3359375,-0.6953125,2.046875,0.58203125 +9,0,0,0.7890625,1.0,-0.060302734,0.65234375,0.36132812,-0.49804688,0.3359375,1.0859375,-0.15917969,-1.0625,0.72265625,-0.25,-1.125,-0.859375,-1.0546875,0.1484375,-1.0859375,1.375,-0.43554688,0.29882812,-0.024902344,0.79296875,-0.33398438,-0.13867188,-0.609375,-1.4765625,-2.765625,0.3125,-0.63671875,0.51171875,-1.046875,-1.1171875,-0.38476562,0.21972656,-0.63671875,-0.8984375,0.515625,-1.2578125,0.63671875,-0.103515625,-0.7578125,0.44140625,0.40039062,1.59375,0.29882812,0.69921875,0.05444336,0.296875,-2.15625,0.8125,1.28125,-1.2890625,-2.296875,-0.14355469,-0.92578125,-0.44726562,0.07861328,1.0,-0.2734375,-0.8125,-0.07714844,1.265625,-0.072753906,-0.17089844,1.3125,-0.5859375,0.33789062,-0.0016403198,0.22070312,0.94140625,0.18261719,-2.015625,0.90234375,-1.1171875,-0.1328125,1.265625,1.765625,-0.13085938,0.23046875,-0.3671875,0.90234375,0.47265625,-0.17480469,-1.09375,-0.46289062,1.0078125,0.072265625,-1.3203125,0.14453125,0.609375,0.62109375,1.6796875,0.88671875,0.59765625,-0.27734375,-0.20898438,-1.09375,0.80078125,0.12109375,0.60546875,1.6796875,0.67578125,-0.90625,-0.2109375,0.50390625,-0.35351562,-0.94921875,-0.52734375,0.42382812,-0.1640625,-1.59375,2.015625,0.07763672,0.5,-0.36328125,0.16796875,-0.4765625,1.5703125,-0.30078125,1.4453125,1.4609375,-1.296875,-0.77734375,-1.03125,0.02331543,0.20605469,0.33789062,-1.0546875,-2.203125,0.18164062,0.22167969,-0.76953125,-0.85546875,0.21289062,0.2421875,1.0,-0.44335938,-1.1015625,1.2421875,-1.90625,1.3515625,-0.5390625,-0.44140625,-0.118652344,1.1796875,0.33789062,-0.97265625,-0.119140625,2.203125,3.46875,-0.27734375,-0.75,-2.375,2.21875,-0.48828125,0.2421875,0.203125,1.2578125,-1.4921875,0.44335938,-0.95703125,1.0625,0.66015625,1.75,-1.9296875,0.23535156,-1.265625,0.828125,1.2109375,-1.1484375,-0.06640625,-1.0703125,1.8359375,-0.80078125,-0.47851562,0.0023651123,0.03930664,-0.7265625,1.21875,0.17675781,-0.5546875,0.31054688,1.546875,0.30664062,-0.068359375,0.44335938,1.296875,0.50390625,0.94921875,-2.96875,-0.125,-0.1015625,0.0075683594,-1.2421875,-1.3984375,1.6640625,1.234375,-0.5390625,-0.88671875,-0.5078125 +9,0,1,-0.16308594,1.359375,-0.18359375,-0.94140625,0.55859375,0.32421875,0.57421875,-0.81640625,1.578125,-1.4609375,2.109375,-1.296875,-0.46289062,-0.18066406,-0.43164062,-0.48242188,-1.0546875,0.03125,0.9296875,0.640625,0.30664062,-0.984375,1.2578125,0.07373047,-1.609375,-2.046875,-0.65234375,-0.01586914,-0.09667969,1.328125,0.62890625,-0.27539062,0.703125,0.83984375,0.115722656,-0.17578125,0.59375,0.64453125,-0.3046875,-0.001373291,-0.45117188,0.5703125,1.0546875,0.90625,-0.7265625,1.0,0.07128906,-1.6484375,-0.70703125,2.25,0.578125,-1.1171875,-0.609375,0.84765625,0.34765625,-0.51171875,-0.008117676,1.09375,0.546875,-0.171875,0.96875,1.6875,0.20800781,0.5,1.0,0.24511719,-0.8515625,-0.8984375,0.24511719,0.9765625,-1.1015625,0.5,0.390625,-0.5390625,-0.53515625,-0.34179688,-0.22949219,-0.55078125,-0.6328125,1.296875,1.109375,0.091796875,-0.037109375,2.1875,0.28320312,0.020263672,-2.21875,-0.55078125,0.671875,-0.13183594,2.203125,0.043945312,1.3203125,-0.72265625,-0.11621094,-0.04711914,-1.2109375,0.21582031,-0.81640625,-1.5390625,-0.41210938,-0.625,1.4921875,-0.45117188,-0.54296875,1.1015625,-2.03125,0.33203125,-0.21191406,-0.34179688,-0.4921875,2.109375,-0.43359375,-2.59375,-0.58203125,0.65625,-0.98046875,0.85546875,-0.24902344,0.1328125,0.55859375,-1.1796875,0.024902344,-2.21875,-1.2734375,2.28125,-1.46875,-0.70703125,-0.41796875,-0.37890625,1.0859375,0.07519531,-1.0546875,-0.040039062,-1.078125,2.34375,-0.5390625,0.62890625,0.72265625,-0.89453125,1.4296875,0.22265625,0.17089844,2.203125,0.0625,-1.078125,-0.052490234,-0.75390625,-1.265625,0.6484375,-0.5,-0.6484375,-0.68359375,0.05444336,-0.87109375,-0.05078125,0.20410156,-0.27148438,-1.234375,2.296875,-0.69921875,-0.64453125,1.5,1.140625,-2.4375,1.921875,-0.78515625,2.015625,-0.028442383,-0.14746094,-1.2421875,-0.026123047,-0.48242188,-1.1171875,0.6015625,0.33203125,-0.11328125,-2.6875,-0.49414062,-0.94140625,1.2890625,0.57421875,0.5078125,0.8046875,-1.0078125,1.7734375,-1.2734375,-0.25585938,-0.72265625,0.125,0.48828125,0.66796875,0.36523438,0.41796875,-0.12695312,-1.71875,0.2109375,-0.03466797,1.0078125,0.7265625 +9,0,2,-0.31445312,0.34179688,0.5546875,-2.0625,-0.025634766,0.671875,1.8046875,-0.69921875,1.0390625,-0.98046875,1.125,-1.3671875,1.3671875,-0.6484375,-0.54296875,0.69140625,-0.043701172,-0.62890625,2.109375,-0.734375,-0.78125,-1.4140625,1.25,-0.15429688,-2.46875,-1.6171875,0.18066406,-0.79296875,-0.515625,1.65625,0.53125,-0.546875,-0.12207031,0.099121094,1.109375,0.7734375,-0.20898438,-0.14160156,-1.8046875,0.9609375,-1.5390625,0.51953125,0.95703125,0.96875,0.59765625,1.3671875,-0.98828125,-1.1484375,-0.2265625,1.609375,-1.78125,0.25,-1.0,1.890625,-0.25195312,0.62109375,0.20996094,0.28125,-0.047851562,-0.34375,0.60546875,-0.045654297,-0.703125,0.52734375,0.6328125,1.421875,-0.78125,-1.1015625,-0.98828125,2.109375,-1.109375,-0.57421875,0.080078125,0.859375,-0.4140625,0.76953125,1.5703125,0.1953125,-0.21386719,0.22753906,1.125,0.45898438,-0.16113281,1.2578125,0.16894531,-0.82421875,-0.65625,-1.28125,-0.57421875,-0.32421875,0.8671875,0.037109375,-0.83203125,-1.0078125,-1.5390625,0.484375,-0.5703125,-0.60546875,-0.25195312,-0.625,-1.375,0.06225586,2.3125,1.1796875,0.17871094,1.78125,-0.9296875,-0.10107422,0.53125,-0.79296875,0.40039062,1.015625,0.90234375,-2.59375,0.53515625,-0.34375,0.28515625,0.19140625,-0.76953125,0.53515625,1.75,-0.3828125,1.234375,-2.0625,0.83203125,0.15625,-2.140625,-1.6171875,-0.19238281,0.24902344,0.71875,0.68359375,0.32617188,-1.515625,0.578125,0.40234375,-0.25585938,0.6015625,-0.32617188,-0.62890625,2.546875,1.671875,-0.25585938,1.7109375,-0.87109375,-0.35546875,0.1875,-0.15332031,-2.421875,0.6640625,-0.54296875,-0.13867188,-0.41210938,-1.2578125,-1.234375,-0.93359375,0.3359375,-0.07519531,-0.05419922,2.09375,-2.0625,-0.671875,1.171875,-0.014465332,-1.6875,-0.10888672,-0.17285156,1.34375,0.024536133,0.46679688,0.3515625,0.49804688,-1.375,-0.29492188,0.03564453,-0.15332031,0.765625,-1.2890625,-0.25390625,0.109375,-0.26953125,-1.140625,1.0390625,0.79296875,-0.63671875,-0.17382812,0.3671875,0.02331543,-1.1484375,-0.17089844,-0.5390625,1.203125,1.2578125,0.13671875,-0.03173828,-0.45703125,1.34375,-0.69140625,2.0625,0.5859375 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv index e3eb7be7..6b50fe9d 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv @@ -1,6 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -0,0,0,-0.5678054,0.30644566,-0.48223504,-0.37569737,-0.3008679,-0.52658165,-0.32838538,-0.8943048,0.95665604,-0.8637694,-0.3740866,0.95319647,1.8752165,-0.35496402,2.3600826,-1.429543 -0,0,1,0.78683025,-0.48157683,2.1831813,0.00026024866,0.19607927,-1.008873,0.06488745,0.6515402,-1.6177354,1.4758716,-0.756111,-0.30458173,0.38618582,0.34799105,-0.17682126,-1.7913008 -0,0,2,-1.0294193,-1.9363327,-0.10089664,-1.256774,-0.57952416,0.6647573,1.0020547,0.60435945,1.4913826,0.47637454,-0.52362984,1.2796938,-1.1521349,0.8179086,0.8369039,-0.61289996 -0,0,3,1.29303,0.5742223,-0.20042029,0.03720812,-1.1154803,0.26275542,-0.0761054,0.65055084,0.6538049,-1.9854333,-0.64701724,-1.4201233,0.422354,2.221934,-0.06508473,-0.6750595 -0,0,4,-0.14699927,-1.5303152,0.3594103,-0.9477121,-0.4332569,-0.068542324,0.5149603,0.34177327,1.5040935,0.8814393,-0.73049664,-0.66137636,-1.0386573,2.0420604,-1.2320555,1.142538 +0,0,0,-0.6006612,0.27331486,-0.34914157,-0.41479835,-0.3665798,-0.5533585,-0.14582494,-0.91373837,0.9844944,-0.95687056,-0.4577148,0.91134745,1.9406763,-0.3906231,2.3219848,-1.3473451 +0,0,1,0.82811767,-0.5268697,2.0814955,-0.004021469,0.5512644,-1.179125,-0.043747347,0.63015777,-1.3691996,1.6033845,-0.75416285,-0.42233095,0.45330113,0.27154657,-0.41820994,-1.7461473 +0,0,2,-0.84707606,-2.0609052,-0.1081782,-1.045911,-0.42114437,0.60394675,0.59907866,0.25174326,1.3924737,0.7319598,-0.9297085,1.5825528,-1.3019253,0.7942725,0.87738246,-0.1327626 +0,0,3,1.0684123,0.57142717,0.075573,0.11559761,-0.86974573,0.1249011,-0.2048351,0.22256361,0.48389286,-1.8543849,-0.93811846,-1.1520655,0.44447225,2.7120762,-0.38763985,-0.48254395 +0,0,4,-0.17874089,-1.1804047,0.6036014,-1.2056729,-0.21152717,-0.11572556,0.7904921,0.64713424,1.58864,0.2770208,-0.6086349,-0.9361127,-1.0290424,2.055118,-1.3742863,0.8467823 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv index b58246ec..19f8ea9b 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv @@ -1,6 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -1,0,0,0.6880688,-0.49868053,1.1768215,0.9832487,-1.6379206,-0.87166226,0.13469009,2.644633,-0.3137418,-0.8415682,0.17771643,-0.33885878,-0.06802454,0.34736037,-1.01832,-0.62350124 -1,0,1,1.3108207,-1.3080025,0.34822875,1.4596325,-1.0497857,-0.16749367,0.485262,0.97075754,0.034637336,-1.7957212,1.4068959,0.78538895,-0.31832948,-0.30980903,-1.3081034,-0.5883961 -1,0,2,1.0650882,-0.09216967,0.36322507,0.18116008,-1.3025135,0.54174715,-0.482454,0.9420967,0.39991647,-2.0071194,-0.3020647,-1.1005768,0.43759206,2.1584413,0.28633898,-1.1556921 -1,0,3,1.8563068,-0.7071074,0.1579034,0.8939158,-0.0670585,-0.49880558,-1.4990184,-0.9207246,0.73329836,-0.34481865,0.627262,1.1733168,-1.3812757,-0.22482446,-1.1992402,1.4072857 -1,0,4,0.49123776,-0.65193045,2.2564845,-0.17658377,0.42154688,1.2235798,-0.052261785,-1.0662595,0.90595466,-0.9850903,-1.1610376,0.45742363,-1.7801737,-0.12341051,0.7481433,-0.5458406 +1,0,0,0.1883566,-0.51069915,1.0757822,0.8057133,-1.7141013,-1.0322051,0.8189624,2.455926,-0.086683646,-0.548176,0.2890321,-0.5181182,-0.046274558,0.71348274,-1.3307245,-0.6185085 +1,0,1,1.5297848,-1.2117101,-0.13439633,1.253659,-0.67018974,-0.5551331,0.7888967,1.1364132,-0.023180284,-1.6521875,1.607315,0.5899527,-0.32935065,-0.41081616,-1.3123547,-0.64372915 +1,0,2,0.8035976,-0.1564827,0.7187234,0.23841827,-1.041676,0.36406025,-0.5592999,0.6205595,0.22290729,-1.892453,-0.571009,-0.9368423,0.4768633,2.6517987,-0.04318322,-0.9589635 +1,0,3,1.6627725,-0.8503898,0.30536455,0.9283896,0.027027875,-0.6029172,-1.3817337,-1.0517935,0.88064855,-0.30291262,0.46670607,1.2897946,-1.2118512,-0.20403868,-1.3723617,1.4220868 +1,0,4,0.3392744,-0.80427676,2.273018,-0.6253882,0.75351644,0.86384004,0.31538412,-0.83312535,1.189355,-1.0529702,-1.1474402,0.37553895,-1.7151668,-0.13089456,0.64540154,-0.4849727 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv index 50c647c9..0eb7cf80 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv @@ -1,5 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -2,0,0,-0.36413205,-0.6412734,-1.509915,-0.64748913,1.2593658,-1.3857695,0.8524324,0.52342945,-0.109673396,2.4144866,0.8789581,-0.38112083,0.7561693,-0.6839269,-0.28703287,-0.67817223 -2,0,1,1.2825032,-0.4427156,1.9214746,0.46229368,-1.4471735,-0.5868213,-0.8091576,-0.24864331,-1.2884412,1.7199851,0.23889081,0.040785108,-0.05055482,0.22968066,-1.4788846,0.43781894 -2,0,2,0.094167404,0.0859257,-0.5042325,0.7252808,1.3083975,-1.3224137,-0.33199427,0.13993336,0.08184377,-0.40506566,0.29009566,-2.2843225,1.9552679,1.2503077,-0.18841878,-0.93038386 -2,0,3,1.0551077,-1.1094918,0.8473594,-0.12514752,0.4117495,0.18166554,-1.1333376,-0.8610408,0.65473765,-0.5237611,0.96090883,0.9585637,-1.4609623,-0.9971072,-0.89406204,2.0541434 +2,0,0,-0.45247898,-0.6700307,-1.3980862,-0.8169967,1.1174649,-1.5679284,1.3004793,0.55547404,0.17673689,2.2888486,0.61724645,-0.30405724,0.7114118,-0.48643318,-0.40007603,-0.69985884 +2,0,1,0.96580744,-0.7271615,1.9331442,0.35922375,-1.1587405,-0.7792273,-0.84466994,-0.14708672,-1.1819658,1.8822826,0.33108777,-0.21132755,-0.08135607,0.38287959,-1.4923096,0.7527195 +2,0,2,0.3168712,0.017159618,-0.608047,0.8562339,1.3965137,-1.2637002,-0.35587037,0.14391245,0.03870829,-0.47761393,0.3009319,-2.3473392,1.9502603,0.8832216,0.0150891915,-0.9161799 +2,0,3,0.9275735,-1.1297508,1.0120924,-0.20396979,0.64359254,0.12881663,-1.0047234,-0.9111546,0.6870843,-0.58317107,0.87117267,1.0960609,-1.4761081,-0.9214843,-1.0393838,1.9111625 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv index 429d9980..05af7ab7 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv @@ -1,9 +1,9 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -3,0,0,-0.40126666,-0.78331727,-1.5756154,-0.31062096,1.1928762,-1.6843582,0.7851598,0.5358782,0.060748313,2.3220642,0.983614,-0.29303667,0.58234143,-0.36522076,-0.30240387,-0.7496143 -3,0,1,-0.7336195,-1.2810793,-0.38829067,-0.4601508,-1.50845,0.5241958,0.8025443,0.6143513,0.056892652,-0.31004176,0.44623825,2.7555754,-0.0637165,0.22621281,0.6022362,-1.314328 -3,0,2,1.3642316,0.12788779,-0.20111935,-1.036736,-1.948152,-0.38286552,1.4817194,-0.9606339,0.7927826,-1.2917897,-0.020328995,0.9448982,1.0943421,0.79177094,0.19575107,-1.0141716 -3,0,3,0.86852545,-0.017761663,0.41102606,-0.18726309,-0.87506944,0.5694903,0.15854332,0.8119648,0.5742181,-2.3636305,-0.37842566,-1.5641385,0.12360405,2.1495688,0.17902005,-0.5240532 -4,0,0,1.1631641,-0.55724025,1.1540875,-1.288715,-0.25030568,0.29519114,-0.26156953,0.73843837,0.3341611,0.36159894,-2.2564068,-1.12792,-0.6742551,1.7842551,-0.06704759,0.6194069 -4,0,1,0.8389171,-0.6922904,2.0705483,0.090488724,-0.24284306,-0.52842766,-0.25121197,0.6185058,-1.8862301,1.0848103,-0.5888317,0.16298746,0.6342511,0.5813959,0.052398324,-1.9904659 -4,0,2,1.2333139,-0.8917692,-1.4689931,-0.6857654,0.11552239,0.31441647,0.30494234,1.6532247,0.5431021,0.16783965,-0.89129585,-1.6974555,0.21965057,-0.051815066,-0.7658714,1.8788624 -4,0,3,-0.026684264,-0.90918845,0.74477476,-0.18694443,-0.103529036,-0.61683804,-0.64630914,-0.77517974,1.4970412,1.2110367,2.242393,0.84123915,-0.07830191,-1.5589653,-0.5940237,-1.0396498 +3,0,0,-0.5061456,-0.7763785,-1.4411104,-0.52552813,1.0513479,-1.8644568,1.2233515,0.5684989,0.3443002,2.1877117,0.73235464,-0.2621535,0.5448747,-0.17720893,-0.4192689,-0.7051907 +3,0,1,-0.66679925,-1.3665861,-0.22060487,-0.44057253,-1.2946736,0.76740754,0.73320085,0.6129007,0.31359667,-0.85040903,0.46061102,2.6040866,-0.12284056,0.15048675,0.7167322,-1.4336061 +3,0,2,1.1156372,-0.22328217,-0.16104864,-1.1401838,-1.9943426,-0.2494216,1.7525011,-0.9386309,0.7549316,-1.3333093,0.040007867,0.77046984,1.3616405,0.5641874,0.22289011,-0.625249 +3,0,3,0.56514716,0.021596653,0.6965276,-0.2659085,-0.47595215,0.41413322,0.15071203,0.4543448,0.3236465,-2.2226622,-0.6223092,-1.3502904,0.022095501,2.6971529,-0.082981095,-0.391887 +4,0,0,1.2965182,-0.5597377,0.87963766,-1.3444073,-0.53000945,0.48690176,-0.06573936,0.76831144,0.30042756,0.42209244,-2.325122,-1.1396146,-0.7086506,1.4786966,0.15237255,0.84046805 +4,0,1,0.81161726,-0.8216032,2.040686,0.17894322,0.19341934,-0.7916967,-0.28501594,0.5449751,-1.6567922,1.2058699,-0.6466604,0.02430841,0.7775131,0.4694338,-0.07763458,-2.0113945 +4,0,2,0.89558095,-0.9144592,-1.5348337,-0.88432336,0.38815454,0.113910615,0.2328737,1.2174358,0.79367036,0.35744292,-0.73602664,-1.4213881,-0.011158632,0.26761565,-1.0480565,2.2604616 +4,0,3,0.1480164,-0.8613011,0.67656535,-0.3105859,0.05321045,-0.9875798,-0.100072786,-0.68129635,1.649064,1.3399781,2.217513,0.4515288,-0.27188015,-1.0483067,-1.1040651,-1.1851294 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv index 92904b29..28a36481 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv @@ -1,5 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -5,0,0,-0.0975191,-0.4876295,-0.2364892,0.8899324,1.3293315,-1.4303449,-0.38584486,0.4049477,0.2341479,-0.24590422,0.4131558,-2.2018154,1.7526464,1.2278333,-0.1008542,-1.0976585 -5,0,1,0.96228456,0.5013961,-0.46397877,0.18880926,-0.21479401,0.068225846,-1.6835177,0.3138923,-0.215686,0.8992038,1.2001247,-0.7830776,0.29820076,1.9573467,-1.7968755,-1.2469637 -5,0,2,1.1223437,0.35189787,-0.4220163,-0.08106533,-1.5475112,0.14656012,-0.7290129,0.048741527,0.048301227,0.31566086,1.0508822,1.2633296,0.41796586,-1.0627791,1.3920348,-2.369732 -5,0,3,0.997344,-0.3670925,1.1623502,-1.5849966,-0.5812203,0.69678265,0.33674517,0.5580875,0.17368835,-0.32163247,-1.9439414,-1.2147049,-0.6150653,1.896507,0.09835436,0.66708636 +5,0,0,0.14931662,-0.53661007,-0.4178915,1.0650523,1.4260073,-1.4046125,-0.4454908,0.43748403,0.17220889,-0.3263942,0.46434885,-2.1899922,1.6828609,0.9274285,0.095608875,-1.1405207 +5,0,1,0.9416289,0.41291103,-0.4414328,0.27544495,-0.43491212,0.074826315,-1.4218235,0.46812102,-0.17113322,0.63309056,1.3964156,-0.91853875,0.35744792,1.9670777,-1.7801918,-1.3875116 +5,0,2,1.1062784,0.10729322,-0.4857815,-0.008219642,-1.3734647,0.07514935,-0.89442974,0.041828547,0.040950842,0.41346258,1.0223055,1.4269317,0.4183222,-1.0225612,1.4259869,-2.336927 +5,0,3,1.1709383,-0.3431763,0.86983496,-1.6041002,-0.6716347,0.9073796,0.5058333,0.52458864,0.07157109,-0.31755292,-2.013162,-1.166504,-0.6992124,1.7159256,0.378617,0.6107121 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv index 4552eb37..964edf93 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv @@ -1,10 +1,10 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -6,0,0,0.77065754,-0.76632786,1.8472377,-0.36171773,-0.12794422,-0.51205856,0.23821487,0.19354652,-2.007292,1.1207803,-0.47570035,0.12879921,0.6755318,0.19856073,1.0114113,-1.9820988 -6,0,1,1.5402608,-0.6269262,1.811596,0.5628006,-1.0015095,-1.0100083,-0.8554023,-0.5945589,-0.7188355,2.0016418,0.036225002,-0.0963106,-0.34438652,-0.04934737,-1.2410477,0.5716474 -6,0,2,0.099329084,-0.9905449,0.37024456,-0.092512354,-1.0474453,0.5579103,-1.3993762,0.9833203,0.59650284,1.0684012,0.9790155,-2.0937629,0.30437842,-0.46602613,1.7425917,-0.64842325 -6,0,3,0.39516813,-0.6314403,1.4948617,1.0518291,-1.0769643,-1.1019645,0.72841096,0.8454386,-0.1329276,-0.27656975,-1.1176367,-0.6240037,0.08811874,-0.8709323,-1.0424569,2.2322922 -6,0,4,1.5397077,-1.1038709,0.17057961,-0.70247877,0.91511214,-0.19965753,0.10995354,-0.09201375,-0.5179603,-1.2657489,-0.9364169,0.99344826,-0.5904373,2.378038,-1.0655441,0.35856313 -7,0,0,-0.38164693,-1.3991219,-0.57864404,-0.64194506,-1.0146283,0.77735037,1.0805509,0.20559101,0.14912546,0.24122998,0.23987257,2.7745647,-0.1806378,-0.38417065,0.53943276,-1.4561769 -7,0,1,0.7505255,-1.2829787,-0.04241756,1.1337081,0.5512444,1.0470235,-2.240779,0.38265908,-0.9141051,0.9473515,1.0557507,-1.5054818,-0.0026612426,0.71467644,-0.11884089,-0.48391303 -7,0,2,1.4440962,0.640023,-1.0184404,1.4597166,-1.5533735,0.19580375,-0.73750097,0.17983381,0.6347194,1.3996398,0.19554296,-1.8371892,0.27592623,0.28698903,-0.50887656,-1.1177573 -7,0,3,1.6090622,-0.552633,2.0960214,0.36178717,-1.3726065,-0.61812073,-0.5444809,-0.8581807,-1.0325772,1.5600145,0.2399627,-0.15540515,-0.32274023,0.06386035,-1.1094363,0.61451924 +6,0,0,0.75977767,-0.8941403,1.8381127,-0.2947546,0.2300058,-0.83663684,0.25620785,0.12637803,-1.7378011,1.182791,-0.50745416,0.036903758,0.838191,0.390844,0.6659436,-2.1043644 +6,0,1,1.2344869,-0.87115544,1.6973119,0.45785195,-0.79289585,-1.1952786,-0.7739234,-0.41190162,-0.6169048,2.0888212,0.17353193,-0.35224319,-0.42837173,0.29140207,-1.3883605,0.87579113 +6,0,2,-0.04716062,-1.1540091,0.7190903,0.21688245,-1.0973245,0.6634729,-1.0191848,1.0636467,0.86636645,0.95576775,0.40887043,-2.1949317,0.34050336,-0.5335777,1.6200428,-0.8434403 +6,0,3,0.5315266,-0.75266963,1.6877258,0.7681073,-0.9721382,-1.0216631,0.68959737,1.0582479,0.28320122,-0.731182,-0.9680603,-0.9397336,0.115028106,-0.47067833,-1.2997086,1.9737223 +6,0,4,1.4608288,-0.97320133,0.2406221,-0.8215309,0.9401043,-0.24250522,0.4038392,0.020989973,-0.51842433,-1.293551,-0.90764123,0.74466497,-0.6153507,2.456806,-1.1631211,0.23413561 +7,0,0,-0.16067488,-1.4088781,-0.52943593,-0.53733695,-0.881949,1.020826,0.9473788,0.22936635,0.48022568,-0.3948946,0.26959687,2.6491475,-0.31377748,-0.2948756,0.564145,-1.6736668 +7,0,1,0.7797228,-1.711448,-0.27516288,1.2757864,0.5518668,1.0981587,-2.2466977,0.15571526,-0.89171106,0.9792887,0.612105,-1.1947432,0.38149735,0.55929846,0.13911384,-0.20466185 +7,0,2,1.4645267,0.6052429,-0.6147724,1.2570165,-1.6225443,-0.0040931324,-0.46623838,0.37951505,0.81095076,1.1644993,0.37510827,-2.0000474,-0.28104275,0.7649079,-0.69417703,-1.187673 +7,0,3,1.3395354,-0.7207316,2.0857847,0.21226466,-1.0327022,-0.8066197,-0.42594796,-0.64940375,-1.1074684,1.6851654,0.36267513,-0.4739317,-0.4367329,0.49596614,-1.2793999,0.7298483 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv index 9c9c4f81..a62eae9c 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv @@ -1,6 +1,6 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -8,0,0,-0.32614353,-0.64439976,-0.4606882,0.65944755,1.3359828,-1.0852644,-0.16756222,0.14784002,-0.08113572,-0.6550381,0.7323079,-2.066391,1.9876616,1.0655345,0.63813996,-1.1135746 -8,0,1,0.12641025,-0.56098837,0.40993986,0.107800655,0.32741314,-0.5968289,-0.84562564,-0.6825451,1.2423956,1.8815519,1.8854672,0.5606451,-0.055782493,-1.6092077,-1.2014889,-0.98526716 -8,0,2,-0.41545722,-0.6968768,-1.6478468,-0.6066328,0.9194668,-1.1579491,0.6114348,0.7974771,-0.52014804,2.3043096,1.1645346,-0.0551654,0.95790863,-0.3786852,-0.23132549,-1.0501995 -8,0,3,1.0761181,0.35165632,-0.40121642,-0.17262518,-1.2321544,0.42185432,-0.7928826,-0.034794606,-0.17338482,0.422188,1.1260121,1.2503253,0.30318612,-1.3496894,1.4538991,-2.2986958 -8,0,4,1.1404579,-1.0539529,0.6959456,0.0002799956,0.50083333,0.25582743,-1.1861986,-0.89913344,0.5945992,-0.5446149,0.99352646,1.0013199,-1.5414313,-0.9312056,-0.95023686,1.9430875 +8,0,0,-0.13603266,-0.7307862,-0.52509326,0.74821085,1.3972374,-1.0351514,-0.087998375,0.14008258,-0.16702926,-0.7757859,0.767171,-2.0736523,1.9220414,0.7747719,0.8359873,-1.0989997 +8,0,1,0.2691684,-0.58000475,0.22857264,0.0726761,0.36003938,-0.88419944,-0.48701763,-0.6307923,1.4697176,1.9778647,1.8036274,0.28785348,-0.23820582,-1.2125394,-1.566934,-0.87618756 +8,0,2,-0.5361712,-0.7612994,-1.4328666,-0.8012423,0.8185195,-1.415421,1.1227995,0.81984663,-0.20334002,2.2054589,0.822599,-0.029563703,1.0102043,-0.28044125,-0.27897397,-1.0894494 +8,0,3,1.0546969,0.12370178,-0.39167616,-0.19105366,-1.0928397,0.34877908,-0.921601,0.05444164,-0.1952575,0.56712765,1.1011527,1.3574673,0.31019345,-1.4148287,1.472835,-2.2225912 +8,0,4,1.0152535,-1.0647243,0.87573284,-0.06597459,0.7320688,0.2022493,-1.0524291,-0.9378761,0.6166235,-0.6034941,0.89612216,1.1415883,-1.5616627,-0.86831933,-1.1108083,1.7946959 diff --git a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv index 8e68ce40..64e66679 100644 --- a/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv +++ b/tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv @@ -1,5 +1,5 @@ sequenceId,subsequenceId,itemPosition,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 -9,0,0,-0.47500592,0.4115684,-0.3617759,-0.28399315,0.3019857,-0.5060671,-0.6323188,-0.9995569,0.9944466,-0.5976193,-0.70640665,0.9123807,1.9063975,-0.45425025,2.1027493,-1.6554946 -9,0,1,-0.086714655,-0.97823036,0.05636277,-0.01605165,-0.9614703,0.6308942,-1.2854741,1.0908369,0.45563138,0.926207,1.0300418,-2.0144224,0.2822436,-0.24596272,1.959498,-0.8820346 -9,0,2,-0.4039917,-0.86205673,-1.1582229,-1.341583,-0.120875224,0.73452944,1.7072109,-0.28952715,1.6449419,0.5135223,-0.9904969,1.0184028,-1.2944711,1.0233638,0.47282502,-0.68130696 -9,0,3,0.4459618,-1.5170839,-0.057393685,0.48917928,1.573972,1.3741968,-1.1912827,-0.21140826,-0.8198331,0.22414537,1.1317799,-2.0740838,-0.63661385,0.7234822,0.49297914,0.047913294 +9,0,0,-0.4572789,0.4083919,-0.31473643,-0.2729684,0.24014777,-0.4612613,-0.54261976,-1.0134654,1.0257438,-0.6418706,-0.78112227,0.8925522,1.8929882,-0.6186886,2.1505845,-1.5657275 +9,0,1,-0.1670796,-1.1557673,0.45290652,0.3810859,-0.8798305,0.950252,-1.0811738,0.9893472,0.62552804,0.80969876,0.35180464,-1.9200974,0.22418688,-0.624056,2.0414052,-1.0304397 +9,0,2,-0.20206067,-0.93332684,-1.3126967,-0.8317151,0.009184291,0.7905838,1.1029824,-0.8864819,1.4854951,0.84356177,-1.2966992,1.5094204,-1.4029254,0.9184137,0.5197256,-0.3381626 +9,0,3,0.54572934,-1.7311612,-0.3354268,0.58204854,1.634565,1.6117706,-1.2522428,-0.40521324,-1.0268775,0.31409565,0.66306615,-1.6557356,-0.32661834,0.54005146,0.6954313,0.15141636 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv index 8cccbef6..c0c4c994 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId -0,0,[unknown] +0,0,116 0,1,125 -0,2,111 +0,2,116 0,3,102 -0,4,118 +0,4,100 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv index 4bd96488..6f05ec83 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId 1,0,100 -1,1,120 +1,1,124 1,2,102 1,3,119 -1,4,122 +1,4,102 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv index 7cd4f7cd..d7879885 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv @@ -1,5 +1,5 @@ sequenceId,itemPosition,itemId -2,0,125 -2,1,115 +2,0,123 +2,1,125 2,2,125 2,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv index ae179237..2b1e4f45 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId 3,0,123 -3,1,111 +3,1,118 3,2,119 3,3,102 4,0,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv index c8b395dc..df93b1d1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv @@ -1,5 +1,5 @@ sequenceId,itemPosition,itemId 5,0,125 5,1,100 -5,2,111 +5,2,119 5,3,122 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv index d04d1d0e..0ba233fe 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv @@ -1,10 +1,10 @@ sequenceId,itemPosition,itemId 6,0,125 -6,1,115 +6,1,103 6,2,113 -6,3,115 -6,4,114 -7,0,111 +6,3,120 +6,4,102 +7,0,118 7,1,125 7,2,129 -7,3,115 +7,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv index 7143ade0..04a51b82 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv @@ -1,6 +1,6 @@ sequenceId,itemPosition,itemId 8,0,125 8,1,113 -8,2,125 -8,3,117 +8,2,123 +8,3,115 8,4,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv index d379af64..7b4ec0b2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv @@ -1,5 +1,5 @@ sequenceId,itemPosition,itemId 9,0,116 9,1,113 -9,2,111 +9,2,114 9,3,113 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv index 59349bc1..8eb4c4a0 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId -8,4,102 +8,4,111 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv index ed59d730..10a61d90 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,4,109,[other],0.00014168024 +0,4,109,[other],-0.007879399 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv index 98c7c6b4..6989e535 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,4,102,[unknown],-0.09726027 +1,4,102,[unknown],-0.09629029 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv index 461de44b..f70f3d04 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,3,[mask],[unknown],-0.12791729 +2,3,[mask],[unknown],-0.1264407 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv index 8cb7700d..0b7fcd80 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,3,103,4,0.043316968 -4,3,110,4,0.032937437 +3,3,103,4,0.035191707 +4,3,110,2,0.025370859 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv index 02507d44..4300c9d3 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,3,110,9,-0.075533785 +5,3,110,9,-0.07751563 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv index 93e77202..d82f9c83 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,4,122,7,-0.04820269 -7,3,113,[other],0.057539806 +6,4,122,7,-0.05601125 +7,3,113,[other],0.044996656 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv index c2229265..7ed5dffb 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,4,110,[mask],-0.095947556 +8,4,110,[mask],-0.10512776 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv index ced3fa21..418d29d1 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,3,114,6,-0.0014844015 +9,3,114,6,-0.004389014 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv index 626180f8..c21215f2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -0,4,102,4,0.016973361 +0,4,102,[other],0.006249614 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv index 35dc1d9f..c249c329 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -1,4,100,[unknown],-0.09465362 +1,4,100,[unknown],-0.09367853 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv index c0b5fba4..57aca839 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -2,3,100,[unknown],-0.12798095 +2,3,100,[unknown],-0.12620808 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv index 5fc0d368..fdadb1a4 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -3,3,111,4,0.058097668 -4,3,128,4,0.047720857 +3,3,111,4,0.047561854 +4,3,128,4,0.038341478 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv index 8901171a..3ec68b25 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -5,3,102,6,-0.06665557 +5,3,100,6,-0.069281995 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv index 5c04fea5..c01739fe 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv @@ -1,3 +1,3 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -6,4,110,7,-0.029965512 -7,3,102,4,0.083941795 +6,4,110,7,-0.04092831 +7,3,102,4,0.06709013 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv index 30927882..e00e6b7c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -8,4,128,0,-0.07864175 +8,4,128,[mask],-0.09031482 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv index 69f195e6..7b52a58c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv @@ -1,2 +1,2 @@ sequenceId,itemPosition,itemId,supCat1,supReal3 -9,3,125,6,0.00074065477 +9,3,125,6,-0.0026362315 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv index fe0245bd..73c62198 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv @@ -1,201 +1,201 @@ sequenceId,itemPosition,itemValue -0,21,0.03249278 -0,22,0.1493005 -0,23,0.12733665 -0,24,0.21319532 -0,25,0.16727091 -0,26,0.31602606 -0,27,0.15728734 -0,28,-0.1362295 -0,29,-0.1362295 -0,30,-0.17217033 -0,31,-0.13922456 -0,32,-0.15020649 -0,33,0.022259623 -0,34,-0.0992903 -0,35,-0.11825907 -0,36,-0.08631166 -0,37,0.029248118 -0,38,-0.1661802 -0,39,0.27209836 -0,40,-0.037392184 -1,19,-0.04438068 -1,20,0.23515917 -1,21,0.16327749 -1,22,-0.0032530688 -1,23,0.2411493 -1,24,0.0893991 -1,25,0.12084734 -1,26,-0.1751654 -1,27,0.12134651 -1,28,-0.15719499 -1,29,0.04671936 -1,30,-0.05860726 -1,31,-0.051868357 -1,32,0.06993115 -1,33,0.051711142 -1,34,-0.08631166 -1,35,-0.015865121 -1,36,-0.17117198 -1,37,-0.057359315 -1,38,0.015770305 -2,17,0.04996402 -2,18,-0.11176976 -2,19,0.17425941 -2,20,0.19422655 -2,21,-0.021293685 -2,22,-0.021044096 -2,23,0.1078687 -2,24,0.077918 -2,25,0.02899853 -2,26,-0.13922456 -2,27,-0.1751654 -2,28,-0.021792863 -2,29,0.09838431 -2,30,0.19722162 -2,31,-0.20611446 -2,32,-0.009344604 -2,33,-0.08481413 -2,34,-0.038140953 -2,35,0.078916356 -2,36,-0.124748394 -3,17,0.057451695 -3,18,0.2780885 -3,19,0.21020025 -3,20,0.30005237 -3,21,0.23016739 -3,22,0.028000174 -3,23,0.12084734 -3,24,0.17825285 -3,25,-0.114764825 -3,26,-0.0601048 -3,27,-0.07183549 -3,28,-0.037392184 -3,29,-0.13822621 -3,30,-0.13922456 -3,31,-0.101287015 -3,32,-0.0076598767 -3,33,-0.05935603 -3,34,-0.054364245 -3,35,0.04047963 -3,36,-0.048623696 -4,14,0.20820354 -4,15,0.16227913 -4,16,-0.17716211 -4,17,-0.08032152 -4,18,0.02600346 -4,19,0.14830214 -4,20,0.07242704 -4,21,-0.089306735 -4,22,-0.15020649 -4,23,0.036236614 -4,24,-0.27100763 -4,25,0.100381024 -4,26,-0.024039164 -4,27,0.19322819 -4,28,-0.09879112 -4,29,0.008969001 -4,30,-0.05860726 -4,31,-0.14421634 -4,32,0.036236614 -4,33,0.1403153 -5,14,0.26610824 -5,15,0.41586173 -5,16,0.30803922 -5,17,0.21519203 -5,18,0.2601181 -5,19,0.16128078 -5,20,-0.023040809 -5,21,0.027001817 -5,22,-0.16418348 -5,23,-0.0058503556 -5,24,-0.109273866 -5,25,-0.12574674 -5,26,0.13232844 -5,27,0.028499352 -5,28,0.02600346 -5,29,0.008157835 -5,30,0.042975523 -5,31,-0.07882399 -5,32,-0.25703064 -5,33,-0.2350668 -6,18,0.40987158 -6,19,0.11136295 -6,20,0.17126435 -6,21,0.30204907 -6,22,0.20720518 -6,23,0.07941554 -6,24,-0.028157387 -6,25,0.024006747 -6,26,0.015770305 -6,27,-0.13922456 -6,28,0.02575387 -6,29,-0.0043060225 -6,30,-0.08181906 -6,31,-0.052367534 -6,32,0.051211964 -6,33,-0.12025579 -6,34,0.056702927 -6,35,0.19222984 -6,36,0.017392633 -6,37,-0.1522032 -7,15,0.156289 -7,16,0.29805565 -7,17,-0.03289958 -7,18,0.16128078 -7,19,0.06943197 -7,20,-0.057608906 -7,21,-0.07283385 -7,22,0.1952249 -7,23,-0.032275606 -7,24,-0.06484699 -7,25,0.066936076 -7,26,0.023757158 -7,27,-0.13722785 -7,28,-0.057858497 -7,29,0.036236614 -7,30,-0.096794404 -7,31,-0.03864013 -7,32,-0.14721142 -7,33,0.06444018 -7,34,0.033740725 -8,20,-0.012370872 -8,21,0.0412284 -8,22,0.21419367 -8,23,-0.143218 -8,24,0.060696352 -8,25,-0.04762534 -8,26,0.114358015 -8,27,0.07741882 -8,28,0.09738596 -8,29,0.058699638 -8,30,-0.040137667 -8,31,-0.0878092 -8,32,0.059947584 -8,33,0.04147799 -8,34,0.05245991 -8,35,0.10137938 -8,36,-0.05411466 -8,37,-0.054613836 -8,38,-0.034397114 -8,39,0.03848292 -9,16,0.066936076 -9,17,0.25113288 -9,18,0.28807208 -9,19,-0.19213746 -9,20,0.060696352 -9,21,0.2092019 -9,22,0.29406223 -9,23,-0.12424921 -9,24,-0.062351096 -9,25,0.00085735274 -9,26,-0.11626236 -9,27,-0.065845355 -9,28,0.27010167 -9,29,0.0051627657 -9,30,-0.01287005 -9,31,-0.109273866 -9,32,-0.097293586 -9,33,-0.055861782 -9,34,0.033740725 -9,35,-0.10228537 +0,21,-0.21923348 +0,22,0.26796454 +0,23,0.35781664 +0,24,0.32586923 +0,25,0.18709765 +0,26,0.16812888 +0,27,0.12320283 +0,28,-0.028172985 +0,29,0.014381966 +0,30,0.02785978 +0,31,-0.052008748 +0,32,-0.047266554 +0,33,-0.11041261 +0,34,0.052818693 +0,35,0.25398755 +0,36,-0.13537154 +0,37,-0.14335838 +0,38,0.0024016856 +0,39,-0.069979176 +0,40,-0.10791672 +1,19,0.35182652 +1,20,0.20307136 +1,21,0.3678002 +1,22,0.27595142 +1,23,0.0662965 +1,24,-0.17031401 +1,25,0.13717982 +1,26,0.14117326 +1,27,0.04607979 +1,28,-0.21623841 +1,29,0.12370201 +1,30,-0.033539154 +1,31,-0.09843233 +1,32,-0.044271484 +1,33,-0.10042905 +1,34,0.04008965 +1,35,0.18410258 +1,36,-0.11740111 +1,37,0.06030637 +1,38,-0.0854537 +2,17,0.1561486 +2,18,0.087262 +2,19,0.052818693 +2,20,0.011574087 +2,21,0.030106083 +2,22,0.29392183 +2,23,0.07827678 +2,24,0.030979645 +2,25,0.15115681 +2,26,0.08526528 +2,27,-0.1313781 +2,28,0.02761019 +2,29,-0.030668877 +2,30,0.12270366 +2,31,-0.05175916 +2,32,0.049574036 +2,33,-0.09593645 +2,34,-0.089447126 +2,35,-0.21124664 +2,36,-0.041026827 +3,17,0.087262 +3,18,0.32986265 +3,19,0.13418475 +3,20,-0.038530935 +3,21,0.1401749 +3,22,0.23002699 +3,23,-0.011762499 +3,24,0.08975788 +3,25,0.0343491 +3,26,0.03709458 +3,27,-0.11390686 +3,28,-0.023680381 +3,29,-0.0050235917 +3,30,0.15215518 +3,31,-0.044271484 +3,32,-0.16931565 +3,33,-0.006021948 +3,34,0.08127186 +3,35,-0.088947944 +3,36,-0.15933208 +4,14,0.14316997 +4,15,0.00483518 +4,16,-0.09443891 +4,17,0.008454223 +4,18,-0.041526005 +4,19,-0.032540794 +4,20,0.07727843 +4,21,0.086263634 +4,22,-0.11191015 +4,23,0.05057239 +4,24,0.04258554 +4,25,0.06579733 +4,26,-0.015506336 +4,27,0.10872666 +4,28,0.1721223 +4,29,-0.021933256 +4,30,0.2230385 +4,31,-0.07097753 +4,32,0.039091293 +4,33,-0.1383666 +5,14,-0.14635345 +5,15,0.21105821 +5,16,0.21804671 +5,17,0.31388897 +5,18,0.16912724 +5,19,0.16413546 +5,20,0.12470037 +5,21,0.124201186 +5,22,-0.1084159 +5,23,0.03360033 +5,24,0.033849917 +5,25,-0.018314214 +5,26,-0.029545726 +5,27,-0.0031516731 +5,28,0.13618147 +5,29,0.038841702 +5,30,0.043583896 +5,31,0.16014202 +5,32,-0.050261624 +5,33,-0.022182846 +6,18,0.18310423 +6,19,0.15015846 +6,20,0.19208944 +6,21,0.072785825 +6,22,0.23102535 +6,23,0.04008965 +6,24,-0.07297424 +6,25,-0.048264913 +6,26,0.008267031 +6,27,-0.15134524 +6,28,-0.12339125 +6,29,-0.12039618 +6,30,-0.036284633 +6,31,-0.08794959 +6,32,0.030230876 +6,33,-0.07596931 +6,34,-0.10941426 +6,35,-0.009017018 +6,36,-0.18528937 +6,37,-0.08844877 +7,15,0.17511737 +7,16,0.2090615 +7,17,-0.112908505 +7,18,0.0022612917 +7,19,0.1721223 +7,20,-0.036534224 +7,21,0.13917653 +7,22,-0.15833373 +7,23,0.08776117 +7,24,-0.03453751 +7,25,-0.004649208 +7,26,0.0055839475 +7,27,0.096746385 +7,28,-0.053755872 +7,29,0.057560887 +7,30,-0.062491495 +7,31,0.11321927 +7,32,0.01725224 +7,33,0.18809602 +7,34,-0.042274773 +8,20,0.26397112 +8,21,0.18410258 +8,22,0.14316997 +8,23,0.104234055 +8,24,0.19109108 +8,25,0.2230385 +8,26,-0.110911794 +8,27,-0.09992987 +8,28,0.19708122 +8,29,-0.10941426 +8,30,0.015255528 +8,31,-0.022182846 +8,32,-0.20325978 +8,33,-0.18928279 +8,34,0.08276939 +8,35,-0.032540794 +8,36,-0.11340769 +8,37,-0.028547369 +8,38,0.03634581 +8,39,0.18410258 +9,16,-0.004961194 +9,17,0.0662965 +9,18,0.17711408 +9,19,0.31588566 +9,20,0.35781664 +9,21,0.34383965 +9,22,0.18410258 +9,23,-0.024054764 +9,24,0.14416832 +9,25,-0.063989036 +9,26,-0.0071450993 +9,27,0.057560887 +9,28,0.036096223 +9,29,-0.17031401 +9,30,-0.019062981 +9,31,0.012322854 +9,32,0.058309656 +9,33,-0.09044548 +9,34,0.014756349 +9,35,-0.03378874 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv index 1cf52011..88320a94 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,0.2900688 -0,9,-0.17616376 -0,10,0.3799209 -0,11,0.26411152 -0,12,-0.3009583 -1,8,0.28208193 -1,9,-0.0039628376 -1,10,0.33798993 -2,8,-0.14820977 -2,9,0.11735309 -3,8,0.36993733 -3,9,0.29805565 -4,7,-0.13523114 -5,7,0.14131364 -6,8,0.3359932 -6,9,0.26810494 -6,10,0.31402937 -7,8,-0.15419991 -8,8,0.16826928 -8,9,-0.25703064 -8,10,0.41586173 -8,11,0.40787488 -9,8,0.31402937 -9,9,0.25812137 +0,8,0.2899284 +0,9,-0.1753058 +0,10,0.37778378 +0,11,0.26596785 +0,12,-0.30309543 +1,8,0.28194156 +1,9,-0.00092096993 +1,10,0.33784953 +2,8,-0.15034688 +2,9,0.118211046 +3,8,0.3678002 +3,9,0.29791525 +4,7,-0.13537154 +5,7,0.1401749 +6,8,0.3358528 +6,9,0.26996127 +6,10,0.31388897 +7,8,-0.15533866 +8,8,0.16812888 +8,9,-0.25717103 +8,10,0.41771805 +8,11,0.40773448 +9,8,0.31388897 +9,9,0.257981 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv index 68074514..fbc8a7dc 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.19088916 -0,9,-0.078307025 -0,10,0.020881303 -0,11,0.13500652 -0,12,0.30980512 -1,8,0.0876035 -1,9,-0.026953768 -1,10,-0.2353295 -2,8,0.046619654 -2,9,-0.18891405 -3,8,0.08957863 -3,9,0.17450903 -4,7,0.37695938 -5,7,-0.18002598 -6,8,0.2999295 -6,9,0.33745688 -6,10,0.007867463 -7,8,0.66730285 -8,8,0.20117323 -8,9,0.19031003 -8,10,-0.03213847 -8,11,-0.012880999 -9,8,0.0023336397 -9,9,-0.2531056 +0,8,-0.19301088 +0,9,-0.08141631 +0,10,0.019747147 +0,11,0.13387236 +0,12,0.30965853 +1,8,0.08696313 +1,9,-0.027594142 +1,10,-0.23646365 +2,8,0.047213733 +2,9,-0.18807307 +3,8,0.08844448 +3,9,0.17436244 +4,7,0.3787879 +5,7,-0.17622232 +6,8,0.2997829 +6,9,0.33731028 +6,10,0.009555192 +7,8,0.6651811 +8,8,0.1990515 +8,9,0.19016345 +8,10,-0.03203817 +8,11,-0.012780699 +9,8,0.0013537919 +9,9,-0.2532522 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv index 7c11814b..699aaf44 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.07564883 -0,9,-0.34528795 -0,10,-0.06342901 -0,11,-0.22871205 -0,12,-0.23238373 -1,8,-0.2268762 -1,9,-0.10984136 -1,10,-0.016901925 -2,8,-0.3618105 -2,9,-0.29939193 -3,8,-0.1360021 -3,9,0.23850942 -4,7,0.104493044 -5,7,-0.3471238 -6,8,0.09990344 -6,9,-0.11305408 -6,10,0.15406075 -7,8,0.12652314 -8,8,-0.17822644 -8,9,-0.11075929 -8,10,-0.29755607 -8,11,-0.29204854 -9,8,-0.14472234 -9,9,-0.019196726 +0,8,-0.07336837 +0,9,-0.34461385 +0,10,-0.06304177 +0,11,-0.2298738 +0,12,-0.23170963 +1,8,-0.22712004 +1,9,-0.109626226 +1,10,-0.01875211 +2,8,-0.3611364 +2,9,-0.30055368 +3,8,-0.13670488 +3,9,0.23918352 +4,7,0.103331305 +5,7,-0.3464497 +6,8,0.099659614 +6,9,-0.11192103 +6,10,0.15381691 +7,8,0.12719724 +8,8,-0.1766344 +8,9,-0.10939674 +8,10,-0.29688197 +8,11,-0.29137447 +9,8,-0.14358929 +9,9,-0.018981587 diff --git a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv index 22ba483f..7436f650 100644 --- a/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv @@ -1,25 +1,25 @@ sequenceId,itemPosition,itemValue -0,8,-0.08269817 -0,9,-0.22038624 -0,10,-0.060151752 -0,11,-0.066634566 -0,12,-0.0973849 -1,8,-0.055131875 -1,9,-0.02945879 -1,10,-0.12446355 -2,8,-0.25710306 -2,9,-0.24058047 -3,8,0.01506035 -3,9,0.37075448 -4,7,0.3579036 -5,7,-0.12813523 -6,8,0.3395452 -6,9,0.2771266 -6,10,0.31567925 -7,8,0.35423192 -8,8,-0.039154325 -8,9,-0.015919466 -8,10,-0.053353403 -8,11,-0.12629938 -9,8,-0.0007737763 -9,9,0.19084209 +0,8,-0.07899063 +0,9,-0.21977666 +0,10,-0.058853757 +0,11,-0.06705767 +0,12,-0.0972343 +1,8,-0.05463706 +1,9,-0.029308192 +1,10,-0.12614879 +2,8,-0.25741142 +2,9,-0.24088883 +3,8,0.014293022 +3,9,0.37136406 +4,7,0.360349 +5,7,-0.1284436 +6,8,0.3419906 +6,9,0.27773616 +6,10,0.31812465 +7,8,0.35667732 +8,8,-0.038143177 +8,9,-0.012097187 +8,10,-0.054866537 +8,11,-0.12614879 +9,8,0.0005242191 +9,9,0.19145167 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-0-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-0-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-0-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-1-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-1-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-1-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-2-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-2-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-2-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-3-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-3-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-3-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-4-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-4-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-4-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-5-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-5-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-5-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-6-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-6-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-6-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-7-predictions.csv similarity index 100% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-predictions/sequifier-test-hp-search-custom-eval-run-7-best-3-7-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-7-predictions.csv diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-0-predictions.csv similarity index 88% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-0-predictions.csv index 830dae7f..f02aeba2 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-0-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-0-predictions.csv @@ -8,9 +8,9 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 0,10,116,1,9,7,[other] 0,11,104,6,9,7,[other] 0,12,104,1,9,7,[other] -0,13,104,1,9,7,[other] -0,14,102,1,9,[unknown],[other] -0,15,104,6,9,[unknown],[other] +0,13,102,1,9,7,[other] +0,14,104,6,9,7,[other] +0,15,104,6,9,7,[other] 0,16,104,6,9,7,[other] 0,17,104,6,9,7,[other] 0,18,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-1-predictions.csv similarity index 88% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-1-predictions.csv index 8f038e88..756d6e7c 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-1-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-1-predictions.csv @@ -6,12 +6,12 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 1,8,111,1,9,7,[other] 1,9,111,1,9,7,[other] 1,10,102,1,9,7,[other] -1,11,129,1,9,[unknown],[other] +1,11,129,1,9,7,[other] 1,12,102,1,9,[unknown],[other] 1,13,104,6,9,[unknown],[other] 1,14,104,6,9,[unknown],[other] -1,15,104,6,9,[unknown],[other] -1,16,104,6,9,[unknown],[other] +1,15,104,6,9,7,[other] +1,16,104,6,9,7,[other] 1,17,104,6,9,7,[other] 1,18,104,6,9,7,[other] 1,19,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-2-predictions.csv similarity index 51% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-2-predictions.csv index a3056096..50574151 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-2-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-2-predictions.csv @@ -1,20 +1,20 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,115,9,2,2,[unknown] -2,4,118,9,2,7,[mask] -2,5,115,9,9,7,[mask] -2,6,115,9,9,7,[mask] -2,7,115,9,9,7,[mask] -2,8,112,9,9,7,[other] -2,9,115,9,9,7,[other] -2,10,104,9,9,7,[other] -2,11,112,6,9,7,[other] +2,3,115,9,2,2,2 +2,4,115,9,2,2,[mask] +2,5,118,9,2,7,[mask] +2,6,112,9,9,7,0 +2,7,112,9,9,2,[unknown] +2,8,115,9,9,7,[other] +2,9,112,9,9,7,[other] +2,10,112,9,9,7,1 +2,11,112,9,9,7,[other] 2,12,112,9,9,7,[other] 2,13,112,9,9,7,[other] 2,14,112,9,9,7,[other] 2,15,112,9,9,7,[other] -2,16,112,9,9,7,[other] -2,17,112,9,9,7,[other] -2,18,112,9,9,8,[other] +2,16,112,9,9,7,0 +2,17,112,9,9,8,[other] +2,18,112,9,9,7,[other] 2,19,112,9,9,7,[other] 2,20,112,9,9,7,[other] 2,21,112,9,9,7,[other] @@ -22,10 +22,10 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 2,23,112,9,9,7,[other] 2,24,112,9,9,7,[other] 2,25,112,9,9,7,[other] -2,26,112,9,9,8,[other] +2,26,112,9,9,7,0 2,27,112,9,9,7,[other] -2,28,112,9,9,7,[other] +2,28,112,9,9,7,0 2,29,112,9,9,7,[other] -2,30,112,9,9,7,[other] +2,30,112,9,9,7,0 2,31,112,9,9,7,[other] -2,32,112,9,9,7,[other] +2,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-3-predictions.csv similarity index 52% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-3-predictions.csv index 861690e2..08e5981d 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-3-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-3-predictions.csv @@ -1,61 +1,61 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,112,9,2,2,[mask] -3,4,112,9,2,[mask],[mask] -3,5,115,9,2,9,[other] -3,6,112,9,2,2,[other] -3,7,112,9,2,2,[mask] -3,8,112,9,9,2,[other] -3,9,112,9,2,2,[other] -3,10,112,9,9,7,[other] +3,3,112,9,2,2,2 +3,4,115,9,2,9,[mask] +3,5,118,9,2,2,[mask] +3,6,112,9,2,2,0 +3,7,112,9,9,2,[other] +3,8,112,9,2,2,[other] +3,9,112,9,2,7,[mask] +3,10,112,9,9,7,0 3,11,112,9,9,7,[other] -3,12,112,9,9,7,[other] +3,12,112,9,9,7,0 3,13,112,9,9,7,[other] 3,14,112,9,9,7,[other] 3,15,112,9,9,7,[other] -3,16,112,9,9,7,[other] +3,16,112,9,9,7,0 3,17,112,9,9,7,[other] -3,18,112,9,9,8,[other] -3,19,112,9,9,7,[other] +3,18,112,9,9,7,[other] +3,19,112,9,9,7,0 3,20,112,9,9,7,[other] -3,21,112,9,9,7,[other] +3,21,112,9,9,7,0 3,22,112,9,9,7,[other] 3,23,112,9,9,7,[other] 3,24,112,9,9,7,[other] -3,25,112,9,9,7,[other] -3,26,112,9,9,8,[other] +3,25,112,9,9,7,0 +3,26,112,9,9,7,[other] 3,27,112,9,9,7,[other] -3,28,112,9,9,7,[other] +3,28,112,9,9,7,0 3,29,112,9,9,7,[other] -3,30,112,9,9,7,[other] +3,30,112,9,9,7,0 3,31,112,9,9,7,[other] 3,32,112,9,9,7,[other] -4,3,119,9,2,7,[other] +4,3,119,9,9,7,[other] 4,4,112,9,9,7,[other] 4,5,112,9,9,7,[other] 4,6,112,9,9,7,[other] 4,7,112,9,9,7,[other] 4,8,112,9,9,7,[other] -4,9,112,9,9,7,[other] +4,9,112,9,9,7,0 4,10,112,9,9,7,[other] -4,11,112,9,9,7,[other] -4,12,112,9,9,8,[other] -4,13,112,9,9,7,[other] +4,11,112,9,9,7,0 +4,12,112,9,9,7,[other] +4,13,112,9,9,7,0 4,14,112,9,9,7,[other] -4,15,112,9,9,7,[other] +4,15,112,9,9,7,0 4,16,112,9,9,7,[other] 4,17,112,9,9,7,[other] -4,18,112,9,9,7,[other] +4,18,112,9,9,7,0 4,19,112,9,9,7,[other] -4,20,112,9,9,8,[other] +4,20,112,9,9,7,[other] 4,21,112,9,9,7,[other] -4,22,112,9,9,7,[other] +4,22,112,9,9,7,0 4,23,112,9,9,7,[other] -4,24,112,9,9,7,[other] +4,24,112,9,9,7,0 4,25,112,9,9,7,[other] 4,26,112,9,9,7,[other] -4,27,112,9,9,7,[other] -4,28,112,9,9,8,[other] +4,27,112,9,9,7,0 +4,28,112,9,9,7,[other] 4,29,112,9,9,7,[other] 4,30,112,9,9,7,[other] -4,31,112,9,9,7,[other] +4,31,112,9,9,7,0 4,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-4-predictions.csv similarity index 76% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-4-predictions.csv index f36537ee..5ade6550 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-4-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-4-predictions.csv @@ -2,19 +2,19 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 5,3,111,3,2,2,[other] 5,4,111,3,2,8,[other] 5,5,111,1,2,7,[other] -5,6,111,1,2,7,[other] -5,7,111,1,9,7,[other] -5,8,111,3,9,7,[other] +5,6,111,1,9,7,[other] +5,7,111,3,9,7,[other] +5,8,111,1,9,7,[other] 5,9,102,1,9,7,[other] -5,10,102,1,9,[unknown],[other] -5,11,102,1,9,[unknown],[other] +5,10,102,1,9,7,[other] +5,11,102,4,9,[unknown],[other] 5,12,102,6,9,[unknown],[other] -5,13,104,6,9,[unknown],[other] +5,13,104,6,9,5,[other] 5,14,104,6,9,5,[other] 5,15,104,6,9,5,[other] 5,16,104,9,9,5,[other] 5,17,104,9,9,7,[other] -5,18,104,6,9,7,[other] +5,18,104,9,9,7,[other] 5,19,104,6,9,7,[other] 5,20,104,6,9,7,[other] 5,21,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-5-predictions.csv similarity index 71% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-5-predictions.csv index ef0be269..7090f23b 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-5-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-5-predictions.csv @@ -1,22 +1,22 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,111,9,2,7,[other] +6,4,111,9,9,7,1 6,5,111,9,2,7,[other] -6,6,111,9,2,7,[other] -6,7,111,1,9,7,[other] -6,8,111,1,9,7,[other] -6,9,102,1,9,7,[other] -6,10,102,1,9,[unknown],[other] -6,11,104,6,9,[unknown],[other] -6,12,104,1,9,[unknown],[other] -6,13,102,6,9,[unknown],[other] -6,14,104,6,9,[unknown],[other] +6,6,111,1,2,7,[other] +6,7,102,1,2,7,[other] +6,8,104,9,9,7,[other] +6,9,111,1,9,7,[other] +6,10,102,1,9,7,[other] +6,11,104,6,9,7,[other] +6,12,104,1,9,7,[other] +6,13,104,6,9,7,[other] +6,14,104,6,9,7,[other] 6,15,104,6,9,7,[other] 6,16,104,6,9,7,[other] 6,17,104,6,9,7,[other] 6,18,104,6,9,7,[other] 6,19,104,6,9,7,[other] 6,20,104,6,9,7,[other] -6,21,104,9,9,7,[other] +6,21,104,6,9,7,[other] 6,22,104,6,9,7,[other] 6,23,104,6,9,7,[other] 6,24,104,6,9,7,[other] @@ -29,15 +29,15 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 6,31,104,6,9,7,[other] 6,32,104,6,9,7,[other] 6,33,104,6,9,7,[other] -7,3,119,2,9,7,[other] -7,4,104,6,9,7,[other] -7,5,104,6,9,7,[other] -7,6,104,6,9,7,[other] -7,7,104,6,9,7,[other] +7,3,111,2,9,7,[other] +7,4,111,5,9,7,[other] +7,5,111,1,9,7,[other] +7,6,117,1,9,7,[other] +7,7,129,6,9,7,[other] 7,8,104,6,9,7,[other] 7,9,104,6,9,7,[other] 7,10,104,6,9,7,[other] -7,11,104,9,9,7,[other] +7,11,104,6,9,7,[other] 7,12,104,6,9,7,[other] 7,13,104,6,9,7,[other] 7,14,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-6-predictions.csv similarity index 84% rename from tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv rename to tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-6-predictions.csv index 1b61ff20..200bb342 100644 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-6-predictions.csv +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-6-predictions.csv @@ -6,12 +6,12 @@ sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 8,8,111,1,9,7,[other] 8,9,111,1,9,7,[other] 8,10,102,1,9,7,[other] -8,11,129,1,9,[unknown],[other] +8,11,102,1,9,7,[other] 8,12,102,1,9,[unknown],[other] 8,13,104,6,9,[unknown],[other] -8,14,104,6,9,[unknown],[other] -8,15,104,6,9,[unknown],[other] -8,16,104,6,9,[unknown],[other] +8,14,104,6,9,7,[other] +8,15,104,6,9,7,[other] +8,16,104,6,9,7,[other] 8,17,104,6,9,7,[other] 8,18,104,6,9,7,[other] 8,19,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-7-predictions.csv new file mode 100644 index 00000000..8b618b25 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,113,3,2,6,[other] +9,4,111,4,2,7,[other] +9,5,117,4,2,7,[mask] +9,6,117,4,9,7,[mask] +9,7,104,4,9,7,[other] +9,8,104,4,9,7,[other] +9,9,117,4,9,7,[mask] +9,10,104,9,9,[other],1 +9,11,121,3,9,7,1 +9,12,104,9,9,7,1 +9,13,112,9,9,2,1 +9,14,104,9,9,2,[other] +9,15,112,9,9,7,[other] +9,16,119,9,9,8,1 +9,17,112,9,9,7,[other] +9,18,119,9,9,8,[other] +9,19,104,9,9,7,[other] +9,20,129,1,9,7,[other] +9,21,104,6,9,7,[other] +9,22,104,6,9,7,[other] +9,23,104,6,9,7,[other] +9,24,104,6,9,7,[other] +9,25,104,6,9,7,[other] +9,26,104,6,9,7,[other] +9,27,104,6,9,7,[other] +9,28,104,6,9,7,[other] +9,29,104,6,9,7,[other] +9,30,104,6,9,7,[other] +9,31,104,6,9,7,[other] +9,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-0-predictions.csv new file mode 100644 index 00000000..f02aeba2 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-0-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +0,4,119,9,2,7,[other] +0,5,104,9,2,7,[other] +0,6,111,9,9,7,[other] +0,7,111,9,9,7,[other] +0,8,111,9,9,7,[other] +0,9,104,9,9,7,[other] +0,10,116,1,9,7,[other] +0,11,104,6,9,7,[other] +0,12,104,1,9,7,[other] +0,13,102,1,9,7,[other] +0,14,104,6,9,7,[other] +0,15,104,6,9,7,[other] +0,16,104,6,9,7,[other] +0,17,104,6,9,7,[other] +0,18,104,6,9,7,[other] +0,19,104,6,9,7,[other] +0,20,104,6,9,7,[other] +0,21,104,6,9,7,[other] +0,22,104,6,9,7,[other] +0,23,104,6,9,7,[other] +0,24,104,6,9,7,[other] +0,25,104,6,9,7,[other] +0,26,104,6,9,7,[other] +0,27,104,6,9,7,[other] +0,28,104,6,9,7,[other] +0,29,104,6,9,7,[other] +0,30,104,6,9,7,[other] +0,31,104,6,9,7,[other] +0,32,104,6,9,7,[other] +0,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-1-predictions.csv new file mode 100644 index 00000000..756d6e7c --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-1-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +1,4,111,9,2,7,[other] +1,5,111,1,9,7,[other] +1,6,111,1,9,7,[other] +1,7,111,1,9,7,[other] +1,8,111,1,9,7,[other] +1,9,111,1,9,7,[other] +1,10,102,1,9,7,[other] +1,11,129,1,9,7,[other] +1,12,102,1,9,[unknown],[other] +1,13,104,6,9,[unknown],[other] +1,14,104,6,9,[unknown],[other] +1,15,104,6,9,7,[other] +1,16,104,6,9,7,[other] +1,17,104,6,9,7,[other] +1,18,104,6,9,7,[other] +1,19,104,6,9,7,[other] +1,20,104,6,9,7,[other] +1,21,104,6,9,7,[other] +1,22,104,6,9,7,[other] +1,23,104,6,9,7,[other] +1,24,104,6,9,7,[other] +1,25,104,6,9,7,[other] +1,26,104,6,9,7,[other] +1,27,104,6,9,7,[other] +1,28,104,6,9,7,[other] +1,29,104,6,9,7,[other] +1,30,104,6,9,7,[other] +1,31,104,6,9,7,[other] +1,32,104,6,9,7,[other] +1,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-2-predictions.csv new file mode 100644 index 00000000..50574151 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,115,9,2,2,2 +2,4,115,9,2,2,[mask] +2,5,118,9,2,7,[mask] +2,6,112,9,9,7,0 +2,7,112,9,9,2,[unknown] +2,8,115,9,9,7,[other] +2,9,112,9,9,7,[other] +2,10,112,9,9,7,1 +2,11,112,9,9,7,[other] +2,12,112,9,9,7,[other] +2,13,112,9,9,7,[other] +2,14,112,9,9,7,[other] +2,15,112,9,9,7,[other] +2,16,112,9,9,7,0 +2,17,112,9,9,8,[other] +2,18,112,9,9,7,[other] +2,19,112,9,9,7,[other] +2,20,112,9,9,7,[other] +2,21,112,9,9,7,[other] +2,22,112,9,9,7,[other] +2,23,112,9,9,7,[other] +2,24,112,9,9,7,[other] +2,25,112,9,9,7,[other] +2,26,112,9,9,7,0 +2,27,112,9,9,7,[other] +2,28,112,9,9,7,0 +2,29,112,9,9,7,[other] +2,30,112,9,9,7,0 +2,31,112,9,9,7,[other] +2,32,112,9,9,7,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-3-predictions.csv new file mode 100644 index 00000000..08e5981d --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,112,9,2,2,2 +3,4,115,9,2,9,[mask] +3,5,118,9,2,2,[mask] +3,6,112,9,2,2,0 +3,7,112,9,9,2,[other] +3,8,112,9,2,2,[other] +3,9,112,9,2,7,[mask] +3,10,112,9,9,7,0 +3,11,112,9,9,7,[other] +3,12,112,9,9,7,0 +3,13,112,9,9,7,[other] +3,14,112,9,9,7,[other] +3,15,112,9,9,7,[other] +3,16,112,9,9,7,0 +3,17,112,9,9,7,[other] +3,18,112,9,9,7,[other] +3,19,112,9,9,7,0 +3,20,112,9,9,7,[other] +3,21,112,9,9,7,0 +3,22,112,9,9,7,[other] +3,23,112,9,9,7,[other] +3,24,112,9,9,7,[other] +3,25,112,9,9,7,0 +3,26,112,9,9,7,[other] +3,27,112,9,9,7,[other] +3,28,112,9,9,7,0 +3,29,112,9,9,7,[other] +3,30,112,9,9,7,0 +3,31,112,9,9,7,[other] +3,32,112,9,9,7,[other] +4,3,119,9,9,7,[other] +4,4,112,9,9,7,[other] +4,5,112,9,9,7,[other] +4,6,112,9,9,7,[other] +4,7,112,9,9,7,[other] +4,8,112,9,9,7,[other] +4,9,112,9,9,7,0 +4,10,112,9,9,7,[other] +4,11,112,9,9,7,0 +4,12,112,9,9,7,[other] +4,13,112,9,9,7,0 +4,14,112,9,9,7,[other] +4,15,112,9,9,7,0 +4,16,112,9,9,7,[other] +4,17,112,9,9,7,[other] +4,18,112,9,9,7,0 +4,19,112,9,9,7,[other] +4,20,112,9,9,7,[other] +4,21,112,9,9,7,[other] +4,22,112,9,9,7,0 +4,23,112,9,9,7,[other] +4,24,112,9,9,7,0 +4,25,112,9,9,7,[other] +4,26,112,9,9,7,[other] +4,27,112,9,9,7,0 +4,28,112,9,9,7,[other] +4,29,112,9,9,7,[other] +4,30,112,9,9,7,[other] +4,31,112,9,9,7,0 +4,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-4-predictions.csv new file mode 100644 index 00000000..5ade6550 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-4-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +5,3,111,3,2,2,[other] +5,4,111,3,2,8,[other] +5,5,111,1,2,7,[other] +5,6,111,1,9,7,[other] +5,7,111,3,9,7,[other] +5,8,111,1,9,7,[other] +5,9,102,1,9,7,[other] +5,10,102,1,9,7,[other] +5,11,102,4,9,[unknown],[other] +5,12,102,6,9,[unknown],[other] +5,13,104,6,9,5,[other] +5,14,104,6,9,5,[other] +5,15,104,6,9,5,[other] +5,16,104,9,9,5,[other] +5,17,104,9,9,7,[other] +5,18,104,9,9,7,[other] +5,19,104,6,9,7,[other] +5,20,104,6,9,7,[other] +5,21,104,6,9,7,[other] +5,22,104,6,9,7,[other] +5,23,104,6,9,7,[other] +5,24,104,6,9,7,[other] +5,25,104,6,9,7,[other] +5,26,104,6,9,7,[other] +5,27,104,6,9,7,[other] +5,28,104,6,9,7,[other] +5,29,104,6,9,7,[other] +5,30,104,6,9,7,[other] +5,31,104,6,9,7,[other] +5,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-5-predictions.csv new file mode 100644 index 00000000..7090f23b --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-5-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +6,4,111,9,9,7,1 +6,5,111,9,2,7,[other] +6,6,111,1,2,7,[other] +6,7,102,1,2,7,[other] +6,8,104,9,9,7,[other] +6,9,111,1,9,7,[other] +6,10,102,1,9,7,[other] +6,11,104,6,9,7,[other] +6,12,104,1,9,7,[other] +6,13,104,6,9,7,[other] +6,14,104,6,9,7,[other] +6,15,104,6,9,7,[other] +6,16,104,6,9,7,[other] +6,17,104,6,9,7,[other] +6,18,104,6,9,7,[other] +6,19,104,6,9,7,[other] +6,20,104,6,9,7,[other] +6,21,104,6,9,7,[other] +6,22,104,6,9,7,[other] +6,23,104,6,9,7,[other] +6,24,104,6,9,7,[other] +6,25,104,6,9,7,[other] +6,26,104,6,9,7,[other] +6,27,104,6,9,7,[other] +6,28,104,6,9,7,[other] +6,29,104,6,9,7,[other] +6,30,104,6,9,7,[other] +6,31,104,6,9,7,[other] +6,32,104,6,9,7,[other] +6,33,104,6,9,7,[other] +7,3,111,2,9,7,[other] +7,4,111,5,9,7,[other] +7,5,111,1,9,7,[other] +7,6,117,1,9,7,[other] +7,7,129,6,9,7,[other] +7,8,104,6,9,7,[other] +7,9,104,6,9,7,[other] +7,10,104,6,9,7,[other] +7,11,104,6,9,7,[other] +7,12,104,6,9,7,[other] +7,13,104,6,9,7,[other] +7,14,104,6,9,7,[other] +7,15,104,6,9,7,[other] +7,16,104,6,9,7,[other] +7,17,104,6,9,7,[other] +7,18,104,6,9,7,[other] +7,19,104,6,9,7,[other] +7,20,104,6,9,7,[other] +7,21,104,6,9,7,[other] +7,22,104,6,9,7,[other] +7,23,104,6,9,7,[other] +7,24,104,6,9,7,[other] +7,25,104,6,9,7,[other] +7,26,104,6,9,7,[other] +7,27,104,6,9,7,[other] +7,28,104,6,9,7,[other] +7,29,104,6,9,7,[other] +7,30,104,6,9,7,[other] +7,31,104,6,9,7,[other] +7,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-6-predictions.csv new file mode 100644 index 00000000..200bb342 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-6-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,111,9,9,7,[other] +8,5,111,9,9,7,[other] +8,6,111,9,9,7,[other] +8,7,111,1,9,7,[other] +8,8,111,1,9,7,[other] +8,9,111,1,9,7,[other] +8,10,102,1,9,7,[other] +8,11,102,1,9,7,[other] +8,12,102,1,9,[unknown],[other] +8,13,104,6,9,[unknown],[other] +8,14,104,6,9,7,[other] +8,15,104,6,9,7,[other] +8,16,104,6,9,7,[other] +8,17,104,6,9,7,[other] +8,18,104,6,9,7,[other] +8,19,104,6,9,7,[other] +8,20,104,6,9,7,[other] +8,21,104,6,9,7,[other] +8,22,104,6,9,7,[other] +8,23,104,6,9,7,[other] +8,24,104,6,9,7,[other] +8,25,104,6,9,7,[other] +8,26,104,6,9,7,[other] +8,27,104,6,9,7,[other] +8,28,104,6,9,7,[other] +8,29,104,6,9,7,[other] +8,30,104,6,9,7,[other] +8,31,104,6,9,7,[other] +8,32,104,6,9,7,[other] +8,33,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-7-predictions.csv new file mode 100644 index 00000000..8b618b25 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,113,3,2,6,[other] +9,4,111,4,2,7,[other] +9,5,117,4,2,7,[mask] +9,6,117,4,9,7,[mask] +9,7,104,4,9,7,[other] +9,8,104,4,9,7,[other] +9,9,117,4,9,7,[mask] +9,10,104,9,9,[other],1 +9,11,121,3,9,7,1 +9,12,104,9,9,7,1 +9,13,112,9,9,2,1 +9,14,104,9,9,2,[other] +9,15,112,9,9,7,[other] +9,16,119,9,9,8,1 +9,17,112,9,9,7,[other] +9,18,119,9,9,8,[other] +9,19,104,9,9,7,[other] +9,20,129,1,9,7,[other] +9,21,104,6,9,7,[other] +9,22,104,6,9,7,[other] +9,23,104,6,9,7,[other] +9,24,104,6,9,7,[other] +9,25,104,6,9,7,[other] +9,26,104,6,9,7,[other] +9,27,104,6,9,7,[other] +9,28,104,6,9,7,[other] +9,29,104,6,9,7,[other] +9,30,104,6,9,7,[other] +9,31,104,6,9,7,[other] +9,32,104,6,9,7,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-0-predictions.csv new file mode 100644 index 00000000..7269a244 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-0-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +0,4,102,6,9,5,1 +0,5,104,6,5,5,1 +0,6,104,6,9,5,1 +0,7,104,6,9,8,1 +0,8,104,6,9,5,1 +0,9,104,6,9,8,1 +0,10,104,4,9,5,1 +0,11,104,6,9,8,0 +0,12,103,4,9,5,1 +0,13,102,6,9,5,0 +0,14,103,6,9,5,1 +0,15,102,6,9,5,1 +0,16,102,6,9,5,1 +0,17,102,6,9,5,1 +0,18,102,6,9,8,1 +0,19,104,6,9,5,1 +0,20,102,6,9,8,1 +0,21,104,4,9,5,1 +0,22,102,6,9,8,1 +0,23,102,6,9,5,1 +0,24,102,6,9,5,1 +0,25,102,6,9,5,1 +0,26,102,6,9,5,1 +0,27,102,6,9,5,1 +0,28,102,6,9,5,1 +0,29,102,6,9,5,1 +0,30,102,6,9,5,1 +0,31,102,6,9,5,1 +0,32,102,6,9,5,1 +0,33,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-1-predictions.csv new file mode 100644 index 00000000..f57b3e81 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-1-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +1,4,104,6,9,5,1 +1,5,104,6,9,8,1 +1,6,104,6,9,5,1 +1,7,104,6,9,8,1 +1,8,104,6,9,5,1 +1,9,102,6,9,8,1 +1,10,104,6,9,5,1 +1,11,112,6,9,5,1 +1,12,102,6,9,5,1 +1,13,102,6,9,5,1 +1,14,102,6,9,5,1 +1,15,102,6,9,5,1 +1,16,102,6,9,5,1 +1,17,102,6,9,5,1 +1,18,102,6,9,5,1 +1,19,102,6,9,5,1 +1,20,102,6,9,5,1 +1,21,102,6,9,5,1 +1,22,102,6,9,5,1 +1,23,102,6,9,5,1 +1,24,102,6,9,5,1 +1,25,102,6,9,5,1 +1,26,102,6,9,5,1 +1,27,102,6,9,5,1 +1,28,102,6,9,5,1 +1,29,102,6,9,5,1 +1,30,102,6,9,5,1 +1,31,102,6,9,5,1 +1,32,102,6,9,5,1 +1,33,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-2-predictions.csv new file mode 100644 index 00000000..5d574330 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-2-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +2,3,112,6,5,5,1 +2,4,102,6,5,5,1 +2,5,102,6,1,5,1 +2,6,102,6,5,5,1 +2,7,102,6,1,5,1 +2,8,102,6,1,0,1 +2,9,102,6,1,5,1 +2,10,102,6,9,0,1 +2,11,102,6,9,5,1 +2,12,102,6,9,5,1 +2,13,102,6,9,5,1 +2,14,102,6,9,5,1 +2,15,102,6,9,5,1 +2,16,102,6,9,5,1 +2,17,102,6,9,5,1 +2,18,102,6,9,5,1 +2,19,102,6,9,5,1 +2,20,102,6,9,5,1 +2,21,102,6,9,5,1 +2,22,102,6,9,5,1 +2,23,102,6,9,5,1 +2,24,102,6,9,5,1 +2,25,102,6,9,5,1 +2,26,102,6,9,5,1 +2,27,102,6,9,5,1 +2,28,102,6,9,5,1 +2,29,102,6,9,5,1 +2,30,102,6,9,5,1 +2,31,102,6,9,5,1 +2,32,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-3-predictions.csv new file mode 100644 index 00000000..3bd7fa01 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-3-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +3,3,104,4,9,8,1 +3,4,104,4,9,8,0 +3,5,104,4,9,8,1 +3,6,104,4,9,8,0 +3,7,104,4,9,8,1 +3,8,104,4,9,8,0 +3,9,104,4,9,5,1 +3,10,112,9,8,8,0 +3,11,104,4,1,5,1 +3,12,112,6,1,8,0 +3,13,112,4,1,5,1 +3,14,112,6,5,5,0 +3,15,112,6,1,5,1 +3,16,112,6,5,5,1 +3,17,102,6,5,5,1 +3,18,102,6,1,5,1 +3,19,102,6,1,0,1 +3,20,102,6,1,5,1 +3,21,102,6,1,0,1 +3,22,102,6,1,5,1 +3,23,102,6,1,0,1 +3,24,102,6,1,0,1 +3,25,102,6,1,0,1 +3,26,102,6,1,0,1 +3,27,102,6,1,0,1 +3,28,102,6,1,0,1 +3,29,102,6,1,0,1 +3,30,102,6,1,0,1 +3,31,102,6,9,0,1 +3,32,102,6,9,5,1 +4,3,112,6,1,5,1 +4,4,102,6,5,0,1 +4,5,104,6,1,5,1 +4,6,102,6,5,0,1 +4,7,104,6,1,5,1 +4,8,102,6,1,0,1 +4,9,112,6,1,5,1 +4,10,102,6,5,5,1 +4,11,102,6,9,0,1 +4,12,102,6,9,5,1 +4,13,102,6,9,0,1 +4,14,102,6,9,5,1 +4,15,102,6,9,5,1 +4,16,102,6,9,5,1 +4,17,102,6,9,5,1 +4,18,102,6,9,5,1 +4,19,102,6,9,5,1 +4,20,102,6,9,5,1 +4,21,102,6,9,5,1 +4,22,102,6,9,5,1 +4,23,102,6,9,5,1 +4,24,102,6,9,5,1 +4,25,102,6,9,5,1 +4,26,102,6,9,5,1 +4,27,102,6,9,5,1 +4,28,102,6,9,5,1 +4,29,102,6,9,5,1 +4,30,102,6,9,5,1 +4,31,102,6,9,5,1 +4,32,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-4-predictions.csv new file mode 100644 index 00000000..083376d3 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-4-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +5,3,102,6,9,2,1 +5,4,102,6,9,7,1 +5,5,102,6,9,2,1 +5,6,102,6,9,7,1 +5,7,102,6,9,2,1 +5,8,102,6,9,7,1 +5,9,102,6,9,8,1 +5,10,102,6,9,5,1 +5,11,102,6,9,5,1 +5,12,102,6,9,5,1 +5,13,102,6,9,5,1 +5,14,102,6,9,5,1 +5,15,102,6,9,5,1 +5,16,102,6,9,5,1 +5,17,102,6,9,5,1 +5,18,102,6,9,5,1 +5,19,102,6,9,5,1 +5,20,102,6,9,5,1 +5,21,102,6,9,5,1 +5,22,102,6,9,5,1 +5,23,102,6,9,5,1 +5,24,102,6,9,5,1 +5,25,102,6,9,5,1 +5,26,102,6,9,5,1 +5,27,102,6,9,5,1 +5,28,102,6,9,5,1 +5,29,102,6,9,5,1 +5,30,102,6,9,5,1 +5,31,102,6,9,5,1 +5,32,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-5-predictions.csv new file mode 100644 index 00000000..2015e2b4 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-5-predictions.csv @@ -0,0 +1,61 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +6,4,121,6,1,5,0 +6,5,102,6,1,5,1 +6,6,102,6,5,5,1 +6,7,102,6,5,5,1 +6,8,102,6,1,5,1 +6,9,102,6,1,5,1 +6,10,102,6,1,5,1 +6,11,102,6,1,5,1 +6,12,102,6,1,5,1 +6,13,102,6,1,0,1 +6,14,102,6,1,0,1 +6,15,102,6,1,0,1 +6,16,102,6,1,0,1 +6,17,102,6,1,0,1 +6,18,102,6,1,0,1 +6,19,102,6,1,0,1 +6,20,102,6,1,0,1 +6,21,102,6,9,0,1 +6,22,102,6,9,5,1 +6,23,102,6,9,5,1 +6,24,102,6,9,5,1 +6,25,102,6,9,5,1 +6,26,102,6,9,5,1 +6,27,102,6,9,5,1 +6,28,102,6,9,5,1 +6,29,102,6,9,5,1 +6,30,102,6,9,5,1 +6,31,102,6,9,5,1 +6,32,102,6,9,5,1 +6,33,102,6,9,5,1 +7,3,112,4,1,5,1 +7,4,112,6,5,5,1 +7,5,112,6,5,5,1 +7,6,102,6,5,5,1 +7,7,102,6,1,5,1 +7,8,102,6,1,5,1 +7,9,102,6,1,5,1 +7,10,102,6,1,0,1 +7,11,102,6,9,0,1 +7,12,102,6,9,5,1 +7,13,102,6,9,5,1 +7,14,102,6,9,5,1 +7,15,102,6,9,5,1 +7,16,102,6,9,5,1 +7,17,102,6,9,5,1 +7,18,102,6,9,5,1 +7,19,102,6,9,5,1 +7,20,102,6,9,5,1 +7,21,102,6,9,5,1 +7,22,102,6,9,5,1 +7,23,102,6,9,5,1 +7,24,102,6,9,5,1 +7,25,102,6,9,5,1 +7,26,102,6,9,5,1 +7,27,102,6,9,5,1 +7,28,102,6,9,5,1 +7,29,102,6,9,5,1 +7,30,102,6,9,5,1 +7,31,102,6,9,5,1 +7,32,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-6-predictions.csv new file mode 100644 index 00000000..0c53cfc0 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-6-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +8,4,104,6,1,5,1 +8,5,112,6,5,5,1 +8,6,104,6,5,5,1 +8,7,104,6,1,5,1 +8,8,112,6,1,5,1 +8,9,102,6,5,5,1 +8,10,102,6,9,5,1 +8,11,102,6,9,0,1 +8,12,102,6,9,5,1 +8,13,102,6,9,5,1 +8,14,102,6,9,0,1 +8,15,102,6,9,5,1 +8,16,102,6,9,5,1 +8,17,102,6,9,5,1 +8,18,102,6,9,5,1 +8,19,102,6,9,5,1 +8,20,102,6,9,5,1 +8,21,102,6,9,5,1 +8,22,102,6,9,5,1 +8,23,102,6,9,5,1 +8,24,102,6,9,5,1 +8,25,102,6,9,5,1 +8,26,102,6,9,5,1 +8,27,102,6,9,5,1 +8,28,102,6,9,5,1 +8,29,102,6,9,5,1 +8,30,102,6,9,5,1 +8,31,102,6,9,5,1 +8,32,102,6,9,5,1 +8,33,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-7-predictions.csv new file mode 100644 index 00000000..2d5e6cb9 --- /dev/null +++ b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-7-predictions.csv @@ -0,0 +1,31 @@ +sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 +9,3,102,6,9,5,1 +9,4,102,6,9,5,1 +9,5,102,6,9,5,1 +9,6,102,6,9,5,1 +9,7,102,6,9,5,1 +9,8,102,6,9,5,1 +9,9,102,6,9,5,1 +9,10,102,6,9,5,1 +9,11,102,6,9,5,1 +9,12,102,6,9,5,1 +9,13,102,6,9,5,1 +9,14,102,6,9,5,1 +9,15,102,6,9,5,1 +9,16,102,6,9,5,1 +9,17,102,6,9,5,1 +9,18,102,6,9,5,1 +9,19,102,6,9,5,1 +9,20,102,6,9,5,1 +9,21,102,6,9,5,1 +9,22,102,6,9,5,1 +9,23,102,6,9,5,1 +9,24,102,6,9,5,1 +9,25,102,6,9,5,1 +9,26,102,6,9,5,1 +9,27,102,6,9,5,1 +9,28,102,6,9,5,1 +9,29,102,6,9,5,1 +9,30,102,6,9,5,1 +9,31,102,6,9,5,1 +9,32,102,6,9,5,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv deleted file mode 100644 index 453ac47f..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-0-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,102,3,3,5,0 -0,5,102,3,9,0,1 -0,6,102,1,9,0,0 -0,7,102,1,0,0,2 -0,8,111,1,2,0,2 -0,9,102,1,9,0,2 -0,10,102,1,3,0,2 -0,11,102,1,3,0,2 -0,12,111,1,3,0,2 -0,13,111,1,9,0,2 -0,14,105,1,0,0,2 -0,15,105,1,0,0,2 -0,16,105,1,0,0,2 -0,17,105,1,0,0,2 -0,18,105,1,0,0,2 -0,19,105,1,0,0,2 -0,20,105,1,0,8,2 -0,21,105,1,0,5,2 -0,22,105,5,0,2,2 -0,23,105,5,0,8,2 -0,24,105,5,0,8,2 -0,25,105,5,0,8,2 -0,26,105,5,0,8,2 -0,27,105,3,0,8,2 -0,28,105,3,0,5,1 -0,29,105,3,0,2,1 -0,30,105,3,0,2,1 -0,31,105,3,0,2,1 -0,32,110,3,0,2,1 -0,33,110,3,0,2,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv deleted file mode 100644 index 6eac25ae..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-1-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,102,7,0,5,[other] -1,5,111,3,0,1,0 -1,6,111,1,0,1,1 -1,7,111,7,0,1,0 -1,8,111,5,0,1,1 -1,9,[unknown],7,0,1,0 -1,10,102,1,0,5,0 -1,11,110,5,0,1,2 -1,12,102,5,0,5,0 -1,13,102,5,0,2,1 -1,14,[unknown],5,0,1,1 -1,15,110,2,0,8,0 -1,16,102,3,0,5,0 -1,17,111,3,0,2,2 -1,18,111,3,3,5,2 -1,19,111,3,3,1,2 -1,20,111,1,3,0,2 -1,21,102,1,2,0,2 -1,22,111,[mask],2,0,2 -1,23,112,[mask],2,5,2 -1,24,109,[mask],0,5,2 -1,25,109,[mask],0,2,2 -1,26,109,[mask],0,[other],2 -1,27,109,3,8,[other],2 -1,28,109,1,8,5,2 -1,29,109,1,8,[other],2 -1,30,104,1,8,[other],2 -1,31,104,1,9,[other],2 -1,32,111,3,9,0,2 -1,33,127,[mask],9,[other],2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv deleted file mode 100644 index 9b51b012..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,112,2,0,5,1 -2,4,112,7,2,0,[other] -2,5,112,7,3,5,2 -2,6,104,7,3,0,2 -2,7,104,7,9,0,2 -2,8,104,7,3,0,0 -2,9,104,4,3,[other],0 -2,10,112,7,3,0,0 -2,11,104,7,3,0,0 -2,12,116,4,3,6,0 -2,13,112,4,3,6,0 -2,14,112,7,3,6,0 -2,15,116,7,3,6,0 -2,16,116,4,3,6,0 -2,17,112,4,3,6,0 -2,18,112,8,3,6,0 -2,19,112,8,3,6,0 -2,20,118,4,7,6,0 -2,21,112,4,9,6,1 -2,22,118,8,7,6,0 -2,23,112,4,9,6,0 -2,24,112,8,7,0,1 -2,25,112,4,4,6,2 -2,26,112,4,3,[other],1 -2,27,104,4,4,8,[other] -2,28,112,4,4,[other],1 -2,29,104,7,4,8,1 -2,30,104,4,4,[other],1 -2,31,104,8,4,[other],1 -2,32,104,8,4,0,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv deleted file mode 100644 index 4c107703..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,111,3,3,5,0 -3,4,111,2,3,5,0 -3,5,112,3,3,2,0 -3,6,102,3,3,5,1 -3,7,118,2,3,0,0 -3,8,102,6,3,2,0 -3,9,102,6,3,0,0 -3,10,102,6,3,0,0 -3,11,102,6,3,2,0 -3,12,102,6,3,2,0 -3,13,102,3,3,2,2 -3,14,102,6,3,0,2 -3,15,102,6,3,0,0 -3,16,102,1,3,2,2 -3,17,111,3,3,0,2 -3,18,102,1,3,0,2 -3,19,111,1,3,0,2 -3,20,111,1,3,0,2 -3,21,111,1,2,0,2 -3,22,111,1,2,0,2 -3,23,102,1,2,0,2 -3,24,111,1,2,0,2 -3,25,111,1,2,5,2 -3,26,105,5,9,5,2 -3,27,105,[mask],0,8,2 -3,28,105,[mask],0,8,2 -3,29,105,[mask],0,8,2 -3,30,105,[mask],0,[other],2 -3,31,105,[mask],9,[other],2 -3,32,105,[mask],9,[other],2 -4,3,113,7,9,5,2 -4,4,104,4,0,0,1 -4,5,112,6,2,0,1 -4,6,104,7,9,0,1 -4,7,118,7,9,0,1 -4,8,104,4,9,0,0 -4,9,102,7,0,0,0 -4,10,102,7,3,0,0 -4,11,111,6,3,0,0 -4,12,102,4,3,0,0 -4,13,102,6,3,0,0 -4,14,102,6,3,0,0 -4,15,102,6,3,0,0 -4,16,102,6,3,6,0 -4,17,102,1,3,2,0 -4,18,102,3,3,2,2 -4,19,102,6,3,0,0 -4,20,102,1,3,2,0 -4,21,102,3,3,2,2 -4,22,111,3,3,0,2 -4,23,102,1,3,0,2 -4,24,111,1,3,0,2 -4,25,102,1,3,0,2 -4,26,111,1,3,0,2 -4,27,102,1,2,0,2 -4,28,111,1,2,0,2 -4,29,111,1,2,0,2 -4,30,111,1,2,5,2 -4,31,105,1,9,5,2 -4,32,105,1,0,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv deleted file mode 100644 index d03238fa..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-4-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,104,7,9,8,2 -5,4,104,1,9,0,2 -5,5,104,1,9,0,2 -5,6,104,1,9,0,2 -5,7,104,1,9,0,2 -5,8,104,1,9,0,2 -5,9,104,1,0,0,2 -5,10,104,7,9,0,0 -5,11,122,7,0,7,0 -5,12,122,7,3,7,0 -5,13,119,4,3,7,0 -5,14,119,4,3,0,0 -5,15,112,3,9,6,0 -5,16,122,7,3,0,0 -5,17,102,4,9,6,0 -5,18,102,8,3,0,0 -5,19,102,8,9,6,0 -5,20,102,8,3,0,0 -5,21,102,3,3,6,0 -5,22,102,4,3,0,0 -5,23,102,3,3,6,0 -5,24,102,4,3,6,0 -5,25,102,3,3,6,0 -5,26,102,4,3,6,0 -5,27,102,3,3,6,0 -5,28,102,4,3,2,0 -5,29,102,3,3,6,2 -5,30,111,6,3,0,2 -5,31,102,3,3,6,2 -5,32,102,6,3,6,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv deleted file mode 100644 index 244d29b4..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-5-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,110,1,0,5,1 -6,5,110,2,0,0,1 -6,6,112,1,0,[other],1 -6,7,111,7,[unknown],[other],2 -6,8,111,3,2,5,1 -6,9,112,2,9,5,1 -6,10,108,7,0,1,[other] -6,11,104,7,0,[other],1 -6,12,119,7,9,0,1 -6,13,104,7,9,0,0 -6,14,122,7,0,0,1 -6,15,111,7,4,[other],0 -6,16,119,7,3,0,0 -6,17,122,7,9,0,0 -6,18,102,7,0,5,0 -6,19,111,7,0,0,0 -6,20,111,8,0,0,0 -6,21,112,8,0,2,0 -6,22,102,7,0,5,0 -6,23,111,3,0,2,0 -6,24,111,3,0,1,0 -6,25,111,1,0,1,0 -6,26,111,1,0,1,0 -6,27,110,1,0,1,0 -6,28,102,1,0,4,0 -6,29,111,1,0,[unknown],2 -6,30,110,1,0,1,1 -6,31,110,1,0,1,1 -6,32,110,1,0,1,1 -6,33,110,1,0,1,1 -7,3,102,3,0,5,0 -7,4,102,3,0,[unknown],0 -7,5,111,3,0,[unknown],0 -7,6,102,8,0,1,[other] -7,7,102,3,0,2,0 -7,8,111,3,0,2,1 -7,9,112,4,0,1,[other] -7,10,102,1,0,2,0 -7,11,111,1,8,2,2 -7,12,110,1,[mask],1,2 -7,13,[mask],1,0,1,2 -7,14,111,1,0,1,2 -7,15,111,1,2,1,2 -7,16,110,1,2,1,2 -7,17,[mask],1,0,5,1 -7,18,109,1,0,8,2 -7,19,102,1,0,5,1 -7,20,110,7,0,8,2 -7,21,127,3,0,5,1 -7,22,109,3,0,5,1 -7,23,109,7,0,5,1 -7,24,109,7,0,5,1 -7,25,104,7,0,5,1 -7,26,109,7,0,5,1 -7,27,119,7,0,0,[other] -7,28,111,7,0,[other],0 -7,29,111,7,0,0,0 -7,30,111,7,9,0,0 -7,31,111,7,0,0,0 -7,32,111,7,0,0,0 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv deleted file mode 100644 index 0735ca91..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-6-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,111,3,0,6,[other] -8,5,102,7,9,7,[other] -8,6,104,7,0,7,0 -8,7,102,8,0,5,1 -8,8,112,3,0,2,0 -8,9,111,7,0,5,2 -8,10,111,1,3,0,2 -8,11,102,6,9,0,2 -8,12,111,1,3,0,2 -8,13,111,1,3,0,2 -8,14,102,1,9,0,2 -8,15,111,1,2,0,2 -8,16,111,1,2,5,2 -8,17,111,5,0,5,2 -8,18,105,5,0,[other],2 -8,19,105,[mask],0,2,2 -8,20,105,[mask],0,8,2 -8,21,105,[mask],0,8,2 -8,22,105,[mask],0,[other],2 -8,23,105,3,0,[other],2 -8,24,109,5,9,0,2 -8,25,105,[mask],0,6,2 -8,26,105,[mask],3,[other],2 -8,27,109,[mask],0,[other],2 -8,28,109,3,0,[other],2 -8,29,109,3,0,2,2 -8,30,109,3,0,6,1 -8,31,109,3,0,2,1 -8,32,109,3,0,[other],[other] -8,33,109,3,8,2,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv deleted file mode 100644 index 20d90721..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-predictions/sequifier-test-hp-search-custom-eval-run-4-best-3-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,108,4,9,1,1 -9,4,113,7,9,8,1 -9,5,104,4,9,0,1 -9,6,119,8,9,0,1 -9,7,119,7,9,0,2 -9,8,104,7,9,0,0 -9,9,122,7,9,0,0 -9,10,102,7,3,0,0 -9,11,122,7,3,0,0 -9,12,102,4,3,6,0 -9,13,102,7,3,0,0 -9,14,111,6,3,0,0 -9,15,112,3,3,6,0 -9,16,102,7,3,5,0 -9,17,102,8,3,6,0 -9,18,102,3,3,2,0 -9,19,102,4,3,6,0 -9,20,102,3,3,6,0 -9,21,102,6,3,2,0 -9,22,102,3,3,2,1 -9,23,118,3,3,6,2 -9,24,102,6,3,0,0 -9,25,102,3,3,2,2 -9,26,111,3,3,0,2 -9,27,102,3,3,6,2 -9,28,102,6,3,0,2 -9,29,111,1,3,2,2 -9,30,102,1,3,0,2 -9,31,102,1,2,0,2 -9,32,111,1,2,0,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv deleted file mode 100644 index 0b011a28..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-0-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -0,4,104,7,[mask],[unknown],1 -0,5,104,7,[mask],[unknown],0 -0,6,104,7,1,3,0 -0,7,104,0,1,3,0 -0,8,112,7,1,[unknown],0 -0,9,108,5,1,[unknown],0 -0,10,112,1,1,5,2 -0,11,129,2,1,5,2 -0,12,129,2,1,5,2 -0,13,112,2,1,5,2 -0,14,107,7,[mask],[unknown],1 -0,15,107,7,[mask],[unknown],1 -0,16,107,7,[mask],[unknown],1 -0,17,107,7,[mask],[unknown],1 -0,18,107,7,[mask],[unknown],1 -0,19,104,7,[mask],[unknown],1 -0,20,104,7,[mask],[unknown],1 -0,21,104,9,[mask],[unknown],1 -0,22,104,9,[mask],3,2 -0,23,104,9,[mask],3,2 -0,24,104,9,[mask],3,2 -0,25,104,9,[mask],3,2 -0,26,104,9,[mask],1,2 -0,27,104,9,[other],1,[mask] -0,28,104,[unknown],[other],1,[mask] -0,29,112,[unknown],[other],1,[mask] -0,30,112,2,[mask],[unknown],[mask] -0,31,110,2,[mask],[unknown],[mask] -0,32,110,2,[other],7,[mask] -0,33,104,2,[other],7,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv deleted file mode 100644 index 531427bf..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-1-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -1,4,104,7,[mask],1,1 -1,5,104,7,9,1,1 -1,6,104,7,9,[unknown],1 -1,7,104,7,9,[unknown],1 -1,8,104,7,9,[unknown],1 -1,9,118,7,9,[unknown],[other] -1,10,112,7,9,[unknown],0 -1,11,118,7,1,[unknown],[other] -1,12,118,7,1,[unknown],[other] -1,13,110,7,1,[unknown],[other] -1,14,118,7,1,[unknown],[other] -1,15,112,7,1,[unknown],2 -1,16,108,7,[mask],[unknown],2 -1,17,129,1,[mask],8,2 -1,18,129,2,[mask],5,2 -1,19,129,2,1,1,2 -1,20,129,7,1,5,[mask] -1,21,104,9,1,5,[mask] -1,22,129,9,1,5,[other] -1,23,112,9,1,5,[mask] -1,24,112,9,1,5,[mask] -1,25,112,0,1,5,[mask] -1,26,112,6,[mask],[unknown],[mask] -1,27,123,7,[mask],[unknown],[mask] -1,28,109,7,[mask],5,1 -1,29,104,7,[mask],1,[mask] -1,30,104,7,[mask],8,1 -1,31,104,7,[mask],8,1 -1,32,104,0,[mask],8,1 -1,33,104,7,[mask],8,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv deleted file mode 100644 index 4350e88b..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-2-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -2,3,112,2,[mask],5,[mask] -2,4,104,7,[mask],[unknown],[mask] -2,5,104,7,1,8,1 -2,6,104,7,[mask],[unknown],0 -2,7,129,7,1,8,1 -2,8,104,7,[mask],1,0 -2,9,112,7,1,1,1 -2,10,107,7,[mask],[unknown],2 -2,11,129,9,1,1,2 -2,12,112,9,[other],1,2 -2,13,104,7,1,1,2 -2,14,118,7,1,1,[other] -2,15,112,7,1,5,2 -2,16,129,7,1,1,[other] -2,17,112,7,1,5,[other] -2,18,112,0,1,5,[other] -2,19,112,7,1,5,[other] -2,20,112,7,1,[unknown],[other] -2,21,112,7,1,[unknown],0 -2,22,108,7,1,[unknown],2 -2,23,119,7,[mask],[unknown],0 -2,24,129,0,1,5,2 -2,25,112,7,[mask],8,2 -2,26,104,7,[mask],5,2 -2,27,129,7,1,8,2 -2,28,104,9,1,5,2 -2,29,112,9,1,8,[mask] -2,30,112,9,1,5,[mask] -2,31,104,9,1,5,[mask] -2,32,112,0,[mask],8,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv deleted file mode 100644 index b312c008..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-3-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -3,3,104,0,[mask],8,[mask] -3,4,104,0,[mask],8,[other] -3,5,104,[mask],[mask],6,0 -3,6,104,0,[mask],8,[unknown] -3,7,104,0,[mask],8,0 -3,8,104,0,[mask],6,[mask] -3,9,[other],1,[mask],8,[unknown] -3,10,129,2,1,6,[unknown] -3,11,129,2,1,6,[unknown] -3,12,129,2,1,6,[unknown] -3,13,129,2,1,5,2 -3,14,129,2,1,5,2 -3,15,129,2,1,5,2 -3,16,129,2,1,5,2 -3,17,112,2,1,5,2 -3,18,107,7,[mask],5,1 -3,19,107,7,[mask],[unknown],1 -3,20,107,7,[mask],[unknown],1 -3,21,107,7,[mask],[unknown],1 -3,22,107,7,[mask],[unknown],1 -3,23,104,7,[mask],[unknown],1 -3,24,104,7,[mask],[unknown],1 -3,25,104,[mask],[mask],[unknown],1 -3,26,104,9,[mask],3,2 -3,27,104,9,[mask],3,2 -3,28,104,9,[mask],3,2 -3,29,104,9,[mask],3,2 -3,30,104,9,[mask],3,2 -3,31,112,9,[other],1,[mask] -3,32,104,9,[mask],1,[mask] -4,3,104,9,1,[unknown],2 -4,4,104,7,[mask],[unknown],0 -4,5,[other],9,1,[unknown],1 -4,6,104,9,1,[unknown],0 -4,7,112,9,1,[unknown],1 -4,8,104,7,1,[unknown],2 -4,9,112,9,1,1,[mask] -4,10,129,7,1,1,[mask] -4,11,112,7,1,1,[other] -4,12,112,7,1,5,2 -4,13,108,7,1,[unknown],2 -4,14,129,7,1,5,2 -4,15,112,7,[mask],1,[other] -4,16,112,7,1,5,[mask] -4,17,118,7,[mask],5,1 -4,18,104,7,[mask],[unknown],[mask] -4,19,104,7,[mask],8,1 -4,20,104,0,[mask],8,[mask] -4,21,104,0,[mask],5,[other] -4,22,112,7,[mask],3,[mask] -4,23,104,2,[mask],8,[mask] -4,24,112,9,[mask],3,1 -4,25,104,2,[mask],3,[mask] -4,26,107,9,[other],6,[unknown] -4,27,104,2,[mask],3,2 -4,28,107,9,2,6,[unknown] -4,29,104,2,[mask],3,1 -4,30,104,9,[mask],3,1 -4,31,107,9,[mask],3,1 -4,32,104,3,[mask],3,1 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv deleted file mode 100644 index bfc352bc..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-4-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -5,3,102,7,[mask],9,1 -5,4,113,7,[mask],[unknown],1 -5,5,104,7,[mask],[unknown],1 -5,6,104,7,[mask],[unknown],1 -5,7,104,7,[mask],[unknown],1 -5,8,104,7,[mask],[unknown],1 -5,9,104,7,[mask],3,1 -5,10,104,9,[mask],3,1 -5,11,104,9,[mask],3,2 -5,12,104,9,[mask],3,2 -5,13,112,9,[mask],1,2 -5,14,104,5,9,1,2 -5,15,104,9,[other],1,0 -5,16,111,[unknown],[other],3,[mask] -5,17,112,[unknown],[mask],3,2 -5,18,104,2,[mask],1,[mask] -5,19,110,9,[other],1,[mask] -5,20,110,2,[other],7,[mask] -5,21,104,2,[mask],8,[mask] -5,22,[other],9,[other],8,[mask] -5,23,104,2,[other],8,[mask] -5,24,129,9,[other],8,2 -5,25,104,9,[other],1,[mask] -5,26,107,9,[other],1,[mask] -5,27,104,2,[other],1,[mask] -5,28,[other],9,[other],1,[other] -5,29,107,1,[other],1,[mask] -5,30,118,1,[other],[unknown],[mask] -5,31,[other],2,1,[unknown],[mask] -5,32,[other],9,[other],5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv deleted file mode 100644 index 13756617..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-5-predictions.csv +++ /dev/null @@ -1,61 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -6,4,129,9,1,5,[other] -6,5,129,9,1,5,[mask] -6,6,129,9,1,5,[other] -6,7,112,9,1,5,[other] -6,8,129,7,1,5,[mask] -6,9,129,2,1,8,[mask] -6,10,129,7,1,5,2 -6,11,112,7,1,8,2 -6,12,104,7,[mask],[unknown],2 -6,13,104,7,[mask],[unknown],1 -6,14,104,7,[mask],[unknown],1 -6,15,104,7,[mask],[unknown],1 -6,16,104,9,[mask],1,1 -6,17,104,9,[mask],[unknown],[mask] -6,18,112,9,1,3,[mask] -6,19,112,9,1,1,[other] -6,20,112,9,1,1,[mask] -6,21,111,9,1,5,2 -6,22,112,9,1,1,[mask] -6,23,118,7,1,5,2 -6,24,112,7,1,1,[other] -6,25,112,0,1,1,[mask] -6,26,118,7,[mask],[unknown],0 -6,27,129,7,1,8,[mask] -6,28,129,0,[mask],5,[other] -6,29,112,7,[mask],5,[mask] -6,30,104,7,[mask],5,[mask] -6,31,104,7,[mask],8,2 -6,32,129,9,1,8,2 -6,33,104,9,1,5,2 -7,3,129,2,1,5,[mask] -7,4,129,2,1,5,1 -7,5,112,2,1,5,1 -7,6,107,2,1,5,1 -7,7,107,2,[mask],[unknown],1 -7,8,107,7,[mask],[unknown],1 -7,9,107,7,[mask],[unknown],1 -7,10,107,7,[mask],[unknown],1 -7,11,107,7,[mask],[unknown],1 -7,12,107,7,[mask],[unknown],1 -7,13,104,7,[mask],[unknown],1 -7,14,104,7,[mask],[unknown],1 -7,15,104,9,[mask],[unknown],2 -7,16,104,9,[mask],3,2 -7,17,104,9,[mask],3,2 -7,18,104,9,[mask],3,2 -7,19,104,9,[mask],3,2 -7,20,104,9,[other],1,[mask] -7,21,112,9,[other],1,[mask] -7,22,104,9,[other],1,[mask] -7,23,112,9,[other],1,[mask] -7,24,104,2,6,1,[mask] -7,25,110,9,[other],1,[other] -7,26,110,2,[mask],7,[mask] -7,27,[other],2,[other],8,[mask] -7,28,[other],1,[other],8,[other] -7,29,121,1,[mask],7,[mask] -7,30,[other],2,1,8,[mask] -7,31,[other],9,1,5,[other] -7,32,129,9,1,5,[mask] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv deleted file mode 100644 index ca8bff47..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-6-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -8,4,104,2,1,5,[mask] -8,5,129,9,1,5,1 -8,6,104,2,1,5,[mask] -8,7,129,7,1,5,1 -8,8,112,2,1,5,1 -8,9,107,7,[mask],[unknown],1 -8,10,107,7,[mask],[unknown],1 -8,11,107,7,[mask],[unknown],1 -8,12,107,7,[mask],[unknown],1 -8,13,123,7,[mask],[unknown],1 -8,14,107,7,[mask],[unknown],1 -8,15,118,7,[mask],[unknown],1 -8,16,104,7,[mask],[unknown],2 -8,17,104,9,[mask],1,2 -8,18,104,9,[mask],1,2 -8,19,104,9,[mask],1,2 -8,20,104,9,[mask],1,[mask] -8,21,104,9,[other],7,[mask] -8,22,104,9,[mask],7,[mask] -8,23,104,9,[other],[unknown],[mask] -8,24,112,9,[other],1,[mask] -8,25,109,2,[other],1,[mask] -8,26,104,9,[other],1,[mask] -8,27,107,9,[other],1,[mask] -8,28,107,2,[other],1,[mask] -8,29,[other],9,[other],8,[other] -8,30,[other],1,3,8,[other] -8,31,[other],1,1,8,[other] -8,32,[other],1,1,8,[other] -8,33,[other],2,1,5,[other] diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv deleted file mode 100644 index a6cb20c5..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-predictions/sequifier-test-hp-search-custom-eval-run-5-best-3-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,104,7,[mask],0,1 -9,4,104,7,[mask],0,1 -9,5,104,7,9,0,1 -9,6,104,7,9,3,0 -9,7,104,0,9,3,1 -9,8,104,[mask],[mask],3,0 -9,9,104,0,9,3,1 -9,10,112,[mask],[mask],3,0 -9,11,[unknown],5,9,3,[other] -9,12,112,0,[mask],3,0 -9,13,[unknown],7,[mask],[unknown],[other] -9,14,[unknown],7,[mask],[unknown],0 -9,15,104,7,[mask],[unknown],1 -9,16,104,9,[mask],[unknown],2 -9,17,104,9,[mask],[unknown],0 -9,18,104,9,[other],4,[mask] -9,19,104,9,[other],4,2 -9,20,104,9,[other],1,[mask] -9,21,112,9,[other],1,[mask] -9,22,112,2,[other],1,[mask] -9,23,[other],2,6,[unknown],[mask] -9,24,[other],9,[other],1,[other] -9,25,107,1,[other],1,[mask] -9,26,118,2,6,[unknown],[other] -9,27,110,1,1,[unknown],[other] -9,28,110,2,1,[unknown],[other] -9,29,129,1,1,8,[other] -9,30,129,2,1,5,[other] -9,31,129,2,1,5,[other] -9,32,129,2,1,5,2 diff --git a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv b/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv deleted file mode 100644 index 4c3bf37e..00000000 --- a/tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-predictions/sequifier-test-hp-search-custom-eval-run-6-best-3-7-predictions.csv +++ /dev/null @@ -1,31 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2,supCat3,supCat4 -9,3,113,3,2,[other],[other] -9,4,119,9,2,7,[mask] -9,5,129,9,9,[other],[other] -9,6,119,9,9,7,[mask] -9,7,119,9,9,7,[other] -9,8,104,9,9,7,[other] -9,9,129,9,9,2,[other] -9,10,112,9,9,2,[other] -9,11,112,9,9,2,[other] -9,12,112,9,9,7,[other] -9,13,112,9,9,7,[other] -9,14,112,9,9,7,[other] -9,15,112,9,9,7,[other] -9,16,112,9,9,7,[other] -9,17,112,9,9,8,[other] -9,18,112,9,9,7,[other] -9,19,112,9,9,7,[other] -9,20,112,9,9,7,[other] -9,21,112,9,9,7,[other] -9,22,112,9,9,7,[other] -9,23,112,9,9,7,[other] -9,24,112,9,9,7,[other] -9,25,112,9,9,8,[other] -9,26,112,9,9,7,[other] -9,27,112,9,9,7,[other] -9,28,112,9,9,7,[other] -9,29,112,9,9,7,[other] -9,30,112,9,9,7,[other] -9,31,112,9,9,7,[other] -9,32,112,9,9,7,[other] diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv index 0cf0e0be..5cf025b8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.009402489,0.007112399,0.006294906,0.025800984,0.005330445,0.058306154,0.09866103,0.031214684,0.053123873,0.008108479,0.006941985,0.03378066,0.015496237,0.024613176,0.034951206,0.013683666,0.15753025,0.0058497526,0.010813744,0.012419266,0.00899315,0.0433608,0.024071196,0.0070383553,0.061834656,0.040662296,0.013590249,0.08462712,0.007689061,0.02625725,0.025855735,0.011850585,0.024734205 +0.009402493,0.007112395,0.0062949057,0.02580099,0.005330445,0.05830615,0.09866104,0.031214688,0.053123884,0.008108478,0.0069419877,0.033780657,0.015496235,0.024613172,0.03495121,0.013683665,0.15753023,0.0058497493,0.010813737,0.012419264,0.008993149,0.04336079,0.0240712,0.007038355,0.061834626,0.040662292,0.013590248,0.084627114,0.0076890606,0.026257254,0.025855722,0.011850584,0.024734203 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv index 7a95c833..92b890cf 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008010792,0.007172111,0.0058797314,0.027109819,0.005602905,0.055375658,0.075244375,0.029313534,0.04922832,0.006365298,0.006468321,0.034970127,0.01725487,0.02158429,0.023749217,0.016210178,0.18300672,0.006796729,0.011571762,0.008914565,0.0113315275,0.037273988,0.022148373,0.007266352,0.05995564,0.03540441,0.009834666,0.13455547,0.0071732774,0.021706866,0.02286324,0.011315751,0.01934116 +0.008010796,0.0071721114,0.005879732,0.027109826,0.0056029055,0.055375658,0.075244375,0.029313548,0.04922832,0.0063652983,0.006468322,0.034970116,0.017254872,0.021584291,0.023749208,0.016210178,0.1830067,0.0067967293,0.011571764,0.008914566,0.011331529,0.037273984,0.022148374,0.007266353,0.05995564,0.035404414,0.009834667,0.13455541,0.0071732746,0.021706868,0.022863243,0.011315752,0.019341161 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv index c2b44898..a64649f4 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012989526,0.008451789,0.008343688,0.025282253,0.0077611837,0.049804118,0.12995926,0.073096894,0.043786965,0.012898271,0.010859507,0.029631373,0.019566044,0.019631185,0.046036806,0.028859269,0.060753997,0.012488813,0.016959455,0.0091642905,0.0140438145,0.013560966,0.04981232,0.0114713255,0.055660956,0.039123084,0.016607726,0.044842925,0.010157406,0.035077438,0.033839993,0.018593594,0.030883798 +0.012989529,0.008451787,0.008343695,0.025282247,0.0077611892,0.04980413,0.12995923,0.073096894,0.043786965,0.012898268,0.010859504,0.029631373,0.019566048,0.019631185,0.0460368,0.028859274,0.060754,0.012488811,0.016959468,0.00916429,0.014043812,0.013560963,0.049812313,0.011471328,0.055660956,0.03912309,0.016607722,0.044842925,0.010157409,0.03507745,0.033839986,0.01859359,0.030883793 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv index 45b924b2..9a9a1059 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0084459195,0.005478003,0.005521863,0.022377402,0.0057007815,0.048822228,0.13396627,0.047674347,0.044100903,0.008718914,0.0076107793,0.030250654,0.022718882,0.023471467,0.03372159,0.020928407,0.121317275,0.007938454,0.010315681,0.009893803,0.009422824,0.028209142,0.035702728,0.00701184,0.057384826,0.034776427,0.009679542,0.101385765,0.0068074698,0.034072928,0.021294992,0.011075436,0.02420245 -0.01495256,0.011281415,0.011318162,0.04048125,0.013168076,0.043056514,0.0334818,0.020567056,0.03463795,0.00803167,0.010289714,0.013072755,0.027047135,0.024557816,0.022758493,0.027457278,0.042199492,0.008637161,0.033859514,0.014415746,0.032140847,0.015577597,0.018920667,0.013239309,0.03609407,0.24212311,0.0075512324,0.030155562,0.013689231,0.021117214,0.06719196,0.031909913,0.015017748 +0.0084459195,0.005478003,0.005521865,0.0223774,0.0057007815,0.048822243,0.13396621,0.04767435,0.0441009,0.008718918,0.0076107834,0.030250661,0.022718893,0.023471475,0.03372159,0.020928413,0.12131734,0.007938458,0.010315681,0.009893802,0.0094228275,0.02820915,0.035702728,0.00701184,0.05738481,0.034776427,0.009679547,0.10138574,0.0068074698,0.034072928,0.021294992,0.011075441,0.024202444 +0.014952558,0.011281414,0.01131816,0.040481254,0.013168074,0.043056514,0.0334818,0.020567054,0.034637958,0.008031665,0.010289717,0.013072754,0.027047133,0.024557814,0.02275849,0.027457282,0.042199492,0.00863716,0.033859514,0.014415744,0.03214085,0.015577596,0.018920662,0.013239307,0.03609407,0.24212314,0.0075512314,0.030155566,0.013689236,0.021117216,0.06719196,0.03190991,0.015017746 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv index a80d23ab..6948a5f7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010768626,0.0071453005,0.0061826305,0.020636555,0.007476879,0.053042114,0.121259026,0.055434912,0.06060058,0.011440382,0.008968602,0.034554403,0.018097715,0.020440187,0.040972438,0.030373393,0.08881224,0.010173473,0.015603304,0.009588735,0.01265485,0.026746185,0.037209485,0.0092568,0.06076117,0.03545333,0.017796088,0.065680444,0.0107882945,0.024638936,0.028522931,0.013651196,0.025268821 +0.010768625,0.0071453005,0.0061826278,0.020636555,0.007476882,0.053042125,0.12125908,0.055434898,0.06060058,0.011440382,0.008968601,0.034554392,0.018097715,0.020440182,0.040972427,0.030373385,0.08881222,0.010173463,0.015603303,0.009588735,0.012654849,0.026746185,0.037209474,0.0092568,0.06076114,0.03545333,0.017796088,0.065680444,0.01078829,0.024638936,0.028522924,0.013651196,0.02526882 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv index 9e3adcef..e2c34a6e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008686484,0.005960353,0.008075502,0.039276745,0.0097908955,0.05850304,0.05206207,0.01889337,0.048300233,0.00518526,0.006793675,0.025432974,0.031197455,0.021319006,0.02276724,0.014915394,0.15458107,0.0053153243,0.016606817,0.011906255,0.0143988915,0.038660195,0.019179536,0.007658729,0.052357905,0.0989535,0.005735836,0.11204717,0.008564646,0.016890625,0.025278362,0.020940961,0.013764397 -0.008197727,0.007059469,0.0055742837,0.023094872,0.0057917624,0.051699355,0.11453689,0.0425388,0.043388393,0.00957253,0.0075618536,0.034410797,0.019690048,0.022121822,0.03347103,0.017320948,0.1331481,0.007196628,0.0096377,0.010214877,0.009963169,0.045684543,0.02452887,0.007794731,0.060744867,0.027903598,0.010524433,0.115211345,0.0076923347,0.03072128,0.020051872,0.0100175515,0.022933505 +0.008686484,0.005960354,0.008075498,0.039276745,0.009790896,0.05850304,0.052062083,0.018893363,0.048300244,0.0051852576,0.006793672,0.025432982,0.031197459,0.021319004,0.022767233,0.014915387,0.1545811,0.0053153215,0.01660681,0.011906256,0.014398892,0.03866019,0.019179536,0.0076587293,0.052357905,0.098953515,0.005735833,0.112047225,0.008564644,0.016890615,0.025278356,0.02094096,0.013764391 +0.008197728,0.0070594703,0.005574284,0.02309487,0.005791761,0.051699366,0.11453691,0.0425388,0.04338838,0.009572528,0.0075618555,0.034410793,0.019690046,0.022121828,0.033471037,0.017320944,0.13314813,0.0071966257,0.009637701,0.010214874,0.009963171,0.045684554,0.024528876,0.007794729,0.060744863,0.027903598,0.010524435,0.11521132,0.007692336,0.03072128,0.020051876,0.010017549,0.022933504 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv index f309bc23..b1992ea3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.011856947,0.007223844,0.0070571597,0.032826528,0.008080109,0.040391415,0.09255855,0.039391916,0.052117735,0.007856196,0.009969194,0.01840535,0.020338742,0.020724263,0.03398534,0.041261356,0.058055624,0.012493181,0.027867151,0.0117967855,0.0220204,0.011738093,0.035083402,0.009734925,0.05840189,0.1281792,0.009151511,0.030461226,0.008224331,0.028107058,0.059158992,0.020592097,0.024889482 +0.011856951,0.0072238427,0.007057155,0.03282652,0.008080111,0.040391415,0.09255859,0.03939192,0.052117724,0.007856198,0.009969188,0.018405346,0.020338742,0.02072426,0.03398535,0.041261356,0.058055628,0.012493185,0.02786714,0.011796777,0.022020405,0.011738096,0.03508339,0.009734918,0.05840191,0.12817924,0.009151513,0.03046122,0.008224325,0.028107053,0.059158992,0.020592093,0.024889484 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv index d6b436bb..9b35f4f2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010474039,0.006521543,0.0074160905,0.023902066,0.0066056135,0.057496417,0.12374015,0.03752914,0.047728445,0.009753353,0.0080655515,0.027190102,0.014648493,0.026415588,0.031456366,0.0145098185,0.13790837,0.006406579,0.010360853,0.01592334,0.009660522,0.059283886,0.031192504,0.007285326,0.06007168,0.037452072,0.011793553,0.05825485,0.008734745,0.027273804,0.028270483,0.011573875,0.02510079 +0.010474039,0.0065215426,0.00741609,0.023902066,0.006605613,0.057496436,0.12374021,0.03752914,0.047728438,0.009753358,0.008065551,0.027190097,0.014648493,0.02641559,0.031456374,0.0145098185,0.13790835,0.0064065787,0.010360852,0.01592333,0.009660522,0.05928386,0.031192506,0.007285326,0.060071684,0.037452076,0.011793552,0.058254838,0.008734744,0.027273806,0.028270485,0.011573874,0.025100792 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv index 4cab3548..b53fb5b7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0018376797,0.0023137012,0.0024238364,0.009155929,0.0033391858,0.037196394,0.11448541,0.03619819,0.020103797,0.0032478096,0.0022368645,0.042428207,0.030106904,0.017886922,0.041678857,0.017872667,0.17781384,0.002194447,0.005525137,0.01080326,0.0041624387,0.026048908,0.038844123,0.0014777568,0.105031826,0.010042691,0.004704572,0.116676375,0.0022287897,0.06710731,0.0103819845,0.011351856,0.023092275 +0.0018302883,0.0023094334,0.0024177611,0.009174009,0.0033216283,0.037184585,0.11439202,0.036135826,0.020121714,0.003243756,0.002227362,0.042347167,0.029958114,0.017858125,0.041660704,0.017803762,0.17849426,0.00218419,0.00554009,0.01079341,0.004177411,0.025839655,0.038697787,0.001474616,0.10490975,0.010089096,0.0046706814,0.1171136,0.0022260093,0.067104094,0.010380509,0.011327853,0.022990765 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv index 4526ff20..e16fcc42 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0048656277,0.007918645,0.0054325806,0.0121447295,0.007898342,0.017814836,0.075257584,0.011748432,0.021347238,0.00770395,0.0054659205,0.023766177,0.042818088,0.014586231,0.021619631,0.062280655,0.065641224,0.0032016544,0.038712315,0.010045757,0.03476402,0.009708087,0.06701612,0.015924746,0.021149337,0.11031023,0.00664596,0.060393848,0.006036425,0.027078018,0.14114997,0.010524234,0.02902941 +0.004845992,0.007889446,0.0054141493,0.012189367,0.007869112,0.017851332,0.07520539,0.011662964,0.021426132,0.0076573635,0.0054324535,0.023717629,0.042729106,0.014602124,0.021532323,0.06217893,0.06529054,0.0031855546,0.038700376,0.0100185275,0.034709904,0.009724645,0.06670463,0.015934361,0.021101989,0.11129304,0.006598829,0.06060536,0.006012587,0.026912445,0.14151993,0.0104822675,0.029001156 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv index a6528ce7..685739bd 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0023688173,0.0032759958,0.0024291654,0.0072109625,0.0038664865,0.03368376,0.037551492,0.020473365,0.020303426,0.00320672,0.002927277,0.019001897,0.0069159083,0.008086997,0.020394612,0.011339872,0.576207,0.0024872613,0.0064319503,0.010710103,0.005667849,0.009287372,0.02400277,0.002055522,0.026548946,0.011598315,0.0042506577,0.04309646,0.002323081,0.030272912,0.01817002,0.013025035,0.010827967 +0.0023620205,0.0032647604,0.002421969,0.0072277756,0.003854628,0.033725373,0.037664812,0.020529818,0.02037918,0.0032004176,0.0029194388,0.019040832,0.0069631515,0.008101235,0.020486154,0.011356625,0.5755077,0.0024824778,0.0064296694,0.010709552,0.0056811264,0.009269812,0.023953447,0.0020496456,0.026671877,0.011577401,0.0042310487,0.043356534,0.0023190514,0.030348403,0.018102089,0.012962391,0.010849504 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv index 29abb8a1..f1b2465f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0066867806,0.009659095,0.006985347,0.018342886,0.008343686,0.02827222,0.13270424,0.009605769,0.023481674,0.0065346137,0.008042574,0.01586629,0.06682908,0.029205475,0.01841571,0.035887375,0.0029870616,0.00378063,0.021729896,0.010461546,0.025363758,0.0364591,0.043761298,0.02097016,0.028998114,0.09809047,0.012051953,0.032568526,0.00945276,0.014552994,0.11844721,0.013847485,0.08161431 -0.0062105553,0.008430051,0.0066421693,0.034530688,0.009992443,0.030213395,0.02225522,0.0048418874,0.034004305,0.006981886,0.0063810414,0.009619785,0.016620198,0.025754781,0.010917337,0.020015128,0.0059674657,0.004531538,0.036805414,0.011499066,0.03323312,0.025179174,0.01618241,0.030543782,0.015805239,0.36270088,0.008696667,0.013364138,0.008154805,0.006193264,0.11358851,0.015613565,0.03853005 +0.0066247783,0.009592915,0.006928904,0.018345714,0.008288779,0.028367922,0.13309619,0.009587395,0.023486814,0.0064903456,0.007973895,0.01584719,0.06669925,0.029178161,0.018443769,0.035900217,0.0030158022,0.003753964,0.021668421,0.010438245,0.025283378,0.036490586,0.043768942,0.020859156,0.029089404,0.09840058,0.011953055,0.03282844,0.009378146,0.014542032,0.118312456,0.013809641,0.08155552 +0.006188416,0.008413583,0.006625596,0.034453783,0.009931466,0.030127268,0.022238078,0.0048153163,0.033921164,0.006972913,0.0063575697,0.009609076,0.016657123,0.025657328,0.010869502,0.020110097,0.005996566,0.0045159073,0.036867622,0.01148467,0.03323851,0.0249987,0.016155457,0.03066806,0.015686167,0.36310777,0.008656854,0.013391952,0.008103484,0.0061835432,0.113910325,0.015572561,0.038513523 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv index b868c8da..84eebabe 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0040303203,0.0029316142,0.0041374513,0.010778411,0.0056618657,0.032110527,0.1331622,0.03412711,0.018952146,0.00459283,0.0029058945,0.023700856,0.08413434,0.023126962,0.058894433,0.033277348,0.027406437,0.0037933602,0.005311759,0.011036976,0.007056581,0.04888226,0.041817285,0.0038434942,0.10182688,0.010030801,0.0061456566,0.10456378,0.0049827173,0.06323838,0.008559678,0.016620507,0.058359172 +0.004018745,0.0029350165,0.0041301805,0.010802765,0.005631038,0.032027874,0.13366385,0.03408293,0.018921215,0.00460021,0.002905895,0.023617709,0.08428678,0.023087565,0.058966562,0.03335568,0.027337305,0.0037721738,0.0053366604,0.011020286,0.0070758117,0.04848865,0.041665643,0.003843431,0.10164474,0.010063016,0.006108716,0.10480515,0.004982868,0.063377164,0.008564493,0.016542716,0.05833719 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv index c5d59b6b..85d8f3a9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0028121886,0.004768915,0.0026038273,0.024106294,0.00428334,0.04001045,0.042205393,0.0055848244,0.051259898,0.0029990096,0.0024799826,0.018063348,0.013305797,0.016817851,0.013413405,0.02079274,0.06953616,0.002443421,0.023023874,0.012457441,0.017435335,0.022667246,0.025499817,0.009044353,0.021868205,0.2366301,0.006028528,0.06351859,0.0038850654,0.008795736,0.16167547,0.015960602,0.03402277 -0.0049432945,0.008161541,0.005641948,0.0334701,0.006687145,0.020943755,0.048687987,0.0067313584,0.026358342,0.0061188038,0.00532264,0.014945954,0.022759516,0.02219019,0.0143439155,0.022385858,0.0037059456,0.0030287185,0.029329462,0.010064615,0.025855048,0.019193592,0.026798103,0.025868736,0.018704478,0.27705717,0.008246222,0.02213319,0.0063955006,0.008136024,0.18003964,0.013626517,0.05212471 +0.0027887959,0.004733092,0.0025837973,0.024125917,0.0042522578,0.04005393,0.042278986,0.0055801696,0.051247988,0.0029797198,0.002457765,0.018063435,0.013389846,0.016801085,0.013436619,0.02084646,0.069999106,0.0024221565,0.02295687,0.012420337,0.017399706,0.022620559,0.02542745,0.008995221,0.021923762,0.23663002,0.0059561864,0.06404682,0.0038476116,0.008797948,0.16114126,0.01581707,0.033978023 +0.004896839,0.008109383,0.005606582,0.033393413,0.0066475375,0.021049256,0.049079787,0.0067314794,0.026396584,0.0060873907,0.00528243,0.014969497,0.022778716,0.0222018,0.014368257,0.022405619,0.003741044,0.0030103682,0.029169861,0.010044832,0.025707247,0.019271096,0.026915964,0.025671674,0.018815916,0.27695572,0.008184225,0.022288233,0.0063604494,0.008164105,0.17993744,0.013626392,0.052130867 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv index 420af8d1..996b347b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008235056,0.006630053,0.008237326,0.0065348125,0.013050176,0.030923633,0.14479923,0.043974973,0.015504926,0.009599815,0.00887134,0.027437832,0.024815973,0.021933725,0.078563236,0.020613033,0.04735088,0.005203651,0.006880082,0.015798736,0.006727233,0.021745805,0.099310055,0.006908331,0.07205278,0.00884878,0.012542185,0.016972749,0.0075840293,0.11026282,0.012869484,0.040418718,0.038798563 +0.008245247,0.0066397716,0.00823672,0.006531572,0.013031284,0.030800205,0.1454552,0.043889422,0.015470334,0.009597873,0.008879567,0.027317327,0.024919743,0.02190608,0.078744985,0.020652225,0.046914577,0.0051893904,0.0069066836,0.015767885,0.0067592845,0.021571003,0.099289015,0.0069529354,0.07191968,0.008895552,0.012519008,0.016933145,0.00758302,0.11038498,0.012901287,0.040280648,0.03891432 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv index 0010dfae..c46f46fb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0014310861,0.002243976,0.0017065166,0.016686594,0.0020667855,0.053174898,0.095879674,0.014162464,0.032807916,0.0018454238,0.0015201237,0.026181472,0.039513864,0.022075271,0.021645933,0.0206909,0.15128985,0.0018012328,0.008061768,0.0071523706,0.007267346,0.053755138,0.028755592,0.00226818,0.050142813,0.034830853,0.0034951526,0.19666047,0.0019271312,0.020879522,0.041771542,0.010048885,0.02625917 +0.0014336656,0.002257306,0.0017123552,0.016647093,0.002066613,0.053203385,0.09665847,0.014232341,0.03271058,0.0018544742,0.001527125,0.025984295,0.03937578,0.022107681,0.021644413,0.02069751,0.152486,0.0017975577,0.008073777,0.0071796924,0.007284085,0.053035576,0.028747264,0.0022616726,0.05012752,0.0346748,0.0034840752,0.19593439,0.0019345195,0.02107136,0.041585583,0.010048055,0.02616101 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index e820f648..f47a7ab9 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.013453301,0.013558816,0.010155084,0.025183218,0.019921565,0.05383606,0.02112372,0.025011655,0.029356034,0.012249369,0.015066982,0.046228647,0.030096248,0.030052193,0.019999536,0.022618225,0.031463686,0.013989219,0.017822728,0.064182125,0.025011655,0.059127342,0.0850275,0.030607535,0.049790215,0.023750037,0.0069251657,0.04524605,0.009766049,0.06673885,0.026443383,0.018245382,0.03795245 -0.016586587,0.009750751,0.00887816,0.044301387,0.015043382,0.030987818,0.10565262,0.038190182,0.021930778,0.0126184095,0.019467577,0.031093914,0.05049505,0.026299018,0.033277556,0.033669822,0.030034423,0.0084716,0.018576091,0.017899383,0.01901661,0.06408156,0.05312548,0.014242788,0.08489428,0.020441733,0.012520213,0.037671603,0.0095995795,0.01046103,0.04588656,0.037451517,0.017382594 -0.007844531,0.012341179,0.0109336795,0.01224514,0.009994192,0.041102406,0.04862002,0.027862249,0.021365335,0.014428301,0.014204611,0.06122185,0.02423375,0.034409486,0.07799866,0.035467107,0.07589478,0.012055296,0.012633842,0.013554134,0.017437879,0.038687624,0.023811487,0.010680402,0.07327296,0.05277653,0.017000694,0.03757064,0.030218352,0.0226325,0.028972154,0.02364927,0.05487891 +0.013400168,0.013558126,0.010154567,0.02523116,0.019998511,0.053623423,0.021163935,0.025010373,0.029211547,0.012248745,0.01518438,0.046046063,0.03008736,0.030080015,0.01995949,0.022617064,0.03151204,0.014043256,0.017821819,0.06417883,0.02503481,0.059124317,0.085355915,0.030591028,0.049787663,0.023748823,0.0069248127,0.04524373,0.009765551,0.06673543,0.026364677,0.018315857,0.037876457 +0.016588878,0.0097520985,0.008879387,0.044221062,0.015104345,0.03090144,0.10566724,0.03819547,0.02193381,0.012620153,0.01943228,0.031098215,0.05050204,0.026276983,0.033282157,0.03360877,0.030089956,0.0084727695,0.018578662,0.017901855,0.018945092,0.06434126,0.05313283,0.014244754,0.08490602,0.020364854,0.012521942,0.037676815,0.009600906,0.010462474,0.045892905,0.037383612,0.017418982 +0.007843096,0.012338922,0.010931679,0.012195169,0.010070735,0.041175235,0.048801392,0.027925251,0.021403193,0.014369421,0.014202012,0.060972024,0.024229323,0.03443681,0.07798441,0.03546063,0.0761779,0.012006101,0.012582285,0.013498821,0.017434688,0.038529754,0.023783902,0.010678447,0.07325957,0.052973416,0.016931316,0.037563775,0.030175973,0.022628365,0.028945653,0.023621868,0.054868884 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 8cfb24ae..9cd7eb50 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.019366598,0.008988731,0.01826444,0.021583911,0.036751345,0.063376725,0.036252305,0.017057614,0.04511672,0.009872189,0.015112207,0.037917957,0.03821535,0.024958435,0.03297588,0.025031663,0.03541252,0.018371774,0.027673723,0.016891846,0.03425602,0.014533268,0.03134313,0.03208641,0.050135113,0.10865299,0.012577496,0.058385372,0.009719135,0.03555112,0.03950552,0.011186656,0.012875763 -0.013347994,0.007877592,0.011918416,0.012393192,0.015243887,0.053833574,0.053833574,0.022816842,0.04135633,0.01283664,0.01146183,0.051569402,0.037071574,0.019804265,0.054895345,0.030598652,0.032779507,0.013452683,0.011825667,0.01938332,0.03758189,0.035721082,0.027969431,0.01409829,0.10959972,0.022375524,0.01506629,0.0386237,0.013825605,0.016676864,0.05299896,0.057082128,0.030080168 -0.015875753,0.01241244,0.019149808,0.021741997,0.01581386,0.039911628,0.030156313,0.041339725,0.060857967,0.017572856,0.011569666,0.094258666,0.045049477,0.01848827,0.052462846,0.019565681,0.055846408,0.022941712,0.021279868,0.01456841,0.028019704,0.031789266,0.013212974,0.019489402,0.0485202,0.059216425,0.014740137,0.050256327,0.02307653,0.019912649,0.020029668,0.019489402,0.021384027 +0.019318607,0.008983985,0.018183628,0.021572521,0.036731947,0.06334328,0.03623317,0.017048607,0.045092907,0.009866976,0.015104229,0.037897944,0.038269855,0.024981832,0.032958474,0.025055127,0.035532355,0.018362077,0.027645616,0.016817106,0.034171134,0.014525594,0.031387832,0.03197566,0.0499133,0.10944736,0.012570854,0.058354557,0.009714004,0.035532355,0.039407626,0.011180749,0.012818792 +0.013353927,0.007942907,0.0119237155,0.012398702,0.015250664,0.05385752,0.05385752,0.022849292,0.04121342,0.012842346,0.011466925,0.051592343,0.0370157,0.01989062,0.055134714,0.030552533,0.0328582,0.0134586645,0.0118772285,0.019391943,0.037598606,0.03587684,0.028024603,0.014104559,0.10879518,0.022363625,0.015072988,0.03864088,0.013885888,0.016684277,0.053022537,0.05710752,0.030093549 +0.015880968,0.012368109,0.019156104,0.021812957,0.015819054,0.039846845,0.030019287,0.041434165,0.06087797,0.017612996,0.0115734665,0.094289646,0.0448886,0.01845826,0.05248009,0.019610377,0.05586477,0.022994122,0.02130766,0.014630232,0.028104289,0.031861883,0.013217314,0.019533923,0.04853615,0.059004948,0.014687494,0.05007685,0.023129247,0.019997157,0.019958138,0.019533923,0.021432877 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 1f2ed7bf..4e2e284d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012260135,0.01367717,0.018951818,0.011836603,0.024954304,0.079014726,0.037033457,0.020253064,0.029310184,0.015080225,0.017873267,0.023197588,0.015742326,0.043296497,0.039191596,0.022287127,0.037763875,0.009736525,0.017561834,0.025771594,0.034925878,0.030522447,0.022330698,0.016692288,0.13546278,0.09237757,0.011836603,0.024109898,0.01633749,0.026002275,0.041637834,0.016823206,0.016147152 -0.011046612,0.008305911,0.0069942786,0.009485649,0.013481825,0.08194348,0.048930686,0.050091043,0.026681205,0.0070491354,0.012323385,0.032058205,0.024869617,0.049314454,0.040963046,0.048172083,0.04605599,0.008050365,0.012420039,0.019124145,0.031980034,0.023615165,0.035277884,0.020437222,0.04724035,0.053113755,0.017480887,0.061613034,0.010176616,0.028699104,0.086549565,0.010256432,0.016198784 -0.015744025,0.013519284,0.00962413,0.008970675,0.017563729,0.06551258,0.0379899,0.038890805,0.030600358,0.007264674,0.013839886,0.02553013,0.017910143,0.035237998,0.062268827,0.09420972,0.030697633,0.007854985,0.018227752,0.01840663,0.032877516,0.020058408,0.021103306,0.026186656,0.08850185,0.0299061,0.016371196,0.045735154,0.0137859285,0.039580476,0.059883345,0.016243795,0.019902313 +0.012296571,0.013664337,0.018971052,0.011825497,0.024949158,0.078940585,0.03707104,0.020234061,0.029225545,0.015066075,0.017891407,0.023130601,0.015666239,0.043425173,0.039078426,0.022331543,0.037581354,0.009765461,0.017545355,0.02581035,0.034893107,0.030523602,0.022266217,0.016709229,0.13533565,0.09301475,0.011825497,0.02400509,0.016386043,0.025968367,0.041598767,0.016840281,0.01616354 +0.011091116,0.008306863,0.0069950796,0.009486735,0.013483369,0.0819529,0.049127843,0.049901493,0.026658228,0.0070499424,0.012324796,0.03199933,0.024921104,0.049320128,0.04104785,0.048177626,0.046151336,0.008051287,0.012421461,0.019089023,0.03210889,0.023594828,0.03528194,0.020479532,0.047245786,0.053119864,0.01741473,0.06137989,0.010177781,0.028621495,0.08655952,0.010257605,0.01620064 +0.015801238,0.013568414,0.009696907,0.008968174,0.017558832,0.065494314,0.037905198,0.038804095,0.030606769,0.00731961,0.013836027,0.02557291,0.017870212,0.035125118,0.06249511,0.09418346,0.030666607,0.0078527955,0.018222671,0.018401498,0.032900464,0.02009202,0.021097422,0.026204934,0.08847717,0.029846711,0.01636663,0.045633186,0.013782086,0.0396468,0.05986665,0.016239265,0.019896762 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index ab6b8364..fffebf7c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.01434968,0.018246295,0.018246295,0.011062379,0.030698866,0.073096424,0.03732033,0.018661758,0.03649588,0.015284481,0.015576431,0.020900974,0.020248648,0.022526698,0.037143078,0.029393356,0.03404698,0.013014595,0.01981463,0.028412612,0.050005887,0.025869979,0.0187521,0.019310784,0.14371982,0.056729846,0.010097493,0.031495996,0.013216318,0.018000763,0.05034006,0.014573876,0.0333467 -0.01807688,0.009905313,0.01062685,0.029172484,0.020458804,0.07633914,0.046557073,0.04852078,0.029202323,0.015531968,0.016718382,0.021956462,0.1231266,0.051788602,0.027899088,0.03077986,0.022778912,0.0100612985,0.016242629,0.027246153,0.033163358,0.017325047,0.022083469,0.016141823,0.05652651,0.031496324,0.012720227,0.037182026,0.011353725,0.025973134,0.047310814,0.022188853,0.013545157 -0.018902939,0.0145501075,0.01169134,0.027147124,0.034455173,0.08530861,0.038063984,0.026669418,0.023067255,0.01891448,0.025368463,0.013871527,0.023945192,0.11464649,0.021188384,0.043950647,0.02112382,0.019579314,0.019284002,0.02452501,0.021680264,0.017422704,0.021336326,0.018038407,0.026665552,0.06965661,0.020803943,0.06600996,0.014377083,0.038264383,0.020744508,0.01648542,0.022261553 -0.016216656,0.01308145,0.014939484,0.025020843,0.017754074,0.057443947,0.035689533,0.043020573,0.033728357,0.014948606,0.010307934,0.024133276,0.07651071,0.026627235,0.044945393,0.018055689,0.031882733,0.012678976,0.014916706,0.023783064,0.031886622,0.03319329,0.015595406,0.023117555,0.07884793,0.06692554,0.014312897,0.06517998,0.01608653,0.026792346,0.0368025,0.01140845,0.024165705 -0.011208817,0.009184176,0.007265281,0.026254857,0.011393673,0.05732051,0.029912245,0.031399224,0.026623994,0.00926186,0.013679789,0.07865209,0.036882624,0.030619256,0.050721206,0.02077786,0.037872672,0.0077945087,0.010975259,0.04301501,0.0168655,0.06145841,0.05736951,0.019180054,0.083752826,0.028208211,0.006933426,0.045228165,0.007977403,0.060601793,0.02146246,0.017494582,0.022652796 -0.017393991,0.019215824,0.0112304045,0.03964368,0.018711211,0.08226599,0.036385193,0.03245042,0.02884637,0.014205229,0.018300092,0.028105145,0.035746835,0.036245,0.021434186,0.035585742,0.0507631,0.011632246,0.033574894,0.023546595,0.024087338,0.01569116,0.026756804,0.050531257,0.07852272,0.03570976,0.005625673,0.044787344,0.014193096,0.04060556,0.028245514,0.018262153,0.021699423 +0.014360843,0.01826049,0.018224861,0.011053937,0.030745259,0.07321582,0.037249196,0.018730072,0.03652873,0.01522744,0.015527775,0.020976687,0.02029163,0.02248273,0.037103977,0.029358827,0.034015287,0.013075697,0.019821575,0.02842257,0.050124273,0.02578917,0.01876669,0.019362409,0.14334963,0.056798242,0.010143663,0.0315205,0.01322983,0.017977389,0.05032045,0.014586994,0.03335737 +0.018110253,0.010020984,0.010625695,0.02915285,0.020481568,0.07639609,0.04651793,0.048370995,0.029231247,0.0155208055,0.016716566,0.021952067,0.123038106,0.0518945,0.02795571,0.030791549,0.022826537,0.01009958,0.016265664,0.027199995,0.033147614,0.01734856,0.022102643,0.016139083,0.056551423,0.031475604,0.012667712,0.037159834,0.011310993,0.02592908,0.047250483,0.02221083,0.013537486 +0.01885988,0.014545349,0.01173326,0.02711961,0.03438508,0.08535359,0.038023666,0.026703235,0.023040008,0.01885988,0.025403539,0.013825159,0.023957819,0.11485581,0.02122545,0.043936264,0.0211427,0.019534715,0.019307127,0.024442276,0.02162296,0.017408503,0.021371044,0.017996224,0.02658371,0.06966357,0.020835249,0.066214286,0.014319844,0.038247116,0.020713525,0.01648204,0.02228757 +0.016209159,0.013075401,0.014932577,0.02497076,0.017732874,0.057466473,0.035681743,0.04312454,0.03374982,0.01487436,0.010303169,0.024190675,0.0761307,0.026587727,0.044930097,0.018082622,0.03186021,0.012623705,0.014932577,0.023722786,0.03187577,0.03325904,0.015527423,0.023105456,0.07916341,0.06692318,0.014304532,0.06537291,0.016083017,0.026770102,0.036814403,0.011404567,0.024214312 +0.011247538,0.009215903,0.007290379,0.026253665,0.011424662,0.05734327,0.029875759,0.031475265,0.026511302,0.009361031,0.013727046,0.07868573,0.03687926,0.03061506,0.05040797,0.020727834,0.037901588,0.007882779,0.010986989,0.042948123,0.016884554,0.061761133,0.057119712,0.01920759,0.08408835,0.028166069,0.007011089,0.045097243,0.007944604,0.060566563,0.021427615,0.017420528,0.022543838 +0.017470723,0.01926294,0.011235971,0.03967968,0.018706782,0.08173608,0.03637658,0.032417256,0.028888872,0.014148223,0.018380824,0.028192118,0.035812616,0.036341075,0.021447431,0.03560339,0.05094972,0.011683561,0.03354442,0.023486488,0.024043452,0.01572195,0.02673089,0.050553225,0.078604825,0.035672996,0.005649801,0.04478768,0.014148223,0.04062066,0.028205885,0.01823778,0.021657905 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index 934e0e29..d521334c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010731453,0.008589347,0.008724609,0.021720512,0.01064794,0.062239602,0.038269885,0.05600958,0.025929496,0.009886278,0.010731453,0.033510234,0.021114009,0.029029025,0.101420246,0.022333529,0.12233617,0.0081322305,0.015133775,0.010731453,0.015312167,0.020029424,0.028453656,0.015312167,0.065481834,0.028537137,0.0071766684,0.026116919,0.010441991,0.10301738,0.022019511,0.016718876,0.01416144 -0.009332455,0.014341904,0.009259829,0.039909847,0.015148069,0.035705153,0.03433731,0.10597313,0.02412395,0.01255819,0.01005145,0.06503362,0.027943308,0.02745641,0.02977456,0.01569009,0.18454129,0.009045325,0.017988779,0.02082663,0.013007542,0.023807997,0.029949531,0.012363493,0.03598519,0.025091063,0.0070445063,0.020107165,0.01634701,0.030421168,0.033937268,0.018200824,0.024696033 -0.0109061785,0.0068784403,0.0077942936,0.033202026,0.011385017,0.01428001,0.043134782,0.029179327,0.029015938,0.011978094,0.015992854,0.041807663,0.070288695,0.025984332,0.04887811,0.056921516,0.06500641,0.008232416,0.014906977,0.010086566,0.017806504,0.044417188,0.06178772,0.016565101,0.09203254,0.017326204,0.007613739,0.040600598,0.01325854,0.019178364,0.023705257,0.06786054,0.021988103 +0.010735215,0.008592358,0.008727668,0.021791875,0.0106101455,0.062261418,0.038208604,0.056248505,0.025929088,0.009889743,0.010735215,0.033587515,0.02101853,0.029095972,0.100666255,0.022330452,0.12237905,0.008135081,0.015139079,0.010693362,0.015317533,0.020095231,0.02846363,0.015257817,0.065761164,0.028561084,0.0071791834,0.026119694,0.010486534,0.10305349,0.02200573,0.016757432,0.014166404 +0.009332249,0.014285676,0.009259625,0.03990897,0.015147736,0.035774168,0.034269553,0.10597081,0.024182387,0.012508955,0.010051228,0.065032184,0.027969994,0.02748263,0.029919641,0.015689746,0.1845372,0.009045126,0.017918251,0.02084652,0.013007255,0.023854017,0.029978134,0.0123632215,0.035984397,0.025164125,0.007044351,0.020106722,0.016314754,0.030361144,0.03393652,0.018129466,0.024623245 +0.010900443,0.006874823,0.0077901953,0.03331444,0.01137903,0.014272501,0.043027967,0.029167539,0.029025465,0.011971795,0.015922125,0.04186736,0.070526674,0.025996035,0.048852395,0.056891568,0.064972214,0.008228086,0.014899139,0.010081262,0.01779714,0.044480614,0.061996922,0.016556391,0.091984116,0.01735095,0.0076097352,0.04057924,0.013251569,0.019205749,0.023646556,0.06756041,0.0220195 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 1593701e..0109cb4c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.011400348,0.008775162,0.008843986,0.014321295,0.012677706,0.08820507,0.044946373,0.040066205,0.019908346,0.008184344,0.014077552,0.03491359,0.020098807,0.075348005,0.033000086,0.041619375,0.031996496,0.008308156,0.014333318,0.024208302,0.029419037,0.049255587,0.036585778,0.027604597,0.05521417,0.034725506,0.015523573,0.052534807,0.012420362,0.048949987,0.04967562,0.016328253,0.016530307 -0.012443908,0.008755383,0.012939616,0.012758654,0.012164551,0.0392054,0.02605592,0.025547082,0.024999686,0.010902902,0.011553777,0.05659787,0.019704089,0.029325426,0.03885284,0.025211142,0.03223767,0.010853769,0.016016373,0.023959927,0.01762386,0.28838542,0.014211388,0.012203965,0.06491157,0.017034778,0.0113316905,0.026981654,0.012987089,0.01789706,0.021515755,0.019766726,0.025063088 -0.01905886,0.015464511,0.014814094,0.01604256,0.025715468,0.038806655,0.051542424,0.019265728,0.03616295,0.019714328,0.03132796,0.026078215,0.05771773,0.025969015,0.039216194,0.0347988,0.042813707,0.016017856,0.028096773,0.035178926,0.029812263,0.0413246,0.026982497,0.011719628,0.06307021,0.0423485,0.016723165,0.029562214,0.02267167,0.01413746,0.04577323,0.034625072,0.027446749 -0.01243457,0.01243457,0.011818892,0.044152383,0.012939381,0.08657686,0.03272077,0.07462879,0.02063925,0.0156059675,0.016217737,0.03191114,0.09086477,0.054746,0.03436231,0.031505693,0.05321489,0.010677479,0.01619301,0.019355675,0.0146282725,0.0225271,0.012729448,0.013341161,0.069316395,0.03227055,0.009992678,0.033357985,0.018552922,0.042900607,0.015252949,0.013815998,0.01831384 -0.017431313,0.024062537,0.015443287,0.035962105,0.04309029,0.05766668,0.06726299,0.017111776,0.023123773,0.01796051,0.017127581,0.0300626,0.02393364,0.038289644,0.024756758,0.03822251,0.036356602,0.01729566,0.031027302,0.015982209,0.018346079,0.019839263,0.018921515,0.012098662,0.166915,0.024002396,0.012779513,0.041348573,0.01895388,0.033669606,0.0148399975,0.013130568,0.01298512 -0.011333878,0.02142407,0.01259456,0.019844584,0.034227207,0.020909905,0.02135618,0.01781424,0.037632555,0.015024115,0.014667127,0.07213027,0.01998162,0.028571296,0.03012072,0.052715294,0.05604668,0.019621471,0.016529996,0.038723007,0.025725903,0.045199998,0.065990776,0.016491702,0.05237854,0.02253048,0.012113549,0.030353254,0.026191704,0.032936145,0.027407028,0.022231326,0.059180837 +0.011403347,0.008811824,0.00895059,0.0143030025,0.0126717575,0.08830369,0.04475013,0.040192187,0.019935472,0.008213523,0.014026358,0.034953695,0.020052625,0.07523569,0.03296447,0.041630324,0.031911284,0.008342868,0.014358983,0.024188083,0.029398052,0.049148407,0.036631156,0.027623659,0.055259038,0.03464783,0.015465233,0.052522976,0.012426664,0.048956797,0.049922384,0.016270857,0.016527088 +0.012426136,0.008742878,0.012921137,0.012720813,0.012138285,0.039182864,0.026063208,0.025609069,0.024954835,0.010880688,0.011537277,0.056346525,0.019663937,0.029260758,0.03887794,0.025175132,0.032230943,0.010838268,0.016017923,0.023899434,0.01762664,0.28952438,0.014246635,0.012138285,0.064601615,0.01705099,0.011358408,0.026929962,0.012971709,0.017834418,0.021491416,0.019721631,0.025015835 +0.019027088,0.015468914,0.014760541,0.015959948,0.02570396,0.038775083,0.05162007,0.01921381,0.03617766,0.019746438,0.031370368,0.02615978,0.057698935,0.026032358,0.0391556,0.03479172,0.042711042,0.016022416,0.028106486,0.035253435,0.029751668,0.04115511,0.026937515,0.01172225,0.063369885,0.042295974,0.016725883,0.029570632,0.022683663,0.014084606,0.045822255,0.034656078,0.027468812 +0.012428584,0.012428584,0.011813202,0.044235602,0.012873298,0.0866091,0.03271299,0.07466172,0.020611685,0.01564995,0.016273372,0.03195519,0.090765566,0.05462368,0.034417097,0.031398386,0.0531503,0.010714109,0.016146732,0.01940074,0.014701767,0.02252724,0.012723318,0.013333924,0.06959237,0.032237284,0.009986647,0.033358194,0.018548507,0.042707466,0.01528742,0.013865086,0.018260945 +0.017474385,0.024095498,0.015481445,0.035995435,0.043080896,0.057520542,0.06724832,0.017136399,0.023127198,0.018029079,0.017169902,0.030075314,0.023954727,0.038316943,0.024727201,0.038316943,0.03634868,0.017338397,0.031151453,0.015941713,0.0183488,0.019820416,0.018894313,0.012151526,0.16644123,0.023978129,0.012784532,0.041349653,0.018931253,0.033814583,0.014830317,0.013138932,0.01298586 +0.011372657,0.021455431,0.012637653,0.01984303,0.034102026,0.020917524,0.021330083,0.017821947,0.037692245,0.014949076,0.014659934,0.07215875,0.019920694,0.028604828,0.030124335,0.052586645,0.055978194,0.019611852,0.016611882,0.03873711,0.02567879,0.045244068,0.06595843,0.016482607,0.052586645,0.02252906,0.012153512,0.030390264,0.0261597,0.032948077,0.027361637,0.022266587,0.059124753 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 99f876c0..8c2ab305 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.016554631,0.020482207,0.017691284,0.025540352,0.036871806,0.06521957,0.034739483,0.021931322,0.029562298,0.022627497,0.019697545,0.034100845,0.027227417,0.046701454,0.022060204,0.042522155,0.05755607,0.019354325,0.0462476,0.027696729,0.03559805,0.025690442,0.032507494,0.01755361,0.04430249,0.027561821,0.015310531,0.037968013,0.016554631,0.025690442,0.045798164,0.022539282,0.018540308 -0.012518779,0.008404711,0.010098492,0.021736387,0.01857397,0.046512906,0.047989387,0.030192723,0.031626258,0.014409027,0.012815653,0.04049012,0.034029573,0.024860121,0.054591935,0.026916321,0.040332265,0.007895496,0.016200505,0.01296672,0.025196189,0.03225003,0.04780229,0.0095984815,0.21009137,0.025030646,0.012916167,0.041450314,0.009903169,0.0090169385,0.029021885,0.019694805,0.014866418 -0.00902418,0.0061539556,0.008477432,0.02116707,0.009238182,0.037993215,0.050727595,0.031682577,0.028151562,0.010265757,0.015410727,0.050727595,0.057034567,0.026796907,0.07497053,0.072663926,0.05152644,0.007539984,0.0119084865,0.010146158,0.022053301,0.039661318,0.028497316,0.019291667,0.09330233,0.027031815,0.007901835,0.03230746,0.011542101,0.026227333,0.028946083,0.05378872,0.017841876 +0.016558,0.020446401,0.017625898,0.025545549,0.03687931,0.06523284,0.03474655,0.021892983,0.029667743,0.022543868,0.019701554,0.034174465,0.027259566,0.046619814,0.022107832,0.04253081,0.057567783,0.019358264,0.046257015,0.027702365,0.035640083,0.025645532,0.032577675,0.017625898,0.04431151,0.02756743,0.015253944,0.03804998,0.016558,0.02567059,0.045628898,0.022543868,0.018507898 +0.012470433,0.00840502,0.010098864,0.021737188,0.01853841,0.046696678,0.04799116,0.030120214,0.03165833,0.014409557,0.0128161255,0.040570777,0.034064077,0.024897482,0.054593947,0.026907457,0.04033375,0.007895785,0.016201101,0.012967198,0.025172522,0.03225122,0.04761769,0.009598835,0.21009907,0.025056025,0.012916644,0.04153289,0.009903534,0.009017271,0.02899463,0.0196571,0.014809004 +0.009016722,0.0061488706,0.008470427,0.021128936,0.0092305485,0.03788775,0.050884057,0.0316564,0.028093988,0.010217286,0.015397993,0.05068568,0.056987446,0.026745368,0.074908584,0.07260389,0.051483866,0.0075337538,0.011898647,0.010137774,0.02201357,0.03970602,0.028418211,0.019275725,0.09395641,0.027032569,0.007895307,0.03224926,0.011532564,0.02622486,0.028936293,0.05374428,0.017896906 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 3381365f..9999fe0a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.012163671,0.016177313,0.019475494,0.03201573,0.019628244,0.042621553,0.03087956,0.0340473,0.048865855,0.015436501,0.010860935,0.07137767,0.027397878,0.018224202,0.06918161,0.016821744,0.05757805,0.015020127,0.0148451375,0.02235058,0.02353786,0.062990576,0.016560948,0.019937342,0.05201743,0.050417025,0.013411464,0.056685384,0.024237646,0.030490013,0.01951357,0.020093713,0.015137932 -0.010944551,0.00819709,0.012646405,0.023028629,0.010774871,0.070812054,0.049050074,0.0339097,0.023305774,0.018763326,0.014756296,0.046439677,0.017285585,0.04431305,0.03609669,0.0231781,0.042782236,0.010443363,0.0142187355,0.019548915,0.013357266,0.18802817,0.035606537,0.007944892,0.05282901,0.015404175,0.020090831,0.019663798,0.015524992,0.023804635,0.024000125,0.03457851,0.018671932 -0.011467976,0.012065373,0.009433299,0.024672067,0.0170815,0.060087897,0.15464325,0.041540455,0.018254327,0.013779089,0.019622322,0.028830487,0.023233917,0.035531435,0.024444234,0.05557222,0.022083525,0.010320061,0.013618558,0.018254327,0.019622322,0.040341105,0.03819419,0.012994919,0.046251304,0.023599796,0.027953701,0.026456343,0.015859634,0.012399838,0.065480076,0.036802802,0.019507684 +0.012169482,0.016216686,0.019522885,0.03196851,0.019637613,0.0426419,0.030803923,0.03406355,0.04888918,0.015383666,0.010866124,0.071411744,0.027344117,0.018268555,0.069214635,0.016796945,0.05760553,0.015027304,0.014852231,0.022339424,0.023526108,0.06302065,0.01656886,0.01990794,0.05183937,0.050441086,0.013470389,0.05671244,0.02426106,0.030474791,0.01948479,0.02006408,0.015204442 +0.010947577,0.008199356,0.012649901,0.023091303,0.010820034,0.070831634,0.04906364,0.033919077,0.02334354,0.018695341,0.014760376,0.046452522,0.017256627,0.044152495,0.036036216,0.02321566,0.042794067,0.01044625,0.014222666,0.019535234,0.013360959,0.18808013,0.035616383,0.007947088,0.052843623,0.015408434,0.02007677,0.01968845,0.015529283,0.023857038,0.024028016,0.034453224,0.018677093 +0.011479456,0.012030367,0.009369259,0.02470883,0.017098598,0.060148057,0.15359342,0.041582048,0.018272603,0.013792883,0.019641966,0.028929897,0.0232118,0.035706215,0.024361415,0.055627856,0.022084057,0.010330392,0.013632191,0.018272603,0.019641966,0.040381495,0.03815783,0.013058839,0.046297614,0.02357733,0.027896425,0.026547566,0.01587551,0.012412251,0.06580217,0.036911674,0.019565389 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index b0c6cbe3..76bbd353 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.015029022,0.019297646,0.0163777,0.07805737,0.12882058,0.08037804,0.113240555,0.07114149,0.17607687,0.111921266,0.11592598,0.035355426,0.03837795 -0.0130002005,0.017088441,0.012600226,0.06811618,0.077639334,0.03980949,0.0932858,0.28013662,0.10305648,0.07076048,0.101855844,0.032938834,0.089712076 -0.0252677,0.03453685,0.031941365,0.04289794,0.05886402,0.051947314,0.0674056,0.11280049,0.05979099,0.23786764,0.072545536,0.029425764,0.17470881 +0.015032878,0.01945399,0.0163819,0.07815367,0.12835126,0.08055583,0.1132696,0.07102088,0.17612204,0.111949965,0.1159557,0.03536449,0.038387794 +0.013001445,0.017090078,0.012601433,0.06812271,0.07749526,0.03989114,0.09329473,0.2801634,0.10306636,0.07069819,0.1018656,0.032813556,0.089896075 +0.025228165,0.03434838,0.03189139,0.042914554,0.058944356,0.05196744,0.067275494,0.112624,0.059668303,0.23935817,0.07264455,0.029379725,0.1737554 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index 4f7e8351..2e2a6f5c 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.034147155,0.032329876,0.029900245,0.1616392,0.043674875,0.09300306,0.11439571,0.095208555,0.023745617,0.10788543,0.08917852,0.06721694,0.10767492 -0.020598466,0.017345646,0.016042102,0.09035372,0.096557476,0.037299003,0.10258434,0.094136685,0.03356547,0.11222761,0.06780411,0.042265307,0.26922008 -0.034789838,0.054094452,0.03192495,0.06606789,0.05707936,0.08610568,0.10488253,0.034519102,0.022726784,0.13336308,0.059760265,0.033457063,0.281229 +0.034292977,0.03246794,0.029910866,0.1610662,0.043861385,0.09321798,0.11443634,0.09524237,0.02375405,0.107923746,0.08903612,0.067076854,0.10771316 +0.020602653,0.017349172,0.016045362,0.090195745,0.09657709,0.03730658,0.102205165,0.09415581,0.033572294,0.11268975,0.06775169,0.042273894,0.26927477 +0.034788474,0.054092336,0.0319237,0.06609757,0.057021417,0.08601828,0.10508348,0.03451775,0.022725893,0.13335787,0.059699602,0.03345575,0.28121793 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 8aaf1681..ff861119 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.017511223,0.016195234,0.028871126,0.17548077,0.035098363,0.055460665,0.057403073,0.059726194,0.073725,0.2739216,0.06293729,0.095035285,0.048634168 -0.014574757,0.015274214,0.021879302,0.11781726,0.028093578,0.09824792,0.12251057,0.1169004,0.0659042,0.12251057,0.13143465,0.06260283,0.08224971 -0.012698688,0.010946953,0.021601195,0.15775292,0.014389498,0.06268852,0.16339757,0.17667489,0.10145584,0.09401476,0.057232037,0.08443905,0.04270813 +0.017545385,0.01622683,0.028927451,0.17582312,0.03502973,0.05546043,0.05766268,0.06001462,0.07401324,0.27232018,0.063121684,0.09522068,0.048633967 +0.01458249,0.015282317,0.021720547,0.11834111,0.027998893,0.098108225,0.122097656,0.1165064,0.06583057,0.12257554,0.13201904,0.062804475,0.08213275 +0.012693802,0.010942741,0.021592885,0.15769221,0.014383962,0.062756255,0.16333468,0.1766069,0.1014168,0.09416231,0.05715417,0.08457157,0.042691693 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 55d4c245..4293f9e1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.019247921,0.019242048,0.023122676,0.2023879,0.030257503,0.070795946,0.083553046,0.04229355,0.07910523,0.21612567,0.054946132,0.118629664,0.040292792 -0.013859086,0.011220005,0.014865906,0.16772893,0.04046441,0.06960686,0.26081634,0.1302294,0.052909687,0.071038246,0.049805023,0.07961735,0.03783882 -0.03323299,0.028751979,0.053304255,0.20066538,0.029766515,0.13464227,0.11751235,0.17178494,0.043314233,0.059854817,0.047320165,0.053955637,0.025894517 -0.01579723,0.016942782,0.019503407,0.06499989,0.03757122,0.13979305,0.16676494,0.055090666,0.048058998,0.16925676,0.101997375,0.077775694,0.086447895 -0.011209881,0.013517572,0.013519222,0.04491335,0.14133994,0.06666387,0.15254389,0.070202954,0.10669937,0.12986594,0.11656749,0.023598434,0.10935808 -0.01869931,0.029639825,0.041397702,0.19057001,0.0340989,0.11240363,0.078290984,0.15029393,0.0654575,0.08262617,0.078181155,0.09896303,0.01937786 +0.019174946,0.019325335,0.023039225,0.20295402,0.03028449,0.07068914,0.083618164,0.042292938,0.07901361,0.21604344,0.05490511,0.11838204,0.04027746 +0.013898184,0.0113433665,0.015027519,0.16799693,0.04045206,0.06948655,0.2601987,0.13032606,0.05281098,0.07113437,0.049805496,0.07966671,0.03785304 +0.03320181,0.028733771,0.053160068,0.20101622,0.029878395,0.13390566,0.11725172,0.17261124,0.043387983,0.05976947,0.04728154,0.05394451,0.025857594 +0.015875842,0.017032292,0.019604048,0.06506866,0.03764047,0.13930608,0.16607754,0.0550884,0.048237015,0.16935313,0.10211777,0.077763,0.08683565 +0.011254491,0.013575508,0.013575508,0.045037072,0.14090854,0.06673133,0.15235846,0.07019897,0.106779635,0.12981103,0.11681728,0.023640344,0.10931185 +0.018757429,0.02962508,0.041372053,0.19092914,0.034098256,0.11180388,0.07820428,0.15044855,0.06555784,0.08235855,0.07805169,0.099440426,0.019352855 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index f0ffa839..6fdeb3cb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.0173287,0.016026428,0.026839208,0.0828322,0.04565503,0.046283506,0.11124542,0.21780796,0.037408393,0.22123794,0.0596618,0.06350966,0.05416377 -0.025201809,0.025005685,0.034852836,0.05695978,0.0744348,0.05504581,0.049729746,0.18261582,0.07040466,0.15317841,0.16562536,0.048577756,0.058367517 -0.008935493,0.014057503,0.0095863845,0.058039587,0.09719801,0.03352519,0.19865984,0.2736655,0.07825349,0.107588395,0.04577878,0.03985105,0.034860685 +0.0173293,0.016026983,0.026840145,0.08275424,0.045745883,0.046285123,0.11103223,0.21781556,0.03755611,0.22124566,0.059722174,0.06348086,0.054165658 +0.025097355,0.02499951,0.034844227,0.056834597,0.074416414,0.054978497,0.049620453,0.1825707,0.07031857,0.15373994,0.16558443,0.048471,0.05852431 +0.0089370245,0.014059912,0.009588027,0.058219835,0.09721465,0.033596482,0.19869386,0.27371234,0.07796174,0.107606806,0.045674965,0.039935794,0.03479862 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 35299c71..c090598e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.013696977,0.015395226,0.022755446,0.12909949,0.0304831,0.06601206,0.0899556,0.15893084,0.10253051,0.095681295,0.12471578,0.049288597,0.10145512 -0.013873818,0.025609914,0.01354995,0.05140924,0.07923226,0.041689683,0.07039259,0.102127224,0.17122677,0.10499674,0.0796728,0.044621523,0.2015975 -0.018696813,0.024568997,0.015257101,0.05712812,0.06721138,0.033482578,0.07528165,0.19145387,0.17692275,0.123415925,0.09988427,0.09062429,0.026072279 -0.0140934745,0.020499628,0.02925345,0.07079055,0.03404695,0.10040815,0.29820317,0.12686196,0.046179004,0.08807876,0.046114925,0.07786219,0.04760782 -0.026012044,0.044062022,0.06208434,0.15045841,0.038114253,0.13218476,0.09425221,0.09837236,0.040025376,0.08812661,0.07108019,0.09915601,0.05607141 -0.034625676,0.03115023,0.03877182,0.061037596,0.14396825,0.069717765,0.05949643,0.10258124,0.18308024,0.14989388,0.05404332,0.048556603,0.023076938 +0.013744185,0.015574202,0.022660334,0.12888199,0.030492809,0.06577828,0.08997413,0.159148,0.10275368,0.09521741,0.1249167,0.04930175,0.10155656 +0.0139527805,0.025663089,0.013629564,0.051437438,0.07935727,0.041736744,0.07068528,0.102295555,0.17131282,0.1051313,0.07982361,0.04468962,0.20028499 +0.01877227,0.024675684,0.015321485,0.057176925,0.06737088,0.03346519,0.07534136,0.19108021,0.1767203,0.12337066,0.10010392,0.09043637,0.026164724 +0.014150181,0.020588392,0.029262004,0.070919394,0.03421075,0.1003548,0.2978537,0.12710838,0.046125602,0.0878736,0.046035603,0.07792775,0.047589783 +0.02630414,0.04422356,0.06218277,0.1501919,0.0382723,0.13202716,0.094079524,0.09811425,0.039952654,0.08803498,0.0712233,0.09927079,0.056122616 +0.03464103,0.031052018,0.03894796,0.060960393,0.14414504,0.06960196,0.059504647,0.102614194,0.18292959,0.14988713,0.05407388,0.04856628,0.023075903 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 2446af67..116b4471 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.034523316,0.053054646,0.040678408,0.0977732,0.05697494,0.09720199,0.06494046,0.109287135,0.109287135,0.045203123,0.11122518,0.13869257,0.041157912 -0.010823801,0.016375888,0.015996542,0.12631503,0.058085933,0.04108866,0.12338894,0.15658872,0.07549984,0.14257565,0.0769138,0.068508826,0.087838314 -0.010226722,0.013234361,0.013869491,0.09971816,0.08315507,0.05762093,0.24392943,0.14737387,0.056230776,0.15997283,0.024628649,0.033927396,0.056112282 +0.034527026,0.052956816,0.040682778,0.09759292,0.057315916,0.09740249,0.06494744,0.10908562,0.10908562,0.045296367,0.11123714,0.1387075,0.041162338 +0.010824752,0.016249876,0.015997946,0.12682055,0.058006,0.041092265,0.12339978,0.15660247,0.07543277,0.14258817,0.076695524,0.06861528,0.08767462 +0.010323669,0.013255853,0.0137839075,0.0998801,0.08345294,0.05774269,0.24242425,0.14761323,0.056443825,0.16023265,0.024668645,0.03398249,0.05619568 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 99292a49..e1e8df04 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.027722225,0.038942188,0.03279261,0.04932378,0.06952372,0.08810105,0.038040094,0.030926377,0.03009219,0.18505847,0.07079118,0.021422075,0.31726402 -0.020294143,0.02752294,0.02110257,0.05809561,0.11678473,0.026572147,0.038662247,0.25112665,0.10716769,0.101861455,0.08781006,0.035202377,0.10779747 -0.023249542,0.02427032,0.028709352,0.10198248,0.054908074,0.052547373,0.06692258,0.23298474,0.07608357,0.08356145,0.1162404,0.028485935,0.110054195 +0.0277286,0.038951144,0.032800153,0.049431577,0.069505766,0.087949365,0.03804884,0.030812891,0.030099113,0.18510105,0.070807464,0.021427004,0.31733704 +0.020127492,0.027511021,0.021093432,0.05807045,0.11719104,0.02656064,0.03849484,0.25101787,0.10712128,0.10181735,0.087772034,0.03504995,0.10817252 +0.023074925,0.024276959,0.028717207,0.1020104,0.054923106,0.05251045,0.06695724,0.23304848,0.07640226,0.0833398,0.11627221,0.028382642,0.11008432 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv index a90a0f9c..c968105d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.011096026,0.012672059,0.016271247,0.02559827,0.100848414,0.047379345,0.043607958,0.02952103,0.112504534,0.14502408,0.3911485,0.017731398,0.046597134 -0.013814418,0.016405025,0.022598883,0.060714453,0.082501985,0.0610787,0.097782366,0.06913524,0.16763797,0.10449618,0.10068946,0.14116533,0.061979994 -0.019121636,0.028040025,0.021837592,0.20881435,0.12739657,0.17860837,0.07736431,0.07641633,0.052181434,0.045159265,0.026341166,0.10706935,0.031649638 +0.011098292,0.012674647,0.01627457,0.025603484,0.100475706,0.047441088,0.04359555,0.02958477,0.11252745,0.14505361,0.39122817,0.01773502,0.04670763 +0.013919137,0.01640075,0.02259299,0.06084698,0.08231952,0.060832124,0.09756611,0.069150954,0.16759425,0.10487779,0.100859985,0.14112851,0.061910894 +0.019119935,0.028037531,0.021835651,0.20879574,0.12713669,0.17929146,0.077329114,0.07641887,0.052074987,0.045331985,0.026338823,0.10664244,0.031646825 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv index c5539a6d..10e0c261 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.028286915,0.033591546,0.04288041,0.0652413,0.20657852,0.08050327,0.12876955,0.036749262,0.08919606,0.09513434,0.02763165,0.06495523,0.10048189 -0.015949441,0.027130906,0.03247144,0.11179749,0.24181513,0.10279171,0.06656204,0.08480224,0.05502044,0.082635805,0.07668217,0.0677755,0.034565672 -0.034620997,0.030552922,0.034756497,0.13375674,0.24031734,0.11263447,0.0917502,0.03892543,0.06997049,0.043424457,0.04176089,0.05420117,0.07332844 +0.028341014,0.033524573,0.04279492,0.06508739,0.20778364,0.08034278,0.12851283,0.036675997,0.08901823,0.095130295,0.027469048,0.06484156,0.10047761 +0.015947836,0.02712818,0.03246818,0.112004794,0.24179083,0.10298231,0.06662037,0.08495948,0.05490756,0.08234555,0.076345675,0.06780178,0.034697466 +0.034501042,0.03056623,0.03477164,0.133815,0.24042203,0.112683535,0.09161106,0.03894239,0.069830276,0.043528304,0.041779082,0.054224778,0.073324576 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv index 263dcbe9..2ee58cc5 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.01560967,0.028822947,0.024944182,0.059488393,0.2579016,0.17794675,0.061197206,0.059604697,0.08186873,0.07943712,0.054059114,0.055341084,0.0437784 -0.013061907,0.019455653,0.01785351,0.16741595,0.14602278,0.07193442,0.058912177,0.032966156,0.17071792,0.03809232,0.052423164,0.1693894,0.041754596 -0.015262611,0.018700138,0.024967961,0.2106938,0.1602874,0.068318814,0.065813944,0.034664582,0.123377606,0.056046806,0.06990481,0.12679777,0.025163786 +0.015611427,0.028826192,0.02494699,0.0594951,0.25793064,0.17866333,0.06114436,0.059611414,0.08167831,0.079112194,0.0540652,0.055131543,0.043783337 +0.013151082,0.019436039,0.017835513,0.16724718,0.14587559,0.07189701,0.05902547,0.032932926,0.17121333,0.038053922,0.05231921,0.16921864,0.041794058 +0.015268664,0.018707559,0.024977867,0.21077739,0.16035098,0.06837931,0.06590439,0.034678336,0.12342657,0.056069046,0.06993255,0.12635355,0.02517377 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv index 682787e3..39f27a25 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.016827505,0.024672894,0.026888637,0.071175836,0.2112891,0.1647487,0.048896004,0.025926603,0.05938984,0.12714048,0.16040213,0.031259973,0.031382322 -0.013997956,0.020205943,0.022106718,0.022882363,0.35228354,0.052252322,0.05392724,0.039436106,0.08225181,0.12857363,0.0942475,0.09183136,0.026003601 -0.05171333,0.03437709,0.04829341,0.060120467,0.07857956,0.1719225,0.10227148,0.05633357,0.054162037,0.15633135,0.024398591,0.116559125,0.044937547 -0.019069683,0.023180008,0.014620337,0.04426263,0.4761877,0.06358374,0.023508424,0.019419778,0.11789036,0.038552396,0.09140214,0.028023642,0.040299125 -0.01085677,0.009961516,0.011466335,0.03731547,0.36767113,0.02872022,0.035538275,0.026009187,0.1229666,0.05771425,0.22166713,0.023857085,0.046255976 -0.031226596,0.02629222,0.023113754,0.112368956,0.13236259,0.08975561,0.1010255,0.043042876,0.09706933,0.12928063,0.06875058,0.09676764,0.048943765 +0.016887669,0.02476413,0.026986418,0.071169205,0.21061277,0.16466737,0.04896162,0.025952585,0.05929014,0.12724507,0.16085285,0.031182745,0.031427313 +0.014183183,0.020237265,0.022139635,0.023021577,0.35177594,0.05240823,0.05402566,0.039391156,0.082258716,0.12840404,0.093942404,0.09212539,0.026086865 +0.05163218,0.03439445,0.04831485,0.060128797,0.07838445,0.17196144,0.10228253,0.056375563,0.054321844,0.15596226,0.024484772,0.116810314,0.044946518 +0.019097615,0.02303612,0.014642649,0.044230174,0.4773803,0.0634187,0.023490468,0.019398358,0.11744495,0.038352862,0.09146622,0.0280048,0.040036753 +0.010892983,0.0099959625,0.0115052825,0.037212107,0.3692803,0.028643182,0.035438757,0.026029024,0.12273083,0.05763524,0.22050735,0.023885578,0.04624343 +0.031303268,0.026257228,0.023171922,0.11228792,0.13282534,0.08952374,0.100654244,0.043037932,0.09660937,0.12974845,0.06882482,0.09698748,0.04876837 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv index b2377fc1..bde6b79b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.016353136,0.013987578,0.015006481,0.11175343,0.4632051,0.05027907,0.040120237,0.0651852,0.05404043,0.042499743,0.01661066,0.0897964,0.021162536 -0.021549432,0.020723887,0.017451258,0.17284249,0.13888285,0.09771629,0.052868646,0.16687156,0.06822529,0.038566373,0.06232491,0.10341074,0.038566373 -0.020322079,0.01738239,0.014523531,0.0958217,0.1388762,0.04725025,0.07889779,0.061897356,0.20206368,0.15193103,0.052148256,0.06576083,0.053124882 +0.016471865,0.014089133,0.014997804,0.11256474,0.45933443,0.05074929,0.040253956,0.0657868,0.054406185,0.04285011,0.01673126,0.09044831,0.021316173 +0.021560203,0.020734245,0.01732411,0.1722547,0.1394961,0.09795627,0.052895073,0.16630408,0.06833443,0.038736675,0.06235607,0.10346244,0.038585655 +0.020330017,0.017389184,0.014529208,0.09567208,0.13893045,0.0472687,0.07885156,0.06191019,0.20214261,0.15199037,0.0521177,0.065722294,0.05314563 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv index 5af54919..982b34a3 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv @@ -1,7 +1,7 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.011690648,0.022708276,0.018247731,0.12031194,0.14736429,0.072557904,0.059560545,0.06837643,0.15909584,0.047002815,0.072019346,0.15372172,0.047342557 -0.016566617,0.022464922,0.019672144,0.07886144,0.21629961,0.08572125,0.0340683,0.04920004,0.16754173,0.04258672,0.09411154,0.057664577,0.115241036 -0.0146416435,0.02312187,0.021978369,0.03468886,0.057679538,0.07068581,0.045911815,0.026580743,0.21460655,0.27920017,0.077151075,0.066860445,0.0668931 -0.019577837,0.020039665,0.0147772245,0.03963531,0.5760377,0.047202054,0.023575775,0.040274374,0.043345284,0.049281806,0.045759395,0.058174577,0.02231905 -0.04962753,0.031602994,0.031358972,0.07433624,0.15786043,0.17700651,0.08936339,0.05545165,0.042340003,0.16477123,0.02115324,0.059756365,0.045371544 -0.028013574,0.027042532,0.030052343,0.06491127,0.083546355,0.118885174,0.099732846,0.06744788,0.054070134,0.14321429,0.2222415,0.029767558,0.03107451 +0.01163391,0.02277809,0.018302709,0.120284714,0.14737591,0.072344445,0.059545252,0.0682523,0.15935136,0.04692053,0.07198328,0.1538465,0.047380984 +0.016511263,0.022392593,0.019761395,0.07892483,0.21580069,0.08592345,0.03414463,0.0493899,0.16741052,0.042493675,0.094276346,0.05768628,0.1152844 +0.014698291,0.023033507,0.02206475,0.03471272,0.057652313,0.07060261,0.045807593,0.026511405,0.21430898,0.2795116,0.07701353,0.06707407,0.0670086 +0.019513203,0.019975943,0.014786988,0.03957203,0.5769814,0.047176875,0.023537416,0.040175576,0.04321801,0.04915209,0.045597192,0.058028545,0.022284778 +0.04979623,0.031714294,0.031344812,0.07435257,0.1585615,0.17619851,0.089293055,0.055389207,0.042344138,0.16487788,0.021043912,0.059743974,0.045339987 +0.02798013,0.027119271,0.029901266,0.06500812,0.083533235,0.11872466,0.09958642,0.06744114,0.05382787,0.14320928,0.222675,0.029901266,0.031092396 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv index 2ebebefb..c2365f59 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.034384813,0.038509164,0.031307727,0.06452221,0.055054195,0.106119744,0.09328523,0.07180421,0.12095608,0.13388617,0.041476,0.15470518,0.05398935 -0.014236114,0.022049326,0.0202336,0.099011414,0.2333774,0.08577096,0.054572605,0.04250119,0.1334949,0.14776537,0.06464855,0.047785368,0.034553222 -0.015531263,0.014031327,0.013181212,0.09739672,0.33207306,0.034660105,0.06450115,0.0460519,0.14060858,0.06892985,0.03326726,0.10207088,0.037696745 +0.03437901,0.038352557,0.031180408,0.06441689,0.055206407,0.10610183,0.09326949,0.071722016,0.12140899,0.13438751,0.04130733,0.15407604,0.054191515 +0.014236728,0.02205028,0.020234475,0.0990157,0.23338753,0.08585848,0.054574966,0.04250303,0.13350068,0.14777178,0.06443074,0.047880862,0.034554716 +0.015529931,0.014030124,0.013180082,0.09738835,0.33204457,0.034657136,0.064558625,0.04613797,0.14059651,0.06885666,0.033264406,0.10206211,0.03769351 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv index 295be473..52c7d207 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv @@ -1,4 +1,4 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.037636146,0.032444384,0.023552097,0.16867347,0.20747192,0.13239335,0.05846303,0.050250847,0.09762073,0.026583975,0.028409252,0.04206824,0.09443264 -0.014826758,0.025618346,0.024445197,0.04046106,0.089766786,0.11938711,0.03626906,0.17506963,0.14627615,0.04265201,0.02010807,0.18062693,0.08449295 -0.010266415,0.017463759,0.026733276,0.06694543,0.021734,0.0745373,0.06203545,0.12654482,0.14007233,0.03017467,0.022777036,0.36474198,0.035973556 +0.03764677,0.03245354,0.023466894,0.1687211,0.20753048,0.13243072,0.05847953,0.050265033,0.09745775,0.026591476,0.02841727,0.04208011,0.094459295 +0.0148268975,0.025518704,0.024445422,0.040461432,0.08976761,0.118922755,0.03641135,0.17507124,0.1462775,0.04273579,0.020108255,0.1806286,0.08482443 +0.010265543,0.017462278,0.026731001,0.066939734,0.021817207,0.07453096,0.062030166,0.12653404,0.14006044,0.0301721,0.022775097,0.364711,0.03597049 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv index 8cd9eea8..49604740 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0053320643,0.005789764,0.0048760655,0.03720358,0.0035652393,0.025075478,0.04443915,0.016188094,0.035687704,0.0061186426,0.005490237,0.021655092,0.025955843,0.01783606,0.021378342,0.014357306,0.21706626,0.0067667514,0.016861673,0.011250843,0.018886115,0.02848178,0.022863349,0.006047647,0.06405485,0.14882801,0.010209717,0.07615009,0.0072470545,0.015511747,0.021830576,0.013150852,0.023844091 +0.005332064,0.0057897666,0.004876065,0.037203588,0.0035652376,0.025075484,0.044439144,0.016188093,0.035687704,0.0061186426,0.005490237,0.02165509,0.025955847,0.017836059,0.021378342,0.014357305,0.21706617,0.0067667514,0.016861672,0.011250842,0.018886117,0.028481785,0.022863349,0.00604765,0.06405484,0.14882804,0.0102097215,0.07615008,0.007247054,0.015511746,0.02183058,0.013150859,0.023844091 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv index fafc83a6..b6b22fe5 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.005414255,0.0058297557,0.0046986197,0.036962785,0.0031884725,0.025659159,0.04501603,0.017804626,0.042272698,0.0064299456,0.0062360885,0.021977006,0.028345384,0.016593426,0.020529402,0.01365076,0.22053148,0.007261174,0.018225364,0.011267549,0.016855016,0.032483425,0.02040384,0.006038296,0.061356742,0.13856283,0.010517521,0.07868338,0.006724646,0.016816795,0.021524182,0.011967941,0.020171447 +0.0054142578,0.0058297585,0.0046986197,0.036962792,0.0031884734,0.02565916,0.045016028,0.017804626,0.042272698,0.0064299456,0.0062360885,0.021977011,0.02834539,0.016593434,0.020529408,0.01365076,0.2205314,0.007261174,0.018225364,0.011267549,0.016855016,0.032483444,0.02040384,0.006038299,0.06135676,0.13856284,0.010517521,0.07868336,0.006724646,0.016816795,0.021524182,0.011967942,0.02017145 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv index a0bb7db1..be6c1f23 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.010200325,0.008255294,0.008725317,0.028328693,0.0071364073,0.031695973,0.050800975,0.014434751,0.036991633,0.010709722,0.009840103,0.023735259,0.027150556,0.015559098,0.017729346,0.021140106,0.07350094,0.010444301,0.03560199,0.015230986,0.03764622,0.023684604,0.0285523,0.010491406,0.051373497,0.22636293,0.02416806,0.02768691,0.010378675,0.017089728,0.040571064,0.013346023,0.031436794 +0.0102003245,0.008255288,0.008725312,0.028328696,0.0071364064,0.03169596,0.050800964,0.014434744,0.036991633,0.010709721,0.009840102,0.023735257,0.027150547,0.015559097,0.017729346,0.021140099,0.07350095,0.01044429,0.035601992,0.015230984,0.03764622,0.023684606,0.028552298,0.010491399,0.05137351,0.22636302,0.024168057,0.027686903,0.010378668,0.017089726,0.040571056,0.013346022,0.031436786 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv index c4c85200..847be8bb 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.006770478,0.0070975553,0.0061097112,0.032388054,0.00469689,0.029014563,0.054458927,0.015219773,0.036924854,0.0077053085,0.0074958084,0.02382878,0.028791584,0.017738653,0.01888046,0.020983137,0.11063638,0.008250365,0.025185334,0.012733429,0.02757118,0.027456699,0.025177583,0.008029096,0.0590341,0.21493421,0.017014707,0.05102823,0.007797203,0.017581401,0.030098991,0.014413131,0.024953334 -0.006460396,0.007043518,0.0061552622,0.043098416,0.0042703887,0.024615532,0.040515337,0.016898174,0.034789506,0.007203162,0.006736328,0.023457414,0.025878392,0.016775291,0.016562976,0.015162665,0.20098755,0.008355655,0.024063585,0.011879982,0.021613166,0.027997697,0.02484585,0.007972056,0.05440866,0.17081757,0.011742848,0.048810504,0.00834056,0.015540331,0.02875625,0.013147283,0.02509769 +0.0067704804,0.0070975586,0.0061097112,0.032388065,0.00469689,0.029014569,0.054458935,0.015219773,0.036924865,0.007705308,0.0074958117,0.023828786,0.02879159,0.017738651,0.018880464,0.020983135,0.1106364,0.008250364,0.025185334,0.012733434,0.027571186,0.027456705,0.025177589,0.008029096,0.059034105,0.21493421,0.017014707,0.051028233,0.0077972026,0.0175814,0.030099008,0.014413131,0.024953345 +0.0064603947,0.007043517,0.0061552613,0.043098435,0.0042703883,0.02461554,0.040515333,0.016898172,0.034789506,0.007203161,0.0067363298,0.023457421,0.025878388,0.01677529,0.01656298,0.01516267,0.20098753,0.008355653,0.024063593,0.011879986,0.021613162,0.027997697,0.024845859,0.007972059,0.05440866,0.17081751,0.011742852,0.048810527,0.008340559,0.015540328,0.028756257,0.0131472815,0.0250977 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv index f67dd196..512da4f8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0055265864,0.0069941594,0.0047999513,0.03426367,0.0041857036,0.022670772,0.03401926,0.020106943,0.023731828,0.0055064764,0.0053447303,0.014821653,0.01768129,0.021764157,0.019465126,0.010148312,0.37970722,0.0066347406,0.0131839905,0.0095445,0.013646816,0.025851715,0.020261735,0.008503725,0.052374292,0.05979142,0.0068904874,0.08166511,0.008144954,0.014931847,0.014926138,0.01588961,0.017021054 +0.005526586,0.0069941585,0.004799951,0.03426365,0.0041857054,0.022670768,0.034019258,0.020106941,0.023731826,0.0055064755,0.0053447275,0.014821659,0.017681288,0.021764155,0.019465124,0.010148311,0.37970722,0.0066347397,0.013183994,0.009544499,0.013646808,0.025851712,0.020261733,0.008503724,0.052374292,0.05979142,0.0068904837,0.08166511,0.008144954,0.0149318455,0.0149261365,0.01588961,0.017021053 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv index 3aa6ada2..5cc07cb2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0079358015,0.008644697,0.008528162,0.050991315,0.006794538,0.027761,0.0358331,0.017671429,0.028613957,0.008022484,0.00793928,0.02051466,0.018362291,0.019954775,0.018463802,0.013146331,0.21864693,0.010478101,0.024880765,0.014835908,0.021379687,0.021088064,0.027753515,0.012069517,0.05148979,0.15231076,0.013349637,0.044053532,0.01088003,0.014509736,0.024076153,0.014572965,0.024447259 -0.005569799,0.005660792,0.005039816,0.03242026,0.0038034345,0.024715062,0.04848758,0.019317342,0.07592577,0.0073058056,0.0071936473,0.028503245,0.039357413,0.016763123,0.02464078,0.017066706,0.107044116,0.006419049,0.021850476,0.009070911,0.016291386,0.042864792,0.028132914,0.005143986,0.0739408,0.13126431,0.012961439,0.079355635,0.007179912,0.021646269,0.03454433,0.011274988,0.029244097 +0.007935801,0.008644695,0.008528165,0.050991338,0.0067945397,0.027761009,0.035833094,0.017671425,0.028613951,0.0080224825,0.007939282,0.020514661,0.01836229,0.019954776,0.018463803,0.013146329,0.21864699,0.010478104,0.024880761,0.014835906,0.021379694,0.021088066,0.027753517,0.012069514,0.051489774,0.15231074,0.013349635,0.04405351,0.010880027,0.014509733,0.024076149,0.014572963,0.02444726 +0.0055697993,0.0056607896,0.0050398135,0.03242026,0.003803431,0.024715057,0.048487585,0.019317342,0.07592577,0.0073058023,0.0071936473,0.02850324,0.039357413,0.016763113,0.024640776,0.017066706,0.107044175,0.0064190463,0.02185047,0.009070911,0.016291386,0.042864796,0.0281329,0.005143986,0.0739408,0.13126434,0.012961427,0.079355635,0.007179909,0.021646269,0.034544323,0.011274983,0.02924409 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv index e7303aa2..fb88a77b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.006583762,0.0068928897,0.0048378515,0.03660268,0.004346066,0.02784286,0.042631052,0.017884584,0.033521336,0.0069473158,0.00634369,0.018111208,0.024766268,0.018511454,0.018494321,0.013050359,0.25470728,0.007486415,0.018900618,0.010490363,0.018111968,0.02067791,0.02412442,0.009464144,0.0647224,0.13972172,0.010750387,0.05095635,0.008137707,0.015822683,0.021603521,0.016543148,0.020411285 +0.006583764,0.0068928925,0.0048378515,0.03660268,0.004346068,0.02784286,0.042631034,0.017884584,0.03352133,0.0069473186,0.0063436897,0.018111207,0.024766268,0.018511454,0.01849432,0.013050358,0.25470734,0.007486411,0.018900616,0.010490363,0.018111968,0.020677898,0.024124417,0.009464148,0.06472242,0.13972169,0.010750386,0.05095634,0.00813771,0.01582268,0.02160351,0.016543156,0.020411283 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv index 27cebee6..b2f4d541 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008046482,0.010288932,0.0069967234,0.03990826,0.007162291,0.03375451,0.03726217,0.021291917,0.027013969,0.007882263,0.0078681735,0.01970519,0.02320241,0.024027871,0.017250976,0.014517644,0.26696384,0.011102694,0.021171335,0.014237669,0.020665448,0.017218802,0.024644138,0.013858891,0.057388205,0.10421708,0.01121666,0.042277344,0.01241735,0.016171634,0.01957094,0.01778471,0.02291343 +0.008046485,0.010288931,0.006996726,0.03990828,0.00716229,0.033754513,0.03726218,0.021291913,0.027013965,0.007882266,0.007868176,0.019705186,0.023202414,0.024027875,0.017250976,0.014517649,0.2669638,0.011102698,0.021171337,0.014237667,0.020665446,0.017218808,0.024644135,0.01385889,0.05738821,0.10421709,0.011216665,0.042277344,0.012417349,0.016171632,0.019570941,0.01778471,0.022913428 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv index 46d86b6f..79a63b85 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0012847829,0.0013862588,0.0013743622,0.0049335216,0.002629261,0.04421479,0.07391029,0.04052809,0.04858283,0.0037130984,0.001400662,0.06348066,0.056958914,0.019132532,0.07674131,0.02009592,0.03749449,0.0011936828,0.0070741074,0.0039621834,0.0048973863,0.08357048,0.02983897,0.0016369526,0.09871048,0.0017693046,0.013229287,0.16916683,0.0018953648,0.019495614,0.012248143,0.0025117958,0.050937597 +0.0012904094,0.0013854031,0.0013756184,0.0049201986,0.0026279963,0.044148285,0.07374064,0.04074432,0.04855693,0.0037117477,0.001404071,0.06342667,0.05690586,0.019039612,0.07667846,0.020172833,0.03751043,0.0011957006,0.0070678433,0.003960929,0.0049003386,0.08352786,0.029856034,0.0016307909,0.09834979,0.00176659,0.013229489,0.1697645,0.0018912563,0.019570507,0.0122591285,0.00250594,0.050883807 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv index 9d87985f..09d5a2d2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.015949078,0.013059553,0.009781349,0.048254672,0.01312685,0.01593082,0.028322889,0.007367935,0.007820241,0.0077832667,0.014817788,0.002786293,0.010103129,0.011100873,0.013910568,0.012986693,0.032847404,0.017707605,0.018416008,0.024353962,0.032842595,0.002778024,0.03274647,0.05513109,0.009160907,0.3112136,0.0045494093,0.0028305363,0.019623127,0.03260526,0.07252648,0.09204435,0.0055211657 +0.015634717,0.01281785,0.009619565,0.048077118,0.012959089,0.015963905,0.028544521,0.007311691,0.007936274,0.007725436,0.014542746,0.0027863763,0.010137666,0.01106823,0.014024269,0.012997272,0.03277003,0.017333027,0.018349424,0.024214767,0.03291807,0.0027870873,0.03269819,0.055223055,0.009176768,0.312866,0.004502388,0.0028817935,0.019294238,0.03272431,0.073402315,0.09117624,0.005535524 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv index 110272db..39f7794f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0006185576,0.0006328632,0.00043876236,0.0064425473,0.0018244528,0.065627284,0.1284394,0.011077401,0.04086932,0.0013103667,0.00057274237,0.05383014,0.0138934385,0.03555001,0.035452865,0.016880834,0.100283615,0.0006685078,0.013122532,0.008209185,0.014611625,0.022872807,0.024365555,0.0038333896,0.035221875,0.08512628,0.003992684,0.14880891,0.00076322147,0.02621189,0.05397747,0.01884453,0.025624936 +0.0006198204,0.00063342374,0.0004384532,0.006420689,0.0018287954,0.06507862,0.1269804,0.011015099,0.04099147,0.001311511,0.0005743433,0.053394005,0.013784635,0.035449795,0.03551256,0.016842777,0.099894196,0.0006676215,0.013255125,0.008228865,0.0147693455,0.022764573,0.02433358,0.0038868464,0.034915894,0.08704853,0.003976894,0.14972544,0.00076197524,0.026150865,0.054506917,0.018916963,0.025319949 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv index d92c0440..84199ce6 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.008535063,0.010116155,0.004999788,0.027722772,0.007546305,0.050576966,0.040861025,0.009750304,0.0048526525,0.0060036117,0.007846482,0.01775664,0.0069292323,0.034353506,0.021897852,0.011217101,0.012552527,0.009145636,0.011646283,0.026980927,0.0408808,0.010849433,0.05207903,0.02948556,0.016560948,0.22770509,0.00622852,0.007239846,0.012705731,0.037399787,0.10941857,0.108829156,0.009326774 -0.0008166164,0.0005132967,0.00059320376,0.006916493,0.002581364,0.021923427,0.050397992,0.009789066,0.11758413,0.001491984,0.0006522989,0.013462131,0.023066303,0.012532,0.02107708,0.016029773,0.19077104,0.00079144875,0.01853323,0.005924662,0.009348377,0.015089126,0.008362901,0.0038307437,0.022829419,0.035089612,0.0039825533,0.32077447,0.0008275365,0.014444679,0.024167405,0.0045341994,0.021271454 +0.008406845,0.0100028645,0.004978663,0.028080318,0.0074564624,0.05106336,0.041368242,0.009740752,0.0049058977,0.0059933676,0.007738937,0.017632268,0.006884857,0.034210872,0.021888284,0.011264261,0.012693914,0.009070253,0.011593515,0.026868774,0.041217517,0.010789327,0.05191277,0.029620975,0.016518576,0.22696489,0.006126781,0.0071672136,0.01255229,0.037649535,0.10909438,0.1091829,0.009360133 +0.00081456243,0.00051110506,0.000592047,0.00687621,0.0025706633,0.021814596,0.050301585,0.009817175,0.11709266,0.0014886729,0.00065051304,0.01347012,0.02308426,0.012487394,0.021035971,0.016027665,0.18970953,0.00078846415,0.018496549,0.005921485,0.009317239,0.015121425,0.008347157,0.0038045023,0.022821637,0.034895573,0.003979794,0.3231347,0.0008225577,0.014405082,0.024048084,0.0045162523,0.02123482 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv index 135277b4..9d17464e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0006395509,0.0005395344,0.0006403406,0.0073080775,0.0016307676,0.04628504,0.114420965,0.033811003,0.04748827,0.0018689088,0.0006519,0.033128954,0.04977551,0.015585043,0.048301417,0.019319415,0.11359712,0.0006475441,0.0067579355,0.0037142283,0.0035758512,0.040649626,0.021625642,0.0012714841,0.08745198,0.003365021,0.0064466624,0.21271876,0.0010225932,0.022955855,0.010015839,0.0032300227,0.03955918 +0.000644279,0.00054107426,0.0006426197,0.007318598,0.0016342783,0.046498753,0.114201136,0.03403976,0.04745785,0.0018703459,0.00065563683,0.033165775,0.049821507,0.015586319,0.048468433,0.019384295,0.11359834,0.0006508778,0.006752685,0.0037247261,0.0035874853,0.040763292,0.021660022,0.0012675843,0.087549336,0.003357906,0.006457923,0.2118147,0.0010242914,0.023060877,0.0100330515,0.0032326481,0.03953359 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv index e5581ce7..6de20a20 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0017209036,0.0015223114,0.0009925718,0.017091438,0.0052904864,0.029449824,0.05233395,0.005048244,0.11915878,0.0020151085,0.0016928521,0.011555765,0.01666688,0.016796239,0.025025416,0.015222794,0.24491838,0.002148038,0.034079727,0.010994179,0.035693437,0.0076755397,0.015851151,0.01280274,0.021139963,0.12886791,0.003564564,0.062393457,0.001786263,0.017634643,0.0507273,0.016218634,0.011920487 -0.027149918,0.03692235,0.0297103,0.07504655,0.025415707,0.06079237,0.025890756,0.02272309,0.008084381,0.018789234,0.039250992,0.011783172,0.017395535,0.029108455,0.016487945,0.0140047455,0.021839352,0.052460495,0.012594856,0.029682744,0.036679644,0.009503126,0.053610098,0.036722347,0.033857927,0.029855149,0.0132688945,0.0007574541,0.05655436,0.031545028,0.02689056,0.07513626,0.020486278 +0.00171548,0.001514297,0.0009926202,0.01718312,0.00527013,0.029487936,0.05267179,0.005046223,0.118690774,0.0020176421,0.0016863676,0.011463078,0.016580433,0.016751137,0.024944035,0.0152443405,0.24363711,0.0021403863,0.033990223,0.010999503,0.035781205,0.0076473923,0.015846951,0.0128892865,0.020958621,0.13015136,0.0035353715,0.062455773,0.001783925,0.017721385,0.050996166,0.016302522,0.011903471 +0.027323829,0.037167955,0.029990472,0.07488815,0.025425775,0.060669463,0.025825078,0.022680491,0.008052186,0.018953843,0.03934911,0.011748633,0.017262118,0.02899022,0.01647767,0.0139917005,0.021608276,0.05273841,0.012544975,0.029721929,0.036775358,0.00949796,0.053365026,0.036835194,0.033656303,0.029669568,0.0132582355,0.00075166044,0.05680184,0.031587865,0.026841847,0.075078,0.020470945 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv index fd8cc3b9..f362f47d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.00085969456,0.0007951353,0.00066271354,0.018881613,0.0021610884,0.061503798,0.16510883,0.011513276,0.036499035,0.0013508685,0.0008861966,0.012494069,0.020483125,0.02126216,0.037900373,0.016543375,0.20081232,0.0012051113,0.011987639,0.0088223675,0.012496148,0.008076034,0.025651107,0.005890034,0.034473073,0.09267589,0.00274839,0.04009039,0.0014759087,0.044728093,0.048980862,0.031187622,0.019793583 +0.0008632209,0.00079384743,0.0006646036,0.018937923,0.0021681492,0.06119901,0.1648909,0.011469957,0.03668653,0.0013531677,0.0008869396,0.012405908,0.020405136,0.021181801,0.037859116,0.016523449,0.1998736,0.0012055563,0.012034784,0.008868842,0.012623,0.00803282,0.025626624,0.0059644775,0.03410578,0.09410486,0.0027197315,0.04003143,0.001474787,0.04476594,0.049414117,0.03120969,0.019654365 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv index fc6463da..9cbae14a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0068634474,0.009162191,0.009985762,0.015698336,0.0108448705,0.0904677,0.042359415,0.06670113,0.03318652,0.011744499,0.008607542,0.061853275,0.05889687,0.030315023,0.05424857,0.02326838,0.035711277,0.007862204,0.008442241,0.014744367,0.0083070565,0.06985575,0.029260479,0.0033493678,0.15207788,0.0012586035,0.028393278,0.01334909,0.010879728,0.022950096,0.0053134672,0.0070398482,0.047001738 +0.006902314,0.009175283,0.010000225,0.015625658,0.0108586475,0.09034072,0.04221178,0.06655271,0.033279005,0.011762234,0.008651375,0.061778508,0.059007354,0.030211158,0.05453736,0.023306027,0.035477407,0.007880052,0.008436053,0.014697746,0.008330109,0.07010769,0.029269386,0.0033454658,0.15206087,0.0012518687,0.02848025,0.0133461775,0.010879269,0.022960618,0.005361438,0.006997196,0.046918076 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv index 7cec3722..65ce62b1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv @@ -1,6 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03490532,0.031998005,0.028772216,0.027195405,0.027683252,0.029920967,0.03279077,0.02628576,0.034324087,0.030802563,0.027264664,0.027657194,0.027639514,0.029530054,0.03239934,0.030662043,0.029952087,0.030814199,0.028125698,0.0344104,0.033223245,0.032099433,0.032986548,0.029886737,0.03260546,0.030854948,0.027623257,0.031297766,0.026375476,0.030162385,0.030712212,0.027799197,0.031239802 -0.027808135,0.029926706,0.03400922,0.030426748,0.025627963,0.031928588,0.03561634,0.030228743,0.031077368,0.029948497,0.028980114,0.028951673,0.029900176,0.027818188,0.028425556,0.025779901,0.03055118,0.029142106,0.03244458,0.030813629,0.027564976,0.02764529,0.02720103,0.029113112,0.032587785,0.03428341,0.029919686,0.031955376,0.03911367,0.030389592,0.03261028,0.028901618,0.02930875 -0.029915085,0.030543437,0.028834613,0.03042259,0.026555737,0.03297875,0.028495284,0.03012273,0.02954228,0.030395597,0.031444997,0.02910545,0.030163703,0.030961595,0.03490318,0.031798262,0.029193621,0.03289751,0.028760593,0.033082496,0.029938387,0.03467049,0.02820007,0.031503487,0.032639142,0.031294454,0.025620796,0.031352498,0.025782082,0.030491428,0.025737967,0.028993692,0.033657994 -0.025365606,0.025664778,0.026062079,0.032890774,0.026538692,0.03823054,0.028495807,0.029882822,0.033322647,0.031037634,0.025865804,0.029255202,0.02681062,0.03221474,0.03261645,0.034453724,0.027962716,0.028476784,0.023960778,0.027055632,0.026977597,0.03259397,0.03620625,0.032044176,0.032762516,0.037340216,0.030151956,0.033774957,0.029703537,0.0278705,0.028950956,0.030582692,0.03487683 -0.025282321,0.029473947,0.028269365,0.03373335,0.028858237,0.033462204,0.030326918,0.033530205,0.027763087,0.030093702,0.030169412,0.03151387,0.03000025,0.029444912,0.032865997,0.03329371,0.030292938,0.032526247,0.026917703,0.03018704,0.026444286,0.033763483,0.028074782,0.0319315,0.030718518,0.032087997,0.031459063,0.02930742,0.030223848,0.030085208,0.025420504,0.030391077,0.032086886 +0.035109174,0.032228634,0.029122373,0.027463987,0.027945641,0.030163735,0.032845262,0.02594842,0.034922395,0.030951612,0.027564056,0.027116977,0.027191272,0.029049408,0.031170875,0.030246926,0.030047692,0.031019162,0.02844935,0.035145335,0.032860417,0.033282854,0.03376338,0.030274218,0.03223822,0.030229334,0.027426753,0.03153387,0.026364023,0.030059563,0.03067464,0.02712991,0.030460587 +0.027818047,0.029806498,0.034336902,0.030778736,0.026007194,0.031295177,0.036927246,0.030886251,0.03125275,0.02985114,0.028995993,0.02902339,0.02976673,0.027265698,0.028691404,0.025839522,0.03046781,0.029810123,0.03192401,0.030833513,0.027267322,0.027360896,0.026245909,0.028813887,0.031931926,0.032841697,0.03109479,0.031397782,0.03992314,0.030624682,0.032517962,0.029487668,0.028914195 +0.030183403,0.03242052,0.029843858,0.0296451,0.026645405,0.031996164,0.028702747,0.030074446,0.028383184,0.030225128,0.032427616,0.029124603,0.0312291,0.030315014,0.033579975,0.03126286,0.02904425,0.03404973,0.030180257,0.03460662,0.029601347,0.034505613,0.02989275,0.03159202,0.030262558,0.030775197,0.025916839,0.030558,0.026761474,0.02995052,0.025229465,0.028859543,0.032154743 +0.025296634,0.026471082,0.026577652,0.033839412,0.02780684,0.039299954,0.03074986,0.029498447,0.0331007,0.030452378,0.02612987,0.029916089,0.026885556,0.031654015,0.03073531,0.03307961,0.027617231,0.029398216,0.02377331,0.028508658,0.0275827,0.033749986,0.036714476,0.034851376,0.03230926,0.035462867,0.02979035,0.031253695,0.02989457,0.027552374,0.027788708,0.028714927,0.033543948 +0.025478277,0.028292565,0.028266197,0.03619709,0.029252974,0.0347753,0.030366326,0.034015596,0.027419873,0.030975945,0.029481627,0.03149804,0.029024819,0.02893344,0.03221479,0.033274993,0.029894393,0.03219735,0.02582195,0.029421443,0.026916182,0.034794923,0.028513875,0.03288691,0.031072868,0.031177122,0.031510886,0.029790463,0.029789902,0.029741006,0.025122572,0.0299503,0.031930022 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv index 25701dea..f2aa4f3b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv @@ -1,6 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.025796872,0.025821052,0.030540183,0.03540621,0.026608227,0.03478382,0.03067776,0.031003399,0.033146046,0.03325188,0.030365815,0.0308043,0.027449563,0.030018117,0.03153884,0.029352657,0.029092524,0.02384649,0.029970763,0.026764145,0.02692843,0.03091666,0.031293344,0.03301509,0.030675245,0.031148765,0.027454989,0.03464577,0.03371407,0.03039152,0.029442204,0.031400308,0.032734923 -0.027645376,0.024716172,0.029397551,0.032479983,0.029057788,0.034062088,0.029561806,0.030762905,0.03275578,0.029999051,0.03151822,0.029582402,0.029124012,0.033837236,0.03152767,0.02815874,0.031342242,0.02682736,0.029414995,0.028265033,0.030185502,0.03224051,0.033708274,0.034261037,0.030121397,0.027603159,0.02855955,0.03343462,0.02645024,0.031482406,0.028913507,0.030383296,0.03262006 -0.024845945,0.025052948,0.0263014,0.032901563,0.025363559,0.03965492,0.028409896,0.029733066,0.03424027,0.03162598,0.025910662,0.028759446,0.026962476,0.032856528,0.03243185,0.032826383,0.029125627,0.02801517,0.024131,0.027621036,0.027519526,0.032559667,0.035635147,0.03229265,0.03338464,0.037081745,0.027807528,0.03353886,0.02957665,0.029155599,0.02823219,0.030683924,0.03576222 -0.02797149,0.029818716,0.028976986,0.028290737,0.03108153,0.03052239,0.02963015,0.03228555,0.028276766,0.028560005,0.03070743,0.032421984,0.03245931,0.03343161,0.031278666,0.030921867,0.03263645,0.03018529,0.032240782,0.0317139,0.03008393,0.02913051,0.034749724,0.031110376,0.02584681,0.027162941,0.032870043,0.028430955,0.02776051,0.031122573,0.029412452,0.030131536,0.028776024 -0.027345048,0.029193792,0.029317684,0.026135022,0.02694352,0.03692952,0.02964658,0.031842634,0.02922959,0.029339928,0.02875359,0.02905978,0.030834356,0.036634963,0.029727926,0.030966414,0.030507686,0.032904536,0.030803429,0.032436226,0.028633079,0.029277464,0.032264367,0.030212997,0.030541789,0.037181064,0.026679141,0.030335572,0.026149832,0.030504115,0.028901305,0.028029755,0.032737307 +0.026077993,0.025926517,0.030068072,0.03636011,0.027121866,0.034626346,0.031620685,0.0315067,0.031596735,0.032528404,0.03069347,0.0314288,0.027027652,0.029328331,0.032343224,0.029408194,0.028625358,0.024174193,0.029095232,0.026811505,0.02688699,0.03139536,0.029974222,0.033895213,0.032119796,0.030733231,0.028192906,0.033536673,0.03282051,0.031133441,0.02963972,0.031351656,0.031950876 +0.028449364,0.024803886,0.0294986,0.03234279,0.029346153,0.03284062,0.029287698,0.031351723,0.03181133,0.02964178,0.031152815,0.030545823,0.028929776,0.032174207,0.032390404,0.029105593,0.031171152,0.027026553,0.02852814,0.027785255,0.029967785,0.031725638,0.03196683,0.033753444,0.030419005,0.026873102,0.030337531,0.033957142,0.027139246,0.032121036,0.03149567,0.03064888,0.031410974 +0.02473332,0.025805464,0.026985694,0.034197494,0.02668728,0.04076238,0.030618208,0.029560212,0.0342524,0.031228403,0.026219497,0.029502872,0.026915431,0.03167128,0.030253854,0.031405352,0.028886192,0.028909547,0.023818407,0.028952114,0.0280342,0.033739235,0.035629865,0.03535153,0.033023417,0.034959845,0.027452167,0.031207168,0.030123003,0.029052667,0.026981011,0.029005291,0.034075227 +0.027612552,0.029588765,0.028897526,0.028167427,0.03146175,0.030992467,0.030953089,0.03307828,0.028132018,0.028136177,0.030538997,0.032958314,0.03215302,0.032910448,0.03135702,0.03136277,0.032575402,0.030259186,0.031658836,0.031609565,0.029420199,0.029490033,0.034439214,0.03181292,0.02608727,0.026992736,0.033126123,0.028185237,0.027118426,0.031353865,0.029262694,0.028808676,0.029499011 +0.028027277,0.029319167,0.029869592,0.028233605,0.0284659,0.03679354,0.030892001,0.03222718,0.030400075,0.029845333,0.028747197,0.028966922,0.030681144,0.0330812,0.02865518,0.030550085,0.030910296,0.03369551,0.029822486,0.032989994,0.029237293,0.031726234,0.03142848,0.03187399,0.030198226,0.033343483,0.026842874,0.03070044,0.026204878,0.029943591,0.027344182,0.027224164,0.031758487 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv index 91c21c03..39b55eb7 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv @@ -1,5 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.033804633,0.03133798,0.03240842,0.032249976,0.031567764,0.023804748,0.033451684,0.031181484,0.02904705,0.028814662,0.031253017,0.029255506,0.03155321,0.024031805,0.03100783,0.02836353,0.032650135,0.032079875,0.029468795,0.03124199,0.031478617,0.030717542,0.022784976,0.027685331,0.031394366,0.023952689,0.03493583,0.030857133,0.035084616,0.03195621,0.032159757,0.030788282,0.02763058 -0.025631752,0.029802956,0.030698422,0.029735252,0.029497724,0.031349394,0.033659987,0.030621238,0.02941033,0.029097665,0.030105164,0.031282384,0.032693755,0.030077938,0.02911067,0.026763074,0.03305479,0.026865568,0.036262047,0.029614927,0.028123945,0.028390907,0.031433348,0.029613422,0.029825589,0.03213038,0.0313533,0.028229501,0.03429874,0.030838396,0.030776728,0.03051359,0.02913713 -0.028800884,0.027588563,0.0300563,0.03443287,0.02912721,0.029885918,0.03512253,0.03208439,0.032546118,0.030156115,0.026779838,0.028835671,0.027242702,0.026432548,0.029021429,0.029896194,0.032417633,0.031113513,0.022803584,0.029385664,0.028680721,0.030133814,0.027381856,0.030590741,0.03248337,0.028955875,0.03544596,0.03154471,0.036519587,0.03206369,0.031347316,0.03071588,0.030406838 -0.02862093,0.03000527,0.029652234,0.02862441,0.03345083,0.03031905,0.028309684,0.032872725,0.028253555,0.03009939,0.0307454,0.033102486,0.032555282,0.033184092,0.02956358,0.03107351,0.03461472,0.031375494,0.032400206,0.03102256,0.031462118,0.030181756,0.03170402,0.030066047,0.026040724,0.02641749,0.0313496,0.027319029,0.026150461,0.0320657,0.028823854,0.030786902,0.027786825 +0.034084663,0.031583164,0.032546442,0.032138847,0.029565305,0.02397673,0.032969736,0.031043336,0.027734615,0.02915201,0.031556893,0.02899239,0.030178683,0.024926245,0.032692198,0.02895135,0.031203741,0.03237466,0.029557178,0.030954232,0.029987698,0.030188313,0.023178574,0.026828399,0.03162781,0.025829652,0.03609925,0.031925663,0.034451466,0.03171625,0.032841537,0.031190302,0.027952647 +0.025305754,0.0299227,0.030633897,0.03035362,0.030023782,0.031172622,0.034432754,0.032215968,0.02902592,0.0293114,0.029836485,0.03252568,0.03256719,0.02886391,0.029192211,0.027415669,0.0338695,0.027007982,0.034716416,0.02912123,0.02748679,0.027996587,0.02957499,0.029614456,0.03000929,0.03120561,0.03207879,0.02746605,0.034783393,0.03193119,0.03044039,0.030926643,0.028971093 +0.028770477,0.027449202,0.030062556,0.03365554,0.029413687,0.029721614,0.035221003,0.03161255,0.033253502,0.030102383,0.026639005,0.028710429,0.027786555,0.02702573,0.028572798,0.029887274,0.032881945,0.030976614,0.022857795,0.029277911,0.02882068,0.030132292,0.026810376,0.030622266,0.032237146,0.028753674,0.035257693,0.031009149,0.036623254,0.032417532,0.031938296,0.031099904,0.03039909 +0.028727695,0.029837677,0.029908122,0.02894165,0.033573724,0.030687451,0.028665278,0.033794753,0.027919773,0.029874934,0.030719016,0.03329227,0.03228232,0.032287028,0.029487554,0.031092698,0.03433863,0.031789694,0.032016642,0.030929402,0.031242827,0.030201329,0.03151861,0.030687474,0.026339065,0.026228543,0.031674992,0.02779673,0.025773538,0.031888627,0.028663844,0.029518012,0.028300088 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv index 4b357202..b31d6767 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv @@ -1,9 +1,9 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.03365363,0.03131194,0.032062005,0.032612655,0.030762598,0.023996722,0.033894006,0.03161808,0.028858617,0.028537845,0.031369943,0.029386261,0.031269576,0.0240121,0.03156647,0.028297028,0.03270311,0.03169595,0.028860392,0.031636294,0.03105152,0.03050513,0.023036947,0.028302876,0.031403825,0.0235559,0.03512947,0.031095052,0.034982767,0.032558214,0.031808164,0.030668166,0.027796706 -0.032761578,0.029872429,0.029597605,0.029935349,0.026900567,0.032399144,0.02855435,0.026653757,0.03182153,0.03016848,0.032555472,0.028656261,0.029006623,0.03235095,0.03480727,0.028403722,0.028092936,0.029561672,0.03174143,0.03233374,0.033174057,0.034100316,0.03289924,0.032593768,0.032962408,0.029540613,0.02438331,0.032330763,0.023944201,0.029516606,0.027441561,0.028192038,0.0327462 -0.030725045,0.028272143,0.026365971,0.028971849,0.028257614,0.034422457,0.03088777,0.026187155,0.03345275,0.028805315,0.027079374,0.02812067,0.027472235,0.03160347,0.034400526,0.031103302,0.028490582,0.02971379,0.028624378,0.030313667,0.030894523,0.03547529,0.037652876,0.031707373,0.034248933,0.03381967,0.030158943,0.03319742,0.023066722,0.02731636,0.029626993,0.02753793,0.032026935 -0.025067946,0.025263725,0.026296385,0.033531774,0.026559269,0.03958333,0.027857842,0.030703193,0.033559784,0.03183785,0.025875572,0.029518714,0.026663154,0.032539647,0.03160153,0.034056365,0.029149989,0.02885333,0.023305051,0.02679659,0.027072044,0.033060253,0.034554478,0.032332253,0.03327132,0.037098464,0.028822728,0.033504702,0.02874793,0.029003797,0.028169123,0.03096053,0.03478138 -0.024328558,0.03019246,0.02978609,0.030933373,0.02664791,0.03585672,0.029219525,0.03113439,0.030371258,0.031899795,0.027526228,0.031095784,0.02991037,0.029948168,0.030375885,0.03407043,0.028136484,0.03192227,0.028028654,0.029312856,0.025214395,0.031401776,0.030239172,0.030062895,0.029838474,0.03965154,0.029726071,0.030511681,0.035435908,0.027180875,0.027923727,0.030501928,0.03161439 -0.027642481,0.029439252,0.033424422,0.030074678,0.02514382,0.033257872,0.03443825,0.02897289,0.032224122,0.03009342,0.028927157,0.028554885,0.029879149,0.029093452,0.028734183,0.025436884,0.030429183,0.029044895,0.032307327,0.0309847,0.028431837,0.028267644,0.029025367,0.029751183,0.03299192,0.035030864,0.02826856,0.031771418,0.037300482,0.030140122,0.03184548,0.028867587,0.030204555 -0.026242485,0.02856462,0.030316794,0.033157557,0.03299111,0.029088097,0.027124817,0.031284798,0.03198276,0.032629397,0.030249553,0.031380426,0.03177847,0.027848225,0.029764337,0.03523869,0.029829431,0.031178579,0.027072916,0.026859952,0.02733578,0.034253642,0.027440054,0.030315153,0.027151577,0.03023951,0.03223471,0.030502116,0.035234425,0.027642915,0.028225683,0.034010116,0.030831262 -0.031010924,0.027717909,0.028334908,0.029572029,0.031026728,0.028185181,0.03371703,0.03252502,0.028359665,0.028503757,0.029602813,0.028722132,0.03139693,0.029956581,0.033280496,0.027820814,0.037417598,0.029648174,0.03241054,0.03330766,0.034037765,0.030647116,0.027304817,0.027959816,0.031536154,0.023645312,0.031318452,0.029235678,0.025905538,0.035960104,0.030277228,0.029216642,0.030438429 +0.033855878,0.031555194,0.032104813,0.032544944,0.02899993,0.024226334,0.033384256,0.031535964,0.027571268,0.028917968,0.03153802,0.029317284,0.029884605,0.02487106,0.03317497,0.029042145,0.031352926,0.031901088,0.028874978,0.031184962,0.029574865,0.030010147,0.02339816,0.027419098,0.031692605,0.02540574,0.03633683,0.03199998,0.034317236,0.032391068,0.03252312,0.031074857,0.028017707 +0.032645375,0.029211296,0.029622218,0.029929172,0.026831938,0.033350952,0.02760981,0.026967196,0.03171539,0.030520461,0.03234894,0.028386977,0.02834992,0.032421347,0.03404085,0.028682854,0.028301395,0.03028663,0.030858088,0.032663256,0.03316226,0.03464805,0.033819176,0.03297321,0.03245527,0.029456258,0.02407616,0.032931916,0.023553552,0.029962027,0.027696542,0.027935032,0.03258643 +0.03079726,0.02836858,0.026739504,0.029305056,0.029472884,0.034308825,0.030819302,0.026103878,0.033304565,0.029323498,0.027538827,0.028037373,0.027434818,0.030544518,0.032991886,0.030903487,0.029249443,0.029962836,0.028534466,0.030887995,0.030986693,0.037431307,0.03750989,0.032438066,0.033674967,0.032570437,0.029678013,0.032340832,0.022803176,0.027646143,0.029873798,0.027064433,0.03135321 +0.025392696,0.02627636,0.027077502,0.035034917,0.027847782,0.04042039,0.029661613,0.030495398,0.033150274,0.03138564,0.026224535,0.030131755,0.02675575,0.031256,0.029583888,0.032415524,0.02878367,0.03011321,0.023064954,0.028201777,0.027973127,0.03411287,0.03447896,0.035180874,0.033063572,0.03497268,0.028549135,0.031398144,0.029217428,0.028573478,0.026990656,0.029208178,0.03300724 +0.024685439,0.030674905,0.029863117,0.031178279,0.02778255,0.035222333,0.02968134,0.030667255,0.030530095,0.03223433,0.028045597,0.030551089,0.03133845,0.029112432,0.02964785,0.033652943,0.027950848,0.031787325,0.028992387,0.029821344,0.025748067,0.032986067,0.031084312,0.030607037,0.02886095,0.037558336,0.02887098,0.029779462,0.035294015,0.026569769,0.027097931,0.031046059,0.031077052 +0.027818462,0.029526941,0.034052044,0.030185841,0.025486842,0.032498095,0.036262725,0.02962454,0.032617006,0.02988826,0.02899451,0.028541261,0.029611835,0.028164327,0.028638976,0.025260951,0.0305133,0.029842326,0.03165989,0.031313885,0.02806211,0.02798404,0.027728057,0.029662656,0.032396797,0.033439204,0.029236948,0.03131323,0.03833288,0.030617509,0.03189458,0.029205821,0.029624088 +0.02698204,0.029599056,0.030312235,0.033456706,0.03267925,0.028223274,0.027507698,0.03228416,0.028564464,0.032395225,0.030720642,0.031880267,0.03154193,0.028109167,0.030944703,0.035500936,0.02953083,0.032430664,0.027058449,0.027667807,0.027628645,0.033845417,0.027544307,0.029797006,0.02666573,0.029446175,0.033847805,0.029539702,0.034211446,0.027991222,0.028181324,0.034006014,0.029905727 +0.030370781,0.027035689,0.028008454,0.031036004,0.030973144,0.028833287,0.033738982,0.03354538,0.027871111,0.027916575,0.029257156,0.029191185,0.030842572,0.02881783,0.03315752,0.02846031,0.0370996,0.029838745,0.03092998,0.032305267,0.03198498,0.030699644,0.026844112,0.028627403,0.032551426,0.02384607,0.03394906,0.030086126,0.026287593,0.03627954,0.030584106,0.028412709,0.030617632 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv index b58e1cad..d25ff96a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv @@ -1,5 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.028346347,0.027353464,0.030344704,0.034818895,0.0283053,0.03005997,0.0355836,0.03275808,0.032522377,0.030344306,0.027134521,0.028696552,0.027392156,0.026236838,0.029147837,0.02928847,0.033233523,0.03095584,0.022680035,0.029963996,0.028415956,0.030157642,0.026274486,0.030956142,0.032518826,0.02823263,0.034416623,0.031546608,0.0369284,0.033256564,0.03058284,0.03078088,0.030765546 -0.02614715,0.0258215,0.027550466,0.034463495,0.028367938,0.032731164,0.030727468,0.032352015,0.028698286,0.028598435,0.027810419,0.029569183,0.029639808,0.030452486,0.033374913,0.030064132,0.03173377,0.029634332,0.027205918,0.028680194,0.030136917,0.029390203,0.031379256,0.029033292,0.032703232,0.029795818,0.034223244,0.030701801,0.03382241,0.031033205,0.03053796,0.030996071,0.03262359 -0.031898044,0.028340638,0.02751846,0.026926287,0.027034767,0.030630607,0.029686758,0.027121056,0.03294052,0.029303096,0.027993035,0.02730981,0.03156264,0.03152772,0.034503076,0.02913811,0.031860307,0.026993573,0.033478737,0.031741023,0.03363095,0.030359568,0.033719897,0.027680459,0.03301379,0.030039832,0.02723801,0.032895096,0.027244497,0.031041017,0.032970347,0.029797535,0.032860763 -0.024685703,0.029492697,0.028752888,0.031134205,0.0272171,0.037294548,0.028083863,0.03050206,0.030993259,0.031962592,0.027071144,0.031027092,0.0293045,0.030799314,0.030283516,0.034436323,0.028116086,0.03160242,0.02737299,0.02817356,0.025712473,0.032479364,0.031470202,0.030321851,0.031176731,0.040771965,0.02915091,0.030929118,0.03230334,0.026936619,0.027898025,0.03060591,0.031937685 +0.028437903,0.027254757,0.030338282,0.034053758,0.028367294,0.029867936,0.035484016,0.032350704,0.033063136,0.030184561,0.027064085,0.028652815,0.027901977,0.026792774,0.028899506,0.029313952,0.033530645,0.030812234,0.022711875,0.029815352,0.028521638,0.029946608,0.02587863,0.030986773,0.032278765,0.027954705,0.034373548,0.031195903,0.037098233,0.033722892,0.031238012,0.031281143,0.030625613 +0.025746314,0.024933858,0.026921023,0.035529517,0.029480062,0.033978727,0.031168824,0.03179294,0.029984899,0.028650545,0.027421633,0.030246083,0.029631928,0.030445006,0.032250527,0.029986437,0.032097112,0.028758565,0.026263552,0.02810667,0.030151488,0.030298227,0.03089507,0.030969998,0.033610586,0.028924711,0.03355842,0.02988841,0.032800015,0.03190985,0.02990864,0.030362934,0.033327445 +0.032267183,0.028918488,0.028129185,0.026897648,0.027366351,0.030486971,0.029913964,0.02686379,0.03348956,0.029299267,0.028501146,0.027437123,0.031400625,0.030622374,0.033201296,0.028855711,0.031837236,0.027683068,0.03356016,0.03306354,0.033076447,0.030550973,0.03371906,0.02831449,0.032340366,0.028730428,0.027243681,0.032467235,0.027846765,0.031897455,0.033190466,0.029134385,0.031693567 +0.025270436,0.02990884,0.02897759,0.03144431,0.028191876,0.03697099,0.02852898,0.02989229,0.031260435,0.03201398,0.027516115,0.03016531,0.030635659,0.029858166,0.029304778,0.033509642,0.027898662,0.031974133,0.02800069,0.029125461,0.02662284,0.034055386,0.032390516,0.03126936,0.030411147,0.038490403,0.028171586,0.030406484,0.03229996,0.02624073,0.02718416,0.030607712,0.031401414 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv index c9e83edb..a425fc01 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv @@ -1,10 +1,10 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02937184,0.030781249,0.033119388,0.028550683,0.025509233,0.03206324,0.03396557,0.028235912,0.032892834,0.029829921,0.028320564,0.02828424,0.030789617,0.02829313,0.028306503,0.025561279,0.031485945,0.029745061,0.0323852,0.031503476,0.02918103,0.028602777,0.028324347,0.028798053,0.033785295,0.0349804,0.028154539,0.03169164,0.035794634,0.030512646,0.032773368,0.02908114,0.029325323 -0.025854453,0.030651193,0.030702325,0.02862513,0.029471286,0.030098798,0.034639407,0.031529788,0.028793877,0.028493036,0.029873291,0.031217096,0.03360634,0.029397383,0.029140493,0.02725684,0.033899527,0.027715212,0.036060736,0.030847853,0.027600395,0.027915468,0.030293047,0.02915647,0.028903313,0.031247552,0.032694653,0.02797646,0.034875035,0.031475507,0.031034105,0.030351939,0.028601935 -0.025826376,0.027251828,0.02673951,0.030150859,0.028219849,0.03097317,0.029552381,0.032052875,0.033098787,0.032143876,0.026451845,0.02858729,0.033598788,0.028336221,0.030879049,0.031548064,0.03830193,0.026910027,0.028226435,0.029459467,0.02940237,0.03086073,0.026327921,0.026920898,0.032483302,0.030522237,0.027463144,0.029610101,0.033719517,0.035605237,0.029845843,0.034718696,0.03421142 -0.02661512,0.030802475,0.032640494,0.031011712,0.03189831,0.030164946,0.03295102,0.030942937,0.031764835,0.032526337,0.032349735,0.03283627,0.03008033,0.029224372,0.02729727,0.029901998,0.029873366,0.025909916,0.03347985,0.027992664,0.02590215,0.030691914,0.030372458,0.033140227,0.026693273,0.03153677,0.029790008,0.029715454,0.033401065,0.02932462,0.029047104,0.03119655,0.028924473 -0.02814665,0.029950805,0.03147324,0.032071218,0.027423255,0.035451543,0.028824573,0.029990712,0.030143596,0.029638186,0.029570555,0.03163136,0.027836546,0.031823345,0.030531272,0.03083544,0.027090862,0.03556963,0.026167938,0.030581702,0.0284657,0.03182817,0.03386525,0.033583216,0.029266147,0.033167303,0.031999893,0.031316996,0.029996168,0.026834186,0.027982738,0.028263362,0.028678378 -0.033281386,0.030130476,0.030221825,0.02840587,0.027716415,0.030989772,0.02878914,0.026732758,0.031153036,0.02907955,0.033042736,0.027861213,0.030571226,0.03249253,0.034299064,0.028136875,0.02837106,0.03143917,0.03291027,0.033115998,0.03358187,0.03396475,0.031448998,0.031539276,0.032543357,0.029416593,0.025101459,0.031998575,0.024063027,0.029163437,0.027996125,0.027905693,0.03253653 -0.024855413,0.026666297,0.02936113,0.031087212,0.02884285,0.0313365,0.029449705,0.033253677,0.030825984,0.029471586,0.028742261,0.02912062,0.034331124,0.030908402,0.028541783,0.028688319,0.03659657,0.030675147,0.027317889,0.029583992,0.029643653,0.028368162,0.027667206,0.028800705,0.030276459,0.029693466,0.030268844,0.028184077,0.036950678,0.034286764,0.029671533,0.033815984,0.032715973 -0.025155025,0.026130434,0.026154922,0.02954241,0.028716099,0.030518187,0.031584375,0.031437334,0.030625204,0.027734924,0.028301684,0.027579084,0.033700705,0.030727208,0.03288186,0.03139454,0.032228857,0.026481455,0.030001791,0.028490013,0.027577322,0.029461626,0.031345062,0.028545208,0.031811137,0.032734197,0.032353926,0.031332225,0.03433076,0.031055674,0.0314804,0.03250627,0.036080144 -0.025650796,0.030116925,0.029914461,0.028343417,0.029756019,0.031495847,0.033737093,0.030940576,0.0293521,0.028435258,0.029297698,0.031161314,0.033550072,0.030386096,0.028744891,0.027141783,0.034294646,0.027434524,0.036070127,0.03000383,0.027885038,0.028399905,0.03164065,0.029249499,0.029878315,0.032681726,0.0320276,0.02796962,0.03277645,0.031302802,0.03109174,0.03045507,0.028814139 +0.029452197,0.0306485,0.03368184,0.029208787,0.02547852,0.031809207,0.035802938,0.028849022,0.033015896,0.029569034,0.028465796,0.027966324,0.029913383,0.027351242,0.028488118,0.025190182,0.031235317,0.030739307,0.03148216,0.032006137,0.028662467,0.028530112,0.027585056,0.028937826,0.03342983,0.03354061,0.029346963,0.03168956,0.03664937,0.030737981,0.032591004,0.029114723,0.028830616 +0.025410624,0.030470952,0.030369842,0.029661402,0.02980678,0.030244453,0.035259236,0.033240262,0.028276877,0.02860871,0.029643638,0.032424532,0.03325316,0.028354872,0.029587941,0.028144129,0.034343008,0.02772666,0.034166075,0.029962657,0.026728328,0.027766544,0.028914964,0.029249499,0.029259473,0.030429421,0.033704724,0.027519733,0.035062674,0.032374986,0.030571992,0.030798515,0.028663335 +0.025337975,0.027083492,0.02744322,0.030657839,0.028513115,0.031966254,0.031017954,0.03185362,0.033549584,0.032333627,0.027234409,0.027745046,0.033427104,0.028093094,0.029163105,0.030709269,0.03713305,0.027277596,0.028337648,0.03032646,0.028630411,0.03181621,0.026347104,0.028802983,0.032475777,0.030587494,0.026387088,0.029571716,0.034264978,0.03554306,0.02840355,0.033852767,0.034113403 +0.025487956,0.028920492,0.031584144,0.032168623,0.030936489,0.03206438,0.032932498,0.032587145,0.030902065,0.0329446,0.030976553,0.03291904,0.028920155,0.029618418,0.028930362,0.031141395,0.029884664,0.026178582,0.030916898,0.027372908,0.025814181,0.03133012,0.030211058,0.03310097,0.02752377,0.032027237,0.030076312,0.030099913,0.03261934,0.029556777,0.02907321,0.031551532,0.029628236 +0.028115489,0.029519554,0.031406675,0.033021085,0.02769064,0.03581125,0.02951925,0.030510264,0.02980014,0.029648412,0.029389903,0.031621452,0.02773173,0.030956693,0.030655386,0.030680252,0.026869236,0.03531161,0.025839085,0.030112183,0.028472967,0.032457538,0.033420917,0.033944823,0.029430335,0.03254275,0.03216424,0.031369843,0.030058293,0.026615452,0.02813199,0.028111547,0.029069062 +0.032825507,0.029050106,0.029823868,0.028476052,0.02723421,0.0323307,0.02776565,0.02706704,0.0309637,0.02922705,0.03263243,0.02747781,0.029745135,0.03299441,0.03421459,0.028740628,0.02831149,0.03199856,0.031706,0.03320294,0.03318537,0.034523427,0.033132866,0.031837754,0.03197639,0.029589491,0.025036542,0.0330899,0.023499442,0.029383754,0.02828902,0.02767611,0.032992084 +0.024933483,0.027506273,0.029821714,0.029868472,0.0295652,0.03086805,0.030575937,0.032271694,0.031803988,0.02926964,0.02913596,0.029194605,0.034982435,0.030616261,0.027791448,0.028632607,0.0363351,0.03158228,0.027264304,0.030072883,0.029574117,0.029052928,0.027467903,0.02984582,0.029604388,0.029606704,0.029627847,0.02741072,0.036741782,0.033972777,0.028591022,0.033564672,0.032846995 +0.024271613,0.02529622,0.025262209,0.031130273,0.029015483,0.032995865,0.03252496,0.032081917,0.030489897,0.027709953,0.02744618,0.028730193,0.033057757,0.030686473,0.03244001,0.032020606,0.032457124,0.025812166,0.02857281,0.02809348,0.026829114,0.030221019,0.031125693,0.03006681,0.032895982,0.031971052,0.032191124,0.030761,0.033361543,0.032130904,0.030909894,0.031800143,0.035640564 +0.025240514,0.02986517,0.029861702,0.02963675,0.030136624,0.031917684,0.03455104,0.032634728,0.028964166,0.02846413,0.02896291,0.03225899,0.033151124,0.02891383,0.028778404,0.02759961,0.034724258,0.027591249,0.034086443,0.029194983,0.02715989,0.028105231,0.029908778,0.029540123,0.030567242,0.03184583,0.03296974,0.02765829,0.03352342,0.032018468,0.03083127,0.03059918,0.028738184 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv index 87c707bb..e15e21d2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv @@ -1,6 +1,6 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.029685352,0.027744511,0.030044284,0.033951394,0.028732833,0.02994491,0.034402113,0.031651333,0.03374663,0.03049073,0.026828067,0.028434549,0.027637096,0.026393222,0.028637927,0.029101957,0.034120213,0.031485118,0.02227293,0.030039264,0.029686691,0.030844377,0.026529493,0.030811347,0.03335207,0.028110413,0.033255078,0.031356674,0.034736305,0.033637084,0.030754102,0.031082017,0.030499963 -0.030537475,0.027899254,0.029378591,0.0297096,0.031716786,0.02693288,0.03433145,0.033088665,0.02740053,0.02792913,0.030472768,0.028694458,0.03220934,0.029565549,0.032662544,0.027634623,0.03633886,0.030167157,0.033250082,0.03298737,0.033357035,0.029501474,0.026456432,0.027505033,0.030585667,0.023674536,0.03291113,0.028946836,0.028558468,0.035006773,0.030973727,0.02936918,0.03024652 -0.033833686,0.030788528,0.032240216,0.032861616,0.030781893,0.024426019,0.03269575,0.030321872,0.029727243,0.029050065,0.03131785,0.029049996,0.0312546,0.024382828,0.031556305,0.027793216,0.03238788,0.031475447,0.02939823,0.031028157,0.032263253,0.03098234,0.023543414,0.02798694,0.03215333,0.024038076,0.03364459,0.031184737,0.03487223,0.03188977,0.031967424,0.030930823,0.028171666 -0.032235544,0.028513635,0.027943423,0.026533665,0.027607339,0.030138258,0.029216288,0.027271325,0.03264726,0.02924624,0.028209869,0.027331444,0.032256123,0.03174167,0.03372429,0.028924001,0.032310896,0.027531,0.034024764,0.031696826,0.034188505,0.029953811,0.03298522,0.027146649,0.032747537,0.029807689,0.027179489,0.032454353,0.027391035,0.031187288,0.03338235,0.03002738,0.032444846 -0.028649943,0.02983568,0.029618803,0.028534783,0.033335116,0.030336117,0.028125117,0.032931272,0.028101504,0.029766463,0.030861683,0.032960948,0.032717913,0.033539113,0.029642688,0.031016078,0.034416024,0.03157327,0.03229032,0.0310232,0.03154139,0.029931167,0.03196622,0.030088337,0.0260188,0.026400523,0.031526826,0.027428826,0.026188847,0.03198211,0.028969765,0.030762099,0.027919022 +0.02990466,0.027794937,0.030200135,0.033223048,0.028840246,0.029801996,0.03408861,0.031201469,0.034209393,0.030435495,0.02688698,0.028210292,0.027972383,0.026755435,0.028162813,0.028899178,0.034516744,0.031520512,0.022439493,0.029979838,0.029862743,0.030803071,0.026144683,0.030880546,0.033226147,0.02804711,0.033052064,0.03126565,0.034700904,0.03395223,0.03138371,0.03145586,0.030181592 +0.02977129,0.027457537,0.028779993,0.030530233,0.0316698,0.027341226,0.034179598,0.033910844,0.027016249,0.027471438,0.030157587,0.029443314,0.031970903,0.02910385,0.032963887,0.028755877,0.03607527,0.030105237,0.031945523,0.031880952,0.031306166,0.029473325,0.026267372,0.027917987,0.031049537,0.024086313,0.035278693,0.02937533,0.028586993,0.035309106,0.03102215,0.028993413,0.030802958 +0.034256108,0.031212777,0.032661483,0.032562193,0.028868396,0.02445675,0.032526903,0.030098625,0.028534148,0.029497765,0.031607904,0.028765576,0.029720742,0.025040075,0.032955986,0.0282345,0.030974323,0.031867743,0.029543443,0.030924428,0.030652856,0.030405918,0.023620382,0.027121766,0.032386478,0.025952253,0.0347015,0.032217287,0.03453304,0.031794257,0.032801624,0.031243311,0.02825948 +0.032598216,0.029093012,0.028690943,0.026613811,0.028034385,0.029812267,0.029320821,0.027035141,0.033263125,0.02949445,0.028751273,0.027457636,0.032119725,0.030603293,0.0324208,0.028617961,0.03232818,0.02807421,0.03443888,0.03276456,0.033602335,0.030092882,0.032640934,0.027553203,0.03204509,0.028555753,0.027167292,0.032216128,0.028183337,0.03194732,0.033609107,0.029577114,0.03127676 +0.028709698,0.029625166,0.029874118,0.028837366,0.033504315,0.030749444,0.028552493,0.033821665,0.027835265,0.029518366,0.030826217,0.033214457,0.0324431,0.032692183,0.02955219,0.031034948,0.034116004,0.03191638,0.03192628,0.030853745,0.03129503,0.029935427,0.03172751,0.030749017,0.026323091,0.026236577,0.03182046,0.027901417,0.02581471,0.031797033,0.028829262,0.029471148,0.028495917 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv index 08bba466..938c691e 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv @@ -1,5 +1,5 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0347061,0.032037724,0.029720293,0.026950317,0.027587326,0.029580832,0.033706103,0.02672045,0.0336072,0.0304948,0.027389366,0.027341463,0.027687615,0.029654475,0.03191975,0.030349722,0.029564764,0.03208654,0.028236479,0.035157055,0.033096552,0.031182028,0.03215033,0.02952733,0.0320103,0.031021614,0.028249703,0.031084804,0.02777836,0.02990182,0.031047527,0.027308928,0.031142361 -0.026352162,0.027308615,0.026728509,0.030381735,0.027763495,0.031036979,0.029111193,0.031803854,0.033297487,0.032028094,0.026604233,0.028412612,0.03335847,0.028347764,0.031116711,0.031521976,0.037724625,0.027063178,0.02756419,0.02944993,0.029611493,0.030874036,0.026384085,0.027145538,0.033017457,0.03050442,0.027128858,0.030084612,0.03357262,0.03557978,0.029888283,0.03474908,0.034483936 -0.031161968,0.030985577,0.028069872,0.029070867,0.02766797,0.031849217,0.028295552,0.029846,0.028211916,0.028096769,0.031157041,0.028553555,0.030611211,0.031491056,0.03540855,0.033342153,0.027244546,0.03506385,0.028400969,0.032600712,0.029665994,0.034185328,0.029610706,0.030778438,0.03282092,0.032744713,0.02873029,0.032103863,0.02512524,0.028251864,0.02723303,0.028246962,0.033373386 -0.025955163,0.027249493,0.029127032,0.030652158,0.03015496,0.03147695,0.028033996,0.034602076,0.030288333,0.029120373,0.028158711,0.029552525,0.03452732,0.030882543,0.02711481,0.029857256,0.03783241,0.03359149,0.025146987,0.029117852,0.029665263,0.028882185,0.026112327,0.028500061,0.030931538,0.02985717,0.031220669,0.028128866,0.03408741,0.03489066,0.02980184,0.03413182,0.03134773 +0.034894887,0.032275356,0.02996399,0.026949542,0.027929796,0.029617915,0.033669554,0.026341518,0.034484576,0.030552784,0.027683964,0.026792545,0.027649531,0.029394316,0.030769546,0.030085139,0.029768215,0.032148227,0.028801225,0.035756513,0.03274599,0.032206167,0.032878507,0.029650897,0.03140312,0.03026901,0.027987143,0.03128506,0.027762262,0.029794872,0.030969823,0.026882874,0.03063518 +0.026114888,0.027567258,0.027771655,0.029752698,0.02820829,0.031714298,0.030308545,0.031291846,0.033901554,0.032065872,0.02763642,0.027419902,0.033871558,0.028658088,0.0289209,0.030442988,0.03671656,0.027796298,0.028483596,0.030759042,0.029196337,0.031400263,0.026616627,0.028743278,0.032370545,0.030774299,0.02558757,0.029802978,0.033976573,0.03539298,0.028634975,0.033863362,0.034237936 +0.03136811,0.032610927,0.028663022,0.02766169,0.027849054,0.030900279,0.029014288,0.029312909,0.027264105,0.027272008,0.032112505,0.028268036,0.032192186,0.031883806,0.034192175,0.032434538,0.027403167,0.03600785,0.030057115,0.03440504,0.029654121,0.03388859,0.032026663,0.030806169,0.030339846,0.032073505,0.028873272,0.03086741,0.025530437,0.02776002,0.026841227,0.027687589,0.032778434 +0.026323346,0.02814542,0.029942133,0.029598957,0.030931026,0.030908601,0.028679792,0.033140037,0.031168977,0.028879615,0.028810753,0.029077675,0.03557963,0.030610638,0.02624658,0.029175146,0.03712324,0.034798477,0.025707724,0.029618949,0.030265389,0.029436663,0.026252486,0.029421646,0.030187503,0.029937852,0.03027628,0.027772948,0.03426053,0.033577643,0.02875072,0.033727318,0.031666294 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index 11f16da0..3c45b01b 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.031412095,0.029059455,0.028553972,0.032031063,0.03308489,0.036242105,0.030798635,0.031423856,0.029171485,0.033814613,0.03109685,0.027981894,0.031494338,0.028169379,0.03019742,0.03245603,0.031989317,0.03025197,0.027243363,0.028524006,0.030921329,0.026887607,0.033563793,0.028870368,0.032369044,0.030635152,0.025346385,0.0325448,0.03363609,0.029415186,0.025767326,0.027363604,0.027682606 +0.031594455,0.029204236,0.028718323,0.032224495,0.03337781,0.035745747,0.030596118,0.03137629,0.029209606,0.03408813,0.031277202,0.027920168,0.03155741,0.028168924,0.030145012,0.03245209,0.031797096,0.030348834,0.027226841,0.02847952,0.03093982,0.026849763,0.033478472,0.028779963,0.031998247,0.030514607,0.025465587,0.0325864,0.033844102,0.029311249,0.025630878,0.027453667,0.027638951 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index 76fb6eb8..84d81025 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02718314,0.030715112,0.031837214,0.035137605,0.030595766,0.03317532,0.031649627,0.029798042,0.03140365,0.031467617,0.03369167,0.027727356,0.028963719,0.027858147,0.025119768,0.030851895,0.03187139,0.03497891,0.02884058,0.031090252,0.028769664,0.028061062,0.032640804,0.026473435,0.030201206,0.02919215,0.031749595,0.031676207,0.03188455,0.02838132,0.029804083,0.0268488,0.030360317 +0.027228992,0.030756999,0.031926684,0.03520301,0.030777134,0.032955393,0.03167837,0.029797489,0.031220395,0.03152831,0.033776756,0.027809406,0.028926183,0.027881108,0.025017528,0.031061377,0.031814765,0.03505755,0.0288942,0.03108295,0.028965265,0.028036237,0.032550003,0.026335774,0.030168375,0.029126244,0.031778075,0.03171285,0.031987205,0.028292153,0.029634615,0.026793996,0.030224688 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index f277d42b..0aaba66d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027903663,0.031013355,0.030396728,0.034959204,0.031085547,0.03232213,0.031048927,0.030432688,0.031227158,0.03177365,0.03364062,0.027822366,0.027917664,0.027073784,0.025336333,0.031431273,0.032738667,0.034493793,0.029069608,0.031952385,0.029592805,0.028263152,0.032590456,0.026255373,0.0297492,0.029384159,0.0307498,0.031711757,0.033399194,0.028632063,0.028912678,0.02644551,0.030674366 +0.027887529,0.031016335,0.030412342,0.03501881,0.03126559,0.032115854,0.03112963,0.0304681,0.031105764,0.031803418,0.0336682,0.02792235,0.027942816,0.02709955,0.025281327,0.031618994,0.032682337,0.034516595,0.029082842,0.03194304,0.029754547,0.02831144,0.032550737,0.026138999,0.029740384,0.029294712,0.030734966,0.031810347,0.033461045,0.028520357,0.028774502,0.026385749,0.03054078 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index 1fd43647..9c566baf 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.032669287,0.02876315,0.030224655,0.027241936,0.029947326,0.031176692,0.029444885,0.029328013,0.028524838,0.03066203,0.027863681,0.03166694,0.034933478,0.032277443,0.03640189,0.029949818,0.028301675,0.026075223,0.029140284,0.027568853,0.0323754,0.03053253,0.029847682,0.033827864,0.032350555,0.0302727,0.027539514,0.029550968,0.028082011,0.03102456,0.030212617,0.03395407,0.028267471 -0.03143606,0.028259205,0.03223914,0.027423099,0.029374318,0.030516151,0.029467668,0.028255668,0.028395286,0.030080462,0.028519074,0.031538118,0.034919344,0.03331209,0.034968793,0.029315263,0.027845407,0.02649866,0.030031862,0.027775807,0.032202866,0.030588228,0.028885216,0.033773314,0.03254831,0.030060904,0.03000054,0.02907594,0.026533103,0.030174984,0.03166629,0.035144202,0.029174669 +0.032903668,0.028901948,0.030422168,0.02729401,0.029996833,0.031081805,0.029144669,0.029184328,0.028582947,0.030838203,0.02802886,0.03143278,0.0348301,0.03218194,0.036367875,0.029662728,0.028250722,0.026152506,0.029222546,0.027613314,0.03228014,0.03035405,0.029751362,0.03398891,0.032090932,0.030233484,0.027714087,0.029350067,0.028187223,0.031162726,0.03029153,0.03414756,0.02835399 +0.031707615,0.028367328,0.03251506,0.02744744,0.029457696,0.030506311,0.029133363,0.028074272,0.028364692,0.03026175,0.028753564,0.031309176,0.034676917,0.033179097,0.034860846,0.029045649,0.02786958,0.026573405,0.030232163,0.027840735,0.032212436,0.03031208,0.028782444,0.03392059,0.0323571,0.030005956,0.030180851,0.028813053,0.02663781,0.030342521,0.03171807,0.035299603,0.029240826 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 9c79cfda..c967ac22 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.027990196,0.031357266,0.032083645,0.035231497,0.030950967,0.03400702,0.031629156,0.029572189,0.031043753,0.03288654,0.03334564,0.027693558,0.030571442,0.027530046,0.027211161,0.030589903,0.030670388,0.03259379,0.02737541,0.03036181,0.0295517,0.027888844,0.034106847,0.02740788,0.030691696,0.027825894,0.02871136,0.031667218,0.032172386,0.02943597,0.029995803,0.02745374,0.028395284 +0.028136749,0.03145643,0.032249775,0.035381794,0.031226981,0.033643033,0.031521108,0.02954274,0.030872017,0.033072893,0.033556398,0.027660204,0.030459512,0.027515223,0.027106846,0.030692818,0.030569497,0.032710854,0.027416352,0.030361334,0.029780567,0.027815046,0.033936046,0.027293991,0.03050649,0.027694564,0.028838307,0.03159304,0.03238606,0.02936506,0.029868718,0.027438898,0.028330646 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index b0bcf281..9a40a897 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.0324019,0.026557397,0.03567093,0.028395623,0.03214945,0.030262461,0.029736726,0.02918344,0.02924375,0.031181242,0.030299323,0.031787664,0.031068454,0.03598506,0.03070766,0.028389841,0.028155206,0.027619353,0.033341076,0.028269062,0.029442511,0.028486561,0.028317692,0.032146245,0.031487968,0.02932897,0.03275529,0.028782543,0.025840137,0.02867312,0.032408092,0.031715825,0.030209484 -0.03502903,0.026921587,0.029170362,0.02918356,0.03458919,0.03605911,0.029871225,0.03156951,0.027554981,0.033587333,0.03044571,0.029222019,0.030610982,0.032198284,0.030960076,0.033182647,0.031899124,0.029759252,0.028811408,0.026992684,0.030438298,0.025892453,0.03120597,0.0292835,0.03345653,0.031768657,0.026362149,0.032247383,0.03288019,0.027643709,0.025063304,0.027542502,0.028597245 +0.032555487,0.026670558,0.035933323,0.028395625,0.032177225,0.030180544,0.029458955,0.029028589,0.029231155,0.03132255,0.030461755,0.031708784,0.03087897,0.035742663,0.030636476,0.028290126,0.02821839,0.027709417,0.033597182,0.028345522,0.02946698,0.028262552,0.028240243,0.032148767,0.031331882,0.029351693,0.032904956,0.028570952,0.025903815,0.028767973,0.032443482,0.031798936,0.03026446 +0.035266466,0.027003983,0.029438915,0.029231507,0.03491313,0.035511877,0.029532434,0.031505685,0.027652096,0.033847447,0.0306067,0.029304575,0.030613605,0.03229601,0.030978212,0.0330794,0.03178621,0.02973907,0.02895497,0.02695284,0.03035813,0.025822245,0.03114871,0.029226782,0.033070102,0.03168039,0.026520967,0.032253344,0.032956786,0.027481772,0.024973137,0.027664494,0.02862798 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index cb27b45f..9fc8ce15 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.02995065,0.026482854,0.036322676,0.030786272,0.030653637,0.030291405,0.02871537,0.027630482,0.028931543,0.031819902,0.03167783,0.030811392,0.033273786,0.03227268,0.031228758,0.028594691,0.030216627,0.026278855,0.031208765,0.02872123,0.031650018,0.029130049,0.030444073,0.030609695,0.03161625,0.028118087,0.032231912,0.029491147,0.025260435,0.02785982,0.03239316,0.0353287,0.029997202 +0.030240778,0.026598437,0.036707304,0.030852366,0.030847387,0.030217325,0.028302671,0.027445653,0.028811673,0.03210606,0.032096457,0.030536423,0.032865256,0.031971786,0.031098066,0.028391903,0.030326098,0.026407817,0.031497795,0.028856413,0.031845562,0.02874827,0.030271817,0.030664615,0.031373702,0.028012546,0.032444347,0.029172558,0.025456056,0.028003585,0.032420244,0.035377927,0.030031078 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index 006a90b1..d3fd32e1 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129 -0.031105757,0.031319205,0.025952792,0.03074406,0.03020676,0.03298403,0.029882036,0.031156622,0.029681066,0.031637415,0.029420717,0.029296836,0.032249913,0.026572065,0.0334537,0.03261439,0.03169759,0.029466227,0.026537174,0.029645033,0.032349445,0.030258182,0.032920852,0.029934868,0.031194655,0.030517844,0.025205344,0.031641852,0.03456159,0.0313981,0.027084364,0.029406648,0.027902825 +0.03120083,0.03140158,0.02597218,0.030870566,0.030339655,0.032766707,0.029818222,0.031150384,0.029739713,0.03175302,0.029487183,0.029177235,0.032368988,0.026637957,0.03345298,0.032503065,0.031507123,0.029519858,0.026424674,0.029624622,0.03226006,0.030312635,0.032872517,0.02997535,0.030994944,0.030409798,0.02527944,0.03171313,0.034694858,0.031350695,0.027044604,0.02949311,0.02788231 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv index a462c215..bc5e64b0 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07371652,0.08747254,0.07478085,0.066930644,0.07320184,0.068280794,0.08230257,0.08293058,0.07530409,0.0836406,0.07084773,0.0773642,0.083227016 +0.074083805,0.087974995,0.075273834,0.06646733,0.07345789,0.06847239,0.0818435,0.08279163,0.07455243,0.08277229,0.07101856,0.07774641,0.08354494 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv index 1ffe1910..b27b3ac2 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.0846475,0.07865937,0.0813897,0.06975984,0.08057894,0.07018437,0.076035455,0.068347126,0.07994533,0.07798379,0.07339249,0.07953821,0.079537906 +0.084869295,0.07880388,0.08157886,0.06951565,0.08075639,0.07072125,0.0760694,0.068276174,0.07958265,0.07747237,0.073025174,0.07977048,0.07955835 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv index b9913b9f..83d9348d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.083180524,0.07846569,0.0812608,0.07024677,0.07927988,0.06894813,0.075323164,0.06711979,0.07884185,0.08134555,0.07181041,0.081516474,0.08266096 +0.083191805,0.0784117,0.08124768,0.07007233,0.07956042,0.06936452,0.07542335,0.067135476,0.07857058,0.08090579,0.071468234,0.081839085,0.08280907 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv index 0ef1760e..6d556ab8 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.06989463,0.07989096,0.07249861,0.08051619,0.07235672,0.081912465,0.08144418,0.08826559,0.074629635,0.07509785,0.079737626,0.071991235,0.07176424 -0.07401593,0.07802295,0.075928785,0.082235724,0.0748795,0.0842309,0.08068106,0.08477475,0.07419375,0.07135396,0.082080215,0.06978505,0.067817405 +0.07036531,0.08049916,0.07311549,0.080371074,0.07224095,0.081713885,0.080874875,0.08775907,0.07437307,0.07501077,0.080234654,0.071844436,0.07159725 +0.07462252,0.07882556,0.076731205,0.08212352,0.0746616,0.08412205,0.08021181,0.08402447,0.07401236,0.071274504,0.08248981,0.069406666,0.067493975 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv index 30d5cd15..7894c70f 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07915403,0.08103098,0.07856794,0.06742558,0.07797891,0.068986446,0.07662418,0.0694121,0.0813124,0.08137604,0.07515498,0.081329875,0.08164642 +0.07968078,0.08148541,0.07910197,0.06712172,0.07808477,0.06944092,0.076500565,0.069036186,0.0806076,0.080700286,0.075026445,0.08142645,0.081786945 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv index 6911d301..f8bde07a 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv @@ -1,3 +1,3 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07836008,0.07883829,0.08306367,0.078179605,0.080974005,0.08502495,0.078466825,0.080645144,0.07336398,0.06484835,0.08606815,0.06423272,0.06793416 -0.0754353,0.091055885,0.07524671,0.07041598,0.07320034,0.07423061,0.087269105,0.0889919,0.069685824,0.073581785,0.071758285,0.069817245,0.07931107 +0.07887929,0.07922841,0.0837173,0.07808471,0.08080305,0.08518249,0.0778711,0.080227315,0.073275805,0.06477759,0.08631688,0.063998096,0.067637995 +0.075657144,0.091537185,0.07574736,0.070048064,0.07345481,0.07445074,0.086469546,0.08901579,0.06910504,0.07258692,0.07215753,0.07019448,0.079575315 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv index aec1ea17..15fe6887 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.07717769,0.07774059,0.083538964,0.08017507,0.07791889,0.08045961,0.07922038,0.07712727,0.07463028,0.07106932,0.08220443,0.07093723,0.06780032 +0.07799491,0.078715876,0.08464348,0.07995696,0.07754624,0.08058426,0.07884206,0.075935386,0.074297816,0.07091199,0.08250889,0.070520476,0.067541696 diff --git a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv index 6558c6eb..59e7177d 100644 --- a/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv +++ b/tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv @@ -1,2 +1,2 @@ [unknown],[other],[mask],0,1,2,3,4,5,6,7,8,9 -0.06911243,0.081835695,0.06873813,0.0740041,0.06911324,0.06964999,0.080704,0.081733346,0.0777465,0.08935496,0.06924195,0.084877074,0.08388858 +0.069228604,0.08208278,0.06885877,0.0737444,0.06933344,0.069567144,0.08054654,0.081645325,0.077265635,0.08891717,0.06935114,0.08529186,0.08416724 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py index baa87136..6be5d40e 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py @@ -224,7 +224,7 @@ def test_distributed_sharding(mock_ws, mock_rank, mock_init, mock_config, datase def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): - """FSDP exact mode rejects uneven ranks.""" + """Exact distributed mode rejects uneven ranks.""" data_dir = tmp_path / "uneven_parquet_data" data_dir.mkdir() diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py index 992bcf74..6f3c8c98 100644 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py @@ -208,11 +208,24 @@ def test_distributed_sharding( @patch("sequifier.io.sequifier_dataset_from_folder_pt_lazy.get_worker_info") def test_dataloader_worker_sharding_continuous_boundaries( - mock_worker_info, mock_config, dataset_path, mock_torch_load + mock_worker_info, mock_config, tmp_path ): - """Worker file boundaries for continuous streaming.""" + """Worker boundaries can start and stop inside PT files.""" + data_dir = tmp_path / "data_uneven_worker" + data_dir.mkdir() + file_specs = [ + ("file1.pt", 7, 0), + ("file2.pt", 11, 100), + ("file3.pt", 13, 200), + ("file4.pt", 9, 300), + ] + metadata = _folder_metadata( + sum(samples for _, samples, _ in file_specs), + [{"path": path, "samples": samples} for path, samples, _ in file_specs], + ) + with open(data_dir / "metadata.json", "w") as f: + json.dump(metadata, f) - # Simulate being DataLoader worker ID 1 out of 2 total workers mock_info = MagicMock() mock_info.id = 1 mock_info.num_workers = 2 @@ -220,22 +233,63 @@ def test_dataloader_worker_sharding_continuous_boundaries( mock_config.training_spec.num_workers = 2 - dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config, shuffle=False) + file_offsets = {path: (samples, offset) for path, samples, offset in file_specs} - # Consume the generator for THIS specific worker - batches = list(dataset) + def load_uneven_file(path, map_location, weights_only): + file_name = path.split("/")[-1] + samples, offset = file_offsets[file_name] + values = torch.arange(offset, offset + samples * STORED_WIDTH).reshape( + samples, STORED_WIDTH + ) + return ( + {"col1": values, "tgt1": values.clone()}, + None, + None, + None, + torch.zeros(samples, dtype=torch.int64), + ) + + with patch("torch.load", side_effect=load_uneven_file) as mock_load: + dataset = SequifierDatasetFromFolderPtLazy( + str(data_dir), mock_config, shuffle=False + ) + batches = list(dataset) - # NEW LOGIC: Total samples = 40. - # Worker 0 boundary: samples 0 to 20 (overlaps file1.pt, file2.pt) - # Worker 1 boundary: samples 20 to 40 (overlaps file3.pt, file4.pt) - # Since we are testing Worker 1, it should yield 20 samples -> 4 batches assert len(batches) == 4 - assert mock_torch_load.call_count == 2 + assert mock_load.call_count == 2 - loaded_files = [call.args[0] for call in mock_torch_load.call_args_list] + loaded_files = [call.args[0] for call in mock_load.call_args_list] assert any("file3.pt" in f for f in loaded_files) assert any("file4.pt" in f for f in loaded_files) assert not any("file1.pt" in f for f in loaded_files) + assert not any("file2.pt" in f for f in loaded_files) + + sample_ids = [] + for batch in batches: + sample_ids.extend(batch.inputs["col1"][:, 0].tolist()) + + assert sample_ids == [ + 200 + 2 * STORED_WIDTH, + 200 + 3 * STORED_WIDTH, + 200 + 4 * STORED_WIDTH, + 200 + 5 * STORED_WIDTH, + 200 + 6 * STORED_WIDTH, + 200 + 7 * STORED_WIDTH, + 200 + 8 * STORED_WIDTH, + 200 + 9 * STORED_WIDTH, + 200 + 10 * STORED_WIDTH, + 200 + 11 * STORED_WIDTH, + 200 + 12 * STORED_WIDTH, + 300, + 300 + STORED_WIDTH, + 300 + 2 * STORED_WIDTH, + 300 + 3 * STORED_WIDTH, + 300 + 4 * STORED_WIDTH, + 300 + 5 * STORED_WIDTH, + 300 + 6 * STORED_WIDTH, + 300 + 7 * STORED_WIDTH, + 300 + 8 * STORED_WIDTH, + ] @patch("torch.distributed.is_initialized", return_value=True) diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py index 2c9d8c78..b3d836ba 100644 --- a/tests/unit/test_infer.py +++ b/tests/unit/test_infer.py @@ -74,7 +74,7 @@ def test_sample_with_cumsum(mock_rand): sampled_from_log_probs = sample_with_cumsum(log_probs, is_log_probs=True) np.testing.assert_array_equal(sampled_from_log_probs, [0, 1]) - # Path 2: Test with logits=False (pre-normalized probabilities) + # Path 2: Test with is_log_probs=False (pre-normalized probabilities) pure_probs = np.array([[0.1, 0.9], [0.8, 0.2]]) sampled_from_probs = sample_with_cumsum(pure_probs, is_log_probs=False) np.testing.assert_array_equal(sampled_from_probs, [0, 1]) @@ -433,9 +433,10 @@ def test_calculate_item_positions_causal_uses_future_window_tail(): np.testing.assert_array_equal(positions, [13, 14, 23, 24]) -def _bert_inference_config(tmp_path, model_type="generative"): +def _bert_inference_config(tmp_path, model_type="generative", input_columns=None): data_path = tmp_path / "data.parquet" data_path.touch() + input_columns = input_columns or ["target_col"] return InfererModel( project_root=str(tmp_path), @@ -444,11 +445,11 @@ def _bert_inference_config(tmp_path, model_type="generative"): model_type=model_type, training_objective="bert", data_path=str(data_path), - input_columns=["target_col"], - categorical_columns=["target_col"], + input_columns=input_columns, + categorical_columns=input_columns, real_columns=[], target_columns=["target_col"], - column_types={"target_col": "int64"}, + column_types={col: "int64" for col in input_columns}, target_column_types={"target_col": "categorical"}, seed=42, device="cpu", @@ -485,15 +486,15 @@ def _bert_preprocessed_frame(): def _bert_preprocessed_frame_out_of_order(): return pl.DataFrame( { - "sequenceId": [2, 1], - "subsequenceId": [0, 0], - "startItemPosition": [200, 100], - "leftPadLength": [1, 2], - "inputCol": ["target_col", "target_col"], - "3": [0, 0], - "2": [3, 0], - "1": [4, 3], - "0": [3, 4], + "sequenceId": [2, 2, 1, 1], + "subsequenceId": [0, 0, 0, 0], + "startItemPosition": [200, 200, 100, 100], + "leftPadLength": [1, 1, 2, 2], + "inputCol": ["aux_col", "target_col", "aux_col", "target_col"], + "3": [9, 0, 8, 0], + "2": [9, 3, 8, 0], + "1": [9, 4, 8, 3], + "0": [9, 3, 8, 4], } ) @@ -563,7 +564,7 @@ def capture_write(dataframe, path, write_format): def test_bert_generative_inference_uses_dataframe_order_for_padding_masks(tmp_path): - config = _bert_inference_config(tmp_path) + config = _bert_inference_config(tmp_path, input_columns=["aux_col", "target_col"]) data = _bert_preprocessed_frame_out_of_order() written = [] @@ -580,7 +581,11 @@ def capture_write(dataframe, path, write_format): "sequifier.infer.get_probs_preds_from_df", return_value=(None, preds) ), patch("sequifier.infer.write_data", side_effect=capture_write): infer_generative( - config, inferer, "bert-model", [data], {"target_col": torch.int64} + config, + inferer, + "bert-model", + [data], + {"target_col": torch.int64, "aux_col": torch.int64}, ) predictions = next(frame for path, frame, _ in written if "predictions" in path) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py index 837337ff..954076b7 100644 --- a/tests/unit/test_train.py +++ b/tests/unit/test_train.py @@ -240,6 +240,28 @@ def _loss_shell_model( return model +class _IdentityScaler: + def scale(self, loss): + return loss + + def unscale_(self, optimizer): + return None + + def step(self, optimizer): + optimizer.step() + + def update(self): + return None + + +class _NoopLogger: + def info(self, *args, **kwargs): + return None + + def warning(self, *args, **kwargs): + return None + + def test_transformer_model_initialization(model, model_config): """Expected model layers.""" # Check if encoder dicts were created @@ -357,7 +379,6 @@ def test_load_train_config_defaults_missing_metadata_special_token_ids( "column_types": config_values["column_types"], "n_classes": config_values["n_classes"], "id_maps": config_values["id_maps"], - "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, } ) ) @@ -855,25 +876,36 @@ def test_training_loss_enables_fsdp_token_weighting( model.hparams = SimpleNamespace( training_spec=SimpleNamespace(data_parallelism="FSDP") ) - output = {"real_col": torch.zeros(1, 1, 1)} + output = {"real_col": torch.zeros(1, 1, 1, requires_grad=True)} targets = {"real_col": torch.ones(1, 1)} metadata = {"target_valid_mask": torch.ones(1, 1, dtype=torch.bool)} + process_group = object() + model._data_parallel_process_group = lambda: process_group monkeypatch.setattr("sequifier.train.dist.is_available", lambda: True) monkeypatch.setattr("sequifier.train.dist.is_initialized", lambda: True) - monkeypatch.setattr( - "sequifier.train.dist.get_world_size", - lambda group=None: 2, - ) + + def fake_get_world_size(group=None): + assert group is process_group + return 2 + + monkeypatch.setattr("sequifier.train.dist.get_world_size", fake_get_world_size) + + reduce_calls = [] def fake_all_reduce(tensor, op=None, group=None): - tensor.fill_(2) + reduce_calls.append((tensor.detach().clone(), op, group)) + tensor.fill_(4) monkeypatch.setattr("sequifier.train.dist.all_reduce", fake_all_reduce) loss, _ = TransformerModel._calculate_loss(model, output, targets, metadata) + loss.backward() - assert torch.isclose(loss, torch.tensor(1.0)) + assert reduce_calls + assert reduce_calls[0][2] is process_group + assert torch.isclose(loss, torch.tensor(0.5)) + assert torch.allclose(output["real_col"].grad, torch.tensor([[[-1.0]]])) def test_evaluation_loss_mask_intersects_target_bert_and_sample_masks(): @@ -1322,6 +1354,71 @@ def test_train_epoch_steps_once_for_mixed_empty_and_nonempty_accumulation_window assert model.scheduler.get_last_lr()[0] == pytest.approx(0.001) +def test_train_epoch_divides_backward_loss_by_accumulation_steps(model, monkeypatch): + model.rank = 0 + model.log_interval = 100 + model.accumulation_steps = 2 + model.scheduler_step_on = "batch" + model.start_batch = 0 + model.scaler = _IdentityScaler() + model.logger = _NoopLogger() + model.save_latest_interval_minutes = None + model.save_batch_interval_minutes = None + model.save_batch_interval_minutes_val_loss = False + model.last_latest_save_time = 0.0 + model.last_batch_save_time = 0.0 + tracked_param = next(model.parameters()) + tracked_value_before = tracked_param.detach().reshape(-1)[0].clone() + model.optimizer = torch.optim.SGD([tracked_param], lr=0.1) + model.scheduler = torch.optim.lr_scheduler.StepLR( + model.optimizer, + step_size=1, + gamma=0.1, + ) + coefficients = iter([0.2, 0.4]) + + def fake_forward(data, metadata=None, return_logits=True): + return {} + + def fake_calculate_training_loss(output, targets, metadata): + coefficient = next(coefficients) + loss = tracked_param.reshape(-1)[0] * coefficient + loss_sums = { + target_name: loss.detach() + for target_name in model._loss_target_names(targets) + } + count = torch.tensor(1, dtype=torch.int64) + return loss, {}, loss_sums, count, count + + monkeypatch.setattr(model, "forward", fake_forward) + monkeypatch.setattr( + model, + "_calculate_training_loss", + fake_calculate_training_loss, + ) + + seq_len = model.window_view.context_length + batch = _train_epoch_test_batch( + model, + torch.ones(1, seq_len, dtype=torch.bool), + ) + + TransformerModel._train_epoch( + model, + DataLoader([batch, batch], batch_size=None), + DataLoader([], batch_size=None), + epoch=1, + ) + + tracked_value_after = tracked_param.detach().reshape(-1)[0] + + assert torch.allclose( + tracked_value_after, + tracked_value_before - torch.tensor(0.03), + atol=1e-6, + ) + + def test_padding_keys_are_masked(bert_model): seq_len = bert_model.window_view.context_length diff --git a/tests/unit/test_train_distributed_loss.py b/tests/unit/test_train_distributed_loss.py index 99c06f0d..0e94cf0f 100644 --- a/tests/unit/test_train_distributed_loss.py +++ b/tests/unit/test_train_distributed_loss.py @@ -169,7 +169,7 @@ def _single_process_real_update(seq_lens, selected_counts, target_values, lr): return model.param.detach().clone() -def _single_process_accumulated_real_update(microbatches, lr): +def _single_process_accumulated_real_update(microbatches, lr, accumulation_steps): model = _TinyRealModel() optimizer = torch.optim.SGD(model.parameters(), lr=lr) shell = _loss_shell({"real_col": "real"}) @@ -185,12 +185,29 @@ def _single_process_accumulated_real_update(microbatches, lr): targets, metadata, ) - loss.backward() + (loss / accumulation_steps).backward() optimizer.step() return model.param.detach().clone() -def _analytical_accumulated_real_update(microbatches, lr): +def _analytical_accumulated_real_update(microbatches, lr, accumulation_steps): + accumulated_grad = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + token_count = selected_counts.sum().item() + if token_count == 0: + continue + + weighted_target_mean = ( + selected_counts * target_values + ).sum().item() / token_count + accumulated_grad += -2.0 * weighted_target_mean / accumulation_steps + + return torch.tensor(-lr * accumulated_grad) + + +def _analytical_unnormalized_accumulated_real_update(microbatches, lr): accumulated_grad = 0.0 for microbatch in microbatches: selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) @@ -367,7 +384,7 @@ def put_result(tensor): metadata, ) ) - loss.backward() + (loss / case["accumulation_steps"]).backward() accumulated_global_token_count += global_count.detach() optimizer_step_due = (batch_idx + 1) % case[ "accumulation_steps" @@ -415,7 +432,7 @@ def put_result(tensor): targets, metadata, ) - loss.backward() + (loss / case["accumulation_steps"]).backward() optimizer.step() if rank == 0: put_result(model.param) @@ -527,8 +544,8 @@ def _run_ddp_case(case): pytestmark = pytest.mark.skipif( - not dist.is_available(), - reason="torch.distributed is not available", + not dist.is_gloo_available(), + reason="torch.is_gloo_available is False", ) @@ -688,7 +705,7 @@ def test_ddp_train_epoch_globally_empty_accumulation_window_leaves_state_unchang assert optimizer_state_len == 0 -def test_ddp_gradient_accumulation_preserves_per_microbatch_weighting(): +def test_ddp_gradient_accumulation_averages_per_microbatch_weighting(): microbatches = [ { "seq_lens": [1, 1], @@ -704,14 +721,21 @@ def test_ddp_gradient_accumulation_preserves_per_microbatch_weighting(): case = { "kind": "accumulation_update", "microbatches": microbatches, + "accumulation_steps": 2, "lr": 0.05, } ddp_param = _run_ddp_case(case) - reference_param = _analytical_accumulated_real_update(microbatches, case["lr"]) + reference_param = _analytical_accumulated_real_update( + microbatches, case["lr"], case["accumulation_steps"] + ) + unnormalized_param = _analytical_unnormalized_accumulated_real_update( + microbatches, case["lr"] + ) combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) assert torch.allclose(ddp_param, reference_param, atol=1e-6) + assert not torch.allclose(ddp_param, unnormalized_param, atol=1e-3) assert not torch.allclose(ddp_param, combined_batch_param, atol=1e-3) diff --git a/tests/unit/test_train_fsdp_loss.py b/tests/unit/test_train_fsdp_loss.py index dbdd09cc..5c092d68 100644 --- a/tests/unit/test_train_fsdp_loss.py +++ b/tests/unit/test_train_fsdp_loss.py @@ -174,7 +174,7 @@ def _single_process_real_update(seq_lens, selected_counts, target_values, lr): return model.param.detach().clone() -def _single_process_accumulated_real_update(microbatches, lr): +def _single_process_accumulated_real_update(microbatches, lr, accumulation_steps): model = _TinyRealModel() optimizer = torch.optim.SGD(model.parameters(), lr=lr) shell = _loss_shell({"real_col": "real"}, device="cpu") @@ -190,12 +190,29 @@ def _single_process_accumulated_real_update(microbatches, lr): targets, metadata, ) - loss.backward() + (loss / accumulation_steps).backward() optimizer.step() return model.param.detach().clone() -def _analytical_accumulated_real_update(microbatches, lr): +def _analytical_accumulated_real_update(microbatches, lr, accumulation_steps): + accumulated_grad = 0.0 + for microbatch in microbatches: + selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) + target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) + token_count = selected_counts.sum().item() + if token_count == 0: + continue + + weighted_target_mean = ( + selected_counts * target_values + ).sum().item() / token_count + accumulated_grad += -2.0 * weighted_target_mean / accumulation_steps + + return torch.tensor([-lr * accumulated_grad, 0.0]) + + +def _analytical_unnormalized_accumulated_real_update(microbatches, lr): accumulated_grad = 0.0 for microbatch in microbatches: selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) @@ -403,7 +420,7 @@ def _fsdp_case_worker(rank, world_size, init_method, case, queue): metadata, ) ) - loss.backward() + (loss / case["accumulation_steps"]).backward() accumulated_global_token_count += global_count.detach() optimizer_step_due = (batch_idx + 1) % case[ "accumulation_steps" @@ -455,7 +472,7 @@ def _fsdp_case_worker(rank, world_size, init_method, case, queue): targets, metadata, ) - loss.backward() + (loss / case["accumulation_steps"]).backward() else: seq_len = case["seq_lens"][rank] targets, metadata = _real_batch( @@ -647,7 +664,7 @@ def test_fsdp_world_size_two_optimizer_update_matches_single_process_reference() assert torch.allclose(fsdp_param, reference_param, atol=1e-5) -def test_fsdp_gradient_accumulation_preserves_per_microbatch_weighting(): +def test_fsdp_gradient_accumulation_averages_per_microbatch_weighting(): microbatches = [ { "seq_lens": [1, 1], @@ -663,14 +680,21 @@ def test_fsdp_gradient_accumulation_preserves_per_microbatch_weighting(): case = { "kind": "accumulation_update", "microbatches": microbatches, + "accumulation_steps": 2, "lr": 0.05, } fsdp_param = _run_fsdp_case(case) - reference_param = _analytical_accumulated_real_update(microbatches, case["lr"]) + reference_param = _analytical_accumulated_real_update( + microbatches, case["lr"], case["accumulation_steps"] + ) + unnormalized_param = _analytical_unnormalized_accumulated_real_update( + microbatches, case["lr"] + ) combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) assert torch.allclose(fsdp_param, reference_param, atol=1e-5) + assert not torch.allclose(fsdp_param, unnormalized_param, atol=1e-3) assert not torch.allclose(fsdp_param, combined_batch_param, atol=1e-3) From d61a1b7409479a570453c14179ac2c53fa64e93b Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 16 Jun 2026 13:07:23 +0200 Subject: [PATCH 65/81] Make preprocessing resumption more efficient --- src/sequifier/preprocess.py | 57 ++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index cd5bd024..c2556d03 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -1261,6 +1261,31 @@ def _check_file_has_been_processed( return False +@beartype +def _get_processed_prefixes( + project_root: str, + target_dir: str, + write_format: str, +) -> set[str]: + temp_dir = Path(project_root) / "data" / target_dir + + if not temp_dir.is_dir(): + return set() + + suffix = f".{write_format}" + processed = set() + + with os.scandir(temp_dir) as entries: + for entry in entries: + if not entry.is_file() or not entry.name.endswith(suffix): + continue + + if "-split" in entry.name: + processed.add(entry.name.rsplit("-split", 1)[0]) + + return processed + + @beartype def _process_batches_multiple_files_inner( project_root: str, @@ -1290,6 +1315,12 @@ def _process_batches_multiple_files_inner( mask_column: Optional[str], ): """Process this worker's file shard.""" + + processed_prefixes = ( + _get_processed_prefixes(project_root, target_dir, write_format) + if continue_preprocessing and not merge_output + else set() + ) n_files = len(file_paths) if n_files <= 0: raise ValueError("No files found to process.") @@ -1307,17 +1338,21 @@ def _process_batches_multiple_files_inner( for path in split_paths ] if continue_preprocessing: - file_has_been_processed = _check_file_has_been_processed( - project_root, - data_name_root, - process_id, - split_ratios, - write_format, - target_dir, - merge_output, - file_index_str, - ) - + file_prefix_str = f"{data_name_root}-{process_id}-{file_index_str}" + + if not merge_output: + file_has_been_processed = file_prefix_str in processed_prefixes + else: + file_has_been_processed = _check_file_has_been_processed( + project_root, + data_name_root, + process_id, + split_ratios, + write_format, + target_dir, + merge_output, + file_index_str, + ) if file_has_been_processed: logger.info(f"Skipping already processed file: {path}") if max_rows is not None: From 3fd2784bc04c099017ff6d009c0fc49e3cbe25a2 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 16 Jun 2026 15:31:23 +0200 Subject: [PATCH 66/81] pyright --- pyrightconfig.json | 3 ++- src/sequifier/train.py | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pyrightconfig.json b/pyrightconfig.json index c31d3b15..2413032c 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,4 +1,5 @@ { "reportMissingImports": false, - "reportMissingModuleSource": false + "reportMissingModuleSource": false, + "useLibraryCodeForTypes": true } diff --git a/src/sequifier/train.py b/src/sequifier/train.py index b0b28bed..3d6123f3 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -21,7 +21,7 @@ from beartype import beartype # noqa: E402 from packaging import version # noqa: E402 from torch import Tensor, nn # noqa: E402 -from torch.amp import GradScaler # noqa: E402 +from torch.amp.grad_scaler import GradScaler # noqa: E402 from torch.distributed.checkpoint.state_dict import ( # noqa: E402 StateDictOptions, get_model_state_dict, @@ -38,9 +38,9 @@ ) else: from torch.distributed._composable.fsdp import ( # noqa: E402 - MixedPrecisionPolicy, - OffloadPolicy, - fully_shard, + MixedPrecisionPolicy, # type: ignore + OffloadPolicy, # type: ignore + fully_shard, # type: ignore ) from torch.distributed.device_mesh import init_device_mesh # noqa: E402 From d7ee14fba8706428b1dcebee000dbcd48e8cd38d Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 16 Jun 2026 15:33:01 +0200 Subject: [PATCH 67/81] move tests --- .../hyperparameter-search-bayesian.yaml | 68 - tests/configs/hyperparameter-search-bert.yaml | 76 - ...arameter-search-custom-eval-inference.yaml | 41 - .../hyperparameter-search-custom-eval.yaml | 92 - tests/configs/hyperparameter-search-grid.yaml | 70 - .../configs/hyperparameter-search-sample.yaml | 86 - ...infer-test-categorical-autoregression.yaml | 25 - ...infer-test-categorical-bert-embedding.yaml | 25 - .../configs/infer-test-categorical-bert.yaml | 25 - .../infer-test-categorical-embedding.yaml | 24 - .../infer-test-categorical-inf-size-1.yaml | 24 - ...test-categorical-inf-size-3-embedding.yaml | 27 - .../infer-test-categorical-inf-size-3.yaml | 27 - .../infer-test-categorical-multitarget.yaml | 26 - tests/configs/infer-test-categorical.yaml | 24 - .../infer-test-distributed-parquet.yaml | 25 - tests/configs/infer-test-distributed.yaml | 23 - tests/configs/infer-test-lazy.yaml | 21 - .../infer-test-real-autoregression.yaml | 26 - tests/configs/infer-test-real.yaml | 21 - .../preprocess-test-categorical-exact-pt.yaml | 15 - .../preprocess-test-categorical-exact.yaml | 15 - ...eprocess-test-categorical-interrupted.yaml | 19 - ...eprocess-test-categorical-lookahead-0.yaml | 19 - ...eprocess-test-categorical-multitarget.yaml | 20 - ...ategorical-precomputed-stats-negative.yaml | 15 - ...ss-test-categorical-precomputed-stats.yaml | 16 - .../configs/preprocess-test-categorical.yaml | 19 - tests/configs/preprocess-test-multi-file.yaml | 21 - tests/configs/preprocess-test-real.yaml | 17 - .../configs/train-test-categorical-bert.yaml | 68 - .../train-test-categorical-inf-size-1.yaml | 61 - .../train-test-categorical-inf-size-3.yaml | 68 - ...in-test-categorical-multitarget-eager.yaml | 78 - .../train-test-categorical-multitarget.yaml | 79 - tests/configs/train-test-categorical.yaml | 60 - .../train-test-distributed-lazy-parquet.yaml | 52 - tests/configs/train-test-distributed.yaml | 52 - tests/configs/train-test-lazy.yaml | 48 - tests/configs/train-test-real-bert.yaml | 68 - tests/configs/train-test-real.yaml | 60 - tests/configs/train-test-resume-epoch.yaml | 59 - .../configs/train-test-resume-mid-epoch.yaml | 61 - tests/integration-test-log.txt | 80 - tests/integration/conftest.py | 926 ---------- .../integration/test_hyperparameter_search.py | 90 - tests/integration/test_identities.py | 83 - tests/integration/test_inference.py | 536 ------ tests/integration/test_make.py | 184 -- tests/integration/test_onnx_export.py | 247 --- tests/integration/test_preprocessing.py | 545 ------ tests/integration/test_training.py | 148 -- tests/integration/test_visualize_training.py | 54 - .../source_configs/id_maps/itemId.json | 1 - .../preprocess-manifest.json | 35 - ...ta-categorical-1-interrupted-split0-0-0.pt | Bin 4166 -> 0 bytes ...ta-categorical-1-interrupted-split0-1-0.pt | Bin 3910 -> 0 bytes ...ta-categorical-1-interrupted-split0-2-0.pt | Bin 3782 -> 0 bytes ...ta-categorical-1-interrupted-split0-3-0.pt | Bin 3910 -> 0 bytes ...ta-categorical-1-interrupted-split1-0-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split1-1-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split1-2-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split1-3-0.pt | Bin 3334 -> 0 bytes ...ta-categorical-1-interrupted-split2-0-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split2-1-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split2-2-0.pt | Bin 3206 -> 0 bytes ...ta-categorical-1-interrupted-split2-3-0.pt | Bin 3334 -> 0 bytes .../test-data-categorical-1-interrupted.csv | 201 --- .../test-data-categorical-1-lookahead-0.csv | 201 --- .../source_data/test-data-categorical-1.csv | 201 --- .../test-data-categorical-3-equal.csv | 161 -- .../test-data-categorical-3-equal.parquet | Bin 4744 -> 0 bytes .../source_data/test-data-categorical-3.csv | 201 --- .../source_data/test-data-categorical-5.csv | 201 --- .../source_data/test-data-categorical-50.csv | 201 --- .../test-data-categorical-mullti-file-1.csv | 245 --- .../test-data-categorical-mullti-file-2.csv | 255 --- .../test-data-categorical-mullti-file-3.csv | 255 --- .../test-data-categorical-multitarget-5.csv | 201 --- ...categorical-precomputed-stats-negative.csv | 201 --- ...est-data-categorical-precomputed-stats.csv | 201 --- ...test-data-real-1-split1-autoregression.csv | 20 - .../source_data/test-data-real-1.csv | 201 --- .../source_data/test-data-real-3.csv | 201 --- .../source_data/test-data-real-5.csv | 201 --- .../source_data/test-data-real-50.csv | 201 --- .../source_scripts/hp_search_eval_script.py | 38 - ...orical-1-best-embedding-3-0-embeddings.csv | 2 - ...orical-1-best-embedding-3-1-embeddings.csv | 2 - ...orical-1-best-embedding-3-2-embeddings.csv | 2 - ...orical-1-best-embedding-3-3-embeddings.csv | 3 - ...orical-1-best-embedding-3-4-embeddings.csv | 2 - ...orical-1-best-embedding-3-5-embeddings.csv | 3 - ...orical-1-best-embedding-3-6-embeddings.csv | 2 - ...orical-1-best-embedding-3-7-embeddings.csv | 2 - ...inf-size-best-embedding-3-0-embeddings.csv | 4 - ...inf-size-best-embedding-3-1-embeddings.csv | 4 - ...inf-size-best-embedding-3-2-embeddings.csv | 4 - ...inf-size-best-embedding-3-3-embeddings.csv | 7 - ...inf-size-best-embedding-3-4-embeddings.csv | 4 - ...inf-size-best-embedding-3-5-embeddings.csv | 7 - ...inf-size-best-embedding-3-6-embeddings.csv | 4 - ...inf-size-best-embedding-3-7-embeddings.csv | 4 - ...cal-bert-best-embedding-1-0-embeddings.csv | 6 - ...cal-bert-best-embedding-1-1-embeddings.csv | 6 - ...cal-bert-best-embedding-1-2-embeddings.csv | 5 - ...cal-bert-best-embedding-1-3-embeddings.csv | 9 - ...cal-bert-best-embedding-1-4-embeddings.csv | 5 - ...cal-bert-best-embedding-1-5-embeddings.csv | 10 - ...cal-bert-best-embedding-1-6-embeddings.csv | 6 - ...cal-bert-best-embedding-1-7-embeddings.csv | 5 - ...-1-best-3-autoregression-0-predictions.csv | 21 - ...-1-best-3-autoregression-1-predictions.csv | 21 - ...-1-best-3-autoregression-2-predictions.csv | 21 - ...-1-best-3-autoregression-3-predictions.csv | 41 - ...-1-best-3-autoregression-4-predictions.csv | 21 - ...-1-best-3-autoregression-5-predictions.csv | 41 - ...-1-best-3-autoregression-6-predictions.csv | 21 - ...-1-best-3-autoregression-7-predictions.csv | 21 - ...del-categorical-1-best-3-0-predictions.csv | 2 - ...del-categorical-1-best-3-1-predictions.csv | 2 - ...del-categorical-1-best-3-2-predictions.csv | 2 - ...del-categorical-1-best-3-3-predictions.csv | 3 - ...del-categorical-1-best-3-4-predictions.csv | 2 - ...del-categorical-1-best-3-5-predictions.csv | 3 - ...del-categorical-1-best-3-6-predictions.csv | 2 - ...del-categorical-1-best-3-7-predictions.csv | 2 - ...orical-1-inf-size-best-3-0-predictions.csv | 4 - ...orical-1-inf-size-best-3-1-predictions.csv | 4 - ...orical-1-inf-size-best-3-2-predictions.csv | 4 - ...orical-1-inf-size-best-3-3-predictions.csv | 7 - ...orical-1-inf-size-best-3-4-predictions.csv | 4 - ...orical-1-inf-size-best-3-5-predictions.csv | 7 - ...orical-1-inf-size-best-3-6-predictions.csv | 4 - ...orical-1-inf-size-best-3-7-predictions.csv | 4 - ...del-categorical-3-best-3-0-predictions.csv | 2 - ...del-categorical-3-best-3-1-predictions.csv | 2 - ...del-categorical-3-best-3-2-predictions.csv | 2 - ...del-categorical-3-best-3-3-predictions.csv | 3 - ...del-categorical-3-best-3-4-predictions.csv | 2 - ...del-categorical-3-best-3-5-predictions.csv | 3 - ...del-categorical-3-best-3-6-predictions.csv | 2 - ...del-categorical-3-best-3-7-predictions.csv | 2 - ...orical-3-inf-size-best-3-0-predictions.csv | 4 - ...orical-3-inf-size-best-3-1-predictions.csv | 4 - ...orical-3-inf-size-best-3-2-predictions.csv | 4 - ...orical-3-inf-size-best-3-3-predictions.csv | 7 - ...orical-3-inf-size-best-3-4-predictions.csv | 4 - ...orical-3-inf-size-best-3-5-predictions.csv | 7 - ...orical-3-inf-size-best-3-6-predictions.csv | 4 - ...orical-3-inf-size-best-3-7-predictions.csv | 4 - ...del-categorical-5-best-3-0-predictions.csv | 2 - ...del-categorical-5-best-3-1-predictions.csv | 2 - ...del-categorical-5-best-3-2-predictions.csv | 2 - ...del-categorical-5-best-3-3-predictions.csv | 3 - ...del-categorical-5-best-3-4-predictions.csv | 2 - ...del-categorical-5-best-3-5-predictions.csv | 3 - ...del-categorical-5-best-3-6-predictions.csv | 2 - ...del-categorical-5-best-3-7-predictions.csv | 2 - ...el-categorical-50-best-3-0-predictions.csv | 2 - ...el-categorical-50-best-3-1-predictions.csv | 2 - ...el-categorical-50-best-3-2-predictions.csv | 2 - ...el-categorical-50-best-3-3-predictions.csv | 3 - ...el-categorical-50-best-3-4-predictions.csv | 2 - ...el-categorical-50-best-3-5-predictions.csv | 3 - ...el-categorical-50-best-3-6-predictions.csv | 2 - ...el-categorical-50-best-3-7-predictions.csv | 2 - ...-categorical-bert-best-1-0-predictions.csv | 6 - ...-categorical-bert-best-1-1-predictions.csv | 6 - ...-categorical-bert-best-1-2-predictions.csv | 5 - ...-categorical-bert-best-1-3-predictions.csv | 9 - ...-categorical-bert-best-1-4-predictions.csv | 5 - ...-categorical-bert-best-1-5-predictions.csv | 10 - ...-categorical-bert-best-1-6-predictions.csv | 6 - ...-categorical-bert-best-1-7-predictions.csv | 5 - ...rical-distributed-best-3-0-predictions.csv | 2 - ...rical-distributed-best-3-1-predictions.csv | 2 - ...rical-distributed-best-3-2-predictions.csv | 2 - ...rical-distributed-best-3-3-predictions.csv | 3 - ...rical-distributed-best-3-4-predictions.csv | 2 - ...rical-distributed-best-3-5-predictions.csv | 3 - ...rical-distributed-best-3-6-predictions.csv | 2 - ...rical-distributed-best-3-7-predictions.csv | 2 - ...-categorical-lazy-best-3-0-predictions.csv | 2 - ...-categorical-lazy-best-3-1-predictions.csv | 2 - ...-categorical-lazy-best-3-2-predictions.csv | 2 - ...-categorical-lazy-best-3-3-predictions.csv | 3 - ...-categorical-lazy-best-3-4-predictions.csv | 2 - ...-categorical-lazy-best-3-5-predictions.csv | 3 - ...-categorical-lazy-best-3-6-predictions.csv | 2 - ...-categorical-lazy-best-3-7-predictions.csv | 2 - ...cal-multitarget-5-best-3-0-predictions.csv | 2 - ...cal-multitarget-5-best-3-1-predictions.csv | 2 - ...cal-multitarget-5-best-3-2-predictions.csv | 2 - ...cal-multitarget-5-best-3-3-predictions.csv | 3 - ...cal-multitarget-5-best-3-4-predictions.csv | 2 - ...cal-multitarget-5-best-3-5-predictions.csv | 3 - ...cal-multitarget-5-best-3-6-predictions.csv | 2 - ...cal-multitarget-5-best-3-7-predictions.csv | 2 - ...cal-multitarget-5-last-3-0-predictions.csv | 2 - ...cal-multitarget-5-last-3-1-predictions.csv | 2 - ...cal-multitarget-5-last-3-2-predictions.csv | 2 - ...cal-multitarget-5-last-3-3-predictions.csv | 3 - ...cal-multitarget-5-last-3-4-predictions.csv | 2 - ...cal-multitarget-5-last-3-5-predictions.csv | 3 - ...cal-multitarget-5-last-3-6-predictions.csv | 2 - ...cal-multitarget-5-last-3-7-predictions.csv | 2 - ...al-1-best-3-autoregression-predictions.csv | 201 --- ...uifier-model-real-1-best-3-predictions.csv | 25 - ...uifier-model-real-3-best-3-predictions.csv | 25 - ...uifier-model-real-5-best-3-predictions.csv | 25 - ...ifier-model-real-50-best-3-predictions.csv | 25 - ...custom-eval-run-0-best-3-0-predictions.csv | 31 - ...custom-eval-run-0-best-3-1-predictions.csv | 31 - ...custom-eval-run-0-best-3-2-predictions.csv | 31 - ...custom-eval-run-0-best-3-3-predictions.csv | 61 - ...custom-eval-run-0-best-3-4-predictions.csv | 31 - ...custom-eval-run-0-best-3-5-predictions.csv | 61 - ...custom-eval-run-0-best-3-6-predictions.csv | 31 - ...custom-eval-run-0-best-3-7-predictions.csv | 31 - ...custom-eval-run-1-best-3-0-predictions.csv | 31 - ...custom-eval-run-1-best-3-1-predictions.csv | 31 - ...custom-eval-run-1-best-3-2-predictions.csv | 31 - ...custom-eval-run-1-best-3-3-predictions.csv | 61 - ...custom-eval-run-1-best-3-4-predictions.csv | 31 - ...custom-eval-run-1-best-3-5-predictions.csv | 61 - ...custom-eval-run-1-best-3-6-predictions.csv | 31 - ...custom-eval-run-1-best-3-7-predictions.csv | 31 - ...custom-eval-run-2-best-3-0-predictions.csv | 31 - ...custom-eval-run-2-best-3-1-predictions.csv | 31 - ...custom-eval-run-2-best-3-2-predictions.csv | 31 - ...custom-eval-run-2-best-3-3-predictions.csv | 61 - ...custom-eval-run-2-best-3-4-predictions.csv | 31 - ...custom-eval-run-2-best-3-5-predictions.csv | 61 - ...custom-eval-run-2-best-3-6-predictions.csv | 31 - ...custom-eval-run-2-best-3-7-predictions.csv | 31 - ...custom-eval-run-3-best-3-0-predictions.csv | 31 - ...custom-eval-run-3-best-3-1-predictions.csv | 31 - ...custom-eval-run-3-best-3-2-predictions.csv | 31 - ...custom-eval-run-3-best-3-3-predictions.csv | 61 - ...custom-eval-run-3-best-3-4-predictions.csv | 31 - ...custom-eval-run-3-best-3-5-predictions.csv | 61 - ...custom-eval-run-3-best-3-6-predictions.csv | 31 - ...custom-eval-run-3-best-3-7-predictions.csv | 31 - ...l-categorical-1-best-3-0-probabilities.csv | 2 - ...l-categorical-1-best-3-1-probabilities.csv | 2 - ...l-categorical-1-best-3-2-probabilities.csv | 2 - ...l-categorical-1-best-3-3-probabilities.csv | 3 - ...l-categorical-1-best-3-4-probabilities.csv | 2 - ...l-categorical-1-best-3-5-probabilities.csv | 3 - ...l-categorical-1-best-3-6-probabilities.csv | 2 - ...l-categorical-1-best-3-7-probabilities.csv | 2 - ...l-categorical-3-best-3-0-probabilities.csv | 2 - ...l-categorical-3-best-3-1-probabilities.csv | 2 - ...l-categorical-3-best-3-2-probabilities.csv | 2 - ...l-categorical-3-best-3-3-probabilities.csv | 3 - ...l-categorical-3-best-3-4-probabilities.csv | 2 - ...l-categorical-3-best-3-5-probabilities.csv | 3 - ...l-categorical-3-best-3-6-probabilities.csv | 2 - ...l-categorical-3-best-3-7-probabilities.csv | 2 - ...ical-3-inf-size-best-3-0-probabilities.csv | 4 - ...ical-3-inf-size-best-3-1-probabilities.csv | 4 - ...ical-3-inf-size-best-3-2-probabilities.csv | 4 - ...ical-3-inf-size-best-3-3-probabilities.csv | 7 - ...ical-3-inf-size-best-3-4-probabilities.csv | 4 - ...ical-3-inf-size-best-3-5-probabilities.csv | 7 - ...ical-3-inf-size-best-3-6-probabilities.csv | 4 - ...ical-3-inf-size-best-3-7-probabilities.csv | 4 - ...ical-3-inf-size-best-3-0-probabilities.csv | 4 - ...ical-3-inf-size-best-3-1-probabilities.csv | 4 - ...ical-3-inf-size-best-3-2-probabilities.csv | 4 - ...ical-3-inf-size-best-3-3-probabilities.csv | 7 - ...ical-3-inf-size-best-3-4-probabilities.csv | 4 - ...ical-3-inf-size-best-3-5-probabilities.csv | 7 - ...ical-3-inf-size-best-3-6-probabilities.csv | 4 - ...ical-3-inf-size-best-3-7-probabilities.csv | 4 - ...ical-3-inf-size-best-3-0-probabilities.csv | 4 - ...ical-3-inf-size-best-3-1-probabilities.csv | 4 - ...ical-3-inf-size-best-3-2-probabilities.csv | 4 - ...ical-3-inf-size-best-3-3-probabilities.csv | 7 - ...ical-3-inf-size-best-3-4-probabilities.csv | 4 - ...ical-3-inf-size-best-3-5-probabilities.csv | 7 - ...ical-3-inf-size-best-3-6-probabilities.csv | 4 - ...ical-3-inf-size-best-3-7-probabilities.csv | 4 - ...l-categorical-5-best-3-0-probabilities.csv | 2 - ...l-categorical-5-best-3-1-probabilities.csv | 2 - ...l-categorical-5-best-3-2-probabilities.csv | 2 - ...l-categorical-5-best-3-3-probabilities.csv | 3 - ...l-categorical-5-best-3-4-probabilities.csv | 2 - ...l-categorical-5-best-3-5-probabilities.csv | 3 - ...l-categorical-5-best-3-6-probabilities.csv | 2 - ...l-categorical-5-best-3-7-probabilities.csv | 2 - ...-categorical-50-best-3-0-probabilities.csv | 2 - ...-categorical-50-best-3-1-probabilities.csv | 2 - ...-categorical-50-best-3-2-probabilities.csv | 2 - ...-categorical-50-best-3-3-probabilities.csv | 3 - ...-categorical-50-best-3-4-probabilities.csv | 2 - ...-categorical-50-best-3-5-probabilities.csv | 3 - ...-categorical-50-best-3-6-probabilities.csv | 2 - ...-categorical-50-best-3-7-probabilities.csv | 2 - ...ategorical-bert-best-1-0-probabilities.csv | 6 - ...ategorical-bert-best-1-1-probabilities.csv | 6 - ...ategorical-bert-best-1-2-probabilities.csv | 5 - ...ategorical-bert-best-1-3-probabilities.csv | 9 - ...ategorical-bert-best-1-4-probabilities.csv | 5 - ...ategorical-bert-best-1-5-probabilities.csv | 10 - ...ategorical-bert-best-1-6-probabilities.csv | 6 - ...ategorical-bert-best-1-7-probabilities.csv | 5 - ...l-multitarget-5-best-3-0-probabilities.csv | 2 - ...l-multitarget-5-best-3-1-probabilities.csv | 2 - ...l-multitarget-5-best-3-2-probabilities.csv | 2 - ...l-multitarget-5-best-3-3-probabilities.csv | 3 - ...l-multitarget-5-best-3-4-probabilities.csv | 2 - ...l-multitarget-5-best-3-5-probabilities.csv | 3 - ...l-multitarget-5-best-3-6-probabilities.csv | 2 - ...l-multitarget-5-best-3-7-probabilities.csv | 2 - ...l-multitarget-5-best-3-0-probabilities.csv | 2 - ...l-multitarget-5-best-3-1-probabilities.csv | 2 - ...l-multitarget-5-best-3-2-probabilities.csv | 2 - ...l-multitarget-5-best-3-3-probabilities.csv | 3 - ...l-multitarget-5-best-3-4-probabilities.csv | 2 - ...l-multitarget-5-best-3-5-probabilities.csv | 3 - ...l-multitarget-5-best-3-6-probabilities.csv | 2 - ...l-multitarget-5-best-3-7-probabilities.csv | 2 - tests/unit/data/empty.parquet | 0 tests/unit/io/test_batch.py | 32 - ...uifier_dataset_from_folder_parquet_lazy.py | 372 ---- ...t_sequifier_dataset_from_folder_pt_lazy.py | 421 ----- tests/unit/test_helpers.py | 617 ------- .../unit/test_hyperparameter_search_config.py | 178 -- tests/unit/test_infer.py | 833 --------- tests/unit/test_preprocess.py | 787 --------- tests/unit/test_probabilities.py | 51 - tests/unit/test_train.py | 1529 ----------------- tests/unit/test_train_distributed_loss.py | 763 -------- tests/unit/test_train_fsdp_loss.py | 754 -------- 336 files changed, 17014 deletions(-) delete mode 100644 tests/configs/hyperparameter-search-bayesian.yaml delete mode 100644 tests/configs/hyperparameter-search-bert.yaml delete mode 100644 tests/configs/hyperparameter-search-custom-eval-inference.yaml delete mode 100644 tests/configs/hyperparameter-search-custom-eval.yaml delete mode 100644 tests/configs/hyperparameter-search-grid.yaml delete mode 100644 tests/configs/hyperparameter-search-sample.yaml delete mode 100644 tests/configs/infer-test-categorical-autoregression.yaml delete mode 100644 tests/configs/infer-test-categorical-bert-embedding.yaml delete mode 100644 tests/configs/infer-test-categorical-bert.yaml delete mode 100644 tests/configs/infer-test-categorical-embedding.yaml delete mode 100644 tests/configs/infer-test-categorical-inf-size-1.yaml delete mode 100644 tests/configs/infer-test-categorical-inf-size-3-embedding.yaml delete mode 100644 tests/configs/infer-test-categorical-inf-size-3.yaml delete mode 100644 tests/configs/infer-test-categorical-multitarget.yaml delete mode 100644 tests/configs/infer-test-categorical.yaml delete mode 100644 tests/configs/infer-test-distributed-parquet.yaml delete mode 100644 tests/configs/infer-test-distributed.yaml delete mode 100644 tests/configs/infer-test-lazy.yaml delete mode 100644 tests/configs/infer-test-real-autoregression.yaml delete mode 100644 tests/configs/infer-test-real.yaml delete mode 100644 tests/configs/preprocess-test-categorical-exact-pt.yaml delete mode 100644 tests/configs/preprocess-test-categorical-exact.yaml delete mode 100644 tests/configs/preprocess-test-categorical-interrupted.yaml delete mode 100644 tests/configs/preprocess-test-categorical-lookahead-0.yaml delete mode 100644 tests/configs/preprocess-test-categorical-multitarget.yaml delete mode 100644 tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml delete mode 100644 tests/configs/preprocess-test-categorical-precomputed-stats.yaml delete mode 100644 tests/configs/preprocess-test-categorical.yaml delete mode 100644 tests/configs/preprocess-test-multi-file.yaml delete mode 100644 tests/configs/preprocess-test-real.yaml delete mode 100644 tests/configs/train-test-categorical-bert.yaml delete mode 100644 tests/configs/train-test-categorical-inf-size-1.yaml delete mode 100644 tests/configs/train-test-categorical-inf-size-3.yaml delete mode 100644 tests/configs/train-test-categorical-multitarget-eager.yaml delete mode 100644 tests/configs/train-test-categorical-multitarget.yaml delete mode 100644 tests/configs/train-test-categorical.yaml delete mode 100644 tests/configs/train-test-distributed-lazy-parquet.yaml delete mode 100644 tests/configs/train-test-distributed.yaml delete mode 100644 tests/configs/train-test-lazy.yaml delete mode 100644 tests/configs/train-test-real-bert.yaml delete mode 100644 tests/configs/train-test-real.yaml delete mode 100644 tests/configs/train-test-resume-epoch.yaml delete mode 100644 tests/configs/train-test-resume-mid-epoch.yaml delete mode 100644 tests/integration-test-log.txt delete mode 100644 tests/integration/conftest.py delete mode 100644 tests/integration/test_hyperparameter_search.py delete mode 100644 tests/integration/test_identities.py delete mode 100644 tests/integration/test_inference.py delete mode 100644 tests/integration/test_make.py delete mode 100644 tests/integration/test_onnx_export.py delete mode 100644 tests/integration/test_preprocessing.py delete mode 100644 tests/integration/test_training.py delete mode 100644 tests/integration/test_visualize_training.py delete mode 100644 tests/resources/source_configs/id_maps/itemId.json delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-0-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-1-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-2-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-3-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-0-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-1-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-2-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-3-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-0-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-1-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-2-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-3-0.pt delete mode 100644 tests/resources/source_data/test-data-categorical-1-interrupted.csv delete mode 100644 tests/resources/source_data/test-data-categorical-1-lookahead-0.csv delete mode 100644 tests/resources/source_data/test-data-categorical-1.csv delete mode 100644 tests/resources/source_data/test-data-categorical-3-equal.csv delete mode 100644 tests/resources/source_data/test-data-categorical-3-equal.parquet delete mode 100644 tests/resources/source_data/test-data-categorical-3.csv delete mode 100644 tests/resources/source_data/test-data-categorical-5.csv delete mode 100644 tests/resources/source_data/test-data-categorical-50.csv delete mode 100644 tests/resources/source_data/test-data-categorical-multi-file/test-data-categorical-mullti-file-1.csv delete mode 100644 tests/resources/source_data/test-data-categorical-multi-file/test-data-categorical-mullti-file-2.csv delete mode 100644 tests/resources/source_data/test-data-categorical-multi-file/test-data-categorical-mullti-file-3.csv delete mode 100644 tests/resources/source_data/test-data-categorical-multitarget-5.csv delete mode 100644 tests/resources/source_data/test-data-categorical-precomputed-stats-negative.csv delete mode 100644 tests/resources/source_data/test-data-categorical-precomputed-stats.csv delete mode 100644 tests/resources/source_data/test-data-real-1-split1-autoregression.csv delete mode 100644 tests/resources/source_data/test-data-real-1.csv delete mode 100644 tests/resources/source_data/test-data-real-3.csv delete mode 100644 tests/resources/source_data/test-data-real-5.csv delete mode 100644 tests/resources/source_data/test-data-real-50.csv delete mode 100644 tests/resources/source_scripts/hp_search_eval_script.py delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-0-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-1-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-2-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-3-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-4-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-5-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-6-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-1-best-embedding-3-embeddings/sequifier-model-categorical-1-best-embedding-3-7-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-0-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-1-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-2-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-3-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-4-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-5-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-6-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-embeddings/sequifier-model-categorical-3-inf-size-best-embedding-3-7-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-0-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-1-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-2-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-3-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-4-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-5-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-6-embeddings.csv delete mode 100644 tests/resources/target_outputs/embeddings/sequifier-model-categorical-bert-best-embedding-1-embeddings/sequifier-model-categorical-bert-best-embedding-1-7-embeddings.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-autoregression-predictions/sequifier-model-categorical-1-best-3-autoregression-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-best-3-predictions/sequifier-model-categorical-1-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-1-inf-size-best-3-predictions/sequifier-model-categorical-1-inf-size-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-best-3-predictions/sequifier-model-categorical-3-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-3-inf-size-best-3-predictions/sequifier-model-categorical-3-inf-size-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-5-best-3-predictions/sequifier-model-categorical-5-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-50-best-3-predictions/sequifier-model-categorical-50-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-bert-best-1-predictions/sequifier-model-categorical-bert-best-1-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-distributed-best-3-predictions/sequifier-model-categorical-distributed-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-lazy-best-3-predictions/sequifier-model-categorical-lazy-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-best-3-predictions/sequifier-model-categorical-multitarget-5-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-categorical-multitarget-5-last-3-predictions/sequifier-model-categorical-multitarget-5-last-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-autoregression-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-real-1-best-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-real-3-best-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-real-5-best-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-model-real-50-best-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-predictions/sequifier-test-hp-search-custom-eval-run-0-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-predictions/sequifier-test-hp-search-custom-eval-run-1-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-predictions/sequifier-test-hp-search-custom-eval-run-2-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-0-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-1-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-2-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-3-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-4-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-5-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-6-predictions.csv delete mode 100644 tests/resources/target_outputs/predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-predictions/sequifier-test-hp-search-custom-eval-run-3-best-3-7-predictions.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-1-best-3-itemId-probabilities/sequifier-model-categorical-1-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-best-3-itemId-probabilities/sequifier-model-categorical-3-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-itemId-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat1-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-3-inf-size-best-3-supCat2-probabilities/sequifier-model-categorical-3-inf-size-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-5-best-3-itemId-probabilities/sequifier-model-categorical-5-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-50-best-3-itemId-probabilities/sequifier-model-categorical-50-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-bert-best-1-itemId-probabilities/sequifier-model-categorical-bert-best-1-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-itemId-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-0-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-1-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-2-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-3-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-4-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-5-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-6-probabilities.csv delete mode 100644 tests/resources/target_outputs/probabilities/sequifier-model-categorical-multitarget-5-best-3-supCat1-probabilities/sequifier-model-categorical-multitarget-5-best-3-7-probabilities.csv delete mode 100644 tests/unit/data/empty.parquet delete mode 100644 tests/unit/io/test_batch.py delete mode 100644 tests/unit/io/test_sequifier_dataset_from_folder_parquet_lazy.py delete mode 100644 tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py delete mode 100644 tests/unit/test_helpers.py delete mode 100644 tests/unit/test_hyperparameter_search_config.py delete mode 100644 tests/unit/test_infer.py delete mode 100644 tests/unit/test_preprocess.py delete mode 100644 tests/unit/test_probabilities.py delete mode 100644 tests/unit/test_train.py delete mode 100644 tests/unit/test_train_distributed_loss.py delete mode 100644 tests/unit/test_train_fsdp_loss.py diff --git a/tests/configs/hyperparameter-search-bayesian.yaml b/tests/configs/hyperparameter-search-bayesian.yaml deleted file mode 100644 index c5f8d733..00000000 --- a/tests/configs/hyperparameter-search-bayesian.yaml +++ /dev/null @@ -1,68 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -hp_search_name: test-hp-search-bayesian -model_config_write_path: configs - -read_format: pt -target_columns: [itemId] -target_column_types: - itemId: categorical -context_length: [8] -inference_batch_size: 10 - -# Search Strategy -search_strategy: bayesian -n_samples: 4 - -# Configuration Loading Overrides (set to null to use values from metadata) -input_columns: null -# Export Settings -export_embedding_model: false -export_generative_model: true -export_onnx: false -export_pt: true -export_with_dropout: false - -# Model Hyperparameter Search Space -model_hyperparameter_sampling: - initial_embedding_dim: [40, 80] - joint_embedding_dim: [null, null] - feature_embedding_dims: null - dim_model: [40, 80] - n_head: [2, 4] - dim_feedforward: [10, 12] - num_layers: [2] - activation_fn: ["swiglu"] - normalization: ["rmsnorm"] - positional_encoding: ["rope"] - attention_type: ["mqa", "gqa"] - norm_first: [ true] - n_kv_heads: [1] - rope_theta: [10000.0] - prediction_length: 1 - -# Training Hyperparameter Search Space -training_hyperparameter_sampling: - training_objective: ["causal"] - device: cpu - epochs: [1, 1] - save_interval_epochs: 10 - batch_size: [5, 10] - learning_rate: [0.001, 0.01] - criterion: - itemId: CrossEntropyLoss - accumulation_steps: [1] - dropout: [0.0] - optimizer: - - name: Adam - scheduler: - - name: StepLR - step_size: 1 - gamma: 0.99 - - name: StepLR - step_size: 1 - gamma: 0.99 - log_interval: 5 - continue_training: false - -override_input: true diff --git a/tests/configs/hyperparameter-search-bert.yaml b/tests/configs/hyperparameter-search-bert.yaml deleted file mode 100644 index 99a4024e..00000000 --- a/tests/configs/hyperparameter-search-bert.yaml +++ /dev/null @@ -1,76 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json -hp_search_name: test-hp-search-bert -model_config_write_path: configs - -read_format: pt -target_columns: [itemId] -target_column_types: - itemId: categorical -context_length: [8] -inference_batch_size: 10 - -search_strategy: sample -n_samples: 1 -prune_trials: false - -input_columns: - - [itemId] -export_embedding_model: false -export_generative_model: true -export_onnx: false -export_pt: true -export_with_dropout: false - -model_hyperparameter_sampling: - initial_embedding_dim: [16] - joint_embedding_dim: [null] - feature_embedding_dims: null - dim_model: [16] - n_head: [2] - dim_feedforward: [8] - num_layers: [1] - activation_fn: ["relu"] - normalization: ["layer_norm"] - positional_encoding: ["learned"] - attention_type: ["mha"] - norm_first: [false] - n_kv_heads: [2] - rope_theta: [10000.0] - prediction_length: 8 - -training_hyperparameter_sampling: - training_objective: ["bert"] - bert_spec: - masking_probability: [0.5] - replacement_distribution: - - masked: 0.8 - random: 0.1 - identical: 0.1 - span_masking: - - type: GeometricDistribution - p: 1.0 - device: cpu - torch_compile: none - epochs: [1] - save_interval_epochs: 10 - batch_size: [5] - learning_rate: [0.001] - criterion: - itemId: CrossEntropyLoss - loss_weights: - itemId: 1.0 - accumulation_steps: [1] - dropout: [0.0] - optimizer: - - name: Adam - scheduler: - - name: StepLR - step_size: 1 - gamma: 0.99 - log_interval: 5 - calculate_validation_loss_on_initialization: false - continue_training: false - layer_autocast: false - -override_input: true diff --git a/tests/configs/hyperparameter-search-custom-eval-inference.yaml b/tests/configs/hyperparameter-search-custom-eval-inference.yaml deleted file mode 100644 index aa40c11c..00000000 --- a/tests/configs/hyperparameter-search-custom-eval-inference.yaml +++ /dev/null @@ -1,41 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: configs/metadata_configs/test-data-categorical-5.json - -model_type: generative -training_objective: causal -model_path: models/sequifier-test-hp-search-custom-eval-run-0-best-1.pt - -data_path: data/test-data-categorical-5-split2 -read_format: pt -write_format: csv - -input_columns: -- itemId -- supCat1 -- supCat2 -- supCat3 -- supCat4 -target_columns: -- itemId -- supCat1 -- supCat2 -- supCat3 -- supCat4 -target_column_types: - itemId: categorical - supCat1: categorical - supCat2: categorical - supCat3: categorical - supCat4: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -prediction_length: 1 -inference_batch_size: 10 -enforce_determinism: true - -# Autoregression -autoregression: true -autoregression_total_steps: 30 diff --git a/tests/configs/hyperparameter-search-custom-eval.yaml b/tests/configs/hyperparameter-search-custom-eval.yaml deleted file mode 100644 index d93d0792..00000000 --- a/tests/configs/hyperparameter-search-custom-eval.yaml +++ /dev/null @@ -1,92 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -hp_search_name: test-hp-search-custom-eval -model_config_write_path: configs - -read_format: pt -target_columns: -- itemId -- supCat1 -- supCat2 -- supCat3 -- supCat4 -target_column_types: - itemId: categorical - supCat1: categorical - supCat2: categorical - supCat3: categorical - supCat4: categorical -context_length: [8] -inference_batch_size: 10 - -# Search Strategy -search_strategy: bayesian -seed: 101 -n_samples: 4 - -# Configuration Loading Overrides (set to null to use values from metadata) -input_columns: null -# Export Settings -export_embedding_model: false -export_generative_model: true -export_onnx: true -export_pt: false -export_with_dropout: false - -# Model Hyperparameter Search Space -model_hyperparameter_sampling: - initial_embedding_dim: [40, 80] - joint_embedding_dim: [null, null] - feature_embedding_dims: null - dim_model: [40, 80] - n_head: [2, 4] - dim_feedforward: [10, 12] - num_layers: [2] - activation_fn: ["swiglu"] - normalization: ["rmsnorm"] - positional_encoding: ["rope"] - attention_type: ["mqa", "gqa"] - norm_first: [ true] - n_kv_heads: [1] - rope_theta: [10000.0] - prediction_length: 1 - -# Training Hyperparameter Search Space -training_hyperparameter_sampling: - training_objective: ["causal"] - device: cpu - epochs: [3, 3] - save_interval_epochs: 10 - batch_size: [5, 10] - learning_rate: [0.001, 0.0001] - criterion: - itemId: CrossEntropyLoss - supCat1: CrossEntropyLoss - supCat2: CrossEntropyLoss - supCat3: CrossEntropyLoss - supCat4: CrossEntropyLoss - accumulation_steps: [1] - dropout: [0.5] - optimizer: - - name: Adam - scheduler: - - name: StepLR - step_size: 1 - gamma: 0.99 - - name: StepLR - step_size: 1 - gamma: 0.99 - log_interval: 5 - continue_training: false - - -evaluation_metric_directions: - - minimize - - maximize -evaluation_metrics: - - max - - stdev -evaluation_inference_config: tests/configs/hyperparameter-search-custom-eval-inference.yaml -evaluation_script: scripts/hp_search_eval_script.py - -override_input: true diff --git a/tests/configs/hyperparameter-search-grid.yaml b/tests/configs/hyperparameter-search-grid.yaml deleted file mode 100644 index 2922a641..00000000 --- a/tests/configs/hyperparameter-search-grid.yaml +++ /dev/null @@ -1,70 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -hp_search_name: test-hp-search-grid -model_config_write_path: configs - -read_format: pt -target_columns: [itemId] -target_column_types: - itemId: categorical -context_length: [8] -inference_batch_size: 10 - -# Search Strategy -search_strategy: grid -n_samples: 4 - -# Configuration Loading Overrides (set to null to use values from metadata) -input_columns: null -# Export Settings -export_embedding_model: false -export_generative_model: true -export_onnx: false -export_pt: true -export_with_dropout: false - -# Model Hyperparameter Search Space -model_hyperparameter_sampling: - initial_embedding_dim: [20] - feature_embedding_dims: null - joint_embedding_dim: [null] - dim_model: [20] - n_head: [2] - dim_feedforward: [10] - num_layers: [2] - activation_fn: ["relu", "swiglu"] - normalization: ["layer_norm"] - positional_encoding: ["learned", "rope"] - attention_type: ["mqa"] - norm_first: [false] - n_kv_heads: [1] - rope_theta: [10000.0] - prediction_length: 1 - -# Training Hyperparameter Search Space -training_hyperparameter_sampling: - training_objective: ["causal"] - device: cpu - epochs: [2] - save_interval_epochs: 10 - batch_size: [5] - learning_rate: [0.001] - criterion: - itemId: CrossEntropyLoss - accumulation_steps: [1] - dropout: [0.0] - optimizer: - - name: Adam - scheduler: - - name: StepLR - step_size: 1 - gamma: 0.99 - log_interval: 5 - continue_training: false - layer_type_dtypes: - embedding: bfloat16 - linear: bfloat16 - norm: bfloat16 - - -override_input: true diff --git a/tests/configs/hyperparameter-search-sample.yaml b/tests/configs/hyperparameter-search-sample.yaml deleted file mode 100644 index 5d429e8b..00000000 --- a/tests/configs/hyperparameter-search-sample.yaml +++ /dev/null @@ -1,86 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -hp_search_name: test-hp-search-sample -model_config_write_path: configs - -read_format: pt -target_columns: [itemId] -target_column_types: - itemId: categorical -context_length: [8] -inference_batch_size: 10 - -# Search Strategy -search_strategy: sample -n_samples: 4 - -# Configuration Loading Overrides -input_columns: null -export_embedding_model: false -export_generative_model: true -export_onnx: false -export_pt: true -export_with_dropout: false - -# Model Hyperparameter Search Space using Distributions -model_hyperparameter_sampling: - initial_embedding_dim: [40] - joint_embedding_dim: [null] - feature_embedding_dims: null - dim_model: [40] - n_head: [2] - # IntDistribution test with step - dim_feedforward: - low: 10 - high: 20 - step: 2 - # IntDistribution test without step - num_layers: - low: 1 - high: 3 - activation_fn: ["swiglu"] - normalization: ["rmsnorm"] - positional_encoding: ["rope"] - attention_type: ["mqa"] - norm_first: [true] - n_kv_heads: [1] - # FloatDistribution test with log - rope_theta: - low: 1000.0 - high: 10000.0 - log: true - prediction_length: 1 - -# Training Hyperparameter Search Space using Distributions -training_hyperparameter_sampling: - training_objective: ["causal"] - device: cpu - epochs: [1] - save_interval_epochs: 10 - # IntDistribution test - batch_size: - low: 5 - high: 15 - step: 5 - learning_rate: [0.001] - criterion: - itemId: CrossEntropyLoss - # IntDistribution test - accumulation_steps: - low: 1 - high: 2 - # FloatDistribution test without log - dropout: - low: 0.1 - high: 0.5 - log: true - optimizer: - - name: Adam - scheduler: - - name: StepLR - step_size: 1 - gamma: 0.99 - log_interval: 5 - continue_training: false - -override_input: true diff --git a/tests/configs/infer-test-categorical-autoregression.yaml b/tests/configs/infer-test-categorical-autoregression.yaml deleted file mode 100644 index 7112cd9e..00000000 --- a/tests/configs/infer-test-categorical-autoregression.yaml +++ /dev/null @@ -1,25 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-1-best-3-autoregression.onnx -data_path: tests/project_folder/data/test-data-categorical-1-split2 -read_format: pt -write_format: csv - -input_columns: itemId -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: true -autoregression_total_steps: 20 diff --git a/tests/configs/infer-test-categorical-bert-embedding.yaml b/tests/configs/infer-test-categorical-bert-embedding.yaml deleted file mode 100644 index 61724d81..00000000 --- a/tests/configs/infer-test-categorical-bert-embedding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-bert.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json -model_type: embedding -training_objective: bert -model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-embedding-1.pt -data_path: tests/project_folder/data/test-data-categorical-1-lookahead-0-split2 -read_format: pt -write_format: csv - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -prediction_length: null -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-bert.yaml b/tests/configs/infer-test-categorical-bert.yaml deleted file mode 100644 index 5a459841..00000000 --- a/tests/configs/infer-test-categorical-bert.yaml +++ /dev/null @@ -1,25 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-bert.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1-lookahead-0.json -model_type: generative -training_objective: bert -model_path: tests/project_folder/models/sequifier-model-categorical-bert-best-1.pt -data_path: tests/project_folder/data/test-data-categorical-1-lookahead-0-split2 -read_format: pt -write_format: csv - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: true -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -prediction_length: null -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-embedding.yaml b/tests/configs/infer-test-categorical-embedding.yaml deleted file mode 100644 index e8ce1543..00000000 --- a/tests/configs/infer-test-categorical-embedding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json -model_type: embedding -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-1-best-embedding-3.pt -data_path: tests/project_folder/data/test-data-categorical-1-split2 -read_format: pt -write_format: csv - -input_columns: null -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-inf-size-1.yaml b/tests/configs/infer-test-categorical-inf-size-1.yaml deleted file mode 100644 index 8c8c14b9..00000000 --- a/tests/configs/infer-test-categorical-inf-size-1.yaml +++ /dev/null @@ -1,24 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-1.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-1-inf-size-best-3.onnx -data_path: tests/project_folder/data/test-data-categorical-1-split2 -read_format: pt -write_format: csv - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -prediction_length: 3 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml b/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml deleted file mode 100644 index 61732fa0..00000000 --- a/tests/configs/infer-test-categorical-inf-size-3-embedding.yaml +++ /dev/null @@ -1,27 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-inf-size-3.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-3.json -model_type: embedding -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-3-inf-size-best-embedding-3.pt -data_path: tests/project_folder/data/test-data-categorical-3-split2 -read_format: pt -write_format: csv - -input_columns: [itemId, supCat1, supCat2] -target_columns: [itemId, supCat1, supCat2] -target_column_types: - itemId: categorical - supCat1: categorical - supCat2: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -prediction_length: 3 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-inf-size-3.yaml b/tests/configs/infer-test-categorical-inf-size-3.yaml deleted file mode 100644 index 6bdad176..00000000 --- a/tests/configs/infer-test-categorical-inf-size-3.yaml +++ /dev/null @@ -1,27 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-inf-size-3.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-3.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-3-inf-size-best-3.pt -data_path: tests/project_folder/data/test-data-categorical-3-split2 -read_format: pt -write_format: csv - -input_columns: [itemId, supCat1, supCat2] -target_columns: [itemId, supCat1, supCat2] -target_column_types: - itemId: categorical - supCat1: categorical - supCat2: categorical - -output_probabilities: true -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -prediction_length: 3 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-categorical-multitarget.yaml b/tests/configs/infer-test-categorical-multitarget.yaml deleted file mode 100644 index 9202b7ed..00000000 --- a/tests/configs/infer-test-categorical-multitarget.yaml +++ /dev/null @@ -1,26 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical-multitarget.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-multitarget-5.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-multitarget-5-best-3.onnx -data_path: tests/project_folder/data/test-data-categorical-multitarget-5-split2 -read_format: parquet -write_format: csv - -input_columns: null -target_columns: [itemId, supCat1, supReal3] -target_column_types: - itemId: categorical - supCat1: categorical - supReal3: real - -output_probabilities: true -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -sample_from_distribution_columns: ['itemId'] -autoregression: false diff --git a/tests/configs/infer-test-categorical.yaml b/tests/configs/infer-test-categorical.yaml deleted file mode 100644 index dafe686e..00000000 --- a/tests/configs/infer-test-categorical.yaml +++ /dev/null @@ -1,24 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-categorical.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-5.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-5-best-3.pt -data_path: tests/project_folder/data/test-data-categorical5-split2 -read_format: pt -write_format: csv - -input_columns: null -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: true -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-distributed-parquet.yaml b/tests/configs/infer-test-distributed-parquet.yaml deleted file mode 100644 index 52ce0a4e..00000000 --- a/tests/configs/infer-test-distributed-parquet.yaml +++ /dev/null @@ -1,25 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-categorical-multitarget-5.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-categorical-multitarget-5-last-3.onnx -data_path: tests/project_folder/data/test-data-categorical-multitarget-5-split2 -read_format: parquet -write_format: csv - -input_columns: null -target_columns: [itemId, supCat1, supReal3] -target_column_types: - itemId: categorical - supCat1: categorical - supReal3: real - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -sample_from_distribution_columns: null -autoregression: false diff --git a/tests/configs/infer-test-distributed.yaml b/tests/configs/infer-test-distributed.yaml deleted file mode 100644 index 61f43431..00000000 --- a/tests/configs/infer-test-distributed.yaml +++ /dev/null @@ -1,23 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json - -# Point to the model generated by the distributed training test -model_path: models/sequifier-model-categorical-distributed-best-3.onnx -model_type: generative -training_objective: causal - -# Use the split2 data generated by preprocessing -data_path: data/test-data-categorical-3-split2 -read_format: pt -write_format: csv - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 2 diff --git a/tests/configs/infer-test-lazy.yaml b/tests/configs/infer-test-lazy.yaml deleted file mode 100644 index 3429ecf5..00000000 --- a/tests/configs/infer-test-lazy.yaml +++ /dev/null @@ -1,21 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json - -model_path: models/sequifier-model-categorical-lazy-best-3.onnx -model_type: generative -training_objective: causal - -data_path: data/test-data-categorical-3-split2 -read_format: pt -write_format: csv - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -output_probabilities: false -map_to_id: true -device: cpu -context_length: 8 -inference_batch_size: 2 diff --git a/tests/configs/infer-test-real-autoregression.yaml b/tests/configs/infer-test-real-autoregression.yaml deleted file mode 100644 index 07d3b21f..00000000 --- a/tests/configs/infer-test-real-autoregression.yaml +++ /dev/null @@ -1,26 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-real.yaml -metadata_config_path: tests/project_folder/configs/metadata_configs/test-data-real-1.json -model_type: generative -training_objective: causal -model_path: tests/project_folder/models/sequifier-model-real-1-best-3-autoregression.pt -data_path: tests/project_folder/data/test-data-real-1-split1-autoregression.csv -read_format: csv -write_format: csv - -input_columns: null -target_columns: [itemValue] -target_column_types: - itemValue: real - -output_probabilities: false -map_to_id: false -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: false - -sample_from_distribution_columns: [itemValue] -infer_with_dropout: true -autoregression: true -autoregression_total_steps: 20 diff --git a/tests/configs/infer-test-real.yaml b/tests/configs/infer-test-real.yaml deleted file mode 100644 index 74b40e23..00000000 --- a/tests/configs/infer-test-real.yaml +++ /dev/null @@ -1,21 +0,0 @@ -project_root: tests/project_folder -training_config_path: tests/configs/train-test-real.yaml -metadata_config_path: configs/metadata_configs/test-data-real-5.json -model_type: generative -training_objective: causal -model_path: models/sequifier-model-real-5-best-3.pt -data_path: data/test-data-real5-split2.csv - -input_columns: null -target_columns: [itemValue] -target_column_types: - itemValue: real - -output_probabilities: false -map_to_id: false -device: cpu -context_length: 8 -inference_batch_size: 10 -enforce_determinism: true - -autoregression: false diff --git a/tests/configs/preprocess-test-categorical-exact-pt.yaml b/tests/configs/preprocess-test-categorical-exact-pt.yaml deleted file mode 100644 index 2e233b9b..00000000 --- a/tests/configs/preprocess-test-categorical-exact-pt.yaml +++ /dev/null @@ -1,15 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-3-equal.parquet -merge_output: false -read_format: parquet -write_format: pt -selected_columns: null - -split_ratios: -- 1.0 -stored_context_width: 6 -max_target_offset: 1 -stride_by_split: -- 5 -max_rows: null -subsequence_start_mode: exact diff --git a/tests/configs/preprocess-test-categorical-exact.yaml b/tests/configs/preprocess-test-categorical-exact.yaml deleted file mode 100644 index 3e58bef4..00000000 --- a/tests/configs/preprocess-test-categorical-exact.yaml +++ /dev/null @@ -1,15 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-3-equal.csv -merge_output: true -read_format: csv -write_format: parquet -selected_columns: null - -split_ratios: -- 1.0 -stored_context_width: 6 -max_target_offset: 1 -stride_by_split: -- 5 -max_rows: null -subsequence_start_mode: exact diff --git a/tests/configs/preprocess-test-categorical-interrupted.yaml b/tests/configs/preprocess-test-categorical-interrupted.yaml deleted file mode 100644 index 7dae9dcf..00000000 --- a/tests/configs/preprocess-test-categorical-interrupted.yaml +++ /dev/null @@ -1,19 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-1-interrupted.csv -merge_output: false -read_format: csv -write_format: pt -selected_columns: null -continue_preprocessing: true -split_ratios: -- 0.6 -- 0.2 -- 0.2 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -- 1 -- 1 -max_rows: null -subsequence_start_mode: distribute diff --git a/tests/configs/preprocess-test-categorical-lookahead-0.yaml b/tests/configs/preprocess-test-categorical-lookahead-0.yaml deleted file mode 100644 index c9653bea..00000000 --- a/tests/configs/preprocess-test-categorical-lookahead-0.yaml +++ /dev/null @@ -1,19 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-1.csv -merge_output: false -read_format: csv -write_format: pt -selected_columns: null - -split_ratios: -- 0.6 -- 0.2 -- 0.2 -stored_context_width: 8 -max_target_offset: 0 -stride_by_split: -- 1 -- 1 -- 1 -max_rows: null -subsequence_start_mode: distribute diff --git a/tests/configs/preprocess-test-categorical-multitarget.yaml b/tests/configs/preprocess-test-categorical-multitarget.yaml deleted file mode 100644 index 0dca4827..00000000 --- a/tests/configs/preprocess-test-categorical-multitarget.yaml +++ /dev/null @@ -1,20 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-multitarget-5.csv -merge_output: false -read_format: csv -write_format: parquet -selected_columns: null - -split_ratios: -- 0.6 -- 0.2 -- 0.2 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -- 1 -- 1 -max_rows: null -use_precomputed_maps: -- "itemId" diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml deleted file mode 100644 index 7372bc0e..00000000 --- a/tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml +++ /dev/null @@ -1,15 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-precomputed-stats-negative.csv -read_format: csv - -write_format: parquet -merge_output: true -selected_columns: null - -split_ratios: -- 1.0 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -max_rows: null diff --git a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml b/tests/configs/preprocess-test-categorical-precomputed-stats.yaml deleted file mode 100644 index 1f565c32..00000000 --- a/tests/configs/preprocess-test-categorical-precomputed-stats.yaml +++ /dev/null @@ -1,16 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-precomputed-stats.csv -read_format: csv -write_format: parquet -merge_output: true -selected_columns: null - -split_ratios: -- 1.0 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -max_rows: null -metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json -mask_column: "[mask]" diff --git a/tests/configs/preprocess-test-categorical.yaml b/tests/configs/preprocess-test-categorical.yaml deleted file mode 100644 index 4767f7e6..00000000 --- a/tests/configs/preprocess-test-categorical.yaml +++ /dev/null @@ -1,19 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-5.csv -merge_output: false -read_format: csv -write_format: pt -selected_columns: null - -split_ratios: -- 0.6 -- 0.2 -- 0.2 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -- 1 -- 1 -max_rows: null -subsequence_start_mode: distribute diff --git a/tests/configs/preprocess-test-multi-file.yaml b/tests/configs/preprocess-test-multi-file.yaml deleted file mode 100644 index cc76ee4c..00000000 --- a/tests/configs/preprocess-test-multi-file.yaml +++ /dev/null @@ -1,21 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-categorical-multi-file -merge_output: false -read_format: csv -process_by_file: false -write_format: pt -selected_columns: null - -batches_per_file: 1 - -split_ratios: -- 0.8 -- 0.1 -- 0.1 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -- 1 -- 1 -max_rows: null diff --git a/tests/configs/preprocess-test-real.yaml b/tests/configs/preprocess-test-real.yaml deleted file mode 100644 index 538ba285..00000000 --- a/tests/configs/preprocess-test-real.yaml +++ /dev/null @@ -1,17 +0,0 @@ -project_root: tests/project_folder -data_path: tests/resources/source_data/test-data-real-5.csv -merge_output: true -read_format: csv -write_format: parquet -selected_columns: null - -split_ratios: -- 0.5 -- 0.5 -stored_context_width: 9 -max_target_offset: 1 -stride_by_split: -- 1 -- 1 -max_rows: null -n_cores: 1 diff --git a/tests/configs/train-test-categorical-bert.yaml b/tests/configs/train-test-categorical-bert.yaml deleted file mode 100644 index c6b4187c..00000000 --- a/tests/configs/train-test-categorical-bert.yaml +++ /dev/null @@ -1,68 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-bert -read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-1-lookahead-0.json - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: false -export_pt: true -export_with_dropout: false - -model_spec: - initial_embedding_dim: 16 - dim_model: 16 - n_head: 2 - dim_feedforward: 8 - num_layers: 1 - prediction_length: 8 - activation_fn: relu - normalization: layer_norm - positional_encoding: learned - attention_type: mha - norm_first: false - n_kv_heads: 2 - rope_theta: 10000.0 -training_spec: - training_objective: bert - bert_spec: - masking_probability: 0.5 - replacement_distribution: - masked: 0.8 - random: 0.1 - identical: 0.1 - span_masking: - type: GeometricDistribution - p: 1.0 - device: cpu - torch_compile: none - epochs: 1 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - learning_rate: 0.001 - accumulation_steps: null - dropout: 0.0 - criterion: - itemId: CrossEntropyLoss - loss_weights: - itemId: 1.0 - optimizer: - name: Adam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - calculate_validation_loss_on_initialization: false - continue_training: false - enforce_determinism: true - layer_autocast: false diff --git a/tests/configs/train-test-categorical-inf-size-1.yaml b/tests/configs/train-test-categorical-inf-size-1.yaml deleted file mode 100644 index 5c915af2..00000000 --- a/tests/configs/train-test-categorical-inf-size-1.yaml +++ /dev/null @@ -1,61 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-1-inf-size -read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-1.json - -input_columns: [itemId] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: true -export_pt: false - -model_spec: - initial_embedding_dim: 200 - dim_model: 200 - n_head: 2 - dim_feedforward: 12 - num_layers: 2 - prediction_length: 3 - activation_fn: swiglu - normalization: rmsnorm - positional_encoding: learned - attention_type: mha - norm_first: false - n_kv_heads: 2 - rope_theta: 10000.0 -training_spec: - training_objective: causal - device: cpu - epochs: 3 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - class_share_log_columns: ["itemId"] - learning_rate: 0.003 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - loss_weights: - itemId: 1.0 - optimizer: - name: QHAdam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - continue_training: false - enforce_determinism: false - layer_type_dtypes: - embedding: bfloat16 - linear: bfloat16 - norm: bfloat16 - decoder: bfloat16 diff --git a/tests/configs/train-test-categorical-inf-size-3.yaml b/tests/configs/train-test-categorical-inf-size-3.yaml deleted file mode 100644 index 93165300..00000000 --- a/tests/configs/train-test-categorical-inf-size-3.yaml +++ /dev/null @@ -1,68 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-3-inf-size -read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json - -input_columns: [itemId, supCat1, supCat2] -target_columns: [itemId, supCat1, supCat2] -target_column_types: - itemId: categorical - supCat1: categorical - supCat2: categorical - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: false -export_pt: true - -model_spec: - initial_embedding_dim: 100 - feature_embedding_dims: - itemId: 50 - supCat1: 25 - supCat2: 25 - joint_embedding_dim: 200 - dim_model: 200 - n_head: 2 - dim_feedforward: 12 - num_layers: 2 - prediction_length: 3 - activation_fn: swiglu - normalization: layer_norm - positional_encoding: rope - attention_type: mqa - norm_first: false - n_kv_heads: 1 - rope_theta: 10000.0 -training_spec: - training_objective: causal - device: cpu - epochs: 3 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - class_share_log_columns: ["itemId"] - learning_rate: 0.003 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - supCat1: CrossEntropyLoss - supCat2: CrossEntropyLoss - optimizer: - name: QHAdam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - continue_training: false - enforce_determinism: true - layer_autocast: false - layer_type_dtypes: - embedding: bfloat16 - linear: bfloat16 - norm: bfloat16 diff --git a/tests/configs/train-test-categorical-multitarget-eager.yaml b/tests/configs/train-test-categorical-multitarget-eager.yaml deleted file mode 100644 index 2dfbd2c5..00000000 --- a/tests/configs/train-test-categorical-multitarget-eager.yaml +++ /dev/null @@ -1,78 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-multitarget-5-eager -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json - -input_columns: null -target_columns: [itemId, supCat1, supReal3] -target_column_types: - itemId: categorical - supCat1: categorical - supReal3: real -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true - -model_spec: - initial_embedding_dim: 16 - feature_embedding_dims: - itemId: 6 - supCat1: 4 - supReal2: 1 - supReal3: 1 - supCat4: 4 - dim_model: 16 - n_head: 2 - dim_feedforward: 10 - num_layers: 2 - prediction_length: 1 - - activation_fn: gelu - normalization: rmsnorm - positional_encoding: rope - attention_type: gqa - norm_first: true - n_kv_heads: 1 - rope_theta: 10000.0 - -training_spec: - training_objective: causal - device: cpu - epochs: 3 - save_interval_epochs: 1 - batch_size: 10 - learning_rate: 0.003 - log_interval: 1 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - supCat1: CrossEntropyLoss - supReal3: MSELoss - loss_weights: - itemId: 1.0 - supCat1: 0.5 - supReal3: 0.5 - optimizer: - name: AdamW - scheduler: - name: OneCycleLR - max_lr: 0.001 - pct_start: 0.03 - div_factor: 1000 - final_div_factor: 1000 - anneal_strategy: cos - total_steps: 100 - three_phase: false - scheduler_step_on: 'batch' - continue_training: false - enforce_determinism: true - layer_autocast: true - layer_type_dtypes: - linear: bfloat16 - decoder: bfloat16 - embedding: float32 - norm: float32 - load_full_data_to_ram: true diff --git a/tests/configs/train-test-categorical-multitarget.yaml b/tests/configs/train-test-categorical-multitarget.yaml deleted file mode 100644 index 4f1a83c1..00000000 --- a/tests/configs/train-test-categorical-multitarget.yaml +++ /dev/null @@ -1,79 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-multitarget-5 -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json - - -input_columns: null -target_columns: [itemId, supCat1, supReal3] -target_column_types: - itemId: categorical - supCat1: categorical - supReal3: real -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true - -model_spec: - initial_embedding_dim: 16 - feature_embedding_dims: - itemId: 6 - supCat1: 4 - supReal2: 1 - supReal3: 1 - supCat4: 4 - dim_model: 16 - n_head: 2 - dim_feedforward: 10 - num_layers: 2 - prediction_length: 1 - - activation_fn: gelu - normalization: rmsnorm - positional_encoding: rope - attention_type: gqa - norm_first: true - n_kv_heads: 1 - rope_theta: 10000.0 - -training_spec: - training_objective: causal - device: cpu - epochs: 3 - save_interval_epochs: 1 - batch_size: 10 - learning_rate: 0.003 - log_interval: 1 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - supCat1: CrossEntropyLoss - supReal3: MSELoss - loss_weights: - itemId: 1.0 - supCat1: 0.5 - supReal3: 0.5 - optimizer: - name: AdamW - scheduler: - name: OneCycleLR - max_lr: 0.001 - pct_start: 0.03 - div_factor: 1000 - final_div_factor: 1000 - anneal_strategy: cos - total_steps: 100 - three_phase: false - scheduler_step_on: 'batch' - continue_training: false - enforce_determinism: true - layer_autocast: true - layer_type_dtypes: - linear: bfloat16 - decoder: bfloat16 - embedding: float32 - norm: float32 - load_full_data_to_ram: false diff --git a/tests/configs/train-test-categorical.yaml b/tests/configs/train-test-categorical.yaml deleted file mode 100644 index e10b673f..00000000 --- a/tests/configs/train-test-categorical.yaml +++ /dev/null @@ -1,60 +0,0 @@ -project_root: tests/project_folder -model_name: default -read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-5.json - -input_columns: null -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: true -export_pt: true - -model_spec: - initial_embedding_dim: 100 - joint_embedding_dim: 200 - dim_model: 200 - n_head: 2 - dim_feedforward: 12 - num_layers: 2 - prediction_length: 1 - activation_fn: relu - normalization: rmsnorm - positional_encoding: rope - attention_type: mqa - norm_first: true - n_kv_heads: 1 - rope_theta: 1000.0 -training_spec: - training_objective: causal - device: cpu - torch_compile: "outer" - epochs: 3 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - class_share_log_columns: ["itemId"] - learning_rate: 0.003 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - loss_weights: - itemId: 1.0 - class_weights: - itemId: [1.0, 1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] - optimizer: - name: QHAdam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - continue_training: false - enforce_determinism: true diff --git a/tests/configs/train-test-distributed-lazy-parquet.yaml b/tests/configs/train-test-distributed-lazy-parquet.yaml deleted file mode 100644 index 1e50b40f..00000000 --- a/tests/configs/train-test-distributed-lazy-parquet.yaml +++ /dev/null @@ -1,52 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-distributed-lazy-parquet -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-categorical-multitarget-5.json - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 2 - -export_generative_model: true -export_embedding_model: false -export_onnx: true -export_pt: true - -model_spec: - initial_embedding_dim: 16 - dim_model: 16 - n_head: 2 - dim_feedforward: 16 - num_layers: 1 - prediction_length: 1 - -training_spec: - training_objective: causal - device: cpu - epochs: 3 - log_interval: 1 - save_interval_epochs: 1 - batch_size: 5 - learning_rate: 0.001 - criterion: - itemId: CrossEntropyLoss - optimizer: - name: Adam - scheduler: - name: StepLR - step_size: 1 - gamma: 0.1 - - # --- The Magic Combination --- - distributed: true # Triggers mp.spawn + gloo - data_parallelism: 'DDP' - world_size: 2 - backend: gloo - sampling_strategy: 'oversampling' - num_workers: 2 # Triggers thread contention - load_full_data_to_ram: false # Triggers SequifierDatasetFromFolderParquetLazy - continue_training: false diff --git a/tests/configs/train-test-distributed.yaml b/tests/configs/train-test-distributed.yaml deleted file mode 100644 index ea0efe24..00000000 --- a/tests/configs/train-test-distributed.yaml +++ /dev/null @@ -1,52 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json -model_name: model-categorical-distributed -training_data_path: data/test-data-categorical-3-split0 # Generated by existing preprocess tests -validation_data_path: data/test-data-categorical-3-split1 -read_format: pt - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 2 - -export_generative_model: true -export_embedding_model: false -export_onnx: true -export_pt: true - -model_spec: - initial_embedding_dim: 16 - dim_model: 16 - n_head: 2 - dim_feedforward: 16 - num_layers: 1 - prediction_length: 1 - -training_spec: - training_objective: causal - device: cpu - epochs: 3 - log_interval: 1 - save_interval_epochs: 1 - batch_size: 5 - learning_rate: 0.001 - criterion: - itemId: CrossEntropyLoss - optimizer: - name: Adam - scheduler: - name: StepLR - step_size: 1 - gamma: 0.1 - - # --- Mac Distributed Settings --- - distributed: true - data_parallelism: 'DDP' - world_size: 2 - backend: gloo - load_full_data_to_ram: true - continue_training: false diff --git a/tests/configs/train-test-lazy.yaml b/tests/configs/train-test-lazy.yaml deleted file mode 100644 index 348c1ada..00000000 --- a/tests/configs/train-test-lazy.yaml +++ /dev/null @@ -1,48 +0,0 @@ -project_root: tests/project_folder -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json -model_name: model-categorical-lazy -training_data_path: data/test-data-categorical-3-split0 -validation_data_path: data/test-data-categorical-3-split1 -read_format: pt - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 2 - -export_generative_model: true -export_embedding_model: false -export_onnx: true -export_pt: true - -model_spec: - initial_embedding_dim: 16 - dim_model: 16 - n_head: 2 - dim_feedforward: 16 - num_layers: 1 - prediction_length: 1 - -training_spec: - training_objective: causal - device: cpu - epochs: 3 - log_interval: 1 - save_interval_epochs: 1 - batch_size: 5 - learning_rate: 0.001 - criterion: - itemId: CrossEntropyLoss - optimizer: - name: Adam - scheduler: - name: StepLR - step_size: 1 - gamma: 0.1 - - # --- Lazy Loading Setting --- - load_full_data_to_ram: false - continue_training: false diff --git a/tests/configs/train-test-real-bert.yaml b/tests/configs/train-test-real-bert.yaml deleted file mode 100644 index 89ec8ad2..00000000 --- a/tests/configs/train-test-real-bert.yaml +++ /dev/null @@ -1,68 +0,0 @@ -project_root: tests/project_folder -model_name: model-real-bert -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-real-1.json - -input_columns: [itemValue] -target_columns: [itemValue] -target_column_types: - itemValue: real - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: false -export_onnx: false -export_pt: true -export_with_dropout: false - -model_spec: - initial_embedding_dim: 16 - dim_model: 16 - n_head: 2 - dim_feedforward: 8 - num_layers: 1 - prediction_length: 8 - activation_fn: relu - normalization: layer_norm - positional_encoding: learned - attention_type: mha - norm_first: false - n_kv_heads: 2 - rope_theta: 10000.0 -training_spec: - training_objective: bert - bert_spec: - masking_probability: 0.5 - replacement_distribution: - masked: 0.8 - random: 0.1 - identical: 0.1 - span_masking: - type: GeometricDistribution - p: 1.0 - device: cpu - torch_compile: none - epochs: 1 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - learning_rate: 0.001 - accumulation_steps: null - dropout: 0.0 - criterion: - itemValue: MSELoss - loss_weights: - itemValue: 1.0 - optimizer: - name: Adam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - calculate_validation_loss_on_initialization: false - continue_training: false - enforce_determinism: true - layer_autocast: false diff --git a/tests/configs/train-test-real.yaml b/tests/configs/train-test-real.yaml deleted file mode 100644 index e44db6a1..00000000 --- a/tests/configs/train-test-real.yaml +++ /dev/null @@ -1,60 +0,0 @@ -project_root: tests/project_folder -model_name: default -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-real-1.json - -input_columns: null -target_columns: [itemValue] -target_column_types: - itemValue: real - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: true -export_pt: true -export_with_dropout: true - -model_spec: - initial_embedding_dim: 100 - dim_model: 100 - n_head: 2 - dim_feedforward: 10 - num_layers: 2 - activation_fn: relu - normalization: layer_norm - positional_encoding: learned - attention_type: mha - norm_first: false - n_kv_heads: null - rope_theta: 10000.0 - prediction_length: 1 -training_spec: - training_objective: causal - device: cpu - torch_compile: "inner" - epochs: 3 - save_interval_epochs: 1 - save_latest_interval_minutes: 0 - save_batch_interval_minutes: 0 - batch_size: 20 - log_interval: 1 - learning_rate: 0.003 - accumulation_steps: null - dropout: 0.3 - criterion: - itemValue: MSELoss - optimizer: - name: AdEMAMix - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - continue_training: false - enforce_determinism: true - layer_type_dtypes: - embedding: bfloat16 - linear: bfloat16 - norm: bfloat16 diff --git a/tests/configs/train-test-resume-epoch.yaml b/tests/configs/train-test-resume-epoch.yaml deleted file mode 100644 index 1ab8bc7f..00000000 --- a/tests/configs/train-test-resume-epoch.yaml +++ /dev/null @@ -1,59 +0,0 @@ -project_root: tests/project_folder -model_name: model-real-1-from-epoch-checkpoint -read_format: parquet -metadata_config_path: configs/metadata_configs/test-data-real-1.json - -input_columns: null -target_columns: [itemValue] -target_column_types: - itemValue: real - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: false -export_embedding_model: true -export_onnx: true -export_pt: true -export_with_dropout: false - -model_spec: - initial_embedding_dim: 100 - dim_model: 100 - n_head: 2 - dim_feedforward: 10 - num_layers: 2 - activation_fn: relu - normalization: layer_norm - positional_encoding: learned - attention_type: mha - norm_first: false - n_kv_heads: null - rope_theta: 10000.0 - prediction_length: 1 -training_spec: - training_objective: causal - device: cpu - epochs: 3 - save_interval_epochs: 1 - save_latest_interval_minutes: null - save_batch_interval_minutes: null - batch_size: 20 - log_interval: 1 - learning_rate: 0.003 - accumulation_steps: null - dropout: 0.3 - criterion: - itemValue: MSELoss - optimizer: - name: AdEMAMix - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - continue_training: true - enforce_determinism: true - layer_type_dtypes: - embedding: bfloat16 - linear: bfloat16 - norm: bfloat16 diff --git a/tests/configs/train-test-resume-mid-epoch.yaml b/tests/configs/train-test-resume-mid-epoch.yaml deleted file mode 100644 index 7f4e6c2c..00000000 --- a/tests/configs/train-test-resume-mid-epoch.yaml +++ /dev/null @@ -1,61 +0,0 @@ -project_root: tests/project_folder -model_name: model-categorical-3-from-mid-epoch-checkpoint -read_format: pt -metadata_config_path: configs/metadata_configs/test-data-categorical-3.json - -input_columns: [itemId, supCat1] -target_columns: [itemId] -target_column_types: - itemId: categorical - -context_length: 8 -inference_batch_size: 10 - -export_generative_model: true -export_embedding_model: true -export_onnx: true -export_pt: true - -model_spec: - initial_embedding_dim: 100 - joint_embedding_dim: 200 - dim_model: 200 - n_head: 2 - dim_feedforward: 12 - num_layers: 2 - prediction_length: 1 - activation_fn: relu - normalization: rmsnorm - positional_encoding: rope - attention_type: mqa - norm_first: true - n_kv_heads: 1 - rope_theta: 1000.0 -training_spec: - training_objective: causal - device: cpu - torch_compile: "outer" - epochs: 3 - save_interval_epochs: 1 - batch_size: 5 - log_interval: 1 - class_share_log_columns: ["itemId"] - learning_rate: 0.003 - accumulation_steps: 2 - dropout: 0.3 - criterion: - itemId: CrossEntropyLoss - loss_weights: - itemId: 1.0 - supCat1: 1.0 - class_weights: - itemId: [1.0, 1.0, 1.0, 1.5, 0.5, 0.6, 1.2, 0.66666667, 1.5, 1.2, 0.75, 0.85714286, 0.75, 0.85714286, 0.75, 0.6, 2.,1.5, 1.5, 1.0, 1.0, 0.66666667, 0.75, 0.5, 0.75, 2.0, 1.2, 3.0, 1.0, 0.75, 1.0, 0.85714286, 1.0] - optimizer: - name: QHAdam - scheduler: - name: StepLR - step_size: 1.0 - gamma: 0.99 - scheduler_step_on: epoch - continue_training: true - enforce_determinism: true diff --git a/tests/integration-test-log.txt b/tests/integration-test-log.txt deleted file mode 100644 index 5d4ec365..00000000 --- a/tests/integration-test-log.txt +++ /dev/null @@ -1,80 +0,0 @@ -sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yaml --data-path tests/resources/source_data/test-data-categorical-1.csv --selected-columns None -sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-1.csv --selected-columns itemValue -sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yaml --data-path tests/resources/source_data/test-data-categorical-3.csv --selected-columns None -sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-3.csv --selected-columns itemValue supReal1 supReal2 -sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yaml --data-path tests/resources/source_data/test-data-categorical-5.csv --selected-columns None -sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-5.csv --selected-columns itemValue supReal1 supReal2 supReal3 supReal4 -sequifier preprocess --config-path tests/configs/preprocess-test-categorical.yaml --data-path tests/resources/source_data/test-data-categorical-50.csv --selected-columns None -sequifier preprocess --config-path tests/configs/preprocess-test-real.yaml --data-path tests/resources/source_data/test-data-real-50.csv --selected-columns itemValue supReal1 supReal2 supReal3 supReal4 supReal5 supReal6 supReal7 supReal8 supReal9 supReal10 supReal11 supReal12 supReal13 supReal14 supReal15 supReal16 supReal17 supReal18 supReal19 supReal20 supReal21 supReal22 supReal23 supReal24 supReal25 supReal26 supReal27 supReal28 supReal29 supReal30 supReal31 supReal32 supReal33 supReal34 supReal35 supReal36 supReal37 supReal38 supReal39 supReal40 supReal41 supReal42 supReal43 supReal44 supReal45 supReal46 supReal47 supReal48 supReal49 -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-lookahead-0.yaml --data-path tests/resources/source_data/test-data-categorical-1-lookahead-0.csv --selected-columns None -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-multitarget.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-multi-file.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-interrupted.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-exact.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-exact-pt.yaml -sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-grid.yaml -sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-sample.yaml -sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-bert.yaml -sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-bayesian.yaml -sequifier hyperparameter-search --config-path tests/configs/hyperparameter-search-custom-eval.yaml -sequifier train --config-path tests/configs/train-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-1.json --model-name model-categorical-1 --input-columns itemId -sequifier train --config-path tests/configs/train-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-1.json --model-name model-real-1 --input-columns None -sequifier train --config-path tests/configs/train-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-3.json --model-name model-categorical-3 --input-columns itemId supCat1 -sequifier train --config-path tests/configs/train-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-3.json --model-name model-real-3 --input-columns None -sequifier train --config-path tests/configs/train-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-5.json --model-name model-categorical-5 --input-columns itemId supCat1 supCat2 supCat4 -sequifier train --config-path tests/configs/train-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-5.json --model-name model-real-5 --input-columns None -sequifier train --config-path tests/configs/train-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-50.json --model-name model-categorical-50 --input-columns itemId supCat1 supCat2 supCat3 supCat4 supCat5 supCat6 supCat7 supCat8 supCat9 supCat10 supCat11 supCat12 supCat13 supCat14 supCat15 supCat16 supCat17 supCat18 supCat19 supCat20 supCat21 supCat22 supCat23 supCat24 supCat25 supCat26 supCat27 supCat28 supCat29 supCat30 supCat31 supCat32 supCat33 supCat34 supCat35 supCat36 supCat37 supCat38 supCat39 supCat40 supCat41 supCat42 supCat43 supCat44 supCat45 supCat46 supCat47 supCat48 supCat49 -sequifier train --config-path tests/configs/train-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-50.json --model-name model-real-50 --input-columns None -sequifier train --config-path tests/configs/train-test-categorical-inf-size-1.yaml -sequifier train --config-path tests/configs/train-test-categorical-inf-size-3.yaml -sequifier train --config-path tests/configs/train-test-categorical-bert.yaml -sequifier train --config-path tests/configs/train-test-real-bert.yaml -sequifier train --config-path tests/configs/train-test-categorical-multitarget.yaml -sequifier train --config-path tests/configs/train-test-categorical-multitarget-eager.yaml -sequifier train --config-path tests/configs/train-test-distributed.yaml -sequifier train --config-path tests/configs/train-test-distributed-lazy-parquet.yaml -sequifier train --config-path tests/configs/train-test-lazy.yaml -sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-1.json --model-path models/sequifier-model-categorical-1-best-3.onnx --data-path data/test-data-categorical-1-split2 --input-columns itemId -sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-1.json --model-path models/sequifier-model-real-1-best-3.pt --data-path data/test-data-real-1-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-3.json --model-path models/sequifier-model-categorical-3-best-3.onnx --data-path data/test-data-categorical-3-split2 --input-columns itemId supCat1 -sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-3.json --model-path models/sequifier-model-real-3-best-3.pt --data-path data/test-data-real-3-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-5.json --model-path models/sequifier-model-categorical-5-best-3.onnx --data-path data/test-data-categorical-5-split2 --input-columns itemId supCat1 supCat2 supCat4 -sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-5.json --model-path models/sequifier-model-real-5-best-3.pt --data-path data/test-data-real-5-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical.yaml --metadata-config-path configs/metadata_configs/test-data-categorical-50.json --model-path models/sequifier-model-categorical-50-best-3.onnx --data-path data/test-data-categorical-50-split2 --input-columns itemId supCat1 supCat2 supCat3 supCat4 supCat5 supCat6 supCat7 supCat8 supCat9 supCat10 supCat11 supCat12 supCat13 supCat14 supCat15 supCat16 supCat17 supCat18 supCat19 supCat20 supCat21 supCat22 supCat23 supCat24 supCat25 supCat26 supCat27 supCat28 supCat29 supCat30 supCat31 supCat32 supCat33 supCat34 supCat35 supCat36 supCat37 supCat38 supCat39 supCat40 supCat41 supCat42 supCat43 supCat44 supCat45 supCat46 supCat47 supCat48 supCat49 -sequifier infer --config-path tests/configs/infer-test-real.yaml --metadata-config-path configs/metadata_configs/test-data-real-50.json --model-path models/sequifier-model-real-50-best-3.pt --data-path data/test-data-real-50-split1.parquet --input-columns None -sequifier infer --config-path tests/configs/infer-test-categorical-multitarget.yaml -sequifier infer --config-path tests/configs/infer-test-real-autoregression.yaml --input-columns itemValue --randomize -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-1.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3.yaml -sequifier infer --config-path tests/configs/infer-test-distributed.yaml -sequifier infer --config-path tests/configs/infer-test-distributed-parquet.yaml -sequifier infer --config-path tests/configs/infer-test-lazy.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-autoregression.yaml --input-columns itemId -sequifier infer --config-path tests/configs/infer-test-categorical-embedding.yaml --input-columns itemId -sequifier infer --config-path tests/configs/infer-test-categorical-inf-size-3-embedding.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-bert.yaml -sequifier infer --config-path tests/configs/infer-test-categorical-bert-embedding.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats.yaml -sequifier preprocess --config-path tests/configs/preprocess-test-categorical-precomputed-stats-negative.yaml -sequifier train --config-path tests/configs/train-test-resume-epoch.yaml -sequifier train --config-path tests/configs/train-test-resume-mid-epoch.yaml -sequifier visualize-training model-categorical-1 --project-root tests/project_folder -sequifier visualize-training model-categorical-1-inf-size --project-root tests/project_folder -sequifier visualize-training model-categorical-3 --project-root tests/project_folder -sequifier visualize-training model-categorical-3-from-mid-epoch-checkpoint --project-root tests/project_folder -sequifier visualize-training model-categorical-3-inf-size --project-root tests/project_folder -sequifier visualize-training model-categorical-5 --project-root tests/project_folder -sequifier visualize-training model-categorical-50 --project-root tests/project_folder -sequifier visualize-training model-categorical-bert --project-root tests/project_folder -sequifier visualize-training model-categorical-distributed --project-root tests/project_folder -sequifier visualize-training model-categorical-distributed-lazy-parquet --project-root tests/project_folder -sequifier visualize-training model-categorical-lazy --project-root tests/project_folder -sequifier visualize-training model-categorical-multitarget-5 --project-root tests/project_folder -sequifier visualize-training model-categorical-multitarget-5-eager --project-root tests/project_folder -sequifier visualize-training model-real-1 --project-root tests/project_folder -sequifier visualize-training model-real-1-from-epoch-checkpoint --project-root tests/project_folder -sequifier visualize-training model-real-3 --project-root tests/project_folder -sequifier visualize-training model-real-5 --project-root tests/project_folder -sequifier visualize-training model-real-50 --project-root tests/project_folder -sequifier visualize-training model-real-bert --project-root tests/project_folder -sequifier visualize-training test-hp-search-grid-run-0,test-hp-search-grid-run-1,test-hp-search-grid-run-2,test-hp-search-grid-run-3 --project-root tests/project_folder --log-scale --bucket-training-batches 5 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py deleted file mode 100644 index f96c0f61..00000000 --- a/tests/integration/conftest.py +++ /dev/null @@ -1,926 +0,0 @@ -import copy -import os -import shutil -import subprocess -import sys -import time - -import polars as pl -import pytest -import torch -import yaml - -SELECTED_COLUMNS = { - "categorical": { - 1: "itemId", - 3: "itemId supCat1", - 5: "itemId supCat1 supCat2 supCat4", - 50: "itemId " + " ".join([f"supCat{i}" for i in range(1, 50)]), - }, - "real": { - 1: "itemValue", - 3: "itemValue supReal1 supReal2", - 5: "itemValue supReal1 supReal2 supReal3 supReal4", - 50: "itemValue " + " ".join([f"supReal{i}" for i in range(1, 50)]), - }, -} - -TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} - - -def run_and_log(command: str) -> None: - subprocess.run(command, shell=True, check=True) - - with open(os.path.join("tests", "integration-test-log.txt"), "a+") as f: - f.write(f"{command}\n") - - -def pytest_configure(config): - os.environ["SEQUIFIER_TESTING"] = "1" - - -@pytest.fixture(scope="session") -def split_groups(): - return {"categorical": 3, "real": 2} - - -@pytest.fixture(scope="session") -def project_root(): - return os.path.join("tests", "project_folder") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_cat(): - return os.path.join("tests", "configs", "preprocess-test-categorical.yaml") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_cat_multitarget(): - return os.path.join( - "tests", "configs", "preprocess-test-categorical-multitarget.yaml" - ) - - -@pytest.fixture(scope="session") -def preprocessing_config_path_cat_lookahead_0(): - return os.path.join( - "tests", "configs", "preprocess-test-categorical-lookahead-0.yaml" - ) - - -@pytest.fixture(scope="session") -def preprocessing_config_path_multi_file(): - return os.path.join("tests", "configs", "preprocess-test-multi-file.yaml") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_interrupted(): - return os.path.join( - "tests", "configs", "preprocess-test-categorical-interrupted.yaml" - ) - - -@pytest.fixture(scope="session") -def preprocessing_config_path_exact(): - return os.path.join("tests", "configs", "preprocess-test-categorical-exact.yaml") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_exact_pt(): - return os.path.join("tests", "configs", "preprocess-test-categorical-exact-pt.yaml") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_real(): - return os.path.join("tests", "configs", "preprocess-test-real.yaml") - - -@pytest.fixture(scope="session") -def preprocessing_config_path_cat_precomputed_stats(): - return os.path.join( - "tests", "configs", "preprocess-test-categorical-precomputed-stats.yaml" - ) - - -@pytest.fixture(scope="session") -def preprocessing_config_path_cat_precomputed_stats_negative(): - return os.path.join( - "tests", - "configs", - "preprocess-test-categorical-precomputed-stats-negative.yaml", - ) - - -@pytest.fixture(scope="session") -def training_config_path_cat(): - return os.path.join("tests", "configs", "train-test-categorical.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_cat_multitarget(): - return os.path.join("tests", "configs", "train-test-categorical-multitarget.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_cat_multitarget_eager(): - return os.path.join( - "tests", "configs", "train-test-categorical-multitarget-eager.yaml" - ) - - -@pytest.fixture(scope="session") -def training_config_path_real(): - return os.path.join("tests", "configs", "train-test-real.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_cat_inf_size_1(): - return os.path.join("tests", "configs", "train-test-categorical-inf-size-1.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_cat_inf_size_3(): - return os.path.join("tests", "configs", "train-test-categorical-inf-size-3.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_cat_bert(): - return os.path.join("tests", "configs", "train-test-categorical-bert.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_real_bert(): - return os.path.join("tests", "configs", "train-test-real-bert.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_distributed(): - return os.path.join("tests", "configs", "train-test-distributed.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_distributed_lazy_parquet(): - return os.path.join("tests", "configs", "train-test-distributed-lazy-parquet.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_lazy(): - return os.path.join("tests", "configs", "train-test-lazy.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_resume_epoch(): - return os.path.join("tests", "configs", "train-test-resume-epoch.yaml") - - -@pytest.fixture(scope="session") -def training_config_path_resume_mid_epoch(): - return os.path.join("tests", "configs", "train-test-resume-mid-epoch.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat(): - return os.path.join("tests", "configs", "infer-test-categorical.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_multitarget(): - return os.path.join("tests", "configs", "infer-test-categorical-multitarget.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_real(): - return os.path.join("tests", "configs", "infer-test-real.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_inf_size_1(): - return os.path.join("tests", "configs", "infer-test-categorical-inf-size-1.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_inf_size_3(): - return os.path.join("tests", "configs", "infer-test-categorical-inf-size-3.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_bert(): - return os.path.join("tests", "configs", "infer-test-categorical-bert.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_bert_embedding(): - return os.path.join( - "tests", "configs", "infer-test-categorical-bert-embedding.yaml" - ) - - -@pytest.fixture(scope="session") -def inference_config_path_real_autoregression(): - return os.path.join("tests", "configs", "infer-test-real-autoregression.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_categorical_autoregression(): - return os.path.join( - "tests", "configs", "infer-test-categorical-autoregression.yaml" - ) - - -@pytest.fixture(scope="session") -def inference_config_path_embedding(): - return os.path.join("tests", "configs", "infer-test-categorical-embedding.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_cat_inf_size_3_embedding(): - return os.path.join( - "tests", "configs", "infer-test-categorical-inf-size-3-embedding.yaml" - ) - - -@pytest.fixture(scope="session") -def inference_config_path_distributed(): - return os.path.join("tests", "configs", "infer-test-distributed.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_distributed_parquet(): - return os.path.join("tests", "configs", "infer-test-distributed-parquet.yaml") - - -@pytest.fixture(scope="session") -def inference_config_path_lazy(): - return os.path.join("tests", "configs", "infer-test-lazy.yaml") - - -@pytest.fixture(scope="session") -def remove_project_root_contents(project_root): - if os.path.exists(project_root): - shutil.rmtree(project_root) - os.makedirs(project_root) - - log_file_path = os.path.join("tests", "integration-test-log.txt") - if os.path.exists(log_file_path): - os.remove(log_file_path) - - time.sleep(1) - - -@pytest.fixture(scope="session") -def hp_search_configs(): - return { - "grid": os.path.join("tests", "configs", "hyperparameter-search-grid.yaml"), - "sample": os.path.join("tests", "configs", "hyperparameter-search-sample.yaml"), - "bert": os.path.join("tests", "configs", "hyperparameter-search-bert.yaml"), - "bayesian": os.path.join( - "tests", "configs", "hyperparameter-search-bayesian.yaml" - ), - "custom-eval": os.path.join( - "tests", "configs", "hyperparameter-search-custom-eval.yaml" - ), - } - - -def reformat_parameter(attr, param, type): - if attr.endswith("_path"): - if type == "linux->local": - return os.path.join(*param.split("/")) - elif type == "local->linux": - return "/".join(os.path.split(param)) - else: - return param - - -@pytest.fixture(scope="session", autouse=True) -def format_configs_locally( - preprocessing_config_path_cat, - preprocessing_config_path_cat_multitarget, - preprocessing_config_path_cat_lookahead_0, - preprocessing_config_path_real, - preprocessing_config_path_multi_file, - preprocessing_config_path_interrupted, - training_config_path_cat, - training_config_path_cat_multitarget, - training_config_path_real, - training_config_path_cat_inf_size_1, - training_config_path_cat_inf_size_3, - training_config_path_cat_bert, - training_config_path_real_bert, - training_config_path_distributed, - training_config_path_distributed_lazy_parquet, - training_config_path_lazy, - training_config_path_resume_epoch, - training_config_path_resume_mid_epoch, - inference_config_path_cat, - inference_config_path_cat_multitarget, - training_config_path_cat_multitarget_eager, - inference_config_path_real, - inference_config_path_real_autoregression, - inference_config_path_categorical_autoregression, - inference_config_path_cat_inf_size_1, - inference_config_path_cat_inf_size_3, - inference_config_path_cat_bert, - inference_config_path_cat_bert_embedding, - inference_config_path_distributed, - inference_config_path_distributed_parquet, - inference_config_path_lazy, - hp_search_configs, -): - config_paths = [ - preprocessing_config_path_cat, - preprocessing_config_path_cat_multitarget, - preprocessing_config_path_cat_lookahead_0, - preprocessing_config_path_real, - preprocessing_config_path_multi_file, - preprocessing_config_path_interrupted, - training_config_path_cat, - training_config_path_cat_multitarget, - training_config_path_real, - training_config_path_cat_inf_size_1, - training_config_path_cat_inf_size_3, - training_config_path_cat_bert, - training_config_path_real_bert, - training_config_path_distributed, - training_config_path_distributed_lazy_parquet, - training_config_path_lazy, - training_config_path_resume_epoch, - training_config_path_resume_mid_epoch, - inference_config_path_cat, - inference_config_path_cat_multitarget, - training_config_path_cat_multitarget_eager, - inference_config_path_real, - inference_config_path_real_autoregression, - inference_config_path_categorical_autoregression, - inference_config_path_cat_inf_size_1, - inference_config_path_cat_inf_size_3, - inference_config_path_cat_bert, - inference_config_path_cat_bert_embedding, - inference_config_path_distributed, - inference_config_path_distributed_parquet, - inference_config_path_lazy, - hp_search_configs["grid"], - hp_search_configs["sample"], - hp_search_configs["bert"], - hp_search_configs["bayesian"], - hp_search_configs["custom-eval"], - ] - original_configs = {} - - cuda_available = torch.cuda.is_available() - - for config_path in config_paths: - if sys.platform.startswith("win") or cuda_available: - with open(config_path, "r") as f: - config = yaml.safe_load(f) - - original_config = copy.deepcopy(config) - original_configs[config_path] = original_config - - assert config is not None, config_path - - if sys.platform.startswith("win"): - config = { - attr: reformat_parameter(attr, param, "linux->local") - for attr, param in config.items() - } - - if cuda_available: - if "training_spec" in config: - config["training_spec"]["device"] = "cuda" # type: ignore - if "device" in config: - config["device"] = "cuda" - - with open(config_path, "w") as f: - yaml.dump(config, f, default_flow_style=False, sort_keys=False) - - yield - - if sys.platform.startswith("win") or cuda_available: - for config_path in config_paths: - with open(config_path, "w") as f: - yaml.dump( - original_configs[config_path], - f, - default_flow_style=False, - sort_keys=False, - ) - - -@pytest.fixture(scope="session") -def copy_interrupted_data(project_root, remove_project_root_contents): - os.makedirs(os.path.join(project_root, "data"), exist_ok=True) - - source_path = os.path.join( - "tests", "resources", "source_data", "test-data-categorical-1-interrupted-temp" - ) - target_path = os.path.join( - project_root, "data", "test-data-categorical-1-interrupted-temp" - ) - - shutil.copytree(source_path, target_path, dirs_exist_ok=True) - - -@pytest.fixture(scope="session") -def run_preprocessing( - project_root, - preprocessing_config_path_cat, - preprocessing_config_path_cat_multitarget, - preprocessing_config_path_cat_lookahead_0, - preprocessing_config_path_real, - preprocessing_config_path_multi_file, - preprocessing_config_path_interrupted, - preprocessing_config_path_exact, - preprocessing_config_path_exact_pt, - format_configs_locally, - remove_project_root_contents, - copy_interrupted_data, -): - for data_number in [1, 3, 5, 50]: - data_path_cat = os.path.join( - "tests", - "resources", - "source_data", - f"test-data-categorical-{data_number}.csv", - ) - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_cat} --data-path {data_path_cat} --selected-columns None" - ) - - data_path_real = os.path.join( - "tests", "resources", "source_data", f"test-data-real-{data_number}.csv" - ) - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_real} --data-path {data_path_real} --selected-columns {SELECTED_COLUMNS['real'][data_number]}" - ) - - data_path_cat_lookahead_0 = os.path.join( - "tests", - "resources", - "source_data", - "test-data-categorical-1-lookahead-0.csv", - ) - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_cat_lookahead_0} " - f"--data-path {data_path_cat_lookahead_0} --selected-columns None " - ) - - source_path = os.path.join("tests", "resources", "source_configs", "id_maps") - target_path = os.path.join(project_root, "configs", "id_maps") - shutil.copytree(source_path, target_path, dirs_exist_ok=True) - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_cat_multitarget}" - ) - shutil.rmtree(target_path) - - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_multi_file}" - ) - - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_interrupted}" - ) - - run_and_log(f"sequifier preprocess --config-path {preprocessing_config_path_exact}") - - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_exact_pt}" - ) - - source_path = os.path.join( - "tests", - "resources", - "source_data", - "test-data-real-1-split1-autoregression.csv", - ) - - target_path = os.path.join( - "tests", "project_folder", "data", "test-data-real-1-split1-autoregression.csv" - ) - - shutil.copyfile(source_path, target_path) - - os.makedirs(os.path.join(project_root, "scripts")) - source_path = os.path.join( - "tests", "resources", "source_scripts", "hp_search_eval_script.py" - ) - target_path = os.path.join(project_root, "scripts", "hp_search_eval_script.py") - shutil.copyfile(source_path, target_path) - - source_path = os.path.join( - "tests", "configs", "hyperparameter-search-custom-eval-inference.yaml" - ) - target_path = os.path.join( - project_root, "configs", "hyperparameter-search-custom-eval-inference.yaml" - ) - shutil.copyfile(source_path, target_path) - - -@pytest.fixture(scope="session") -def run_training( - run_preprocessing, - project_root, - training_config_path_cat, - training_config_path_real, - training_config_path_cat_inf_size_1, - training_config_path_cat_inf_size_3, - training_config_path_cat_bert, - training_config_path_real_bert, - training_config_path_distributed, - training_config_path_distributed_lazy_parquet, - training_config_path_lazy, - training_config_path_cat_multitarget, - training_config_path_cat_multitarget_eager, -): - for model_number in [1, 3, 5, 50]: - metadata_config_path_cat = os.path.join( - "configs", "metadata_configs", f"test-data-categorical-{model_number}.json" - ) - model_name_cat = f"model-categorical-{model_number}" - run_and_log( - f"sequifier train --config-path {training_config_path_cat} --metadata-config-path {metadata_config_path_cat} --model-name {model_name_cat} --input-columns {SELECTED_COLUMNS['categorical'][model_number]}" - ) - - metadata_config_path_real = os.path.join( - "configs", "metadata_configs", f"test-data-real-{model_number}.json" - ) - model_name_real = f"model-real-{model_number}" - run_and_log( - f"sequifier train --config-path {training_config_path_real} --metadata-config-path {metadata_config_path_real} --model-name {model_name_real} --input-columns None" - ) - - run_and_log(f"sequifier train --config-path {training_config_path_cat_inf_size_1}") - - run_and_log(f"sequifier train --config-path {training_config_path_cat_inf_size_3}") - - run_and_log(f"sequifier train --config-path {training_config_path_cat_bert}") - - run_and_log(f"sequifier train --config-path {training_config_path_real_bert}") - - run_and_log(f"sequifier train --config-path {training_config_path_cat_multitarget}") - - run_and_log( - f"sequifier train --config-path {training_config_path_cat_multitarget_eager}" - ) - - run_and_log(f"sequifier train --config-path {training_config_path_distributed}") - - run_and_log( - f"sequifier train --config-path {training_config_path_distributed_lazy_parquet}" - ) - - run_and_log(f"sequifier train --config-path {training_config_path_lazy}") - - source_path = os.path.join( - project_root, "models", "sequifier-model-real-1-best-3.pt" - ) - target_path = os.path.join( - project_root, "models", "sequifier-model-real-1-best-3-autoregression.pt" - ) - - shutil.copy(source_path, target_path) - - -@pytest.fixture(scope="session") -def copy_checkpoints(run_training, project_root): - src_ckpt = os.path.join(project_root, "checkpoints", "model-real-1-epoch-1.pt") - dst_ckpt = os.path.join( - project_root, "checkpoints", "model-real-1-from-epoch-checkpoint-epoch-1.pt" - ) - shutil.copy(src_ckpt, dst_ckpt) - - src_ckpt = os.path.join( - project_root, "checkpoints", "model-categorical-3-epoch-1.pt" - ) - dst_ckpt = os.path.join( - project_root, - "checkpoints", - "model-categorical-3-from-mid-epoch-checkpoint-epoch-1.pt", - ) - shutil.copy(src_ckpt, dst_ckpt) - - -@pytest.fixture(scope="session") -def run_training_from_checkpoint( - copy_checkpoints, - training_config_path_resume_epoch, - training_config_path_resume_mid_epoch, -): - run_and_log(f"sequifier train --config-path {training_config_path_resume_epoch}") - - run_and_log( - f"sequifier train --config-path {training_config_path_resume_mid_epoch}" - ) - - -@pytest.fixture(scope="session") -def run_hp_search( - project_root, hp_search_configs, format_configs_locally, run_preprocessing -): - run_and_log( - f"sequifier hyperparameter-search --config-path {hp_search_configs['grid']}" - ) - - run_and_log( - f"sequifier hyperparameter-search --config-path {hp_search_configs['sample']}" - ) - - run_and_log( - f"sequifier hyperparameter-search --config-path {hp_search_configs['bert']}" - ) - - run_and_log( - f"sequifier hyperparameter-search --config-path {hp_search_configs['bayesian']}" - ) - - run_and_log( - f"sequifier hyperparameter-search --config-path {hp_search_configs['custom-eval']}" - ) - - -@pytest.fixture(scope="session") -def copy_autoregression_model(project_root, run_training): - model_path = os.path.join( - project_root, "models", "sequifier-model-categorical-1-best-3.onnx" - ) - target_path = os.path.join( - project_root, - "models", - "sequifier-model-categorical-1-best-3-autoregression.onnx", - ) - shutil.copyfile(model_path, target_path) - - -@pytest.fixture(scope="session") -def run_inference( - project_root, - run_training, - copy_autoregression_model, - inference_config_path_cat, - inference_config_path_cat_multitarget, - inference_config_path_real, - inference_config_path_real_autoregression, - inference_config_path_categorical_autoregression, - inference_config_path_embedding, - inference_config_path_cat_inf_size_1, - inference_config_path_cat_inf_size_3, - inference_config_path_cat_bert, - inference_config_path_cat_bert_embedding, - inference_config_path_distributed, - inference_config_path_distributed_parquet, - inference_config_path_lazy, - inference_config_path_cat_inf_size_3_embedding, -): - for model_number in [1, 3, 5, 50]: - model_path_cat = os.path.join( - "models", f"sequifier-model-categorical-{model_number}-best-3.onnx" - ) - data_path_cat = os.path.join( - "data", f"test-data-categorical-{model_number}-split2" - ) - metadata_config_path_cat = os.path.join( - "configs", "metadata_configs", f"test-data-categorical-{model_number}.json" - ) - run_and_log( - f"sequifier infer --config-path {inference_config_path_cat} --metadata-config-path {metadata_config_path_cat} --model-path {model_path_cat} --data-path {data_path_cat} --input-columns {SELECTED_COLUMNS['categorical'][model_number]}" - ) - - model_path_real = os.path.join( - "models", f"sequifier-model-real-{model_number}-best-3.pt" - ) - data_path_real = os.path.join( - "data", f"test-data-real-{model_number}-split1.parquet" - ) - metadata_config_path_real = os.path.join( - "configs", "metadata_configs", f"test-data-real-{model_number}.json" - ) - run_and_log( - f"sequifier infer --config-path {inference_config_path_real} --metadata-config-path {metadata_config_path_real} --model-path {model_path_real} --data-path {data_path_real} --input-columns None" - ) - - run_and_log( - f"sequifier infer --config-path {inference_config_path_cat_multitarget}" - ) - - run_and_log( - f"sequifier infer --config-path {inference_config_path_real_autoregression} --input-columns {SELECTED_COLUMNS['real'][1]} --randomize" - ) - - run_and_log(f"sequifier infer --config-path {inference_config_path_cat_inf_size_1}") - - run_and_log(f"sequifier infer --config-path {inference_config_path_cat_inf_size_3}") - - run_and_log(f"sequifier infer --config-path {inference_config_path_distributed}") - - run_and_log( - f"sequifier infer --config-path {inference_config_path_distributed_parquet}" - ) - - run_and_log(f"sequifier infer --config-path {inference_config_path_lazy}") - - run_and_log( - f"sequifier infer --config-path {inference_config_path_categorical_autoregression} --input-columns itemId" - ) - - run_and_log( - f"sequifier infer --config-path {inference_config_path_embedding} --input-columns itemId" - ) - - run_and_log( - f"sequifier infer --config-path {inference_config_path_cat_inf_size_3_embedding}" - ) - - run_and_log(f"sequifier infer --config-path {inference_config_path_cat_bert}") - - run_and_log( - f"sequifier infer --config-path {inference_config_path_cat_bert_embedding}" - ) - - -@pytest.fixture() -def model_names_preds(): - model_names_preds = [ - f"model-{variant}-{model_number}-best-3" - for variant in ["categorical", "real"] - for model_number in [1, 3, 5, 50] - ] - model_names_preds += [ - "model-categorical-multitarget-5-best-3", - "model-categorical-multitarget-5-last-3", - "model-real-1-best-3-autoregression", - "model-categorical-1-best-3-autoregression", - "model-categorical-1-inf-size-best-3", - "model-categorical-3-inf-size-best-3", - "model-categorical-distributed-best-3", - "model-categorical-lazy-best-3", - ] - - return model_names_preds - - -@pytest.fixture() -def model_names_probs(): - model_names_probs = [ - f"model-categorical-{model_number}-best-3-itemId" - for model_number in [1, 3, 5, 50] - ] - model_names_probs += [ - f"model-categorical-multitarget-5-best-3-{col}" for col in ["itemId", "supCat1"] - ] - model_names_probs += [ - f"model-categorical-3-inf-size-best-3-{col}" - for col in ["itemId", "supCat1", "supCat2"] - ] - return model_names_probs - - -@pytest.fixture() -def model_names_embeddings(): - model_names_embeddings = [ - "model-categorical-1-best-embedding-3", - "model-categorical-3-inf-size-best-embedding-3", - ] - return model_names_embeddings - - -@pytest.fixture() -def targets(model_names_preds, model_names_probs, model_names_embeddings): - target_dict = {"preds": {}, "probs": {}, "embeds": {}} - for model_name in model_names_preds: - target_type = "categorical" if "categorical" in model_name else "real" - file_name = f"sequifier-{model_name}-predictions" - target_path = os.path.join( - "tests", "resources", "target_outputs", "predictions", file_name - ) - target_dict["preds"][model_name] = read_multi_file_preds( - target_path, target_type - ) - - for model_name in model_names_probs: - target_type = "categorical" if "categorical" in model_name else "real" - file_name = f"sequifier-{model_name}-probabilities" - target_path = os.path.join( - "tests", "resources", "target_outputs", "probabilities", file_name - ) - target_dict["probs"][model_name] = read_multi_file_preds( - target_path, target_type - ) - - for model_name in model_names_embeddings: - target_type = "categorical" if "categorical" in model_name else "real" - file_name = f"sequifier-{model_name}-embeddings" - target_path = os.path.join( - "tests", "resources", "target_outputs", "embeddings", file_name - ) - target_dict["embeds"][model_name] = read_multi_file_preds( - target_path, target_type - ) - - return target_dict - - -def read_multi_file_preds(path, target_type, file_suffix=None): - dtype = ( - { - **{TARGET_VARIABLE_DICT[target_type]: str}, - **{f"supCat{i+1}": str for i in range(50)}, - } - if target_type == "categorical" - else None - ) - if target_type == "categorical": - contents = [] - for root, dirs, files in os.walk(path): - for file in sorted(list(files)): - if file_suffix is None or file.endswith(file_suffix): - contents.append( - pl.read_csv(os.path.join(root, file), schema_overrides=dtype) - ) - assert len(contents) > 0, f"no files found for {path}" - return pl.concat(contents, how="vertical") - else: - return pl.read_csv(f"{path}.csv", separator=",", schema_overrides=dtype) - - -@pytest.fixture() -def predictions(run_inference, model_names_preds, project_root): - preds = {} - for model_name in model_names_preds: - target_type = "categorical" if "categorical" in model_name else "real" - - prediction_path = os.path.join( - project_root, - "outputs", - "predictions", - f"sequifier-{model_name}-predictions", - ) - - preds[model_name] = read_multi_file_preds(prediction_path, target_type) - - return preds - - -@pytest.fixture() -def probabilities(run_inference, model_names_probs, project_root): - probs = {} - for model_name in model_names_probs: - probabilities_path = os.path.join( - project_root, - "outputs", - "probabilities", - f"sequifier-{model_name}-probabilities", - ) - probs[model_name] = read_multi_file_preds( - probabilities_path, "categorical", "csv" - ) - - return probs - - -@pytest.fixture() -def embeddings(run_inference, model_names_embeddings, project_root): - embeds = {} - for model_name in model_names_embeddings: - embeddings_path = os.path.join( - project_root, - "outputs", - "embeddings", - f"sequifier-{model_name}-embeddings", - ) - embeds[model_name] = read_multi_file_preds( - embeddings_path, "categorical", "csv" - ) - return embeds - - -@pytest.fixture() -def bert_predictions(run_inference, project_root): - prediction_path = os.path.join( - project_root, - "outputs", - "predictions", - "sequifier-model-categorical-bert-best-1-predictions", - ) - return read_multi_file_preds(prediction_path, "categorical") - - -@pytest.fixture() -def bert_probabilities(run_inference, project_root): - probabilities_path = os.path.join( - project_root, - "outputs", - "probabilities", - "sequifier-model-categorical-bert-best-1-itemId-probabilities", - ) - return read_multi_file_preds(probabilities_path, "categorical", "csv") - - -@pytest.fixture() -def bert_embeddings(run_inference, project_root): - embeddings_path = os.path.join( - project_root, - "outputs", - "embeddings", - "sequifier-model-categorical-bert-best-embedding-1-embeddings", - ) - return read_multi_file_preds(embeddings_path, "categorical", "csv") diff --git a/tests/integration/test_hyperparameter_search.py b/tests/integration/test_hyperparameter_search.py deleted file mode 100644 index 17c83460..00000000 --- a/tests/integration/test_hyperparameter_search.py +++ /dev/null @@ -1,90 +0,0 @@ -import glob -import json -import os - -import yaml - - -def test_hp_search_grid_outputs(run_hp_search, project_root): - hp_name = "test-hp-search-grid" - config_dir = os.path.join(project_root, "configs") - - generated_configs = glob.glob(os.path.join(config_dir, f"{hp_name}-run-*.yaml")) - assert ( - len(generated_configs) == 4 - ), f"Expected 4 grid configs, found {len(generated_configs)}" - - -def test_hp_search_sample_outputs(run_hp_search, project_root): - hp_name = "test-hp-search-sample" - config_dir = os.path.join(project_root, "configs") - - generated_configs = glob.glob(os.path.join(config_dir, f"{hp_name}-run-*.yaml")) - assert ( - len(generated_configs) == 4 - ), f"Expected 4 sample configs, found {len(generated_configs)}" - - -def test_hp_search_bert_outputs(run_hp_search, project_root): - hp_name = "test-hp-search-bert" - config_dir = os.path.join(project_root, "configs") - - generated_configs = glob.glob(os.path.join(config_dir, f"{hp_name}-run-*.yaml")) - assert ( - len(generated_configs) == 1 - ), f"Expected 1 BERT sample config, found {len(generated_configs)}" - - with open(generated_configs[0], "r") as f: - generated_config = yaml.safe_load(f) - - assert generated_config["metadata_config_path"].endswith( - "test-data-categorical-1-lookahead-0.json" - ) - assert "storage_layout" not in generated_config - assert "window_view" not in generated_config - assert generated_config["target_offset"] == 0 - assert generated_config["training_spec"]["training_objective"] == "bert" - - -def test_hp_search_bayesian_outputs(run_hp_search, project_root): - hp_name = "test-hp-search-bayesian" - config_dir = os.path.join(project_root, "configs") - - generated_configs = glob.glob(os.path.join(config_dir, f"{hp_name}-run-*.yaml")) - assert ( - len(generated_configs) == 4 - ), f"Expected 4 bayesian configs, found {len(generated_configs)}" - - -def test_hp_search_state(run_hp_search, project_root): - state_dir = os.path.join(project_root, "state", "optuna") - - assert os.path.exists(os.path.join(state_dir, "test-hp-search-sample.db")) - assert os.path.exists(os.path.join(state_dir, "test-hp-search-grid.db")) - assert os.path.exists(os.path.join(state_dir, "test-hp-search-bert.db")) - assert os.path.exists(os.path.join(state_dir, "test-hp-search-bayesian.db")) - assert os.path.exists(os.path.join(state_dir, "test-hp-search-custom-eval.db")) - - -def test_hp_search_inference_feedback_loop(run_hp_search, project_root): - # Verify that the evaluations directory was populated - eval_dir = os.path.join(project_root, "outputs", "evaluations") - assert os.path.exists(eval_dir), f"Evaluation directory {eval_dir} was not created." - - eval_files = [ - f - for f in os.listdir(eval_dir) - if f.startswith("test-hp-search-custom-eval-run-") and f.endswith(".json") - ] - - assert len(eval_files) == 4, f"Expected 4 evaluation JSONs, found {len(eval_files)}" - - for f in eval_files: - with open(os.path.join(eval_dir, f), "r") as fp: - metrics = json.load(fp) - assert "max" in metrics, f"'max' missing in {f}" - assert "stdev" in metrics, f"'stdev' missing in {f}" - - # Sanity check that metrics were actually calculated - assert isinstance(metrics["max"], int) - assert isinstance(metrics["stdev"], float) diff --git a/tests/integration/test_identities.py b/tests/integration/test_identities.py deleted file mode 100644 index f2ecee46..00000000 --- a/tests/integration/test_identities.py +++ /dev/null @@ -1,83 +0,0 @@ -import numpy as np -import pytest - - -def _frame_mismatches(actual, expected, *, rtol=1e-5, atol=1e-6): - mismatches = [] - for column in actual.columns: - actual_values = actual[column].to_numpy() - expected_values = expected[column].to_numpy() - if np.issubdtype(actual_values.dtype, np.floating): - try: - np.testing.assert_allclose( - actual_values, - expected_values, - rtol=rtol, - atol=atol, - ) - except AssertionError as exc: - mismatches.append((column, str(exc))) - elif not np.array_equal(actual_values, expected_values): - mismatches.append( - ( - column, - f"{actual_values = } != {expected_values = }", - ) - ) - return mismatches - - -@pytest.mark.optional -def test_identities(targets, predictions, probabilities, embeddings): - failed_models = [] - for model_name, preds in predictions.items(): - mismatches = _frame_mismatches(preds, targets["preds"][model_name]) - if model_name != "model-real-1-best-3-autoregression": - if mismatches: - failed_models.append( - ( - model_name, - mismatches, - f"{model_name} preds differ from target: {mismatches = }", - ) - ) - else: - equal = preds.to_numpy() == targets["preds"][model_name].to_numpy() - mean_equal = np.mean(equal.astype(int)) - if mean_equal == 1.0: - failed_models.append( - ( - model_name, - equal, - f"{model_name} preds are not randomized, {preds.to_numpy() = } == {targets['preds'][model_name].to_numpy() = }: {equal = }, {mean_equal = }", - ) - ) - - for model_name, probs in probabilities.items(): - mismatches = _frame_mismatches(probs, targets["probs"][model_name]) - if mismatches: - failed_models.append( - ( - model_name, - mismatches, - f"{model_name} probs differ from target: {mismatches = }", - ) - ) - - for model_name, embeds in embeddings.items(): - mismatches = _frame_mismatches(embeds, targets["embeds"][model_name]) - if mismatches: - failed_models.append( - ( - model_name, - mismatches, - f"{model_name} embeddings differ from target: {mismatches = }", - ) - ) - - if len(failed_models): - print(failed_models) - failed_models_subset = [(model, message) for model, _, message in failed_models] - assert ( - len(failed_models) == 0 - ), f"{len(failed_models) = } - {failed_models_subset}" diff --git a/tests/integration/test_inference.py b/tests/integration/test_inference.py deleted file mode 100644 index 1f9d9887..00000000 --- a/tests/integration/test_inference.py +++ /dev/null @@ -1,536 +0,0 @@ -import json -import os -import re -from collections import Counter - -import numpy as np -import polars as pl -import torch - -from sequifier.helpers import ( - ModelWindowView, - StoredWindowLayout, - resolve_window_view, - stored_window_layout_from_metadata, -) - -TARGET_VARIABLE_DICT = {"categorical": "itemId", "real": "itemValue"} -BERT_SEQ_LENGTH = 8 -BERT_EMBEDDING_DIM = 16 -BERT_DATA_NAME = "test-data-categorical-1-lookahead-0" -CAUSAL_CONTEXT_LENGTH = 8 - - -def _project_path(project_root, path): - if os.path.isabs(path) or path.startswith(project_root): - return path - return os.path.join(project_root, path) - - -def _causal_storage_layout(data_path): - metadata_path = ( - os.path.join(data_path, "metadata.json") if os.path.isdir(data_path) else None - ) - if metadata_path is not None and os.path.exists(metadata_path): - with open(metadata_path, "r") as f: - return stored_window_layout_from_metadata(json.load(f)) - - return StoredWindowLayout( - stored_context_width=CAUSAL_CONTEXT_LENGTH + 1, - max_target_offset=1, - version=2, - ) - - -def _target_valid_mask(left_pad_lengths, storage_layout, prediction_length): - resolved_view = resolve_window_view( - storage_layout, - ModelWindowView( - context_length=CAUSAL_CONTEXT_LENGTH, - objective="causal", - target_offset=1, - ), - ) - masks = resolved_view.build_masks(torch.tensor(left_pad_lengths, dtype=torch.int64)) - return masks["target_valid_mask"][:, -prediction_length:].reshape(-1).numpy() - - -def _read_pt_window_metadata(data_path): - contents = [] - for root, _, files in os.walk(data_path): - for file in sorted(files): - if not file.endswith(".pt"): - continue - - loaded = torch.load(os.path.join(root, file), weights_only=False) - if len(loaded) == 5: - _, sequence_ids, _, start_positions, left_pad_lengths = loaded - else: - _, sequence_ids, _, start_positions = loaded - left_pad_lengths = torch.zeros_like(sequence_ids) - - contents.append( - pl.DataFrame( - { - "sequenceId": sequence_ids.detach().cpu().numpy(), - "startItemPosition": start_positions.detach().cpu().numpy(), - "leftPadLength": left_pad_lengths.detach().cpu().numpy(), - } - ) - ) - - assert len(contents) > 0, f"no files found for {data_path}" - return pl.concat(contents, how="vertical") - - -def _read_long_window_metadata(data_path): - paths = [] - if os.path.isdir(data_path): - for root, _, files in os.walk(data_path): - paths.extend( - os.path.join(root, file) - for file in sorted(files) - if file.endswith((".csv", ".parquet")) - ) - else: - paths = [data_path] - - contents = [] - for path in paths: - data = pl.read_csv(path) if path.endswith(".csv") else pl.read_parquet(path) - if "leftPadLength" not in data.columns: - data = data.with_columns(pl.lit(0).alias("leftPadLength")) - contents.append( - data.group_by(["sequenceId", "subsequenceId"], maintain_order=True).agg( - pl.col("startItemPosition").first(), - pl.col("leftPadLength").first(), - ) - ) - - assert len(contents) > 0, f"no files found for {data_path}" - return pl.concat(contents, how="vertical") - - -def _prediction_source_spec(project_root, model_name): - if model_name == "model-categorical-multitarget-5-best-3": - return { - "path": _project_path( - project_root, "data/test-data-categorical-multitarget-5-split2" - ), - "format": "parquet", - "prediction_length": 1, - "autoregression_total_steps": None, - } - if model_name == "model-categorical-multitarget-5-last-3": - return { - "path": _project_path( - project_root, "data/test-data-categorical-multitarget-5-split2" - ), - "format": "parquet", - "prediction_length": 1, - "autoregression_total_steps": None, - } - if model_name == "model-categorical-distributed-best-3": - return { - "path": _project_path(project_root, "data/test-data-categorical-3-split2"), - "format": "pt", - "prediction_length": 1, - "autoregression_total_steps": None, - } - if model_name == "model-categorical-lazy-best-3": - return { - "path": _project_path(project_root, "data/test-data-categorical-3-split2"), - "format": "pt", - "prediction_length": 1, - "autoregression_total_steps": None, - } - if model_name == "model-categorical-1-best-3-autoregression": - return { - "path": _project_path(project_root, "data/test-data-categorical-1-split2"), - "format": "pt", - "prediction_length": 1, - "autoregression_total_steps": 20, - } - if model_name == "model-real-1-best-3-autoregression": - return { - "path": _project_path( - project_root, "data/test-data-real-1-split1-autoregression.csv" - ), - "format": "csv", - "prediction_length": 1, - "autoregression_total_steps": 20, - "csv_autoregression": True, - } - - match = re.fullmatch(r"model-categorical-(\d+)-inf-size-best-3", model_name) - if match is not None: - data_number = int(match.group(1)) - return { - "path": _project_path( - project_root, f"data/test-data-categorical-{data_number}-split2" - ), - "format": "pt", - "prediction_length": 3, - "autoregression_total_steps": None, - } - - match = re.fullmatch(r"model-categorical-(\d+)-best-3", model_name) - if match is not None: - data_number = int(match.group(1)) - return { - "path": _project_path( - project_root, f"data/test-data-categorical-{data_number}-split2" - ), - "format": "pt", - "prediction_length": 1, - "autoregression_total_steps": None, - } - - match = re.fullmatch(r"model-real-(\d+)-best-3", model_name) - if match is not None: - data_number = int(match.group(1)) - return { - "path": _project_path( - project_root, f"data/test-data-real-{data_number}-split1.parquet" - ), - "format": "parquet", - "prediction_length": 1, - "autoregression_total_steps": None, - } - - raise AssertionError(f"No source metadata mapping for {model_name}") - - -def _expected_prediction_positions(project_root, model_name): - spec = _prediction_source_spec(project_root, model_name) - metadata = ( - _read_pt_window_metadata(spec["path"]) - if spec["format"] == "pt" - else _read_long_window_metadata(spec["path"]) - ) - storage_layout = _causal_storage_layout(spec["path"]) - prediction_length = spec["prediction_length"] - - if spec["autoregression_total_steps"] is not None: - total_steps = spec["autoregression_total_steps"] - if spec.get("csv_autoregression", False): - metadata = metadata.group_by("sequenceId", maintain_order=True).head(1) - - sequence_ids = np.repeat(metadata["sequenceId"].to_numpy(), total_steps) - item_positions = np.concatenate( - [ - np.arange(start, start + total_steps) - for start in ( - metadata["startItemPosition"].to_numpy() + CAUSAL_CONTEXT_LENGTH - ) - ], - axis=0, - ) - valid_mask = np.repeat( - _target_valid_mask( - metadata["leftPadLength"].to_numpy(), storage_layout, prediction_length - ), - total_steps, - ) - else: - starts = metadata["startItemPosition"].to_numpy() - offsets = np.arange(-prediction_length + 1, 1) - sequence_ids = np.repeat(metadata["sequenceId"].to_numpy(), prediction_length) - item_positions = np.repeat( - starts + CAUSAL_CONTEXT_LENGTH, prediction_length - ) + np.tile(offsets, len(starts)) - valid_mask = _target_valid_mask( - metadata["leftPadLength"].to_numpy(), storage_layout, prediction_length - ) - - return pl.DataFrame( - { - "sequenceId": sequence_ids[valid_mask], - "itemPosition": item_positions[valid_mask], - } - ) - - -def _categorical_metadata(project_root): - metadata_path = os.path.join( - project_root, "configs", "metadata_configs", f"{BERT_DATA_NAME}.json" - ) - with open(metadata_path, "r") as f: - return json.load(f) - - -def _bert_inference_metadata(project_root): - data_path = os.path.join(project_root, "data", f"{BERT_DATA_NAME}-split2") - contents = [] - for root, _, files in os.walk(data_path): - for file in sorted(files): - if not file.endswith(".pt"): - continue - - loaded = torch.load(os.path.join(root, file), weights_only=False) - if len(loaded) == 5: - _, sequence_ids, subsequence_ids, _, left_pad_lengths = loaded - else: - _, sequence_ids, subsequence_ids, _ = loaded - left_pad_lengths = None - - if left_pad_lengths is None: - left_pad_lengths = torch.zeros_like(sequence_ids) - - valid_counts = torch.clamp( - BERT_SEQ_LENGTH - left_pad_lengths, min=0, max=BERT_SEQ_LENGTH - ) - contents.append( - pl.DataFrame( - { - "sequenceId": sequence_ids.detach().cpu().numpy(), - "subsequenceId": subsequence_ids.detach().cpu().numpy(), - "valid_count": valid_counts.detach().cpu().numpy(), - } - ) - ) - - assert len(contents) > 0, f"no files found for {data_path}" - return pl.concat(contents, how="vertical") - - -def _expected_bert_valid_counts(project_root, group_columns): - metadata = _bert_inference_metadata(project_root) - - return ( - metadata.group_by(group_columns) - .agg(pl.col("valid_count").sum().alias("expected_len")) - .filter(pl.col("expected_len") > 0) - ) - - -def _assert_counts_match_expected(actual, expected, group_columns): - actual_keys = set(actual.select(group_columns).iter_rows()) - expected_keys = set(expected.select(group_columns).iter_rows()) - - assert actual_keys == expected_keys - - comparison = actual.join(expected, on=group_columns) - assert comparison.select( - (pl.col("len") == pl.col("expected_len")).all() - ).item(), comparison - - -def test_predictions_real(predictions): - for model_name, model_predictions in predictions.items(): - if "categorical" not in model_name or "multitarget" in model_name: - if "multitarget" not in model_name: - assert np.all( - [ - v > -10.0 and v < 10.0 - for v in model_predictions[ - TARGET_VARIABLE_DICT["real"] - ].to_numpy() - ] - ) - else: - assert np.all( - [ - v > -10.0 and v < 10.0 - for v in model_predictions["supReal3"].to_numpy() - ] - ), model_predictions - - -def test_predictions_cat(predictions): - valid_values = [str(x) for x in np.arange(100, 130)] + [ - "[unknown]", - "[other]", - "[mask]", - ] - for model_name, model_predictions in predictions.items(): - if "categorical" in model_name or "multitarget" in model_name: - assert np.all( - [ - v in valid_values - for v in model_predictions[ - TARGET_VARIABLE_DICT["categorical"] - ].to_numpy() - ] - ), model_predictions - - if "multitarget" in model_name: - admssible_vals = [str(x) for x in np.arange(0, 10)] + [ - "[unknown]", - "[other]", - "[mask]", - ] - assert np.all( - [ - v in admssible_vals - for v in model_predictions["supCat1"].to_numpy() - ] - ), model_predictions - - if "inf" in model_name: - prediction_length = 3 - n_test_rows = model_predictions.height - baseline_preds = predictions["model-categorical-1-best-3"] - n_baseline_rows = baseline_preds.height - - assert n_test_rows == n_baseline_rows * prediction_length, ( - f"Expected {n_baseline_rows * prediction_length} rows for prediction_length={prediction_length}, " - f"but found {n_test_rows} rows." - ) - - baseline_rows_per_seq = ( - baseline_preds.group_by("sequenceId").len().height - ) - test_rows_per_seq_groups = model_predictions.group_by( - "sequenceId" - ).len() - - assert baseline_rows_per_seq == test_rows_per_seq_groups.height - assert ( - test_rows_per_seq_groups["len"] == prediction_length - ).all(), ( - f"Test should have {prediction_length} predictions per sequence" - ) - - -def test_probabilities(probabilities): - for model_name, model_probabilities in probabilities.items(): - if "itemId" in model_name: - assert model_probabilities.shape[1] == 33 - elif "supCat1" in model_name: - assert model_probabilities.shape[1] == 13 - - np.testing.assert_almost_equal( - model_probabilities.sum_horizontal(), - np.ones(model_probabilities.shape[0]), - decimal=5, - ) - - -def test_bert_generative_predictions_default_to_context_length( - bert_predictions, project_root -): - metadata = _categorical_metadata(project_root) - valid_values = {str(v) for v in metadata["id_maps"]["itemId"].keys()}.union( - {"[unknown]", "[other]"} - ) - - assert bert_predictions.height > 0 - assert set(bert_predictions["itemId"].to_list()).issubset(valid_values) - - rows_per_sequence = bert_predictions.group_by("sequenceId").len() - expected_rows_per_sequence = _expected_bert_valid_counts( - project_root, ["sequenceId"] - ) - _assert_counts_match_expected( - rows_per_sequence, expected_rows_per_sequence, ["sequenceId"] - ) - - -def test_bert_probabilities(bert_predictions, bert_probabilities, project_root): - metadata = _categorical_metadata(project_root) - expected_class_count = metadata["n_classes"]["itemId"] - - assert bert_probabilities.height == bert_predictions.height - assert bert_probabilities.shape[1] == expected_class_count - np.testing.assert_almost_equal( - bert_probabilities.sum_horizontal(), - np.ones(bert_probabilities.shape[0]), - decimal=5, - ) - - -def test_multi_pred(predictions): - multitarget_models = [name for name in predictions.keys() if "multitarget" in name] - - for model_name in multitarget_models: - preds = predictions[model_name] - - assert preds.shape[0] > 0, f"{model_name} has no predictions" - assert preds.shape[1] == 5, f"{model_name} should have 5 columns" - - admssible_vals = [str(x) for x in np.arange(0, 10)] + [ - "[unknown]", - "[other]", - "[mask]", - ] - - assert np.all( - [v in admssible_vals for v in preds["supCat1"]] - ), f"Invalid supCat1 values in {model_name}" - assert np.all(preds["supReal3"].to_numpy() > -4.0) and np.all( - preds["supReal3"].to_numpy() < 4.0 - ), f"supReal3 out of bounds in {model_name}" - - -def test_embeddings(embeddings): - for model_name, model_embeddings in embeddings.items(): - if "categorical-1" in model_name: - assert model_embeddings.shape[0] == 10 - assert model_embeddings.shape[1] == 203 - assert np.abs(model_embeddings[:, 1:].to_numpy().mean()) < 0.3 - if "categorical-3" in model_name: - assert model_embeddings.shape[0] == 30 - assert model_embeddings.shape[1] == 203 - assert np.abs(model_embeddings[:, 1:].to_numpy().mean()) < 0.3 - - -def test_bert_embeddings(bert_predictions, bert_embeddings, project_root): - expected_embedding_cols = [str(i) for i in range(BERT_EMBEDDING_DIM)] - expected_columns = ["sequenceId", "subsequenceId", "itemPosition"] - - assert bert_embeddings.height == bert_predictions.height - assert bert_embeddings.shape[1] == len(expected_columns) + BERT_EMBEDDING_DIM - assert all(col in bert_embeddings.columns for col in expected_columns) - assert all(col in bert_embeddings.columns for col in expected_embedding_cols) - - embedding_values = bert_embeddings.select(expected_embedding_cols).to_numpy() - assert np.isfinite(embedding_values).all() - - rows_per_subsequence = bert_embeddings.group_by( - ["sequenceId", "subsequenceId"] - ).len() - expected_rows_per_subsequence = _expected_bert_valid_counts( - project_root, ["sequenceId", "subsequenceId"] - ) - _assert_counts_match_expected( - rows_per_subsequence, - expected_rows_per_subsequence, - ["sequenceId", "subsequenceId"], - ) - - -def test_predictions_item_position(predictions, project_root): - """Check itemPosition values against source preprocessing metadata.""" - for model_name, preds_df in predictions.items(): - expected_positions = _expected_prediction_positions(project_root, model_name) - actual_pairs = list(preds_df.select(["sequenceId", "itemPosition"]).iter_rows()) - expected_pairs = list(expected_positions.iter_rows()) - - duplicate_pairs = [ - pair for pair, count in Counter(actual_pairs).items() if count > 1 - ] - assert duplicate_pairs == [], ( - f"Model '{model_name}': Found duplicate sequence-position pairs:\n" - f"{duplicate_pairs[:10]}" - ) - - assert Counter(actual_pairs) == Counter( - expected_pairs - ), f"Model '{model_name}': itemPosition values do not match source metadata." - - -def test_embeddings_subsequence_id(embeddings): - """Check subsequenceId increments within each sequence.""" - for model_name, embeds_df in embeddings.items(): - for sequence_id, sequence_df in embeds_df.group_by( - "sequenceId", maintain_order=True - ): - subsequence_ids = sorted( - sequence_df.get_column("subsequenceId").unique().to_list() - ) - expected_ids = list(range(len(subsequence_ids))) - assert subsequence_ids == expected_ids, ( - f"Model '{model_name}', sequenceId {sequence_id}: expected " - f"subsequenceIds {expected_ids}, found {subsequence_ids}." - ) diff --git a/tests/integration/test_make.py b/tests/integration/test_make.py deleted file mode 100644 index 88d1f366..00000000 --- a/tests/integration/test_make.py +++ /dev/null @@ -1,184 +0,0 @@ -import os -import shutil -import sys -import time - -import pytest -import yaml -from conftest import reformat_parameter - -test_project_name = os.path.join("tests", "sequifier-make-test-project") - - -@pytest.fixture -def setup_for_test_make(): - if os.path.exists(test_project_name): - shutil.rmtree(test_project_name) - time.sleep(1) - os.system(f"sequifier make {test_project_name}") - - -@pytest.fixture -def config_strings(setup_for_test_make): - def load_config_string(path): - with open(path, "r") as f: - config_string = f.read() - - return config_string - - config_strings = { - config_name: load_config_string( - os.path.join(test_project_name, "configs", f"{config_name}.yaml") - ) - for config_name in ["preprocess", "train", "infer"] - } - return config_strings - - -@pytest.fixture -def adapt_configs(config_strings): - preprocess_config_path = os.path.join( - test_project_name, "configs", "preprocess.yaml" - ) - with open(preprocess_config_path, "r") as f: - preprocess_config_string = f.read() - - preprocess_config_string = ( - preprocess_config_string.replace( - "project_root: .", f"project_root: {test_project_name}" - ) - .replace( - "data_path: PLEASE FILL", - "data_path: tests/resources/source_data/test-data-categorical-1.csv", - ) - .replace( - "selected_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "selected_columns: " - ) - .replace("input_columns: [EXAMPLE_INPUT_COLUMN_NAME]", "input_columns: ") - .replace("stored_context_width: 49", "stored_context_width: 11") - .replace("max_rows: null", "max_rows: null\nn_cores: 1") - ) - - with open(preprocess_config_path, "w") as f: - f.write(preprocess_config_string) - - train_config_path = os.path.join(test_project_name, "configs", "train.yaml") - with open(train_config_path, "r") as f: - train_config_string = f.read() - - train_config_string = ( - train_config_string.replace( - "project_root: .", f"project_root: {test_project_name}" - ) - .replace("model_name: PLEASE FILL", "model_name: default") - .replace( - "metadata_config_path: PLEASE FILL", - f"metadata_config_path: {test_project_name}/configs/metadata_configs/test-data-categorical-1.json", - ) - .replace( - "export_generative_model: PLEASE FILL", "export_generative_model: true" - ) - .replace( - "export_embedding_model: PLEASE FILL", "export_embedding_model: false" - ) - .replace("[EXAMPLE_INPUT_COLUMN_NAME]", "[itemId]") - .replace("[EXAMPLE_TARGET_COLUMN_NAME]", "[itemId]") - .replace("EXAMPLE_TARGET_COLUMN_NAME: real", "itemId: categorical") - .replace("EXAMPLE_INPUT_COLUMN_NAME:", "itemId: 128") - .replace("EXAMPLE_TARGET_COLUMN_NAME: MSELoss", "itemId: CrossEntropyLoss") - .replace("epochs: 10", "epochs: 3") - .replace("device: cuda", "device: cpu") - .replace("context_length: 48", "context_length: 10") - .replace("total_steps: PLEASE FILL", "total_steps: 10000") - ) - - with open(train_config_path, "w") as f: - f.write(train_config_string) - - infer_config_path = os.path.join(test_project_name, "configs", "infer.yaml") - with open(infer_config_path, "r") as f: - infer_config_string = f.read() - - infer_config_string = ( - infer_config_string.replace( - "project_root: .", f"project_root: {test_project_name}" - ) - .replace("model_type: PLEASE FILL", "model_type: generative") - .replace( - "metadata_config_path: PLEASE FILL", - f"metadata_config_path: {test_project_name}/configs/metadata_configs/test-data-categorical-1.json", - ) - .replace( - "model_path: PLEASE FILL", - f"model_path: {test_project_name}/models/sequifier-default-best-3.onnx", - ) - .replace( - "data_path: PLEASE FILL", - f"data_path: {test_project_name}/data/test-data-categorical-1-split2.parquet", - ) - .replace("[EXAMPLE_INPUT_COLUMN_NAME]", "[itemId]") - .replace("[EXAMPLE_TARGET_COLUMN_NAME]", "[itemId]") - .replace("context_length: 48", "context_length: 10") - .replace("autoregression: true", "autoregression: false") - .replace("EXAMPLE_TARGET_COLUMN_NAME: real", "itemId: categorical") - ) - - with open(infer_config_path, "w") as f: - f.write(infer_config_string) - - if sys.platform.startswith("win"): - for config_path in [ - preprocess_config_path, - train_config_path, - infer_config_path, - ]: - with open(config_path, "r") as f: - config = yaml.safe_load(f) - - config_formatted = { - attr: reformat_parameter(attr, param, "linux->local") - for attr, param in config.items() - } - - with open(config_path, "w") as f: - yaml.dump( - config_formatted, f, default_flow_style=False, sort_keys=False - ) - - -def test_make(adapt_configs): - return_code = os.system( - f"sequifier preprocess --config-path {test_project_name}/configs/preprocess.yaml" - ) - if return_code == 0: - return_code = os.system( - f"sequifier train --config-path {test_project_name}/configs/train.yaml" - ) - if return_code == 0: - return_code = os.system( - f"sequifier infer --config-path {test_project_name}/configs/infer.yaml" - ) - assert ( - return_code == 0 - ), f"Inference for 'sequifier infer --config-path {test_project_name}/configs/infer.yaml' was unsuccessful" - else: - assert False, f"Training for 'sequifier train --config-path {test_project_name}/configs/train.yaml' was unsuccessful" - else: - assert False, f"Preprocessing for 'sequifier preprocess --config-path {test_project_name}/configs/preprocess.yaml' was unsuccessful" - - # clean up, only if tests didn't fail - shutil.rmtree(test_project_name) - - -def test_config_folder(config_strings): - from sequifier.make import ( - infer_config_string, - preprocess_config_string, - train_config_string, - ) - - assert config_strings["preprocess"].strip() == preprocess_config_string.strip() - - assert config_strings["train"].strip() == train_config_string.strip() - - assert config_strings["infer"].strip() == infer_config_string.strip() diff --git a/tests/integration/test_onnx_export.py b/tests/integration/test_onnx_export.py deleted file mode 100644 index c7f2bd72..00000000 --- a/tests/integration/test_onnx_export.py +++ /dev/null @@ -1,247 +0,0 @@ -import os - -import numpy as np -import onnxruntime -import torch - -from sequifier.config.train_config import ModelSpecModel, TrainingSpecModel, TrainModel -from sequifier.helpers import ModelWindowView, StoredWindowLayout -from sequifier.train import TransformerModel - - -def test_bert_onnx_export_accepts_attention_valid_mask(tmp_path): - project_root = str(tmp_path) - (tmp_path / "logs").mkdir() - - context_length = 4 - inference_batch_size = 2 - config = TrainModel( - project_root=project_root, - model_name="bert-onnx-mask", - metadata_config_path="metadata.json", - training_data_path="data/train.pt", - validation_data_path="data/val.pt", - input_columns=["cat_col", "real_col"], - target_columns=["cat_col", "real_col"], - target_column_types={"cat_col": "categorical", "real_col": "real"}, - column_types={"cat_col": "int64", "real_col": "float64"}, - categorical_columns=["cat_col"], - real_columns=["real_col"], - id_maps={"cat_col": {"a": 3, "b": 4, "c": 5}}, - n_classes={"cat_col": 6}, - storage_layout=StoredWindowLayout( - stored_context_width=context_length + 1, - max_target_offset=1, - version=2, - ), - window_view=ModelWindowView( - context_length=context_length, - objective="bert", - target_offset=0, - ), - inference_batch_size=inference_batch_size, - seed=42, - export_generative_model=True, - export_embedding_model=False, - export_onnx=True, - export_pt=False, - model_spec=ModelSpecModel( - initial_embedding_dim=8, - dim_model=8, - n_head=2, - dim_feedforward=8, - num_layers=1, - prediction_length=context_length, - feature_embedding_dims={"cat_col": 7, "real_col": 1}, - activation_fn="relu", - normalization="layer_norm", - positional_encoding="learned", - attention_type="mha", - norm_first=False, - n_kv_heads=2, - ), - training_spec=TrainingSpecModel( - training_objective="bert", - bert_spec={ - "masking_probability": 0.5, - "replacement_distribution": { - "masked": 1.0, - "random": 0.0, - "identical": 0.0, - }, - "span_masking": {"type": "GeometricDistribution", "p": 1.0}, - }, - device="cpu", - epochs=1, - save_interval_epochs=1, - batch_size=2, - learning_rate=0.001, - criterion={"cat_col": "CrossEntropyLoss", "real_col": "MSELoss"}, - optimizer={"name": "Adam"}, - scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, - loss_weights={"cat_col": 1.0, "real_col": 1.0}, - torch_compile="none", - layer_autocast=False, - ), - ) - model = TransformerModel(config) - model.eval() - - model._export_model(model, "best", 1) - export_path = os.path.join( - project_root, "models", "sequifier-bert-onnx-mask-best-1.onnx" - ) - - session = onnxruntime.InferenceSession( - export_path, providers=["CPUExecutionProvider"] - ) - input_names = [session_input.name for session_input in session.get_inputs()] - - assert "attention_valid_mask" in input_names - - ort_inputs = { - "cat_col_in": np.array([[3, 4, 5, 3], [0, 0, 3, 4]], dtype=np.int64), - "real_col_in": np.array( - [[0.1, 0.2, 0.3, 0.4], [0.0, 0.0, 0.5, 0.6]], dtype=np.float32 - ), - "attention_valid_mask": np.array( - [[True, True, True, True], [False, False, True, True]], dtype=np.bool_ - ), - } - outputs = session.run(None, ort_inputs) - - assert len(outputs) == 2 - assert outputs[0].shape[1] == inference_batch_size - - -def test_onnx_export_preserves_feature_name_order(tmp_path): - project_root = str(tmp_path) - (tmp_path / "logs").mkdir() - - context_length = 4 - inference_batch_size = 2 - config = TrainModel( - project_root=project_root, - model_name="onnx-feature-order", - metadata_config_path="metadata.json", - training_data_path="data/train.pt", - validation_data_path="data/val.pt", - input_columns=["cat2", "cat10"], - target_columns=["cat2"], - target_column_types={"cat2": "categorical"}, - column_types={"cat2": "int64", "cat10": "int64"}, - categorical_columns=["cat2", "cat10"], - real_columns=[], - id_maps={ - "cat2": {"a": 3, "b": 4, "c": 5, "d": 6}, - "cat10": {"x": 3, "y": 4, "z": 5}, - }, - n_classes={"cat2": 7, "cat10": 6}, - storage_layout=StoredWindowLayout( - stored_context_width=context_length + 1, - max_target_offset=1, - version=2, - ), - window_view=ModelWindowView( - context_length=context_length, - objective="causal", - target_offset=1, - ), - inference_batch_size=inference_batch_size, - seed=42, - export_generative_model=True, - export_embedding_model=False, - export_onnx=True, - export_pt=False, - model_spec=ModelSpecModel( - initial_embedding_dim=8, - dim_model=8, - n_head=2, - dim_feedforward=8, - num_layers=1, - prediction_length=1, - feature_embedding_dims={"cat2": 4, "cat10": 4}, - activation_fn="relu", - normalization="layer_norm", - positional_encoding="learned", - attention_type="mha", - norm_first=False, - n_kv_heads=2, - ), - training_spec=TrainingSpecModel( - training_objective="causal", - device="cpu", - epochs=1, - save_interval_epochs=1, - batch_size=2, - learning_rate=0.001, - criterion={"cat2": "CrossEntropyLoss"}, - optimizer={"name": "Adam"}, - scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, - loss_weights={"cat2": 1.0}, - torch_compile="none", - layer_autocast=False, - ), - ) - model = TransformerModel(config) - - model._export_model(model, "best", 1) - export_path = os.path.join( - project_root, "models", "sequifier-onnx-feature-order-best-1.onnx" - ) - - session = onnxruntime.InferenceSession( - export_path, providers=["CPUExecutionProvider"] - ) - input_names = [session_input.name for session_input in session.get_inputs()] - - assert input_names == ["cat2_in", "cat10_in", "attention_valid_mask"] - - ort_inputs = { - "cat2_in": np.array([[3, 4, 5, 6], [6, 5, 4, 3]], dtype=np.int64), - "cat10_in": np.array([[3, 4, 5, 3], [5, 4, 3, 5]], dtype=np.int64), - "attention_valid_mask": np.ones( - (inference_batch_size, context_length), dtype=np.bool_ - ), - } - outputs = session.run(None, ort_inputs) - - assert outputs[0].shape == (1, inference_batch_size, config.n_classes["cat2"]) - - def assert_onnx_matches_torch(onnx_inputs): - torch_inputs_for_case = { - "cat2": torch.tensor(onnx_inputs["cat2_in"], dtype=torch.long), - "cat10": torch.tensor(onnx_inputs["cat10_in"], dtype=torch.long), - } - torch_metadata_for_case = { - "attention_valid_mask": torch.tensor( - onnx_inputs["attention_valid_mask"], dtype=torch.bool - ) - } - with torch.no_grad(): - torch_outputs = model(torch_inputs_for_case, torch_metadata_for_case) - - onnx_outputs = session.run(None, onnx_inputs) - np.testing.assert_allclose( - onnx_outputs[0], - torch_outputs["cat2"].detach().numpy(), - rtol=1e-4, - atol=1e-5, - ) - return onnx_outputs[0] - - base_outputs = assert_onnx_matches_torch(ort_inputs) - - cat2_changed_inputs = { - **ort_inputs, - "cat2_in": np.array([[6, 6, 5, 4], [3, 3, 4, 5]], dtype=np.int64), - } - cat2_changed_outputs = assert_onnx_matches_torch(cat2_changed_inputs) - assert not np.allclose(base_outputs, cat2_changed_outputs, rtol=1e-5, atol=1e-6) - - cat10_changed_inputs = { - **ort_inputs, - "cat10_in": np.array([[5, 5, 4, 3], [3, 3, 5, 4]], dtype=np.int64), - } - cat10_changed_outputs = assert_onnx_matches_torch(cat10_changed_inputs) - assert not np.allclose(base_outputs, cat10_changed_outputs, rtol=1e-5, atol=1e-6) diff --git a/tests/integration/test_preprocessing.py b/tests/integration/test_preprocessing.py deleted file mode 100644 index a214e7ef..00000000 --- a/tests/integration/test_preprocessing.py +++ /dev/null @@ -1,545 +0,0 @@ -import json -import os - -import numpy as np -import polars as pl -import pytest -import torch -from conftest import run_and_log - - -@pytest.fixture() -def metadata_configs(run_preprocessing, project_root): - metadata_configs = {} - for data_number in [1, 3, 5, 50]: - for variant in ["categorical", "real"]: - file_name = f"test-data-{variant}-{data_number}.json" - with open( - os.path.join(project_root, "configs", "metadata_configs", file_name), - "r", - ) as f: - dd_conf = json.loads(f.read()) - metadata_configs[file_name] = dd_conf - return metadata_configs - - -def test_metadata_config(metadata_configs): - expected_metadata_keys = [ - "n_classes", - "id_maps", - "special_token_ids", - "split_paths", - "column_types", - "selected_columns_statistics", - "stored_context_width", - "max_target_offset", - "stored_window_layout_version", - ] - - for file_name, metadata_config in metadata_configs.items(): - print(f"Verifying metadata_config for: {file_name}") - assert list(metadata_config.keys()) == expected_metadata_keys - assert metadata_config["stored_window_layout_version"] == 2 - assert metadata_config["special_token_ids"] == { - "[unknown]": 0, - "[other]": 1, - "[mask]": 2, - } - - assert metadata_config["split_paths"][0].endswith( - "split0.parquet" - ) or metadata_config["split_paths"][0].endswith("split0") - - if "itemId" in metadata_config["n_classes"]: - assert len(metadata_config["id_maps"]["itemId"]) == 30 - assert metadata_config["n_classes"]["itemId"] == 33 - - id_map_keys = np.array( - sorted(list(metadata_config["id_maps"]["itemId"].keys())) - ) - # assert False, np.array([str(x) for x in range(100, 130)]) - assert np.all(id_map_keys == np.array([str(x) for x in range(100, 130)])) - - for col in metadata_config["id_maps"].keys(): - id_map_values = np.array( - sorted(list(metadata_config["id_maps"][col].values())) - ) - # assert False, id_map_values - assert np.all( - id_map_values == np.arange(3, len(id_map_values) + 3) - ), id_map_values - - if "itemValue" in metadata_config["selected_columns_statistics"]: - assert "std" in metadata_config["selected_columns_statistics"]["itemValue"] - assert "mean" in metadata_config["selected_columns_statistics"]["itemValue"] - - -def load_parquet_folder_outputs(path): - """Sorted frame from Parquet chunks.""" - # Polars natively supports reading all matching files via glob patterns - data = pl.read_parquet(os.path.join(path, "*.parquet")) - - other_cols = [ - col - for col in data.columns - if col - not in [ - "sequenceId", - "subsequenceId", - "startItemPosition", - "leftPadLength", - "inputCol", - ] - ] - - return data[ - [ - "sequenceId", - "subsequenceId", - "startItemPosition", - "leftPadLength", - "inputCol", - ] - + other_cols - ].sort(["sequenceId", "subsequenceId", "startItemPosition", "inputCol"]) - - -def load_pt_outputs(path): - contents = [] - for root, _, files in os.walk(path): - for file in sorted(list(files)): - if file.endswith("pt"): - ( - sequences, - sequence_id, - subsequence_id, - start_item_position, - *maybe_left_pad_length, - ) = torch.load(os.path.join(root, file)) - left_pad_length = ( - maybe_left_pad_length[0] - if maybe_left_pad_length - else torch.zeros_like(sequence_id) - ) - sequences2 = {} - for col, vals in sequences.items(): - vals2 = vals.numpy() - - for offset in range(vals2.shape[1] - 1, -1, -1): - sequences2[str(offset)] = np.concatenate( - [sequences2.get(str(offset), []), vals2[:, -(offset + 1)]], - axis=0, - ) - - sequences2["sequenceId"] = np.concatenate( - [ - sequences2.get("sequenceId", []), - sequence_id.numpy().astype(int), - ], - axis=0, - ) - sequences2["inputCol"] = np.concatenate( - [ - sequences2.get("inputCol", []), - np.repeat(col, vals2.shape[0]), - ], - axis=0, - ) - sequences2["subsequenceId"] = np.concatenate( - [sequences2.get("subsequenceId", []), subsequence_id], - axis=0, - ) - sequences2["startItemPosition"] = np.concatenate( - [ - sequences2.get("startItemPosition", []), - start_item_position, - ] - ) - sequences2["leftPadLength"] = np.concatenate( - [ - sequences2.get("leftPadLength", []), - left_pad_length, - ] - ) - - content = pl.DataFrame(sequences2) - contents.append(content) - - assert len(contents) > 0, f"no files found for {path}" - data = pl.concat(contents, how="vertical") - other_cols = [ - col - for col in data.columns - if col - not in [ - "sequenceId", - "subsequenceId", - "startItemPosition", - "leftPadLength", - "inputCol", - ] - ] - return data[ - [ - "sequenceId", - "subsequenceId", - "startItemPosition", - "leftPadLength", - "inputCol", - ] - + other_cols - ].sort(["sequenceId", "subsequenceId", "startItemPosition", "inputCol"]) - - -def read_preprocessing_outputs(path, variant): - if variant == "real": - return pl.read_parquet(f"{path}.parquet") - elif variant == "categorical": - if os.path.isdir(path) and any( - f.endswith(".parquet") for f in os.listdir(path) - ): - return load_parquet_folder_outputs(path) - return load_pt_outputs(path) - else: - raise ValueError(f"Invalid variant: {variant}") - - -@pytest.fixture() -def data_splits(project_root, split_groups): - data_split_values = { - f"{j}-{variant}": [ - read_preprocessing_outputs( - os.path.join(project_root, "data", f"test-data-{variant}-{j}-split{i}"), - variant, - ) - for i in range(split_groups[variant]) - ] - for variant in ["categorical", "real"] - for j in [1, 3, 5, 50] - } - - return data_split_values - - -def test_preprocessed_data_real(data_splits): - for j in [1, 3, 5, 50]: - name = f"{j}-real" - assert len(data_splits[name]) == 2 - - for i, data in enumerate(data_splits[name]): - number_expected_columns = 14 - assert data.shape[1] == ( - number_expected_columns - ), f"{name = } - {i = }: {data.shape = } - {data.columns = }" - for sequenceId, group in data.group_by("sequenceId"): - # offset by j in either direction as that is the number of columns in the input - # data, thus an offset by 1 'observation' requires an offset by j values - assert np.all((group["1"].to_numpy()[:-j] == group["2"].to_numpy()[j:])) - assert np.all((group["5"].to_numpy()[:-j] == group["6"].to_numpy()[j:])) - - -def test_preprocessed_data_categorical(data_splits): - for j in [1, 3, 5, 50]: - name = f"{j}-categorical" - assert len(data_splits[name]) == 3 - - for i, data in enumerate(data_splits[name]): - number_expected_columns = 14 - assert data.shape[1] == ( - number_expected_columns - ), f"{name = } - {i = }: {data.shape = } - {data.columns = }" - - for sequenceId, group in data.group_by("sequenceId"): - # offset by j in either direction as that is the number of columns in the input - # data, thus an offset by 1 'observation' requires an offset by j values - assert np.all( - np.abs(group["1"].to_numpy()[:-j] - group["2"].to_numpy()[j:]) - < 0.0001 - ), f'{list(group["1"].to_numpy()[:-j]) = } != {list(group["2"].to_numpy()[j:]) = }' - assert np.all( - np.abs(group["5"].to_numpy()[:-j] - group["6"].to_numpy()[j:]) - < 0.0001 - ), f'{list(group["5"].to_numpy()[:-j]) = } != {list(group["6"].to_numpy()[j:]) = }' - - -def test_preprocessed_data_categorical_lookahead_0(run_preprocessing, project_root): - metadata_path = os.path.join( - project_root, - "configs", - "metadata_configs", - "test-data-categorical-1-lookahead-0.json", - ) - with open(metadata_path, "r") as f: - metadata_config = json.load(f) - - assert metadata_config["max_target_offset"] == 0 - assert metadata_config["stored_context_width"] == 8 - - for split in range(3): - data = read_preprocessing_outputs( - os.path.join( - project_root, - "data", - f"test-data-categorical-1-lookahead-0-split{split}", - ), - "categorical", - ) - - assert data is not None - assert data.shape[1] == 13 - assert "8" not in data.columns - assert set(str(i) for i in range(8)).issubset(set(data.columns)) - - for sequence_id, group in data.group_by("sequenceId"): - assert np.all( - np.abs(group["1"].to_numpy()[:-1] - group["2"].to_numpy()[1:]) < 0.0001 - ), ( - f"{sequence_id = }: {list(group['1'].to_numpy()[:-1]) = } " - f"!= {list(group['2'].to_numpy()[1:]) = }" - ) - assert np.all( - np.abs(group["5"].to_numpy()[:-1] - group["6"].to_numpy()[1:]) < 0.0001 - ), ( - f"{sequence_id = }: {list(group['5'].to_numpy()[:-1]) = } " - f"!= {list(group['6'].to_numpy()[1:]) = }" - ) - - -def unnest(list_var): - return [x for y in list_var for x in y] - - -def test_preprocessed_data_multi_file(run_preprocessing): - for split in range(3): - file_list = [] - for root, _, files in os.walk( - os.path.join( - "tests", - "project_folder", - "data", - f"test-data-categorical-multi-file-split{split}", - ) - ): - for file in files: - file_list.append(file) - - file_list = sorted(file_list) - - expected_file_list = sorted( - ["metadata.json"] - + unnest( - [ - [ - f"test-data-categorical-multi-file-{source_file}-0-split{split}-0-{str(seq_id).zfill(2)}.pt" - ] - for source_file in range(3) - for seq_id in range(13) - ] - ) - ) - assert len(file_list) == len( - expected_file_list - ), f"{file_list = }, {expected_file_list = }" - assert np.all( - np.array(file_list) == np.array(expected_file_list) - ), f"for split: {split}:\n{set(file_list).difference(set(expected_file_list))} not found\n{set(expected_file_list).difference(set(file_list))} extra" - - -def test_preprocessed_data_exact(run_preprocessing): - parquet_out_path = os.path.join( - "tests", - "project_folder", - "data", - "test-data-categorical-3-equal-split0.parquet", - ) - pt_out_path = os.path.join( - "tests", "project_folder", "data", "test-data-categorical-3-equal-split0" - ) - - parquet_output = pl.read_parquet(parquet_out_path) - pt_output = load_pt_outputs(pt_out_path) - - assert np.all( - parquet_output.to_numpy()[:, [0, 1, 2, 3, 5, 6, 7, 8, 9]] - == pt_output.to_numpy()[:, [0, 1, 2, 3, 5, 6, 7, 8, 9]].astype(int) - ), f"{np.sum(parquet_output.to_numpy()[:,[0,1,2,3,5,6,7,8,9]] == pt_output.to_numpy()[:,[0,1,2,3,5,6,7,8,9]].astype(int)) = }" - - assert np.all( - parquet_output["sequenceId"].to_numpy() == np.repeat(np.arange(10), 9) - ) - - assert np.all( - parquet_output["subsequenceId"].to_numpy() - == np.tile(np.repeat(np.arange(3), 3), 10) - ) - - -def test_preprocessing_interrupted(run_preprocessing, metadata_configs): - with open( - os.path.join( - "tests", - "project_folder", - "configs", - "metadata_configs", - "test-data-categorical-1-interrupted.json", - ), - "r", - ) as f: - interrupted_metadata_config = json.loads(f.read()) - baseline_metadata_config = metadata_configs["test-data-categorical-1.json"] - - interrupted_metadata_config_adapted = interrupted_metadata_config - interrupted_metadata_config_adapted["split_paths"] = [ - path.replace("categorical-1-interrupted", "categorical-1") - for path in interrupted_metadata_config_adapted["split_paths"] - ] - - assert str(interrupted_metadata_config_adapted) == str( - baseline_metadata_config - ), f"{interrupted_metadata_config_adapted = } != {baseline_metadata_config = }" - - baseline_output = { - split: load_pt_outputs( - os.path.join( - "tests", - "project_folder", - "data", - f"test-data-categorical-1-split{split}", - ) - ) - for split in range(3) - } - interrupted_output = { - split: load_pt_outputs( - os.path.join( - "tests", - "project_folder", - "data", - f"test-data-categorical-1-interrupted-split{split}", - ) - ) - for split in range(3) - } - - for split in range(3): - assert np.all( - interrupted_output[split].to_numpy() == baseline_output[split].to_numpy() - ), f"interrupted output != baseline output for split {split}" - - -def test_preprocessing_from_precomputed_stats( - run_preprocessing, - project_root, - preprocessing_config_path_cat_precomputed_stats, - preprocessing_config_path_cat_precomputed_stats_negative, -): - """Compare precomputed-stat and standard preprocessing outputs.""" - - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_cat_precomputed_stats}" - ) - - run_and_log( - f"sequifier preprocess --config-path {preprocessing_config_path_cat_precomputed_stats_negative}" - ) - - preprocessing_output_path = os.path.join( - "tests", - "project_folder", - "data", - "test-data-categorical-precomputed-stats-split0.parquet", - ) - - preprocessing_output = pl.read_parquet(preprocessing_output_path) - - preprocessing_output_negative_path = os.path.join( - "tests", - "project_folder", - "data", - "test-data-categorical-precomputed-stats-negative-split0.parquet", - ) - - preprocessing_output_negative = pl.read_parquet(preprocessing_output_negative_path) - - assert np.all( - preprocessing_output[ - ["sequenceId", "subsequenceId", "startItemPosition"] - ].to_numpy() - == preprocessing_output_negative[ - ["sequenceId", "subsequenceId", "startItemPosition"] - ].to_numpy() - ) - - metadata_cols = [ - "sequenceId", - "subsequenceId", - "startItemPosition", - "leftPadLength", - "inputCol", - ] - - assert ( - np.mean( - np.isclose( - preprocessing_output.filter(pl.col("inputCol") == "supReal2") - .drop(metadata_cols) - .to_numpy() - * 2, - preprocessing_output_negative.filter(pl.col("inputCol") == "supReal2") - .drop(metadata_cols) - .to_numpy(), - rtol=1e-01, - ) - ) - > 0.5 - ) - - assert ( - np.mean( - np.isclose( - preprocessing_output.filter(pl.col("inputCol") == "supReal3") - .drop(metadata_cols) - .to_numpy() - / 2, - preprocessing_output_negative.filter(pl.col("inputCol") == "supReal3") - .drop(metadata_cols) - .to_numpy(), - rtol=1e-01, - ) - ) - > 0.5 - ) - - assert ( - np.mean( - preprocessing_output.filter(pl.col("inputCol") == "itemId") - .drop(metadata_cols) - .to_numpy() - != preprocessing_output_negative.filter(pl.col("inputCol") == "itemId") - .drop(metadata_cols) - .to_numpy() - ) - > 0.1 - ) - assert ( - np.mean( - preprocessing_output.filter(pl.col("inputCol") == "supCat1") - .drop(metadata_cols) - .to_numpy() - != preprocessing_output_negative.filter(pl.col("inputCol") == "supCat1") - .drop(metadata_cols) - .to_numpy() - ) - > 0.1 - ) - assert ( - np.mean( - preprocessing_output.filter(pl.col("inputCol") == "supCat4") - .drop(metadata_cols) - .to_numpy() - != preprocessing_output_negative.filter(pl.col("inputCol") == "supCat4") - .drop(metadata_cols) - .to_numpy() - ) - > 0.1 - ) diff --git a/tests/integration/test_training.py b/tests/integration/test_training.py deleted file mode 100644 index ca8a4ab6..00000000 --- a/tests/integration/test_training.py +++ /dev/null @@ -1,148 +0,0 @@ -import os - - -def test_checkpoint_files_exists( - run_training, run_training_from_checkpoint, run_hp_search, project_root -): - found_items = sorted(os.listdir(os.path.join(project_root, "checkpoints"))) - expected_items = sorted( - [ - f"model-{model_type}-{j}-epoch-{i}.pt" - for model_type in ["categorical", "real"] - for j in [1, 3, 5, 50] - for i in range(1, 4) - ] - + [ - f"model-real-{j}-epoch-{i}-batch-1.pt" - for j in [1, 3, 5, 50] - for i in range(1, 4) - ] - + [f"model-real-{j}-latest.pt" for j in [1, 3, 5, 50]] - + [f"model-real-1-from-epoch-checkpoint-epoch-{i}.pt" for i in range(1, 4)] - + [ - f"model-categorical-3-from-mid-epoch-checkpoint-epoch-{i}.pt" - for i in range(1, 4) - ] - + [ - f"model-categorical-{j}-inf-size-epoch-{i}.pt" - for j in [1, 3] - for i in range(1, 4) - ] - + ["model-categorical-bert-epoch-1.pt"] - + ["model-real-bert-epoch-1.pt"] - + [f"model-categorical-multitarget-5-epoch-{i}.pt" for i in range(1, 4)] - + [f"model-categorical-multitarget-5-eager-epoch-{i}.pt" for i in range(1, 4)] - + [f"model-categorical-distributed-epoch-{i}.pt" for i in range(1, 4)] - + [ - f"model-categorical-distributed-lazy-parquet-epoch-{i}.pt" - for i in range(1, 4) - ] - + [f"model-categorical-lazy-epoch-{i}.pt" for i in range(1, 4)] - ) - - assert set(found_items) == set(expected_items), { - "missing": sorted(set(expected_items) - set(found_items)), - "unexpected": sorted(set(found_items) - set(expected_items)), - } - - -def test_model_files_exists( - run_training, run_hp_search, run_training_from_checkpoint, project_root -): - model_type_formats = {"categorical": ["onnx", "pt"], "real": ["onnx", "pt"]} - found_items = sorted( - [ - f - for f in os.listdir(os.path.join(project_root, "models")) - if not f.endswith(".onnx.data") - ] - ) - - expected_items = sorted( - [ - f"sequifier-model-{model_type2}-{j}-{kind}{model_type}-3.{model_type_format}" - for model_type2 in ["categorical", "real"] - for model_type in ["", "-embedding"] - for model_type_format in model_type_formats[model_type2] - for j in [1, 3, 5, 50] - for kind in ["best", "last"] - ] - + [ - f"sequifier-model-categorical-3-from-mid-epoch-checkpoint-{kind}{model_type}-3.{model_type_format}" - for model_type in ["", "-embedding"] - for kind in ["best", "last"] - for model_type_format in ["pt", "onnx"] - ] - + [ - f"sequifier-model-real-1-from-epoch-checkpoint-{kind}-embedding-3.{model_type_format}" - for kind in ["best", "last"] - for model_type_format in ["pt", "onnx"] - ] - + [ - "sequifier-model-categorical-multitarget-5-best-3.onnx", - "sequifier-model-categorical-multitarget-5-last-3.onnx", - "sequifier-model-categorical-multitarget-5-best-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-last-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-best-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-last-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-best-embedding-3.onnx", - "sequifier-model-categorical-multitarget-5-eager-last-embedding-3.onnx", - "sequifier-model-real-1-best-3-autoregression.pt", - "sequifier-model-categorical-1-best-3-autoregression.onnx", - "sequifier-model-categorical-1-inf-size-best-3.onnx", - "sequifier-model-categorical-1-inf-size-last-3.onnx", - "sequifier-model-categorical-1-inf-size-best-embedding-3.onnx", - "sequifier-model-categorical-1-inf-size-last-embedding-3.onnx", - "sequifier-model-categorical-3-inf-size-best-3.pt", - "sequifier-model-categorical-3-inf-size-last-3.pt", - "sequifier-model-categorical-3-inf-size-best-embedding-3.pt", - "sequifier-model-categorical-3-inf-size-last-embedding-3.pt", - "sequifier-model-categorical-bert-best-1.pt", - "sequifier-model-categorical-bert-last-1.pt", - "sequifier-model-categorical-bert-best-embedding-1.pt", - "sequifier-model-categorical-bert-last-embedding-1.pt", - "sequifier-model-real-bert-best-1.pt", - "sequifier-model-real-bert-last-1.pt", - "sequifier-model-categorical-distributed-best-3.pt", - "sequifier-model-categorical-distributed-best-3.onnx", - "sequifier-model-categorical-distributed-last-3.pt", - "sequifier-model-categorical-distributed-last-3.onnx", - "sequifier-model-categorical-distributed-lazy-parquet-best-3.pt", - "sequifier-model-categorical-distributed-lazy-parquet-best-3.onnx", - "sequifier-model-categorical-distributed-lazy-parquet-last-3.pt", - "sequifier-model-categorical-distributed-lazy-parquet-last-3.onnx", - "sequifier-model-categorical-lazy-best-3.pt", - "sequifier-model-categorical-lazy-best-3.onnx", - "sequifier-model-categorical-lazy-last-3.pt", - "sequifier-model-categorical-lazy-last-3.onnx", - ] - + [ - f"sequifier-test-hp-search-sample-run-{i}-{suffix}-1.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-bert-run-0-{suffix}-1.pt" - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-grid-run-{i}-{suffix}-2.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-bayesian-run-{i}-{suffix}-1.pt" - for i in range(4) - for suffix in ["best", "last"] - ] - + [ - f"sequifier-test-hp-search-custom-eval-run-{i}-{suffix}-3.onnx" - for i in range(4) - for suffix in ["best", "last"] - ] - ) - - assert set(found_items) == set(expected_items), { - "missing": sorted(set(expected_items) - set(found_items)), - "unexpected": sorted(set(found_items) - set(expected_items)), - } diff --git a/tests/integration/test_visualize_training.py b/tests/integration/test_visualize_training.py deleted file mode 100644 index a619748a..00000000 --- a/tests/integration/test_visualize_training.py +++ /dev/null @@ -1,54 +0,0 @@ -import glob -import os - -from conftest import run_and_log - - -def test_visualize_training( - run_training, run_training_from_checkpoint, run_hp_search, project_root -): - # Dynamically find all models that were trained and logged - log_dir = os.path.join(project_root, "logs") - log_files = glob.glob(os.path.join(log_dir, "sequifier-*-rank0-*.txt")) - - models = set() - for lf in log_files: - filename = os.path.basename(lf) - # Extract model name by stripping known prefix and suffix - name = filename[len("sequifier-") :] - name = name.rsplit("-rank0-", 1)[0] - models.add(name) - - single_models = sorted([m for m in models if "categorical" in m or "real" in m]) - assert len(single_models) > 0, "No single models found in logs directory" - - hp_models_grid = sorted([m for m in models if "hp-search-grid-run" in m]) - assert len(hp_models_grid) > 0, "No hp grid models found in logs directory" - - for model in single_models: - # visualize_training.py expects to find "logs/" relative to the working directory - command = f"sequifier visualize-training {model} --project-root {project_root}" - run_and_log(command) - - output_path = os.path.join( - project_root, - "outputs", - "visualization", - f"{model}-training-visualization.html", - ) - assert os.path.exists( - output_path - ), f"Visualization output not found for {model}" - - models_str = ",".join(hp_models_grid) - command_joint = f"sequifier visualize-training {models_str} --project-root {project_root} --log-scale --bucket-training-batches 5" - run_and_log(command_joint) - - output_path_joint = os.path.join( - project_root, - "outputs", - "visualization", - "multi-model-training-visualization.html", - ) - - assert os.path.exists(output_path_joint), "Joint visualization output not found" diff --git a/tests/resources/source_configs/id_maps/itemId.json b/tests/resources/source_configs/id_maps/itemId.json deleted file mode 100644 index 77d5f018..00000000 --- a/tests/resources/source_configs/id_maps/itemId.json +++ /dev/null @@ -1 +0,0 @@ -{"100": 3, "101": 4, "102": 5, "103": 6, "104": 7, "105": 8, "106": 9, "107": 10, "108": 11, "109": 12, "110": 13, "111": 14, "112": 15, "113": 16, "114": 17, "115": 18, "116": 19, "117": 20, "118": 21, "119": 22, "120": 23, "121": 24, "122": 25, "123": 26, "124": 27, "125": 28, "126": 29, "127": 30, "128": 31, "129": 32} diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json deleted file mode 100644 index 78cac8f9..00000000 --- a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/preprocess-manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "manifest_version": 1, - "preprocessing_config": { - "stored_context_width": 9, - "max_target_offset": 1, - "stored_window_layout_version": 2, - "read_format": "csv", - "write_format": "pt", - "merge_output": false, - "selected_columns": null, - "data_columns": [ - "itemId" - ], - "split_ratios": [ - 0.6, - 0.2, - 0.2 - ], - "stride_by_split": [ - 1, - 1, - 1 - ], - "max_rows": null, - "process_by_file": true, - "subsequence_start_mode": "distribute", - "mask_column": null, - "metadata_config_path": null, - "use_precomputed_maps": null - }, - "effective_metadata_digest": { - "algorithm": "sha256", - "value": "b245092f219b7b0bed5e4e24ec7aa7be6dead1885e61adc00f6395d6164c460c" - } -} diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-0-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-0-0.pt deleted file mode 100644 index f796d2f4aa9749df94e9ff7acbcf40d3ebb0154e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4166 zcmeHKzi-n(7RP>YpXSdvw`q=<7ZNv@QzSXUcL=_W&?u1KU9 zAPAL=ELTP3*C6zTM!kAjdq$&eMIRXwN8Lp~>4jzs_3#`x*76mLd>MDIvsfdbLIVTC2M)X7hg)j;i(0276+EMe>2zAY0)8kTeYAVw1=Pq7!9>ii)fhlEus+(u@|F#1+?D+NTLH8U{nVj1i&E; zFox0L0y<&=q|mqqII07V0pPd>h+ssNoxo@^mgfV(cTX0U?~;vzmUr~R8EV+A7h=~N z%6u7@Zi@^8Dv3}o!1*Z1fZ_y7HC1~UBX);Ex4AizIY z-aKE~I{z>m`bSgY{y*rRef{ARN1)I)^8HayzE9?|W6r)esvAQ&TwM@wgFryd0b!g| zi7bZG&o`TMfGau`+J58xm6NtU!JO{NThu@`Xxz0LcAqW#OE=gM}cpIT>3iK9U^bav^OBQes=ZX3m>diazok z=!Jr@Q>TE#Fk|6ZanG@S zy2|rCJty_4NBz-Nl92w(=wyV?IewRpwNg$LPih*h=PD9bxdO6##wt)3ZfDc zYNehK2RL%%FTmfRXKv-f1^xm%vEABf-PDmPA+geGBWu6?zMYw!ndAh2Cq;!q)UJ`H zCMhiGI94j+VoWSzsjOhcAs~d-QAh|0zID{SA&RP^NFtWi zs!re0N|Gj(Zpb305q&9-!Wc#J=!m|Gj#hjXLS6A!jI&vEtkO8MXZy@v3nJF%-<4Yb?xC!(L+{{#@0Tiny>WX*w}% zHZ!niNU$K{>z^O*z*#WeMa)q>o<*1uQYb2Nxw<4(aW)fi=$KA|fNL+&uMR>E(_H}X z-3p7Zu%tpnx!s?<9jr*8VeRVH2s{Ir?iy0mkXIwXtDIu8nSRH`&F6WPu)*jxmIgcg zw7z$n-}}uK-VzLJZ5KCa9OIeK!UatHL3K9cA|}4o{oHV26AzxNKit~9PGT44ex4g^ z%X4ftGqRWG3U72Frf` zTz=5He$7*1ugc<$;-O2LOe*N>BD6>axs=TWEuk!zPP2&=pXRwVljPVWpJtduf@f!V zW`<+=6qn=@WCfK^2fw6u{O@aoiq(1A`;fF5GdoM0eP~W_lGyu<*`3qLuLu$2k))}? zY38!G6mt%)4{dPm>SLPe?A-(Jpz9+~(c{&&yOw4ad!YNnc+N4MvoMI)^-YrNg>@<`;txP-I&6B># zqoK?s*UVv03iA$*P466gr>mUM)pf-@dfXq|Cb4=rYgNo*wL%+P2oC;bQa{Zm6KY&e P2tb2QGHIBC{l?zE4T}d2 diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-2-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-2-0.pt deleted file mode 100644 index 97a48607d7c3264932d1c7e277f44b6e72a0ec5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3782 zcmd5fgk7@jn36Wju&?Y0zX>GB!2B()tk&PtRO5du z7HK6^BqWgFvd6vejT1=x3vR5$jT0Akj~toT_Ea9zl-dG`kwzmY^UU+i>-WnwBRz;v zHj6$RI$A&!yENZw(q`UlQrzx2mf5uPO5W;H>^SRd6u0v3nr%@zujb`N*jZS+V^=Gu z(XHK$KL>L630fIu^cKadS6U=x(w<{>3XOGY*{;-Z@a=WWZZ#|{p-N;Rms`m& zgv)j|+nA(%i1cf(+rIAqCXvCF6x$+`p_MdS&9!whY|K-Vxn>|^(8xX{StDzt9+Ewe zOtWX(*rZmk>q=Lh7Itv!qGeKvNN4I~gp$!Z+3VgX`#Px(qwb_T{@DuI-|@~I+dA`r zf9Ck34nQX;nXHo^Tmhw$DTW%PWZFY*l7mKSlg#*tLzEn@lOqD4NM?P&TmU!+1{W(ZRUBQ24Fq ztTt(513NA=Y_&4EtxG5%;^lvDAHd6k**Q9(yZ0|CGM zPTmhNa+v)El;d0B_Fam5;8FeV&tiw#7&L4yzng(DfZ1Qe5}J-{1c=H-xmuYJE*^yE zUd9Gv#$V7>u=3}*;F%=}Z%hX3M6mLGad9I7J}C}j8V2Y8l1|RYahw+{|M=hOP0#ms zjDaOIo5=D?wKB7v<^31H^>aP^dAIjTisN>O%g1q?cegsDxIO;sW1gPL7H)ia`|a$n z?r49Aco_Xw(D%;^vOLfBz}zV^mlOF%v0C}LzkhtGiZV&wfYb?t--Fv5^h@LD**yCX z=GWJ+eJA=$=v-X;Z`G!9;ulbqz{0QpZr=pU!|ZS2OK2pn!h)B)UF=w_g57IEi_)-K z)k=m7R#aVAic4j^tm?9+Dq2~Wm2y!n=_OfHbhW5ynp`T%pz<<)^CZUH&k}Hb)<;C?!qvMh(2cWDjCr-K zt|7`2u2f3`%U|(X{JtPc5l+S;#n@2ni+B{Q#S?ukoKHoHr>yyjX)BLHjZ%bDo=73H z4~HZa#obfk=utC}%9d^R|G qE}h>Z;XN5&?V!p07&HeA2VZ%pwa*u+I)Y%ozxNa8ferEi diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-3-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split0-3-0.pt deleted file mode 100644 index 1099e78dc545785794a1956f1ba6107a976bf323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3910 zcmdT{OK;Oa5Ox~!s9PZPK`D>&rh$@R=i!6{uLvR`BN2j-0zyQoV-ka#WbG{!L?tBD zNxPN~^Ww{pOpUnVp#wWdA0P3x~NC zBg0K`ST%91TEUf=Qo(AiX=qACkBKp@fmOqpZDF+c2juV~3d>>Hw}|?e6s4)_ zs)Ds&2!X&|GWMF6kp6Qo&JWL4ugI7>NmC@{C8;E zS99b1msrz(>>S-zQk<;;dcIix@H0x@V6GKs>7L>&na_#c{Vk(;v1nHzGrNm5H$Y#@0N=itQ09w8|eCx+=|NE>^ zVV$S556Q5gX|Fx@p#|AZ;_Nd{w}r#QAW_C6Nk@az$>nS*&bhdr_Q18GkLjdyb`Mz> z-4MBo9*@@US~^*rl`idKS@zCC`;txyXEJtE6i7|>co2(%w3zNNaOP1rMTC_5UMLcs z6wXxVrg+^WMRNTVbK%}jL0VzAp`2+&a=AO(@0r3*a-AH`q;SE-@!mVf>glQ=2ZP6L p(G&hyn`FR#VykW!+c}^#~yDkEL_HD}Jb*E44(Bl`v^Dj1~NnnW#8 z2$+a1C`e&d1%YD4&{Rcdc~&bUU>LP30tMEr>Kfu%j^&m~&sg=Po=z=N&wFbh2BLeA z%K0(9hQQ9_0;E+`G1O8lUqhO1GI;}R*EGG5N1$w0jQp;^z=3Eq7r+P;_f(1i`YZ_Z zq*5+!TJIP*n4@tQ4i4pf_^MWG&@TrO3_O!5nU;fxFenep^dTHRQq_vC0~KkNvdKI( z3cvt`N1BQl$lS@o5Q5<>ykPFZizT{*sY||+H8u|~mFiN+buO$?(_ZI7>_x@cQBZyt7$z=kIyK&L zO7KL)mp?!D$OB)SVodauIv zYXmA}Ms>>{uN|ZVqT%5FuNkroNOadAQd3@wKvv~4mrjkj61SHpCOfrF+Fu(6F>60J zu0*-|ZsYGdeox{w<+FV$=hLZ~PRgwWFlEPfmhKT7Mf4ASTVvPpGl}!pFZ86J=+J)7 z15#%ar|FpJtB&z>YNWl6n5y3XKY!w!_*bZLulYAUDAHDdI72f3{<*ky_WIwTLSC6; z^~GlbL&FaAMj=~FUMr+ifrb!XkR(1XCZ(hxaS4G>Bqfd$#iS^TaZwWDtN7(ACx}F) zu%A1L;=e^ABhy51bLV#YxI{jItAXM-E+<9Q*MgL zP=6Fc?-a*URra>)ATq4Uq#5cG3_<`dfYf0a7jDMgRZ+ diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-1-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-1-0.pt deleted file mode 100644 index 85a4f29e9a6e7ec61d9b24fbb8e79501b5f0200c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3206 zcmcImO>YuG7+y*XbU~$GwpCketro3NcKKK?)|OZjvrR;rCg?#zmk~B@f!Q5uG&Y); zHumVn^iuEs0{t7FHR-{VCy#n`UY3#_D5Oj3n@naG=9%Z2ci(wt(z3Ik<2)X&EhKJ% zBgi1ZLZ0MFiA^O( zPb>)mM11-E;~jh~Xq`o@aDLk&8WobuYihB)g~}wA^f5Z(Q4nzN1^(4X$)R-?kg%VH z&6fmKprSghpY9!^A<(dU_va*R18AK!#JF+0Nq}9s7)~Wen1wgCCnY;oz#f7aGdqrN z^q~A{EI6}F-=TF=KGl4q;20s0R!YlqA98QR(F7rW|*l7|2t ze~#XN1|x>nO~+VId5olzL+yD4ZV2F4k7m*TXtv zTvkh7VYoi@z}0pRw9;AKH^I;iQwy=Vw5IE~vRIum#;|;}&tm#|D}~j}Sc){g=-FII zoq`_GY^_;+ily)m^hP1JQdq5sr8wx3B650)33>$gk|=tWU=wAvl{oXc5A0JkOsti| zY6`0i$1uGj+g!%Uc9oW0t~-sXr=7tjiMR1|+-tPJAil!goCd|!pXPk#yLr7EfC~ z!(84)>1Bd;9+t2}BB~};LWMe!72R9V&~{x`N(F+dx~dg+BVIfZ4CdVwq0^bgGQv&+ z;(er6%bUh;UObq0&?#X&ly}mnRI6i`=poqsMC3$==sCb1aaeR5;Ne3_QWXVBL{_W1 z_pw$&8Y(@ICE~^2+c`W!urG(t>3jHm#ZjTu6=%g*Tfi48jWzx4HAjs##||q19Va-D z!xK7#ir|YBBE`>Acac1Mq<4MU*6_6PSI7<*C z#)B$#dp^1Y$E)-^j9$uT`cf`r($gm?H#R^idqy|iU>^{m|MTyS^;P;A#@XwS^wi(d z2RZ`B?gcPn7`=2%^p(eGCOz7jM@rQQ;Fo{SqyNVrJ0t!C7qGkkwg>q;5)k#m&cA&s zZ^4^@(LM9)wCZhk#8Bh#=}42Q1HCFjiz&#ZOxoQNB1Do&AsSC5Q;}pi77=2pWLQWf z;_+xKyc}Cj2;pcn9!n)aWnyk45TpuWWJO1#bXuL;?BhxLKN~hxxB9r1#O%{641RaKhz&Z#7bedB9`K)Pm1X2DW+%(?k7?7D#0eoY%2-obsyQM zXquRn!)yxc496JlaW=PcvR!3Gm+NkG=~*Y=CTZOPT2F-*7{u3RbEUY(ryD-wcjJ0D P1Q#6Yq$3>6H|G8WXH(tC diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-3-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split1-3-0.pt deleted file mode 100644 index 39785a599fcaa5222a628869d56b160b8c164bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3334 zcmcJS&u`LT7{?22g8@_advk8ipF=lTTVQ1eXGR=}sfmbLLQIsfQlYT}-u7iivn3>E zOLkKa9*qb81QU&3yn6KR&C?PS1< zrovJ46c$w+%I9z{B;>GIC@YeXlS52MDq&Gksue8eLuy5qFcXS|=tXE5t~{2Li8<n zE}8^UbV(Cj)&*BUFsBKE7!k{^VKg63@ovxf!Pke|WT2p?TCRl^YQpYX2tO(-n>n1_ z5*3vUY%(!&?2=%>h!4NMKZnVJ+S-U!Dq!0PeT8ImvQ#K-iY1&(_)T^!MZtg@Ptbvr zz@fG_AZ~vYHlAX!3@fUY|77oASp*w)um6~YZ2+~k4KZrm?jXRfT%?nUVUy$f_9U>5 z%BbF|U%yUuq-t(7rav0dui*Ln^@V(m+(T{W`E*yFGs(o{ah_`fK#*-qE58TZs+wO~ z{XQH&@c-lXpIVJbpq{+{Y+L^!HbNmupkBb92fvqB1LO{BJ9`GYnvX~_(SI}_8ujQG z`0M=VpZ|{^Jt6)Q<+tm9BNloZ0}%0o$KT!**8d%U)+nD{Vz|EfRZ)>h1bmi*6ql9q z$%OmR0EXo_CK8Ktah9W_EEA1$G#!gaW0BZ$jANq_I?mEjjs`0~ePL2TGF4DhyaNnw zoE(gKgo78R(&ahA3Nhx16%)WujIjx^Bq%G(m=ab^te0J|n(~kpXN>-F6K;rXQJbzc zvW}HvjI=Qm<+Xi^mRGC@V=yx#UXU1L(~&xY91+ZG%^067h~DlHtQBDlL1x4($`{(>+U$&o;f#gO`o@9SI8yPk1{8W5lU k@9-+?Ni42^%@7@YB~b7DT0`x4*$W3O5=ng&wAb4H1s#gu6951J diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-0-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-0-0.pt deleted file mode 100644 index 28153cd611d254af22afd12fa3516870c5e3af52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3206 zcmcImT~E_c815KsW1Bi*2&kYU$`m)+eRW)ju*ecq6XyuYVoa9O9k<4^?X+hQi9{0v z3700uaOL07zu~neUU=n|f5G#%Woh>T>w<4`(hkmZp67jg&hwtU;2vfepO5JXo>^oF z(nz!{5-}=?1Xb#)EQv~#i^?^ERJGY4s2tTAicI2BHp(u+%vj^KlFKeIFZzr3Ly>*V z6g`w)CTROf8M`D>SEXvK)FiT^`AaI=YRXEvL{LqutEHW|9}h($MK48Ybf#EA*lj@k zPwTbHhVeH)9xl4*6c&#Z-SjCnn%E=w2=+b~7{Mj@4zW)d6Z4b1sotaSil#weSER%s#5BzyK1b>;Y(G0%}{I2%f^~xM^%816C5t! z3C)Iz<0};9B6w0q9pEX!b%3W0#8rZ?74UT%Ac1ELz^n*$T+XU z)*FKAu%mkAPtOif5NJ4f_gb6S?f=&N@;mJ^nv`@|^h7OxS7uEe{HH6d>V;%)fuBY@U7o*O`D* z=9qr?G^EPZf%ZgbF(tX2%X&|QaB-gJ5~&QIiSukS&LuNE%O;ZPWu9MVS&sh7q|(cY z6sYuVzTAt@uLUD7xIl2Lb6b6!hkw{&z&_qiV)f}28$pnYaY)kEAlkXCmb_-;`Zxer zM;~aXv$}7_MmI*U4-Qjnxqdr~)hSapme0;v3}0`ju$q~jB2PWsVIn#OZPE6+dlWPa|+YM+BvMIux{fRqdm}J8r|(G uFL*o;%%x}D(H2R-d^>q6<|W~q*?cKZf13{)6OHTLh<b%{h*;!g(8+?<=e$6w_^Ul8W%w#2ZC&&4G+<{1P zQyf7$373kb7?z6!m1~+J7u9eqtW*iow6#@&N@0CfRR~XCMyH`?Wc8VvNl$W*j~8z` zLK~RNdnmm^(8@vyyJS++8>IZKlWeG;U0nmIebdrz^5y&3Z<^NE5_I{e5O(#GuRlj*BG;JrvlJ^ zf(LSVP-jp)K1)$9f`{s;Ej%o_w(y97I7jgL93Eu=0vPAMJEbcwq-5MaKlb(A@a1QtrSUN9cen9 z*i3q$X-ULD#HZiiH{oYNYb|1q3py5IR!E_!D&^`5s*+4Pz~~U;AmGk({HueKLu)M{ z<$M;FUl3G-ifWZVT{}cYpkeFwj}ce~&{}Iqa6?Wf0aoR7G?VUU5;vD8B|9_%=GRg4 z3hE$&#)T^N`ks7w6qu#Y&<;~R)|T>ECOy(jxsd>+Y#K-D?lMuJe`+&*f0jN&J9+*5 zq57fZAwb8Uy|*91h@l;(W3a7x6f)`FgYyX75WuhOjidj^A3q^}ksENDf5U@<2PQ!9 zL*`#Ul$VZP|MOgrQ|3s0@##oYr~|z$!WL6dN}05GUr3BkCSyV(l}z!;Xq=D5Q^{zQ zj|zeqjf-MT5QW4okxz)Aa&O`1-w^#*(6W*X1UGhWtB)t)0~2lT<8~6OPtPy}0V>8J ziEV?hb6G8Uj^TRO2G@aoz)oj%-xNdFM~@Eu35Mmpa~8wb?G#osV=1!q zpyx1=ItAUL*;=#u6iX4Lw%QH_Z>O+Y5lgY#CWUZ(ieb9RwUY%sO0W}UwH1;1-Mh{y zOcS$nSWRJ`;pn4BWQS=qx2vq=@!T|rzTgfwNP5h>{i{j~4B|7K&1q0v{cghCjE&=6 PSN#alL%kIG8-4!)sKDgU diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-2-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-2-0.pt deleted file mode 100644 index b333a65fdf3a51a5ecdf7fae56cc51b1bb62eed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3206 zcmcIm&rcIU6y8#3%Ys^~s94ceC9eg=pjswK*K1XR3PGc)sYD7&L176-hN|0ID!ITtK3TjP z2<%}l>!S23K|A*g*rAY$u9QN#8c{Wa&*^BZrfP*8L1m+&=XNC?4+H{PH$@n9WWI>7 z(}eI3D&^va`8OU9W*u~hfQPb9`c$el?29UOIp_Fc37``M z`!aaaU{Df1Pf-qnr|PJE?3W$;c-ll_`(p3zOWw}Arv{@UTERr(Hj`ue4w`k~_> zK!@+EdjX6XvX_p@zUmlGCC57J2;30Bul|@r|BpX%O8ha-XLtQA5At>tAk4$czq~JQ z!k2*TUio#}{Wed;P<`_mNLQ%?Jo)mWSe^<{g^+34QE#2*$!+!VIQ>5xHdQyz@pclcPp>cxqg0Gd zlC}e)oy%&;YYf-hKDav0fp$8p`z9E=acUtpm)3Iqb{4BsMj4iO_E}6{Z>O-D8B39- z7d@K`sZ-G2V|&f&Q!Isds6Ps+ox*BGEX7fu6ycLo_~{YcPod~lf-RKQR$|QOKC(~I zFtK(Ht0}BA9OLwgY;zgM+f`b2xo$V6o^=LWB+a`(^QqAWgZKz{a~c#^|202qzMI#( PA-LdBCmrEnygBwC@fYCy diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-3-0.pt b/tests/resources/source_data/test-data-categorical-1-interrupted-temp/test-data-categorical-1-interrupted-split2-3-0.pt deleted file mode 100644 index f7edbe8a70928d848d9044808b78f01afb7bb039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3334 zcmcInO=}ZD7~UlPNR!mYephX+pN-Z{v%6_GIaq110a?KqDFi`7x>=LOZPMADRun4* zX`wgu;88?8d-dSWn@8`02MZ)AOSdLXISkd*hRjd?QV^vcz&kAg821Z6#?`!GQ6mz?^ z*z`s=5R>a7^eR?Xt`(6-##LP|NAqh~)r>%1SC-dQt(eD3#i;7}bv}T+kw~taAPh3H zP*RZ3gaocvE2UfJ-vX#3=OII4s59pyy}Y`Hx}-2h-8Ush@=E?~7ZqJ8UR7lrK!FQc6vQZ$MZLxbI#TwO33b_5Hs|J0U%57CxIX7mbI$&q zGC&6~8qA_0gF^9Wn4r8Ejnq(EXjJlSp)nJ245Q;&bbxASBnp&!?C>5Meg{VB{;*h|V2WZzz z$e}e(AmM%$mLFoJ3MZp)j@uJ8Hvk5W5i?KM*#S>zT6BBWf7h)Wj~&(EA_$RWT#`5nl#|O|5*8?~=WTH9t3ysYyZa|7x_)v+T}rE0 z9Vd(3X=f>xm+o22y5gj;n;A{fkj1 diff --git a/tests/resources/source_data/test-data-categorical-1-interrupted.csv b/tests/resources/source_data/test-data-categorical-1-interrupted.csv deleted file mode 100644 index 9c89f83e..00000000 --- a/tests/resources/source_data/test-data-categorical-1-interrupted.csv +++ /dev/null @@ -1,201 +0,0 @@ -sequenceId,itemPosition,itemId -0,0,112 -0,1,104 -0,2,129 -0,3,121 -0,4,109 -0,5,111 -0,6,121 -0,7,109 -0,8,126 -0,9,112 -0,10,104 -0,11,103 -0,12,119 -0,13,103 -0,14,105 -0,15,121 -0,16,107 -0,17,128 -0,18,128 -0,19,116 -0,20,106 -0,21,103 -0,22,119 -0,23,105 -0,24,100 -1,25,113 -1,26,116 -1,27,105 -1,28,113 -1,29,108 -1,30,118 -1,31,102 -1,32,102 -1,33,121 -1,34,104 -1,35,111 -1,36,110 -1,37,102 -1,38,102 -1,39,120 -1,40,109 -1,41,101 -1,42,111 -1,43,127 -1,44,105 -1,45,115 -1,46,104 -2,47,112 -2,48,124 -2,49,121 -2,50,124 -2,51,129 -2,52,103 -2,53,119 -2,54,118 -2,55,110 -2,56,102 -2,57,121 -2,58,108 -2,59,101 -2,60,102 -2,61,110 -2,62,106 -2,63,102 -2,64,110 -2,65,109 -2,66,115 -3,67,122 -3,68,129 -3,69,101 -3,70,117 -3,71,120 -3,72,127 -3,73,122 -3,74,112 -3,75,127 -3,76,115 -3,77,117 -3,78,102 -3,79,120 -3,80,108 -3,81,126 -3,82,116 -3,83,102 -3,84,121 -3,85,118 -3,86,105 -4,87,113 -4,88,127 -4,89,105 -4,90,104 -4,91,106 -4,92,118 -4,93,112 -4,94,122 -4,95,105 -4,96,121 -4,97,119 -4,98,126 -4,99,120 -4,100,103 -4,101,117 -4,102,114 -5,103,120 -5,104,123 -5,105,127 -5,106,105 -5,107,112 -5,108,108 -5,109,123 -5,110,108 -5,111,129 -5,112,122 -5,113,117 -5,114,122 -5,115,109 -5,116,112 -5,117,126 -5,118,120 -6,119,127 -6,120,119 -6,121,127 -6,122,102 -6,123,113 -6,124,119 -6,125,103 -6,126,126 -6,127,128 -6,128,113 -6,129,111 -6,130,117 -6,131,124 -6,132,100 -6,133,119 -6,134,117 -6,135,103 -6,136,110 -6,137,108 -6,138,125 -6,139,107 -7,140,111 -7,141,112 -7,142,113 -7,143,113 -7,144,113 -7,145,121 -7,146,100 -7,147,129 -7,148,100 -7,149,125 -7,150,118 -7,151,121 -7,152,127 -7,153,121 -7,154,129 -7,155,113 -7,156,110 -8,157,101 -8,158,119 -8,159,103 -8,160,113 -8,161,105 -8,162,111 -8,163,124 -8,164,108 -8,165,118 -8,166,124 -8,167,109 -8,168,121 -8,169,110 -8,170,120 -8,171,114 -8,172,107 -8,173,100 -8,174,111 -8,175,107 -8,176,109 -8,177,114 -8,178,102 -8,179,126 -8,180,115 -9,181,128 -9,182,120 -9,183,103 -9,184,116 -9,185,122 -9,186,100 -9,187,128 -9,188,102 -9,189,122 -9,190,110 -9,191,122 -9,192,107 -9,193,123 -9,194,103 -9,195,128 -9,196,106 -9,197,108 -9,198,119 -9,199,129 diff --git a/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv b/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv deleted file mode 100644 index 9c89f83e..00000000 --- a/tests/resources/source_data/test-data-categorical-1-lookahead-0.csv +++ /dev/null @@ -1,201 +0,0 @@ -sequenceId,itemPosition,itemId -0,0,112 -0,1,104 -0,2,129 -0,3,121 -0,4,109 -0,5,111 -0,6,121 -0,7,109 -0,8,126 -0,9,112 -0,10,104 -0,11,103 -0,12,119 -0,13,103 -0,14,105 -0,15,121 -0,16,107 -0,17,128 -0,18,128 -0,19,116 -0,20,106 -0,21,103 -0,22,119 -0,23,105 -0,24,100 -1,25,113 -1,26,116 -1,27,105 -1,28,113 -1,29,108 -1,30,118 -1,31,102 -1,32,102 -1,33,121 -1,34,104 -1,35,111 -1,36,110 -1,37,102 -1,38,102 -1,39,120 -1,40,109 -1,41,101 -1,42,111 -1,43,127 -1,44,105 -1,45,115 -1,46,104 -2,47,112 -2,48,124 -2,49,121 -2,50,124 -2,51,129 -2,52,103 -2,53,119 -2,54,118 -2,55,110 -2,56,102 -2,57,121 -2,58,108 -2,59,101 -2,60,102 -2,61,110 -2,62,106 -2,63,102 -2,64,110 -2,65,109 -2,66,115 -3,67,122 -3,68,129 -3,69,101 -3,70,117 -3,71,120 -3,72,127 -3,73,122 -3,74,112 -3,75,127 -3,76,115 -3,77,117 -3,78,102 -3,79,120 -3,80,108 -3,81,126 -3,82,116 -3,83,102 -3,84,121 -3,85,118 -3,86,105 -4,87,113 -4,88,127 -4,89,105 -4,90,104 -4,91,106 -4,92,118 -4,93,112 -4,94,122 -4,95,105 -4,96,121 -4,97,119 -4,98,126 -4,99,120 -4,100,103 -4,101,117 -4,102,114 -5,103,120 -5,104,123 -5,105,127 -5,106,105 -5,107,112 -5,108,108 -5,109,123 -5,110,108 -5,111,129 -5,112,122 -5,113,117 -5,114,122 -5,115,109 -5,116,112 -5,117,126 -5,118,120 -6,119,127 -6,120,119 -6,121,127 -6,122,102 -6,123,113 -6,124,119 -6,125,103 -6,126,126 -6,127,128 -6,128,113 -6,129,111 -6,130,117 -6,131,124 -6,132,100 -6,133,119 -6,134,117 -6,135,103 -6,136,110 -6,137,108 -6,138,125 -6,139,107 -7,140,111 -7,141,112 -7,142,113 -7,143,113 -7,144,113 -7,145,121 -7,146,100 -7,147,129 -7,148,100 -7,149,125 -7,150,118 -7,151,121 -7,152,127 -7,153,121 -7,154,129 -7,155,113 -7,156,110 -8,157,101 -8,158,119 -8,159,103 -8,160,113 -8,161,105 -8,162,111 -8,163,124 -8,164,108 -8,165,118 -8,166,124 -8,167,109 -8,168,121 -8,169,110 -8,170,120 -8,171,114 -8,172,107 -8,173,100 -8,174,111 -8,175,107 -8,176,109 -8,177,114 -8,178,102 -8,179,126 -8,180,115 -9,181,128 -9,182,120 -9,183,103 -9,184,116 -9,185,122 -9,186,100 -9,187,128 -9,188,102 -9,189,122 -9,190,110 -9,191,122 -9,192,107 -9,193,123 -9,194,103 -9,195,128 -9,196,106 -9,197,108 -9,198,119 -9,199,129 diff --git a/tests/resources/source_data/test-data-categorical-1.csv b/tests/resources/source_data/test-data-categorical-1.csv deleted file mode 100644 index 9c89f83e..00000000 --- a/tests/resources/source_data/test-data-categorical-1.csv +++ /dev/null @@ -1,201 +0,0 @@ -sequenceId,itemPosition,itemId -0,0,112 -0,1,104 -0,2,129 -0,3,121 -0,4,109 -0,5,111 -0,6,121 -0,7,109 -0,8,126 -0,9,112 -0,10,104 -0,11,103 -0,12,119 -0,13,103 -0,14,105 -0,15,121 -0,16,107 -0,17,128 -0,18,128 -0,19,116 -0,20,106 -0,21,103 -0,22,119 -0,23,105 -0,24,100 -1,25,113 -1,26,116 -1,27,105 -1,28,113 -1,29,108 -1,30,118 -1,31,102 -1,32,102 -1,33,121 -1,34,104 -1,35,111 -1,36,110 -1,37,102 -1,38,102 -1,39,120 -1,40,109 -1,41,101 -1,42,111 -1,43,127 -1,44,105 -1,45,115 -1,46,104 -2,47,112 -2,48,124 -2,49,121 -2,50,124 -2,51,129 -2,52,103 -2,53,119 -2,54,118 -2,55,110 -2,56,102 -2,57,121 -2,58,108 -2,59,101 -2,60,102 -2,61,110 -2,62,106 -2,63,102 -2,64,110 -2,65,109 -2,66,115 -3,67,122 -3,68,129 -3,69,101 -3,70,117 -3,71,120 -3,72,127 -3,73,122 -3,74,112 -3,75,127 -3,76,115 -3,77,117 -3,78,102 -3,79,120 -3,80,108 -3,81,126 -3,82,116 -3,83,102 -3,84,121 -3,85,118 -3,86,105 -4,87,113 -4,88,127 -4,89,105 -4,90,104 -4,91,106 -4,92,118 -4,93,112 -4,94,122 -4,95,105 -4,96,121 -4,97,119 -4,98,126 -4,99,120 -4,100,103 -4,101,117 -4,102,114 -5,103,120 -5,104,123 -5,105,127 -5,106,105 -5,107,112 -5,108,108 -5,109,123 -5,110,108 -5,111,129 -5,112,122 -5,113,117 -5,114,122 -5,115,109 -5,116,112 -5,117,126 -5,118,120 -6,119,127 -6,120,119 -6,121,127 -6,122,102 -6,123,113 -6,124,119 -6,125,103 -6,126,126 -6,127,128 -6,128,113 -6,129,111 -6,130,117 -6,131,124 -6,132,100 -6,133,119 -6,134,117 -6,135,103 -6,136,110 -6,137,108 -6,138,125 -6,139,107 -7,140,111 -7,141,112 -7,142,113 -7,143,113 -7,144,113 -7,145,121 -7,146,100 -7,147,129 -7,148,100 -7,149,125 -7,150,118 -7,151,121 -7,152,127 -7,153,121 -7,154,129 -7,155,113 -7,156,110 -8,157,101 -8,158,119 -8,159,103 -8,160,113 -8,161,105 -8,162,111 -8,163,124 -8,164,108 -8,165,118 -8,166,124 -8,167,109 -8,168,121 -8,169,110 -8,170,120 -8,171,114 -8,172,107 -8,173,100 -8,174,111 -8,175,107 -8,176,109 -8,177,114 -8,178,102 -8,179,126 -8,180,115 -9,181,128 -9,182,120 -9,183,103 -9,184,116 -9,185,122 -9,186,100 -9,187,128 -9,188,102 -9,189,122 -9,190,110 -9,191,122 -9,192,107 -9,193,123 -9,194,103 -9,195,128 -9,196,106 -9,197,108 -9,198,119 -9,199,129 diff --git a/tests/resources/source_data/test-data-categorical-3-equal.csv b/tests/resources/source_data/test-data-categorical-3-equal.csv deleted file mode 100644 index bc370970..00000000 --- a/tests/resources/source_data/test-data-categorical-3-equal.csv +++ /dev/null @@ -1,161 +0,0 @@ -sequenceId,itemPosition,itemId,supCat1,supCat2 -0,0,112,3,3 -0,1,104,9,8 -0,2,129,7,2 -0,3,121,9,2 -0,4,109,2,1 -0,5,111,6,1 -0,6,121,9,1 -0,7,109,3,7 -0,8,126,4,1 -0,9,112,3,5 -0,10,104,4,4 -0,11,103,9,8 -0,12,119,2,1 -0,13,103,0,8 -0,14,105,7,6 -0,15,121,6,5 -1,0,113,9,8 -1,1,116,1,2 -1,2,105,5,1 -1,3,113,6,1 -1,4,108,1,7 -1,5,118,5,5 -1,6,102,3,6 -1,7,102,0,2 -1,8,121,6,1 -1,9,104,3,1 -1,10,111,1,8 -1,11,110,6,4 -1,12,102,4,2 -1,13,102,6,9 -1,14,120,0,0 -1,15,109,6,1 -2,0,112,3,6 -2,1,124,5,3 -2,2,121,0,6 -2,3,124,8,1 -2,4,129,6,1 -2,5,103,3,0 -2,6,119,6,6 -2,7,118,4,7 -2,8,110,0,2 -2,9,102,3,0 -2,10,121,8,6 -2,11,108,5,0 -2,12,101,6,2 -2,13,102,4,4 -2,14,110,8,9 -2,15,106,9,4 -3,0,122,9,1 -3,1,129,5,6 -3,2,101,0,6 -3,3,117,2,7 -3,4,120,0,3 -3,5,127,8,1 -3,6,122,4,3 -3,7,112,4,8 -3,8,127,7,0 -3,9,115,9,9 -3,10,117,0,2 -3,11,102,5,9 -3,12,120,6,0 -3,13,108,7,3 -3,14,126,8,3 -3,15,116,6,1 -4,0,113,4,9 -4,1,127,3,6 -4,2,105,7,4 -4,3,104,9,2 -4,4,106,9,4 -4,5,118,0,4 -4,6,112,0,8 -4,7,122,0,3 -4,8,105,0,6 -4,9,121,6,2 -4,10,119,9,5 -4,11,126,1,4 -4,12,120,9,9 -4,13,103,6,1 -4,14,117,1,3 -4,15,114,6,0 -5,0,120,4,2 -5,1,123,4,5 -5,2,127,0,0 -5,3,105,4,5 -5,4,112,6,0 -5,5,108,4,7 -5,6,123,8,4 -5,7,108,6,5 -5,8,129,9,1 -5,9,122,0,2 -5,10,117,7,6 -5,11,122,2,2 -5,12,109,3,8 -5,13,112,1,8 -5,14,126,9,0 -5,15,120,9,6 -6,0,127,0,7 -6,1,119,8,4 -6,2,127,4,2 -6,3,102,3,8 -6,4,113,6,0 -6,5,119,5,3 -6,6,103,2,8 -6,7,126,1,5 -6,8,128,4,0 -6,9,113,5,5 -6,10,111,7,2 -6,11,117,9,8 -6,12,124,8,8 -6,13,100,2,8 -6,14,119,4,3 -6,15,117,4,4 -7,0,111,9,9 -7,1,112,3,2 -7,2,113,7,8 -7,3,113,1,0 -7,4,113,8,4 -7,5,121,1,4 -7,6,100,4,6 -7,7,129,6,7 -7,8,100,4,3 -7,9,125,6,0 -7,10,118,9,6 -7,11,121,7,3 -7,12,127,8,3 -7,13,121,1,2 -7,14,129,1,3 -7,15,113,8,6 -8,0,101,6,7 -8,1,119,4,2 -8,2,103,5,3 -8,3,113,7,9 -8,4,105,6,1 -8,5,111,9,0 -8,6,124,7,5 -8,7,108,9,1 -8,8,118,4,9 -8,9,124,2,0 -8,10,109,1,6 -8,11,121,8,0 -8,12,110,4,6 -8,13,120,4,3 -8,14,114,4,2 -8,15,107,8,4 -9,0,128,0,1 -9,1,120,0,6 -9,2,103,5,7 -9,3,116,5,7 -9,4,122,6,9 -9,5,100,6,5 -9,6,128,1,4 -9,7,102,7,8 -9,8,122,6,5 -9,9,110,4,8 -9,10,122,7,5 -9,11,107,5,3 -9,12,123,2,2 -9,13,103,8,2 -9,14,128,9,2 -9,15,106,7,9 diff --git a/tests/resources/source_data/test-data-categorical-3-equal.parquet b/tests/resources/source_data/test-data-categorical-3-equal.parquet deleted file mode 100644 index d86b09844edfaf67e0b72caaced91b9f5328b65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4744 zcmcgwTWs6b8Kz|2?8T|0go2!T0Hel=3)rbHmJ=5lQ0i)Gwrt4~byMQ4Co3+I2u5h7H)mkQGB8`cUjYhmtK> zYO?`B34IjL|DW?;zVn}-f;Q-cn>3L3b)>LLo*@Yj){S_nO03}65l0VaTX z(sIQ@XxDi6nVGl3p4T<+#l$528y6`l%5)+ z43v>FQD(|QjXQs@pCJv?KEgCLZJ(%%I}K6Ei;O_(Z4dOePxQ98_0E@dPRsw}b9x?9 zCP+O2w<-7{2pI3_$phUgNnsB5bdMr|umBn3fC<3Y04D&GK+Z`phps2IFXZD*9qAfi zr>7faXIKg*vd{L|d1}g&Y`*^XN1uOgAx>GGpO}t#IU%WHd81O7RH>q9%zR+5{Y~$D z$LM^;0MrbdM%ytgB}P*7P)B|W)Lg;Tv>&#r5LXd!1JD7K0Tsaa09$|-KmzOlRDcX< z0tx^H&<1=LAOcE&T|fiyeLx*h16%{_0R+Hxz%~G={7^@Jtn1@)iI_8>Fzg025w7yX zUO5?`qF$umr%X405Ib9%efMYeCx7yfne)^ub03fjqcsBWqorC%H8e(?v}8*gzhY*@c>Cn_ww_HXK6XYYmH zYX0ZX_g=l{+@G8w_1*e3p?&Dp=9>oF?+nflC!FtCW{!n9lI0CD);of8Nwn$c44DC_ zKurJxF|M13!X%6Ubgs10`t5N(&^o&TZs^KB%p4VvHJ~$+dH>GJ3(p%Oq43^;A!&Lk zIela4AZ7j0dB$kv3gI0(l46q#=c%4LFy5^H(7K$`)jFZjxz63>+!?FyZt70q#o&eH z{_S(l&!&!YH`g200H?aO^835q_D{X@vy;wSCvoz9F^x_P zs1-rm!7T{2B4|TbkiGtEG!>&8&HyD2Z(!4QI(^QYyx`^bm(7=MM_#+j7wZw%)Jyy0 zuC}wFyC7b^mB=#elNU~P1nYP_Yd!V++>Z;9TV|?ye($#L^}A-i9?aNCqhsHBpFBF2 zT}nI}CGU;d4#u3fPCH+=B1%TZHj0{Q*+CH;Ytr5>&7K7@g~iBVFVfi=5I>8=&|Rlzrl0$2+V5A^%pTKeeO!hAxU0qX zb1Uqd(_;JRi8BQBa=WR@DFRow-!xxyNQxk~ujVUqqpZ{&&rsjK=GX=qJUMEdvL!m^ zDTl(9MGzTANCS7cM)l_XRT; zh2!W~1F|y^%`x4vs3b*QTEx5z#B?a`3kgwneI6p~rs?Q^B@eqju6@jo8DX?bO@7Q- z1M+b%4X1e||FS&0ZGYHbpJIeVuV=JFP5x+yc=@rd#4jMM7~yc#MxqQg`EiH1uxlcx zR%*E3WQnhFwGJw`YKN=UDlHU#Q>@kD7Z;MceHUF9Jq{=VN7s3u(sR*!(e1cS*iX=j z#CrM}t()8bIQcZX+H{zv={Nvg-=gV7+P{TlTXbLx%l!TUeG3Ughx*l4P#eP?TfusU zrdu?ugKuOckb)r^gCq{~{g;@s+{i`P#f&G`UT$(Gu@zyZN-QfPCaKMLFMr`C%2}8MdD*%Q7EH6!>yj&27TGh|kSOTF6c-3+uC) zSV35kTUZx}y7{sU_7lB$-F(LH%XkyMd<4Z!OS~t#lS{{3T0U-Bh=jpLqKI;Zyk))| zYvv-r3yLWaW!X?xT@OT;kHx-==BK@N=`gN9bT^j?yK`w@DVLJBHT$`0F5TYFczSsO zUmmtCq}fK+!$xxf=8N*E@=Dwj)AYc#yCt&AE-~Ym@t(lG3Bl~h9C(GT^DDsf%0O&Y zA;PMu$nq|iNmO~yqJ;Kph}%GPlo# z-jzMvzxMKK0M*|SFA$f^e+h2`dc_Yl33cc0<3wSR&vs10oDOp~sQ;g0%6r*X+!J=K zZDN~cF3r|+;pIj)?bh}|iMjKkSWyUuFb|`664Gd|);ituGgOa*`oVhqg1y`oGX7vT z6Yts_QDeQhH7-V;lSk~IdqAINUDZyxg_l-W++BR6>ooh_yv+gxm|mKdq9iTcFho_cbb=q{IDZeSZFrm@ypY%_`r zbuQEwX?mqQ7xgpL@78gD%Oiab-GaCYLVu*`jSc9ps2#=`EQ}!GVXKApNVn44M~1F8 zVLo={ufWsOp!L&5w1&>28}6Uz0al^gVU5Itn`k~XTbhn0;ps9wgaSB-01~2p-Mf$} zKR#=lX&e^H3zo*U{IHWCgY2P+UH>S_e*bG|jL!w@Zvw9_#2J#&tGiwQ8a-$cyiCA; z7UhfAK`@%*Bm3KEX 20 samples total -> 4 batches - batches = list(dataset) - assert len(batches) == 4 - - # Verify input mapping structures - for batch in batches: - assert batch.inputs["item"].shape[0] == 5 - - assert _input_markers(batches) == [ - *[float(100 + i) for i in range(10)], - *[float(300 + i) for i in range(10)], - ] - assert _sample_valid_mask(batches) == [True] * 20 - - -def test_exact_strategy_uneven_files_exception(mock_config, tmp_path): - """Exact distributed mode rejects uneven ranks.""" - data_dir = tmp_path / "uneven_parquet_data" - data_dir.mkdir() - - # Write asymmetrical sample quotas across files - batch_files = [ - {"path": "file_1.parquet", "samples": 15}, - {"path": "file_2.parquet", "samples": 10}, - ] - metadata = _folder_metadata(25, batch_files) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - with patch("torch.distributed.is_initialized", return_value=True), patch( - "torch.distributed.get_world_size", return_value=2 - ): - with pytest.raises(Exception) as exc_info: - SequifierDatasetFromFolderParquetLazy(str(data_dir), mock_config) - - assert "different number of samples per rank/GPU" in str(exc_info.value) - - -@patch("torch.distributed.get_rank", return_value=1) -def test_oversampling_strategy(mock_rank, mock_config, tmp_path): - """Oversampling pads short ranks.""" - data_dir = tmp_path / "oversample_parquet_data" - data_dir.mkdir() - - schema = { - "sequenceId": pl.Int64, - "subsequenceId": pl.Int64, - "startItemPosition": pl.Int64, - "leftPadLength": pl.Int64, - "inputCol": pl.String, - "2": pl.Float64, - "1": pl.Float64, - "0": pl.Float64, - } - - # File 1 has 15 rows, File 2 has 10 rows - for i, num_rows in [(1, 15), (2, 10)]: - rows = [ - ( - s, - 0, - s * 2, - 0, - "item", - float(i * 100 + s), - float(i * 100 + s + 1), - float(i * 100 + s + 2), - ) - for s in range(num_rows) - ] - pl.DataFrame(rows, schema=schema, orient="row").write_parquet( - data_dir / f"file_{i}.parquet" - ) - - batch_files = [ - {"path": "file_1.parquet", "samples": 15}, - {"path": "file_2.parquet", "samples": 10}, - ] - metadata = _folder_metadata(25, batch_files) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_config.training_spec.sampling_strategy = "oversampling" - - with patch("torch.distributed.is_initialized", return_value=True), patch( - "torch.distributed.get_world_size", return_value=2 - ): - dataset = SequifierDatasetFromFolderParquetLazy( - str(data_dir), mock_config, shuffle=False - ) - # Should match max(15, 10) - assert dataset.target_samples == 15 - assert len(dataset) == 3 - - batches = list(dataset) - assert len(batches) == 3 - assert _input_markers(batches) == [ - *[float(200 + i) for i in range(10)], - *[float(200 + i) for i in range(5)], - ] - assert _sample_valid_mask(batches) == [True] * 10 + [False] * 5 - - -@patch("torch.distributed.get_rank", return_value=0) -def test_undersampling_strategy(mock_rank, mock_config, tmp_path): - """Undersampling truncates long ranks.""" - data_dir = tmp_path / "undersample_parquet_data" - data_dir.mkdir() - - schema = { - "sequenceId": pl.Int64, - "subsequenceId": pl.Int64, - "startItemPosition": pl.Int64, - "leftPadLength": pl.Int64, - "inputCol": pl.String, - "2": pl.Float64, - "1": pl.Float64, - "0": pl.Float64, - } - - for i, num_rows in [(1, 15), (2, 10)]: - rows = [ - ( - s, - 0, - s * 2, - 0, - "item", - float(i * 100 + s), - float(i * 100 + s + 1), - float(i * 100 + s + 2), - ) - for s in range(num_rows) - ] - pl.DataFrame(rows, schema=schema, orient="row").write_parquet( - data_dir / f"file_{i}.parquet" - ) - - batch_files = [ - {"path": "file_1.parquet", "samples": 15}, - {"path": "file_2.parquet", "samples": 10}, - ] - metadata = _folder_metadata(25, batch_files) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_config.training_spec.sampling_strategy = "undersampling" - - with patch("torch.distributed.is_initialized", return_value=True), patch( - "torch.distributed.get_world_size", return_value=2 - ): - dataset = SequifierDatasetFromFolderParquetLazy( - str(data_dir), mock_config, shuffle=False - ) - # Should match min(15, 10) - assert dataset.target_samples == 10 - assert len(dataset) == 2 - - batches = list(dataset) - assert len(batches) == 2 - assert _input_markers(batches) == [float(100 + i) for i in range(10)] - assert _sample_valid_mask(batches) == [True] * 10 diff --git a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py b/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py deleted file mode 100644 index 6f3c8c98..00000000 --- a/tests/unit/io/test_sequifier_dataset_from_folder_pt_lazy.py +++ /dev/null @@ -1,421 +0,0 @@ -import json -from unittest.mock import MagicMock, patch - -import pytest -import torch - -from sequifier.helpers import ModelWindowView, StoredWindowLayout -from sequifier.io.sequifier_dataset_from_folder_pt_lazy import ( - SequifierDatasetFromFolderPtLazy, -) - -CONTEXT_LENGTH = 5 -FUTURE_CAPACITY = 1 -STORED_WIDTH = CONTEXT_LENGTH + FUTURE_CAPACITY - - -def _folder_metadata(total_samples, batch_files): - return { - "total_samples": total_samples, - "batch_files": batch_files, - "stored_context_width": STORED_WIDTH, - "max_target_offset": FUTURE_CAPACITY, - "stored_window_layout_version": 2, - } - - -# --- Fixtures --- -@pytest.fixture -def mock_config(tmp_path): - """Mock dataset config.""" - config = MagicMock() - config.project_root = str(tmp_path) - config.training_spec.batch_size = 5 - config.training_spec.sampling_strategy = "exact" - config.training_spec.num_workers = 0 - config.seed = 42 - config.storage_layout = StoredWindowLayout( - stored_context_width=STORED_WIDTH, max_target_offset=FUTURE_CAPACITY, version=2 - ) - config.window_view = ModelWindowView( - context_length=CONTEXT_LENGTH, objective="causal", target_offset=1 - ) - config.input_columns = ["col1"] - config.target_columns = ["col1", "tgt1"] - config.training_spec.training_objective = "causal" - return config - - -@pytest.fixture -def dataset_path(tmp_path): - """Sets up a temporary data directory with metadata.json.""" - data_dir = tmp_path / "data" - data_dir.mkdir() - - # Create dummy metadata.json - # We define 4 files with 10 samples each = 40 total samples - metadata = _folder_metadata( - 40, - [ - {"path": "file1.pt", "samples": 10}, - {"path": "file2.pt", "samples": 10}, - {"path": "file3.pt", "samples": 10}, - {"path": "file4.pt", "samples": 10}, - ], - ) - - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - return str(data_dir) - - -@pytest.fixture -def mock_torch_load(): - """Mocks torch.load to return dummy tensors matching the preprocessed format.""" - with patch("torch.load") as mock_load: - - def side_effect(path, map_location, weights_only): - dummy_seq = {"col1": torch.ones((10, 6)), "tgt1": torch.zeros((10, 6))} - left_pad_lengths = torch.zeros(10, dtype=torch.int64) - - return ( - dummy_seq, - None, - None, - None, - left_pad_lengths, - ) - - mock_load.side_effect = side_effect - yield mock_load - - -# --- Tests --- - - -def test_initialization(mock_config, dataset_path): - """Metadata-backed batch length.""" - dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config) - - # 40 total samples / batch size of 5 = 8 batches - assert len(dataset) == 8 - assert len(dataset.batch_files_info) == 4 - assert dataset.total_samples == 40 - - -def test_iteration_yields_correct_batches(mock_config, dataset_path, mock_torch_load): - """Tensor slices from file iteration.""" - dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config, shuffle=False) - - # Consume the generator - batches = list(dataset) - - # 4 files * 10 samples = 40 total samples. 40 / 5 batch_size = 8 batches - assert len(batches) == 8 - - # Each file has 10 samples, so torch.load should be called 4 times - assert mock_torch_load.call_count == 4 - - # Verify the structure of a yielded batch - batch = batches[0] - seq_dict = batch.inputs - tgt_dict = batch.targets - - assert "col1" in seq_dict, f"{seq_dict = }" - - assert "tgt1" in tgt_dict, f"{tgt_dict = }" - # Check that batch size and sequence length truncation works properly - assert seq_dict["col1"].shape == (5, 5) - assert tgt_dict["tgt1"].shape == (5, 5) - - -def test_iteration_attaches_explicit_padding_masks(mock_config, dataset_path): - with patch("torch.load") as mock_load: - - def side_effect(path, map_location, weights_only): - dummy_seq = { - "col1": torch.ones((10, 6)), - "tgt1": torch.ones((10, 6)), - } - left_pad_lengths = torch.tensor([0, 1, 2, 3, 4, 5, 0, 0, 0, 0]) - return ( - dummy_seq, - torch.arange(10), - torch.zeros(10, dtype=torch.int64), - torch.zeros(10, dtype=torch.int64), - left_pad_lengths, - ) - - mock_load.side_effect = side_effect - dataset = SequifierDatasetFromFolderPtLazy( - dataset_path, mock_config, shuffle=False - ) - batch = next(iter(dataset)) - metadata_dict = batch.metadata - - assert torch.equal( - metadata_dict["attention_valid_mask"], - torch.tensor( - [ - [True, True, True, True, True], - [False, True, True, True, True], - [False, False, True, True, True], - [False, False, False, True, True], - [False, False, False, False, True], - ] - ), - ) - assert torch.equal( - metadata_dict["target_valid_mask"], - torch.tensor( - [ - [True, True, True, True, True], - [True, True, True, True, True], - [False, True, True, True, True], - [False, False, True, True, True], - [False, False, False, True, True], - ] - ), - ) - - -@patch("torch.distributed.is_initialized", return_value=True) -@patch("torch.distributed.get_world_size", return_value=2) -@patch("torch.distributed.get_rank", return_value=0) -def test_distributed_sharding( - mock_rank, mock_ws, mock_init, mock_config, dataset_path, mock_torch_load -): - """Distributed file sharding.""" - dataset = SequifierDatasetFromFolderPtLazy(dataset_path, mock_config, shuffle=False) - - # World size = 2, Total files = 4 - # Rank 0 gets file index 0 and 2 (file1.pt, file3.pt) -> Total 20 samples - # 20 samples / 5 batch_size = 4 expected batches - assert len(dataset) == 4 - - batches = list(dataset) - - assert len(batches) == 4 - assert mock_torch_load.call_count == 2 - - # Verify it loaded the correct specific files - loaded_files = [call.args[0] for call in mock_torch_load.call_args_list] - assert any("file1.pt" in f for f in loaded_files) - assert any("file3.pt" in f for f in loaded_files) - assert not any("file2.pt" in f for f in loaded_files) - - -@patch("sequifier.io.sequifier_dataset_from_folder_pt_lazy.get_worker_info") -def test_dataloader_worker_sharding_continuous_boundaries( - mock_worker_info, mock_config, tmp_path -): - """Worker boundaries can start and stop inside PT files.""" - data_dir = tmp_path / "data_uneven_worker" - data_dir.mkdir() - file_specs = [ - ("file1.pt", 7, 0), - ("file2.pt", 11, 100), - ("file3.pt", 13, 200), - ("file4.pt", 9, 300), - ] - metadata = _folder_metadata( - sum(samples for _, samples, _ in file_specs), - [{"path": path, "samples": samples} for path, samples, _ in file_specs], - ) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_info = MagicMock() - mock_info.id = 1 - mock_info.num_workers = 2 - mock_worker_info.return_value = mock_info - - mock_config.training_spec.num_workers = 2 - - file_offsets = {path: (samples, offset) for path, samples, offset in file_specs} - - def load_uneven_file(path, map_location, weights_only): - file_name = path.split("/")[-1] - samples, offset = file_offsets[file_name] - values = torch.arange(offset, offset + samples * STORED_WIDTH).reshape( - samples, STORED_WIDTH - ) - return ( - {"col1": values, "tgt1": values.clone()}, - None, - None, - None, - torch.zeros(samples, dtype=torch.int64), - ) - - with patch("torch.load", side_effect=load_uneven_file) as mock_load: - dataset = SequifierDatasetFromFolderPtLazy( - str(data_dir), mock_config, shuffle=False - ) - batches = list(dataset) - - assert len(batches) == 4 - assert mock_load.call_count == 2 - - loaded_files = [call.args[0] for call in mock_load.call_args_list] - assert any("file3.pt" in f for f in loaded_files) - assert any("file4.pt" in f for f in loaded_files) - assert not any("file1.pt" in f for f in loaded_files) - assert not any("file2.pt" in f for f in loaded_files) - - sample_ids = [] - for batch in batches: - sample_ids.extend(batch.inputs["col1"][:, 0].tolist()) - - assert sample_ids == [ - 200 + 2 * STORED_WIDTH, - 200 + 3 * STORED_WIDTH, - 200 + 4 * STORED_WIDTH, - 200 + 5 * STORED_WIDTH, - 200 + 6 * STORED_WIDTH, - 200 + 7 * STORED_WIDTH, - 200 + 8 * STORED_WIDTH, - 200 + 9 * STORED_WIDTH, - 200 + 10 * STORED_WIDTH, - 200 + 11 * STORED_WIDTH, - 200 + 12 * STORED_WIDTH, - 300, - 300 + STORED_WIDTH, - 300 + 2 * STORED_WIDTH, - 300 + 3 * STORED_WIDTH, - 300 + 4 * STORED_WIDTH, - 300 + 5 * STORED_WIDTH, - 300 + 6 * STORED_WIDTH, - 300 + 7 * STORED_WIDTH, - 300 + 8 * STORED_WIDTH, - ] - - -@patch("torch.distributed.is_initialized", return_value=True) -@patch("torch.distributed.get_world_size", return_value=2) -@patch("torch.distributed.get_rank", return_value=0) -def test_exact_strategy_uneven_files_exception( - mock_rank, mock_ws, mock_init, mock_config, tmp_path -): - """Exact mode rejects uneven rank samples.""" - - data_dir = tmp_path / "data_uneven" - data_dir.mkdir() - - # Rank 0 will get file1 (10) + file3 (10) = 20 samples - # Rank 1 will get file2 (10) + file4 (5) = 15 samples - metadata = _folder_metadata( - 35, - [ - {"path": "file1.pt", "samples": 10}, - {"path": "file2.pt", "samples": 10}, - {"path": "file3.pt", "samples": 10}, - {"path": "file4.pt", "samples": 5}, - ], - ) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_config.training_spec.sampling_strategy = "exact" - - # The dataset initialization calls _get_target_samples(), which should raise the Exception - with pytest.raises(Exception) as exc_info: - SequifierDatasetFromFolderPtLazy(str(data_dir), mock_config) - - error_msg = str(exc_info.value) - - # Assert the core error text is present - assert "Found 2 different number of samples per rank/GPU" in error_msg - - -@patch("torch.distributed.is_initialized", return_value=True) -@patch("torch.distributed.get_world_size", return_value=2) -@patch("torch.distributed.get_rank", return_value=1) -def test_oversampling_strategy( - mock_rank, mock_ws, mock_init, mock_config, tmp_path, mock_torch_load -): - """Oversampling loops short ranks.""" - data_dir = tmp_path / "data_oversample" - data_dir.mkdir() - - # Rank 0 gets file1 (10) + file3 (5) = 15 samples - # Rank 1 gets file2 (10) = 10 samples - metadata = _folder_metadata( - 25, - [ - {"path": "file1.pt", "samples": 10}, - {"path": "file2.pt", "samples": 10}, - {"path": "file3.pt", "samples": 5}, - ], - ) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_config.training_spec.sampling_strategy = "oversampling" - mock_config.training_spec.batch_size = 5 - mock_config.training_spec.num_workers = 0 - - dataset = SequifierDatasetFromFolderPtLazy( - str(data_dir), mock_config, shuffle=False - ) - - # Max samples across ranks is 15. Rank 1 must pad its 10 samples up to 15. - assert dataset.target_samples == 15 - assert len(dataset) == 3 # 15 total samples / batch_size 5 - - batches = list(dataset) - assert len(batches) == 3 - - # Rank 1 only has file2 assigned. To get 15 samples, it must load file2, - # run out of data, loop back, and load file2 again. - assert mock_torch_load.call_count == 2 - loaded_files = [call.args[0] for call in mock_torch_load.call_args_list] - assert "file2.pt" in loaded_files[0] - assert "file2.pt" in loaded_files[1] - - -@patch("torch.distributed.is_initialized", return_value=True) -@patch("torch.distributed.get_world_size", return_value=2) -@patch("torch.distributed.get_rank", return_value=0) -def test_undersampling_strategy( - mock_rank, mock_ws, mock_init, mock_config, tmp_path, mock_torch_load -): - """Undersampling truncates heavy ranks.""" - data_dir = tmp_path / "data_undersample" - data_dir.mkdir() - - # Rank 0 gets file1 (10) + file3 (5) = 15 samples - # Rank 1 gets file2 (10) = 10 samples - metadata = _folder_metadata( - 25, - [ - {"path": "file1.pt", "samples": 10}, - {"path": "file2.pt", "samples": 10}, - {"path": "file3.pt", "samples": 5}, - ], - ) - with open(data_dir / "metadata.json", "w") as f: - json.dump(metadata, f) - - mock_config.training_spec.sampling_strategy = "undersampling" - mock_config.training_spec.batch_size = 5 - mock_config.training_spec.num_workers = 0 - - dataset = SequifierDatasetFromFolderPtLazy( - str(data_dir), mock_config, shuffle=False - ) - - # Min samples across ranks is 10. Rank 0 must truncate its 15 samples down to 10. - assert dataset.target_samples == 10 - assert len(dataset) == 2 # 10 total samples / batch_size 5 - - batches = list(dataset) - assert len(batches) == 2 - - # Rank 0 should only need file1 (10 samples) to meet its truncated quota of 10. - # It should never attempt to load file3. - assert mock_torch_load.call_count == 1 - loaded_files = [call.args[0] for call in mock_torch_load.call_args_list] - assert "file1.pt" in loaded_files[0] - assert not any("file3.pt" in f for f in loaded_files) diff --git a/tests/unit/test_helpers.py b/tests/unit/test_helpers.py deleted file mode 100644 index 360f04df..00000000 --- a/tests/unit/test_helpers.py +++ /dev/null @@ -1,617 +0,0 @@ -from types import SimpleNamespace - -import polars as pl -import pytest -import torch - -from sequifier.helpers import ( - ModelWindowView, - StoredWindowLayout, - apply_bert_masking, - build_valid_mask, - construct_index_maps, - numpy_to_pytorch, - resolve_window_view, -) -from sequifier.special_tokens import SPECIAL_TOKEN_IDS - - -def test_construct_index_maps_string(): - """Reverse string ID map.""" - id_maps: dict[str, dict[str | int, int]] = {"itemId": {"apple": 3, "banana": 4}} - target_cols = ["itemId"] - - result = construct_index_maps(id_maps, target_cols, map_to_id=True) - - # Check standard reversal - assert result["itemId"][3] == "apple" - assert result["itemId"][4] == "banana" - - # Check the special 0 index for strings - assert result["itemId"][0] == "[unknown]" - assert result["itemId"][1] == "[other]" - assert result["itemId"][2] == "[mask]" - - -def test_construct_index_maps_integer(): - """Reverse int ID map with sentinels.""" - id_maps: dict[str, dict[str | int, int]] = {"storeId": {100: 3, 101: 4}} - target_cols = ["storeId"] - - result = construct_index_maps(id_maps, target_cols, map_to_id=True) - - assert result["storeId"][3] == 100 - assert result["storeId"][4] == 101 - - assert result["storeId"][0] == "[unknown]" - assert result["storeId"][1] == "[other]" - assert result["storeId"][2] == "[mask]" - - -def test_construct_index_maps_flag_false(): - """Empty maps when map_to_id is false.""" - id_maps: dict[str, dict[str | int, int]] = {"itemId": {"a": 1}} - result = construct_index_maps(id_maps, ["itemId"], map_to_id=False) - assert result == {} - - -def test_numpy_to_pytorch_shapes_and_shifting(): - """Check causal input and shifted target tensors.""" - - data = pl.DataFrame( - { - "sequenceId": [1, 2], - "subsequenceId": [0, 0], - "startItemPosition": [0, 0], - "leftPadLength": [0, 0], - "inputCol": ["A", "A"], - "3": [10, 11], - "2": [20, 21], - "1": [30, 31], - "0": [40, 41], - } - ) - - column_types = {"A": torch.float32} - all_columns = ["A"] - resolved_view = resolve_window_view( - StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_offset=1), - ) - - tensors, metadata = numpy_to_pytorch( - data, - column_types, - all_columns, - resolved_view, - ) - - assert "A" in tensors - assert "A_target" in tensors - assert torch.equal( - metadata["attention_valid_mask"], - torch.tensor([[True, True, True], [True, True, True]]), - ) - assert torch.equal( - metadata["target_valid_mask"], - torch.tensor([[True, True, True], [True, True, True]]), - ) - - expected_input = torch.tensor([[10, 20, 30], [11, 21, 31]], dtype=torch.float32) - assert torch.equal(tensors["A"], expected_input) - - expected_target = torch.tensor([[20, 30, 40], [21, 31, 41]], dtype=torch.float32) - assert torch.equal(tensors["A_target"], expected_target) - - -def test_numpy_to_pytorch_dtypes(): - """Check column_types controls tensor dtypes.""" - - # Note: numpy_to_pytorch filters by inputCol, so we need to handle how - # it selects rows. It assumes all rows matching "inputCol" have valid data - # for that type. - - # We'll test one type at a time to avoid schema conflicts in the Polars DF creation - # (Polars columns usually have a single type). - - # Case 1: Integer - data_int = pl.DataFrame( - { - "sequenceId": [1], - "subsequenceId": [0], - "startItemPosition": [0], - "leftPadLength": [0], - "inputCol": ["int_col"], - "1": [10], - "0": [20], - } - ) - tensors_int, _ = numpy_to_pytorch( - data_int, - {"int_col": torch.int64}, - ["int_col"], - resolve_window_view( - StoredWindowLayout(stored_context_width=2, max_target_offset=1, version=2), - ModelWindowView(context_length=1, objective="causal", target_offset=1), - ), - ) - assert tensors_int["int_col"].dtype == torch.int64 - - # Case 2: Float - data_float = pl.DataFrame( - { - "sequenceId": [1], - "subsequenceId": [0], - "startItemPosition": [0], - "leftPadLength": [0], - "inputCol": ["float_col"], - "1": [10.5], - "0": [20.5], - } - ) - tensors_float, _ = numpy_to_pytorch( - data_float, - {"float_col": torch.float32}, - ["float_col"], - resolve_window_view( - StoredWindowLayout(stored_context_width=2, max_target_offset=1, version=2), - ModelWindowView(context_length=1, objective="causal", target_offset=1), - ), - ) - assert tensors_float["float_col"].dtype == torch.float32 - - -def test_build_valid_mask_from_left_pad_lengths(): - left_pad_lengths = torch.tensor([0, 2, 5], dtype=torch.int64) - - resolved_view = resolve_window_view( - StoredWindowLayout(stored_context_width=6, max_target_offset=1, version=2), - ModelWindowView(context_length=5, objective="causal", target_offset=1), - ) - input_mask = build_valid_mask( - left_pad_lengths, full_length=6, view_slice=resolved_view.input_slice - ) - target_mask = build_valid_mask( - left_pad_lengths, full_length=6, view_slice=resolved_view.target_slice - ) - - assert torch.equal( - input_mask, - torch.tensor( - [ - [True, True, True, True, True], - [False, False, True, True, True], - [False, False, False, False, False], - ] - ), - ) - assert torch.equal( - target_mask, - torch.tensor( - [ - [True, True, True, True, True], - [False, True, True, True, True], - [False, False, False, False, True], - ] - ), - ) - - -def test_resolve_window_view_slices_tensors(): - tensor = torch.arange(8).reshape(2, 4) - resolved_view = resolve_window_view( - StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_offset=1), - ) - - assert torch.equal( - tensor[:, resolved_view.input_slice], - torch.tensor([[0, 1, 2], [4, 5, 6]]), - ) - assert torch.equal( - tensor[:, resolved_view.target_slice], - torch.tensor([[1, 2, 3], [5, 6, 7]]), - ) - - -def test_numpy_to_pytorch_includes_explicit_padding_masks(): - data = pl.DataFrame( - { - "sequenceId": [1, 2], - "subsequenceId": [0, 0], - "startItemPosition": [0, 0], - "leftPadLength": [0, 2], - "inputCol": ["A", "A"], - "3": [0.0, 0.0], - "2": [0.0, 0.0], - "1": [1.0, 1.0], - "0": [2.0, 2.0], - } - ) - - _, metadata = numpy_to_pytorch( - data, - {"A": torch.float32}, - ["A"], - resolve_window_view( - StoredWindowLayout(stored_context_width=4, max_target_offset=1, version=2), - ModelWindowView(context_length=3, objective="causal", target_offset=1), - ), - ) - - assert torch.equal( - metadata["attention_valid_mask"], - torch.tensor([[True, True, True], [False, False, True]]), - ) - assert torch.equal( - metadata["target_valid_mask"], - torch.tensor([[True, True, True], [False, True, True]]), - ) - - -class _OnesSpanMasking: - def sample(self, shape, device, generator=None): - return torch.ones(shape, dtype=torch.long, device=device) - - -class _VariableSpanMasking: - def sample(self, shape, device, generator=None): - lengths = torch.tensor([3, 2, 4, 1, 5], dtype=torch.long, device=device) - repeats = (shape[1] + lengths.numel() - 1) // lengths.numel() - return lengths.repeat(repeats)[: shape[1]].repeat(shape[0], 1) - - -def _bert_masking_config( - masking_probability=0.5, - *, - categorical_columns=None, - real_columns=None, - n_classes=None, - replacement_distribution=None, - span_masking=None, -): - return SimpleNamespace( - categorical_columns=categorical_columns or [], - real_columns=real_columns or [], - n_classes=n_classes or {}, - context_length=6, - training_spec=SimpleNamespace( - batch_size=4, - bert_spec=SimpleNamespace( - masking_probability=masking_probability, - span_masking=span_masking or _OnesSpanMasking(), - replacement_distribution=replacement_distribution - or SimpleNamespace(masked=0.0, random=0.0, identical=1.0), - ), - ), - ) - - -def test_apply_bert_masking_builds_exact_valid_masks(): - valid_mask = torch.tensor( - [ - [True, True, True, True, True, True], - [False, False, True, True, True, True], - [False, False, False, False, False, False], - [False, True, False, True, True, True], - ] - ) - config = _bert_masking_config(masking_probability=0.5) - data_batch = {"passthrough": torch.arange(24).reshape(4, 6)} - targets_batch = {"passthrough": torch.arange(24).reshape(4, 6)} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - _, _, masked_metadata = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=11, - ) - - bert_mask = masked_metadata["bert_mask"] - expected_budget = (valid_mask.sum(dim=1) * 0.5).long() - - assert bert_mask.dtype == torch.bool - assert bert_mask.device == valid_mask.device - assert torch.equal(bert_mask.sum(dim=1), expected_budget) - assert not torch.any(bert_mask & ~valid_mask) - - -def test_apply_bert_masking_eval_seed_is_reproducible_without_global_rng_change(): - valid_mask = torch.tensor( - [ - [True, True, True, True, True, True], - [False, True, True, True, True, True], - ] - ) - config = _bert_masking_config(masking_probability=0.5) - data_batch = {"passthrough": torch.arange(12).reshape(2, 6)} - targets_batch = {"passthrough": torch.arange(12).reshape(2, 6)} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - torch.manual_seed(123) - rng_state = torch.get_rng_state().clone() - _, _, first_metadata = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=99, - ) - after_first = torch.get_rng_state().clone() - - _, _, second_metadata = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=99, - ) - after_second = torch.get_rng_state().clone() - - assert torch.equal(first_metadata["bert_mask"], second_metadata["bert_mask"]) - assert torch.equal(after_first, rng_state) - assert torch.equal(after_second, rng_state) - - -def test_apply_bert_masking_handles_variable_length_spans_and_sparse_masks(): - valid_mask = torch.tensor( - [ - [True, True, True, True, True, True, True, True], - [False, True, False, True, True, False, True, True], - ] - ) - config = _bert_masking_config( - masking_probability=0.75, - span_masking=_VariableSpanMasking(), - ) - data_batch = {"passthrough": torch.arange(16).reshape(2, 8)} - targets_batch = {"passthrough": torch.arange(16).reshape(2, 8)} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - _, _, masked_metadata = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=99, - ) - - assert torch.equal( - masked_metadata["bert_mask"], - torch.tensor( - [ - [False, True, True, True, True, True, True, False], - [False, True, False, True, True, False, False, False], - ] - ), - ) - - -@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA required") -def test_apply_bert_masking_cuda_stays_on_device_and_preserves_rng(): - device = torch.device("cuda") - valid_mask = torch.tensor( - [ - [True, True, True, True, True, True], - [False, True, True, True, True, True], - ], - device=device, - ) - config = _bert_masking_config(masking_probability=0.5) - data_batch = {"passthrough": torch.arange(12, device=device).reshape(2, 6)} - targets_batch = {"passthrough": torch.arange(12, device=device).reshape(2, 6)} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - torch.manual_seed(123) - cpu_state = torch.get_rng_state().clone() - cuda_state = torch.cuda.get_rng_state(device).clone() - - _, _, masked_metadata = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=99, - ) - - assert masked_metadata["bert_mask"].device == device - assert torch.equal(torch.get_rng_state(), cpu_state) - assert torch.equal(torch.cuda.get_rng_state(device), cuda_state) - - -def test_apply_bert_masking_replaces_categorical_with_mask_token_without_mutation(): - valid_mask = torch.tensor([[True, False, True, True]]) - config = _bert_masking_config( - masking_probability=1.0, - categorical_columns=["cat_col"], - n_classes={"cat_col": 8}, - replacement_distribution=SimpleNamespace( - masked=1.0, - random=0.0, - identical=0.0, - ), - ) - original = torch.tensor([[3, 4, 5, 6]]) - data_batch = {"cat_col": original.clone()} - targets_batch = {"cat_col": original.clone()} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - masked_data, _, _ = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=7, - ) - - assert torch.equal( - masked_data["cat_col"], - torch.tensor( - [ - [ - SPECIAL_TOKEN_IDS.mask, - 4, - SPECIAL_TOKEN_IDS.mask, - SPECIAL_TOKEN_IDS.mask, - ] - ] - ), - ) - assert torch.equal(data_batch["cat_col"], original) - - -def test_apply_bert_masking_replaces_categorical_with_random_tokens_without_mutation(): - valid_mask = torch.ones((1, 5), dtype=torch.bool) - config = _bert_masking_config( - masking_probability=1.0, - categorical_columns=["cat_col"], - n_classes={"cat_col": 12}, - replacement_distribution=SimpleNamespace( - masked=0.0, - random=1.0, - identical=0.0, - ), - ) - original = torch.tensor([[3, 4, 5, 6, 7]]) - data_batch = {"cat_col": original.clone()} - targets_batch = {"cat_col": original.clone()} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - masked_data, _, _ = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=7, - ) - - assert torch.all(masked_data["cat_col"] >= SPECIAL_TOKEN_IDS.user_start) - assert torch.all(masked_data["cat_col"] < config.n_classes["cat_col"]) - assert not torch.equal(masked_data["cat_col"], original) - assert torch.equal(data_batch["cat_col"], original) - - -def test_apply_bert_masking_replaces_real_with_zero_without_mutation(): - valid_mask = torch.tensor([[True, False, True, True]]) - config = _bert_masking_config( - masking_probability=1.0, - real_columns=["real_col"], - replacement_distribution=SimpleNamespace( - masked=1.0, - random=0.0, - identical=0.0, - ), - ) - original = torch.tensor([[1.5, 2.5, 3.5, 4.5]]) - data_batch = {"real_col": original.clone()} - targets_batch = {"real_col": original.clone()} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - masked_data, _, _ = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=7, - ) - - assert torch.equal( - masked_data["real_col"], - torch.tensor([[0.0, 2.5, 0.0, 0.0]]), - ) - assert torch.equal(data_batch["real_col"], original) - - -def test_apply_bert_masking_replaces_real_with_random_noise_without_mutation(): - valid_mask = torch.tensor([[True, True, False, True]]) - config = _bert_masking_config( - masking_probability=1.0, - real_columns=["real_col"], - replacement_distribution=SimpleNamespace( - masked=0.0, - random=1.0, - identical=0.0, - ), - ) - original = torch.tensor([[10.0, 11.0, 12.0, 13.0]]) - data_batch = {"real_col": original.clone()} - targets_batch = {"real_col": original.clone()} - metadata = { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - masked_data, _, _ = apply_bert_masking( - data_batch, - targets_batch, - metadata, - config, - eval_seed=7, - ) - - assert torch.equal(masked_data["real_col"][~valid_mask], original[~valid_mask]) - assert torch.all(masked_data["real_col"][valid_mask] != original[valid_mask]) - assert torch.equal(data_batch["real_col"], original) - - -def test_apply_bert_masking_uses_explicit_valid_mask_for_zero_values(): - config = SimpleNamespace( - categorical_columns=[], - real_columns=["real_col"], - n_classes={}, - context_length=4, - training_spec=SimpleNamespace( - batch_size=1, - bert_spec=SimpleNamespace( - masking_probability=1.0, - span_masking=_OnesSpanMasking(), - replacement_distribution=SimpleNamespace( - masked=1.0, - random=0.0, - identical=0.0, - ), - ), - ), - ) - data_batch = { - "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), - } - targets_batch = { - "real_col": torch.tensor([[99.0, 0.0, 1.0, 2.0]]), - } - metadata = { - "attention_valid_mask": torch.tensor([[False, True, True, True]]), - "target_valid_mask": torch.tensor([[False, True, True, True]]), - } - - _, _, masked_metadata = apply_bert_masking( - data_batch, targets_batch, metadata, config - ) - - assert torch.equal( - masked_metadata["bert_mask"], - torch.tensor([[False, True, True, True]]), - ) diff --git a/tests/unit/test_hyperparameter_search_config.py b/tests/unit/test_hyperparameter_search_config.py deleted file mode 100644 index 16cfbf7e..00000000 --- a/tests/unit/test_hyperparameter_search_config.py +++ /dev/null @@ -1,178 +0,0 @@ -import optuna -import pytest -import yaml -from pydantic import ValidationError - -from sequifier.config.hyperparameter_search_config import ( - TrainingSpecHyperparameterSampling, -) -from sequifier.hyperparameter_search import create_sampler -from sequifier.io.yaml import TrainModelDumper - - -class RecordingTrial: - def __init__(self, overrides=None): - self.overrides = overrides or {} - self.params = {} - - def suggest_categorical(self, name, choices): - value = self.overrides.get(name, choices[0]) - assert value in choices - self.params[name] = value - return value - - def suggest_float(self, name, low, high, step=None, log=False): - value = self.overrides.get(name, low) - self.params[name] = value - return value - - def suggest_int(self, name, low, high, step=1, log=False): - value = self.overrides.get(name, low) - self.params[name] = value - return value - - -def make_training_sampling(**overrides): - config = { - "device": "cpu", - "epochs": [1], - "save_interval_epochs": 1, - "batch_size": [2], - "learning_rate": [0.001], - "criterion": {"itemId": "CrossEntropyLoss"}, - "accumulation_steps": [1], - "dropout": [0.0], - "optimizer": [{"name": "Adam"}], - "scheduler": [{"name": "StepLR", "step_size": 1, "gamma": 0.99}], - "continue_training": False, - } - config.update(overrides) - return TrainingSpecHyperparameterSampling(**config) - - -def bert_spec_sampling_config(): - return { - "masking_probability": [0.15, 0.30], - "replacement_distribution": [ - {"masked": 0.8, "random": 0.1, "identical": 0.1}, - {"masked": 0.6, "random": 0.2, "identical": 0.2}, - ], - "span_masking": [ - {"type": "GeometricDistribution", "p": 1.0}, - {"type": "PoissonDistributionFloor", "rate": 2.0}, - ], - } - - -def sample_training_spec(sampling, trial): - return sampling.sample_trial(trial) - - -def test_training_objective_defaults_to_causal_without_bert_spec(): - sampling = make_training_sampling() - trial = RecordingTrial() - - training_spec = sample_training_spec(sampling, trial) - - assert training_spec.training_objective == "causal" - assert training_spec.bert_spec is None - assert trial.params["training_objective"] == "causal" - - -def test_bert_spec_fields_are_sampled_separately_for_bert_objective(): - sampling = make_training_sampling( - training_objective=["causal", "bert"], - bert_spec=bert_spec_sampling_config(), - ) - trial = RecordingTrial( - { - "training_objective": "bert", - "bert_masking_probability": 0.30, - "bert_replacement_distribution_index": 1, - "bert_span_masking_index": 1, - } - ) - - training_spec = sample_training_spec(sampling, trial) - - assert training_spec.training_objective == "bert" - assert training_spec.bert_spec is not None - assert training_spec.bert_spec.masking_probability == 0.30 - assert training_spec.bert_spec.replacement_distribution.masked == 0.6 - assert training_spec.bert_spec.replacement_distribution.random == 0.2 - assert training_spec.bert_spec.replacement_distribution.identical == 0.2 - assert training_spec.bert_spec.span_masking.type == "PoissonDistributionFloor" - assert set(trial.params).issuperset( - { - "training_objective", - "bert_masking_probability", - "bert_replacement_distribution_index", - "bert_span_masking_index", - } - ) - - -def test_causal_objective_does_not_sample_bert_fields(): - sampling = make_training_sampling( - training_objective=["causal", "bert"], - bert_spec=bert_spec_sampling_config(), - ) - trial = RecordingTrial({"training_objective": "causal"}) - - training_spec = sample_training_spec(sampling, trial) - - assert training_spec.training_objective == "causal" - assert training_spec.bert_spec is None - assert "bert_masking_probability" not in trial.params - assert "bert_replacement_distribution_index" not in trial.params - assert "bert_span_masking_index" not in trial.params - - -def test_bert_objective_requires_bert_spec_sampling_config(): - with pytest.raises(ValidationError, match="bert_spec"): - make_training_sampling(training_objective=["bert"]) - - -def test_bert_training_spec_dumps_to_plain_yaml(): - sampling = make_training_sampling( - training_objective=["bert"], - bert_spec=bert_spec_sampling_config(), - ) - training_spec = sample_training_spec(sampling, RecordingTrial()) - - dumped = yaml.dump(training_spec, Dumper=TrainModelDumper, sort_keys=False) - loaded = yaml.safe_load(dumped) - - assert loaded["training_objective"] == "bert" - assert loaded["bert_spec"]["masking_probability"] == 0.15 - assert loaded["bert_spec"]["replacement_distribution"] == { - "masked": 0.8, - "random": 0.1, - "identical": 0.1, - } - assert loaded["bert_spec"]["span_masking"] == { - "type": "GeometricDistribution", - "p": 1.0, - } - - -@pytest.mark.parametrize( - ("strategy", "sampler_name"), - [ - ("sample", "RandomSampler"), - ("grid", "BruteForceSampler"), - ("bayesian", "TPESampler"), - ], -) -def test_create_sampler_passes_config_seed(monkeypatch, strategy, sampler_name): - recorded = {} - - def fake_sampler(*, seed=None): - recorded["seed"] = seed - return object() - - monkeypatch.setattr(optuna.samplers, sampler_name, fake_sampler) - - create_sampler(type("Config", (), {"search_strategy": strategy, "seed": 123})()) - - assert recorded["seed"] == 123 diff --git a/tests/unit/test_infer.py b/tests/unit/test_infer.py deleted file mode 100644 index b3d836ba..00000000 --- a/tests/unit/test_infer.py +++ /dev/null @@ -1,833 +0,0 @@ -import json -from unittest.mock import MagicMock, patch - -import numpy as np -import polars as pl -import pytest -import torch -import yaml - -from sequifier.config.infer_config import InfererModel, load_inferer_config -from sequifier.helpers import ModelWindowView, StoredWindowLayout -from sequifier.infer import ( - Inferer, - calculate_item_positions, - get_probs_preds_from_dict, - infer_embedding, - infer_generative, - normalize, - sample_with_cumsum, -) - - -def test_normalize(): - """Softmax-normalized logits.""" - # Create raw logits - # Row 0: exp(0)=1, exp(0)=1 -> probs: 0.5, 0.5 - # Row 1: exp(1)=e, exp(2)=e^2 -> probs: e/(e+e^2), e^2/(e+e^2) - logits = np.array([[0.0, 0.0], [1.0, 2.0], [-1.0, 0.0]]) - outs = {"target_col": logits} - - probs_dict = normalize(outs) - - assert "target_col" in probs_dict - probs = probs_dict["target_col"] - assert probs.shape == (3, 2) - - # Assert Row 0 is 50/50 - np.testing.assert_allclose(probs[0], [0.5, 0.5]) - - # Assert Row 1 is proportionally correct - e1, e2 = np.exp(1), np.exp(2) - np.testing.assert_allclose(probs[1], [e1 / (e1 + e2), e2 / (e1 + e2)]) - - # Assert all rows sum to 1.0 (valid probability distribution) - np.testing.assert_allclose(probs.sum(axis=1), [1.0, 1.0, 1.0]) - - -def test_normalize_is_stable_for_large_logits(): - """Softmax remains finite for large-magnitude logits.""" - outs = { - "target_col": np.array( - [[1000.0, 1001.0], [-1001.0, -1000.0], [1000.0, -1000.0]] - ) - } - - probs = normalize(outs)["target_col"] - - assert np.isfinite(probs).all() - np.testing.assert_allclose(probs.sum(axis=1), [1.0, 1.0, 1.0]) - np.testing.assert_allclose( - probs[0], - [1.0 / (1.0 + np.e), np.e / (1.0 + np.e)], - ) - - -@patch("numpy.random.rand") -def test_sample_with_cumsum(mock_rand): - """Inverse-CDF sampling for log-probabilities and probabilities.""" - # Mock the random thresholds to strictly control the sampling outcome. - mock_rand.return_value = np.array([[0.05], [0.90]]) - - # Path 1: Test with log-probabilities=True (default) - log_probs = np.array([[np.log(0.1), np.log(0.9)], [np.log(0.8), np.log(0.2)]]) - sampled_from_log_probs = sample_with_cumsum(log_probs, is_log_probs=True) - np.testing.assert_array_equal(sampled_from_log_probs, [0, 1]) - - # Path 2: Test with is_log_probs=False (pre-normalized probabilities) - pure_probs = np.array([[0.1, 0.9], [0.8, 0.2]]) - sampled_from_probs = sample_with_cumsum(pure_probs, is_log_probs=False) - np.testing.assert_array_equal(sampled_from_probs, [0, 1]) - - -@patch("numpy.random.rand") -def test_sample_with_cumsum_clamps_final_cumulative_probability(mock_rand): - """Tiny floating-point deficits still allow the final class to be sampled.""" - mock_rand.return_value = np.array([[0.9999999999999999]]) - probs = np.array([[0.1, 0.8999999999999998]]) - - sampled = sample_with_cumsum(probs, is_log_probs=False) - - np.testing.assert_array_equal(sampled, [1]) - - -def test_sample_with_cumsum_rejects_invalid_probability_mass(): - """Invalid probability rows fail instead of falling through to class zero.""" - with pytest.raises(ValueError, match="sum to 1.0"): - sample_with_cumsum(np.array([[0.4, 0.4]]), is_log_probs=False) - - -@pytest.fixture -def empty_parquet_path(tmp_path): - path = tmp_path / "empty.parquet" - pl.DataFrame({"target_col": []}, schema={"target_col": pl.Float64}).write_parquet( - path - ) - return str(path) - - -@pytest.fixture -def mock_inferer(): - """Sets up an Inferer instance with mocked heavy dependencies (ONNX/PyTorch).""" - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - inferer = Inferer( - model_type="generative", - model_path="dummy_model.onnx", - project_root=".", - id_maps={"cat_col": {"A": 2, "B": 3}}, - selected_columns_statistics={"real_col": {"mean": 10.0, "std": 2.0}}, - map_to_id=True, - categorical_columns=["cat_col"], - real_columns=["real_col"], - input_columns=["cat_col", "real_col"], - target_columns=["cat_col", "real_col"], - target_column_types={"cat_col": "categorical", "real_col": "real"}, - sample_from_distribution_columns=None, - infer_with_dropout=False, - prediction_length=1, - inference_batch_size=4, - device="cpu", - args_config={}, - training_config_path="dummy.yaml", - ) - return inferer - - -def test_inferer_invert_normalization(mock_inferer): - """Real outputs denormalize correctly.""" - # Normalized values - values = np.array([-1.0, 0.0, 1.0]) - - # Configuration dictates mean = 10.0, std = 2.0 - # Unnormalized logic: (val * (std - 1e-9)) + mean - # Expected approx: [8.0, 10.0, 12.0] - unnormalized = mock_inferer.invert_normalization(values, "real_col") - - np.testing.assert_allclose(unnormalized, [8.0, 10.0, 12.0], atol=1e-5) - - -def test_inferer_expand_to_batch_size(mock_inferer): - """Strict-batch array padding.""" - mock_inferer.inference_batch_size = 5 - - # Input has 2 samples, batch size needs to be 5 - x = np.array([[10], [20]]) - - # Should repeat the full array twice [10, 20, 10, 20], then append the remainder [10] - expanded = mock_inferer.expand_to_batch_size(x) - - assert expanded.shape == (5, 1) - np.testing.assert_array_equal(expanded, [[10], [20], [10], [20], [10]]) - - -def test_inferer_prepare_inference_batches_pad(mock_inferer): - """Chunking with padding.""" - mock_inferer.inference_batch_size = 4 - x = {"cat_col": np.array([[1], [2], [3]])} # 3 total samples - - batches = mock_inferer.prepare_inference_batches(x, pad_to_batch_size=True) - - assert len(batches) == 1 - # Check that the 3 samples were padded up to the target batch size of 4 - assert batches[0]["cat_col"].shape == (4, 1) - np.testing.assert_array_equal(batches[0]["cat_col"], [[1], [2], [3], [1]]) - - -def test_inferer_prepare_inference_batches_no_pad(mock_inferer): - """Chunking without padding.""" - mock_inferer.inference_batch_size = 4 - x = {"cat_col": np.array([[1], [2], [3]])} # 3 total samples - - batches = mock_inferer.prepare_inference_batches(x, pad_to_batch_size=False) - - assert len(batches) == 1 - # Check that it retained its original short size - assert batches[0]["cat_col"].shape == (3, 1) - - -def test_inferer_prepare_inference_batches_split(mock_inferer): - """Chunking into multiple batches.""" - mock_inferer.inference_batch_size = 2 - x = {"cat_col": np.array([[1], [2], [3], [4], [5]])} # 5 total samples - - batches = mock_inferer.prepare_inference_batches(x, pad_to_batch_size=False) - - assert len(batches) == 3 - assert batches[0]["cat_col"].shape == (2, 1) - assert batches[1]["cat_col"].shape == (2, 1) - assert batches[2]["cat_col"].shape == (1, 1) # The remainder - np.testing.assert_array_equal(batches[2]["cat_col"], [[5]]) - - -def test_infer_config_defaults_bert_prediction_length_to_context_length( - empty_parquet_path, -): - config = InfererModel( - project_root=".", - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type="generative", - training_objective="bert", - data_path=empty_parquet_path, - input_columns=["target_col"], - categorical_columns=[], - real_columns=["target_col"], - target_columns=["target_col"], - column_types={"target_col": "float64"}, - target_column_types={"target_col": "real"}, - seed=42, - device="cpu", - prediction_length=None, - storage_layout=StoredWindowLayout( - stored_context_width=4, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=3, objective="bert", target_offset=0 - ), - inference_batch_size=2, - output_probabilities=False, - map_to_id=False, - autoregression=False, - ) - - assert config.prediction_length == config.window_view.context_length - - -def test_infer_config_defaults_causal_prediction_length_to_one(empty_parquet_path): - config = InfererModel( - project_root=".", - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type="generative", - training_objective="causal", - data_path=empty_parquet_path, - input_columns=["target_col"], - categorical_columns=[], - real_columns=["target_col"], - target_columns=["target_col"], - column_types={"target_col": "float64"}, - target_column_types={"target_col": "real"}, - seed=42, - device="cpu", - prediction_length=None, - storage_layout=StoredWindowLayout( - stored_context_width=4, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=3, objective="causal", target_offset=1 - ), - inference_batch_size=2, - output_probabilities=False, - map_to_id=False, - autoregression=False, - ) - - assert config.prediction_length == 1 - - -def test_infer_config_rejects_bert_prediction_length_mismatch(empty_parquet_path): - with pytest.raises(ValueError, match="prediction_length must be equal"): - InfererModel( - project_root=".", - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type="generative", - training_objective="bert", - data_path=empty_parquet_path, - input_columns=["target_col"], - categorical_columns=[], - real_columns=["target_col"], - target_columns=["target_col"], - column_types={"target_col": "float64"}, - target_column_types={"target_col": "real"}, - seed=42, - device="cpu", - prediction_length=1, - storage_layout=StoredWindowLayout( - stored_context_width=4, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=3, objective="bert", target_offset=0 - ), - inference_batch_size=2, - output_probabilities=False, - map_to_id=False, - autoregression=False, - ) - - -def test_load_inferer_config_rejects_mismatched_metadata_special_token_ids(tmp_path): - data_path = tmp_path / "data.parquet" - data_path.touch() - metadata_path = tmp_path / "metadata.json" - config_path = tmp_path / "infer.yaml" - - metadata_path.write_text( - json.dumps( - { - "split_paths": [str(data_path)], - "stored_context_width": 4, - "max_target_offset": 1, - "stored_window_layout_version": 2, - "column_types": {"target_col": "int64"}, - "id_maps": {"target_col": {"A": 3}}, - "selected_columns_statistics": {}, - "special_token_ids": { - "[unknown]": 10, - "[other]": 11, - "[mask]": 12, - }, - } - ) - ) - config_path.write_text( - yaml.safe_dump( - { - "project_root": str(tmp_path), - "metadata_config_path": metadata_path.name, - "model_path": "dummy.onnx", - "model_type": "generative", - "training_objective": "causal", - "data_path": str(data_path), - "input_columns": ["target_col"], - "categorical_columns": ["target_col"], - "real_columns": [], - "target_columns": ["target_col"], - "column_types": {"target_col": "int64"}, - "target_column_types": {"target_col": "categorical"}, - "seed": 42, - "device": "cpu", - "context_length": 3, - "inference_batch_size": 2, - } - ) - ) - - with pytest.raises(ValueError, match="special_token_ids must match"): - load_inferer_config(str(config_path), {}, skip_metadata=False) - - -def test_infer_pure_passes_attention_valid_mask_to_onnx(mock_inferer): - class Input: - def __init__(self, name): - self.name = name - - class Session: - def __init__(self): - self.ort_inputs = None - - def get_inputs(self): - return [ - Input("cat_col_in"), - Input("real_col_in"), - Input("attention_valid_mask"), - ] - - def run(self, _, ort_inputs): - self.ort_inputs = ort_inputs - return [np.zeros((1, 2, 3), dtype=np.float32)] - - session = Session() - mock_inferer.ort_session = session - mock_inferer.inference_batch_size = 2 - - x = { - "cat_col": np.array([[1, 2], [3, 4]], dtype=np.int64), - "real_col": np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32), - } - metadata = { - "attention_valid_mask": np.array([[False, True], [True, True]], dtype=np.bool_) - } - - mock_inferer.infer_pure(x, metadata) - assert session.ort_inputs is not None - np.testing.assert_array_equal( - session.ort_inputs["attention_valid_mask"], - metadata["attention_valid_mask"], - ) - - -def test_infer_pure_rejects_unknown_onnx_input(mock_inferer): - class Input: - def __init__(self, name): - self.name = name - - class Session: - def get_inputs(self): - return [Input("unexpected_input")] - - mock_inferer.ort_session = Session() - metadata = {} - - with pytest.raises(ValueError, match="Could not map ONNX input"): - mock_inferer.infer_pure( - { - "cat_col": np.array([[1, 2]], dtype=np.int64), - "real_col": np.array([[1.0, 2.0]], dtype=np.float32), - }, - metadata, - ) - - -def test_calculate_item_positions_bert_uses_full_input_window(): - positions = calculate_item_positions( - np.array([10, 20]), - context_length=4, - prediction_length=4, - training_objective="bert", - ) - - np.testing.assert_array_equal(positions, [10, 11, 12, 13, 20, 21, 22, 23]) - - -def test_calculate_item_positions_causal_uses_future_window_tail(): - positions = calculate_item_positions( - np.array([10, 20]), - context_length=4, - prediction_length=2, - training_objective="causal", - ) - - np.testing.assert_array_equal(positions, [13, 14, 23, 24]) - - -def _bert_inference_config(tmp_path, model_type="generative", input_columns=None): - data_path = tmp_path / "data.parquet" - data_path.touch() - input_columns = input_columns or ["target_col"] - - return InfererModel( - project_root=str(tmp_path), - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type=model_type, - training_objective="bert", - data_path=str(data_path), - input_columns=input_columns, - categorical_columns=input_columns, - real_columns=[], - target_columns=["target_col"], - column_types={col: "int64" for col in input_columns}, - target_column_types={"target_col": "categorical"}, - seed=42, - device="cpu", - prediction_length=None, - storage_layout=StoredWindowLayout( - stored_context_width=4, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=3, objective="bert", target_offset=0 - ), - inference_batch_size=4, - output_probabilities=False, - map_to_id=True, - autoregression=False, - ) - - -def _bert_preprocessed_frame(): - return pl.DataFrame( - { - "sequenceId": [7], - "subsequenceId": [0], - "startItemPosition": [100], - "leftPadLength": [2], - "inputCol": ["target_col"], - "3": [0], - "2": [0], - "1": [3], - "0": [4], - } - ) - - -def _bert_preprocessed_frame_out_of_order(): - return pl.DataFrame( - { - "sequenceId": [2, 2, 1, 1], - "subsequenceId": [0, 0, 0, 0], - "startItemPosition": [200, 200, 100, 100], - "leftPadLength": [1, 1, 2, 2], - "inputCol": ["aux_col", "target_col", "aux_col", "target_col"], - "3": [9, 0, 8, 0], - "2": [9, 3, 8, 0], - "1": [9, 4, 8, 3], - "0": [9, 3, 8, 4], - } - ) - - -def _mock_bert_inferer(config): - return Inferer( - model_type=config.model_type, - model_path=config.model_path, - project_root=config.project_root, - id_maps={"target_col": {"A": 3, "B": 4}}, - selected_columns_statistics={}, - map_to_id=config.map_to_id, - categorical_columns=config.categorical_columns, - real_columns=config.real_columns, - input_columns=config.input_columns, - target_columns=config.target_columns, - target_column_types=config.target_column_types, - sample_from_distribution_columns=config.sample_from_distribution_columns, - infer_with_dropout=config.infer_with_dropout, - prediction_length=config.prediction_length, - inference_batch_size=config.inference_batch_size, - device=config.device, - args_config={}, - training_config_path=config.training_config_path, - ) - - -def _dummy_attention_metadata(batch_size, context_length): - return { - "attention_valid_mask": torch.ones( - (batch_size, context_length), dtype=torch.bool - ) - } - - -def test_bert_generative_inference_filters_left_padded_positions(tmp_path): - config = _bert_inference_config(tmp_path) - config.output_probabilities = True - data = _bert_preprocessed_frame() - written = [] - - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - inferer = _mock_bert_inferer(config) - - def capture_write(dataframe, path, write_format): - written.append((path, dataframe, write_format)) - - probs = {"target_col": np.full((3, 5), 0.2)} - preds = {"target_col": np.array([3, 4, 3])} - with patch( - "sequifier.infer.get_probs_preds_from_df", return_value=(probs, preds) - ), patch("sequifier.infer.write_data", side_effect=capture_write): - infer_generative( - config, inferer, "bert-model", [data], {"target_col": torch.int64} - ) - - predictions = next(frame for path, frame, _ in written if "predictions" in path) - probabilities = next(frame for path, frame, _ in written if "probabilities" in path) - - assert predictions.height == 1 - assert predictions.get_column("sequenceId").to_list() == [7] - assert predictions.get_column("itemPosition").to_list() == [102] - assert predictions.get_column("target_col").to_list() == ["A"] - assert probabilities.height == 1 - - -def test_bert_generative_inference_uses_dataframe_order_for_padding_masks(tmp_path): - config = _bert_inference_config(tmp_path, input_columns=["aux_col", "target_col"]) - data = _bert_preprocessed_frame_out_of_order() - written = [] - - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - inferer = _mock_bert_inferer(config) - - def capture_write(dataframe, path, write_format): - written.append((path, dataframe, write_format)) - - preds = {"target_col": np.array([3, 4, 3, 4, 3, 4])} - with patch( - "sequifier.infer.get_probs_preds_from_df", return_value=(None, preds) - ), patch("sequifier.infer.write_data", side_effect=capture_write): - infer_generative( - config, - inferer, - "bert-model", - [data], - {"target_col": torch.int64, "aux_col": torch.int64}, - ) - - predictions = next(frame for path, frame, _ in written if "predictions" in path) - - assert predictions.get_column("sequenceId").to_list() == [2, 2, 1] - assert predictions.get_column("itemPosition").to_list() == [201, 202, 102] - assert predictions.get_column("target_col").to_list() == ["B", "A", "B"] - - -def test_bert_embedding_inference_filters_left_padded_positions(tmp_path): - config = _bert_inference_config(tmp_path, model_type="embedding") - data = _bert_preprocessed_frame() - written = [] - - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - inferer = _mock_bert_inferer(config) - - def capture_write(dataframe, path, write_format): - written.append((path, dataframe, write_format)) - - embeddings = np.array([[0.1, 1.1], [0.2, 1.2], [0.3, 1.3]]) - with patch("sequifier.infer.get_embeddings", return_value=embeddings), patch( - "sequifier.infer.write_data", side_effect=capture_write - ): - infer_embedding( - config, inferer, "bert-model", [data], {"target_col": torch.int64} - ) - - embeddings_df = next(frame for _, frame, _ in written) - - assert embeddings_df.height == 1 - assert embeddings_df.get_column("sequenceId").to_list() == [7] - assert embeddings_df.get_column("subsequenceId").to_list() == [0] - assert embeddings_df.get_column("itemPosition").to_list() == [102] - assert embeddings_df.select(["0", "1"]).row(0) == (0.3, 1.3) - - -# ========================================== -# Test Autoregressive Tensor Inference -# ========================================== - - -@pytest.fixture -def ar_config(empty_parquet_path): - """Provides an actual InfererModel configuration for autoregressive inference.""" - return InfererModel( - project_root=".", - metadata_config_path="dummy.json", - model_path="dummy.onnx", - model_type="generative", - training_objective="causal", - data_path=empty_parquet_path, - input_columns=["target_col"], - categorical_columns=[], - real_columns=["target_col"], - target_columns=["target_col"], - column_types={"target_col": "float64"}, - target_column_types={"target_col": "real"}, - seed=42, - device="cpu", - prediction_length=1, - storage_layout=StoredWindowLayout( - stored_context_width=4, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=3, objective="causal", target_offset=1 - ), - inference_batch_size=2, - output_probabilities=False, - map_to_id=False, # Set to False to bypass ID mapping requirements - autoregression=True, - autoregression_total_steps=1, - ) - - -@pytest.fixture -def ar_inferer(ar_config): - """Sets up an actual Inferer instance with mocked heavy dependencies.""" - with patch("sequifier.infer.onnxruntime.InferenceSession"), patch( - "sequifier.infer.load_inference_model" - ): - return Inferer( - model_type=ar_config.model_type, - model_path=ar_config.model_path, - project_root=ar_config.project_root, - id_maps=None, - selected_columns_statistics={"target_col": {"mean": 0.0, "std": 1.0}}, - map_to_id=ar_config.map_to_id, - categorical_columns=ar_config.categorical_columns, - real_columns=ar_config.real_columns, - input_columns=ar_config.input_columns, - target_columns=ar_config.target_columns, - target_column_types=ar_config.target_column_types, - sample_from_distribution_columns=ar_config.sample_from_distribution_columns, - infer_with_dropout=ar_config.infer_with_dropout, - prediction_length=ar_config.prediction_length, - inference_batch_size=ar_config.inference_batch_size, - device=ar_config.device, - args_config={}, - training_config_path=ar_config.training_config_path, - ) - - -def test_get_probs_preds_from_dict_shifting_and_looping(ar_config, ar_inferer): - """Check autoregressive loop count and tensor shifting.""" - initial_data = {"target_col": torch.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]])} - metadata = _dummy_attention_metadata(batch_size=2, context_length=3) - - with patch.object(ar_inferer, "infer_generative") as mock_infer: - mock_infer.side_effect = [ - {"target_col": np.array([[4.0], [40.0]])}, - {"target_col": np.array([[5.0], [50.0]])}, - ] - - total_steps = 2 - probs, preds = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, metadata, total_steps=total_steps - ) - - assert mock_infer.call_count == 2 - - expected_shifted_x = { - "target_col": np.array([[2.0, 3.0, 4.0], [20.0, 30.0, 40.0]]) - } - second_call_args = mock_infer.call_args_list[1][0][0] - - np.testing.assert_array_equal( - second_call_args["target_col"], expected_shifted_x["target_col"] - ) - - assert "target_col" in preds - np.testing.assert_array_equal(preds["target_col"], [4.0, 5.0, 40.0, 50.0]) - - -@patch("sequifier.infer.sample_with_cumsum") -def test_get_probs_preds_from_dict_with_probabilities( - mock_sample, ar_config, ar_inferer -): - """Check probability output drives non-logit sampling.""" - ar_config.target_column_types["target_col"] = "categorical" - ar_inferer.target_column_types["target_col"] = "categorical" - - ar_config.output_probabilities = True - ar_config.sample_from_distribution_columns = ["target_col"] - ar_inferer.sample_from_distribution_columns = ["target_col"] - - initial_data = {"target_col": torch.tensor([[1.0, 2.0]])} - - dummy_logits = {"target_col": np.array([[np.log(0.2), np.log(0.8)]])} - mock_sample.return_value = np.array([1]) - - metadata = _dummy_attention_metadata(batch_size=1, context_length=2) - - with patch.object( - ar_inferer, "adjust_and_infer_generative", return_value=dummy_logits - ) as mock_adjust: - probs, preds = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, metadata, total_steps=1 - ) - - assert mock_adjust.call_count == 1 - - mock_sample.assert_called_once() - args, kwargs = mock_sample.call_args - - np.testing.assert_allclose(args[0], [[0.2, 0.8]]) - - assert kwargs.get("is_log_probs") is False - - assert probs is not None - np.testing.assert_allclose(probs["target_col"], [[0.2, 0.8]]) - np.testing.assert_array_equal(preds["target_col"], [1]) - - -def test_get_probs_preds_from_dict_ignores_unselected_columns(ar_config, ar_inferer): - """Check inference ignores columns outside config.input_columns.""" - initial_data = { - "target_col": torch.tensor([[1.0, 2.0]]), - "ignored_col": torch.tensor([[9.0, 9.0]]), - } - metadata = _dummy_attention_metadata(batch_size=1, context_length=2) - - with patch.object(ar_inferer, "infer_generative") as mock_infer: - mock_infer.return_value = {"target_col": np.array([[3.0]])} - - _, _ = get_probs_preds_from_dict( - ar_config, ar_inferer, initial_data, metadata, total_steps=1 - ) - - first_call_args = mock_infer.call_args_list[0][0][0] - - assert "target_col" in first_call_args - assert "ignored_col" not in first_call_args - - -def test_adjust_and_infer_embedding_onnx_truncation(): - """ - Catches the truncation bug where ONNX embeddings are sliced by `[:size]` - instead of `[:size * self.prediction_length]`. - """ - # 1. Mock the Inferer instance to isolate the target method - # We avoid actual __init__ to bypass ONNX runtime initialization. - inferer_mock = MagicMock(spec=Inferer) - inferer_mock.inference_model_type = "onnx" - inferer_mock.inference_batch_size = 2 - - # Set prediction_length > 1 to expose the bug (e.g., BERT objective) - inferer_mock.prediction_length = 5 - embedding_dim = 16 - - # 2. Mock `prepare_inference_batches` to pass our dummy inputs straight through - inferer_mock.prepare_inference_batches.side_effect = ( - lambda data, pad_to_batch_size: [data] - ) - - # 3. Mock `infer_pure` to return the shape an ONNX model would actually return. - # `infer_pure` flattens the output to (batch_size * prediction_length, dim). - # For a batch size of 2 and prediction length of 5, it returns (10, 16). - flattened_sequence_length = ( - inferer_mock.inference_batch_size * inferer_mock.prediction_length - ) - dummy_onnx_output = np.ones((flattened_sequence_length, embedding_dim)) - inferer_mock.infer_pure.return_value = [dummy_onnx_output] - - # 4. Construct dummy inputs - size = 2 - x = {"feature_col": np.zeros((size, 10))} # 2 sequences, context_length = 10 - metadata = {"attention_valid_mask": np.ones((size, 10))} - - # 5. Execute the method under test - # Passing inferer_mock as `self` to the unbound class method. - embeddings = Inferer.adjust_and_infer_embedding(inferer_mock, x, size, metadata) - - # 6. Assert the bug is fixed - expected_rows = size * inferer_mock.prediction_length - - assert embeddings.shape[0] == expected_rows, ( - f"ONNX Embedding truncation bug detected! " - f"Expected {expected_rows} rows (size * prediction_length), " - f"but got {embeddings.shape[0]} rows. " - f"Check the slice at the end of np.concatenate in adjust_and_infer_embedding." - ) - assert embeddings.shape[1] == embedding_dim diff --git a/tests/unit/test_preprocess.py b/tests/unit/test_preprocess.py deleted file mode 100644 index 6fb2a5c0..00000000 --- a/tests/unit/test_preprocess.py +++ /dev/null @@ -1,787 +0,0 @@ -import json - -import numpy as np -import polars as pl -import pytest -import torch -from pydantic import ValidationError - -from sequifier.config.preprocess_config import PreprocessorModel -from sequifier.helpers import StoredWindowLayout -from sequifier.preprocess import ( - Preprocessor, - _apply_column_statistics, - _apply_mask_column, - _get_column_statistics, - _get_data_columns, - _load_and_preprocess_data, - create_id_map, - extract_sequences, - extract_subsequences, - get_batch_limits, - get_combined_statistics, - load_precomputed_id_maps, - process_and_write_data_pt, -) - -RESERVED_MASK_COLUMN = "[mask]" - - -def test_extract_subsequences_basic(): - """Basic sliding-window extraction.""" - input_data = {"col1": [10, 11, 12, 13, 14, 15]} - context_length = 3 - stride = 1 - columns = ["col1"] - - # Expected behavior: Window size is context_length + 1 (history + target) - # Windows: [10,11,12,13], [11,12,13,14], [12,13,14,15] - - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, - context_length + 1, - stride, - columns, - subsequence_start_mode="distribute", - ) - - assert len(result["col1"]) == 3 - assert result["col1"][0] == [10, 11, 12, 13] - assert result["col1"][2] == [12, 13, 14, 15] - - -def test_extract_subsequences_bert_width(): - input_data = {"col1": [10, 11, 12, 13, 14, 15]} - context_length = 3 - stride = 1 - columns = ["col1"] - - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, - stored_context_width=context_length, - stride_for_split=stride, - columns=columns, - subsequence_start_mode="distribute", - ) - - assert len(result["col1"]) == 4 - assert result["col1"][0] == [10, 11, 12] - assert result["col1"][3] == [13, 14, 15] - - -def test_extract_subsequences_padding(): - """Short sequences receive zero padding.""" - input_data = {"col1": [1, 2]} # Length 2 - stored_context_width = 5 - stride = 1 - columns = ["col1"] - - # Expected: [0, 0, 0, 1, 2] -> 3 zeroes padding - - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, - stored_context_width, - stride, - columns, - subsequence_start_mode="distribute", - ) - - assert len(result["col1"]) == 1 - assert result["col1"][0] == [0, 0, 0, 1, 2] - - -def test_extract_subsequences_returns_left_pad_lengths_when_requested(): - input_data = {"col1": [0.0, 1.5]} - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, - stored_context_width=5, - stride_for_split=1, - columns=["col1"], - subsequence_start_mode="distribute", - ) - - assert result["col1"][0] == [0, 0, 0, 0.0, 1.5] - assert left_pad_lengths == [3] - - -def test_extract_sequences_persists_left_pad_length_metadata(): - schema = { - "sequenceId": pl.Int64, - "subsequenceId": pl.Int64, - "startItemPosition": pl.Int64, - "leftPadLength": pl.Int64, - "inputCol": pl.String, - "4": pl.Float64, - "3": pl.Float64, - "2": pl.Float64, - "1": pl.Float64, - "0": pl.Float64, - } - data = pl.DataFrame( - { - "sequenceId": [10, 10], - "itemPosition": [0, 1], - "col1": [0.0, 1.5], - } - ) - - sequences = extract_sequences( - data, - schema, - layout=StoredWindowLayout( - stored_context_width=5, max_target_offset=1, version=2 - ), - stride_for_split=1, - columns=["col1"], - subsequence_start_mode="distribute", - ) - - assert sequences.get_column("leftPadLength").to_list() == [3] - - -def test_process_and_write_data_pt_persists_left_pad_lengths(tmp_path): - data = pl.DataFrame( - { - "sequenceId": [1, 2], - "subsequenceId": [0, 0], - "startItemPosition": [0, 0], - "leftPadLength": [0, 2], - "inputCol": ["col1", "col1"], - "3": [1.0, 0.0], - "2": [2.0, 0.0], - "1": [3.0, 1.0], - "0": [4.0, 2.0], - } - ) - out_path = tmp_path / "batch.pt" - - process_and_write_data_pt( - data, - stored_context_width=4, - path=str(out_path), - column_types={"col1": "Float64"}, - ) - - sequences, _, _, _, left_pad_lengths = torch.load(out_path, weights_only=False) - - assert torch.equal(left_pad_lengths, torch.tensor([0, 2])) - assert torch.equal( - sequences["col1"], - torch.tensor([[1.0, 2.0, 3.0, 4.0], [0.0, 0.0, 1.0, 2.0]]), - ) - - -def test_mask_column_is_not_a_data_column(): - data = pl.DataFrame( - { - "sequenceId": [1], - "itemPosition": [0], - "itemId": [101], - RESERVED_MASK_COLUMN: [1], - } - ) - - assert _get_data_columns(data, RESERVED_MASK_COLUMN) == ["itemId"] - - -def test_apply_mask_column_replaces_values_and_drops_column(): - data = pl.DataFrame( - { - "cat_col": [3, 4, 5, 6], - "num_col": [-1.0, 2.5, 3.5, 4.5], - RESERVED_MASK_COLUMN: [0, 1, 0, 1], - } - ) - - masked = _apply_mask_column( - data, - ["cat_col", "num_col"], - {"cat_col": "Int64", "num_col": "Float64"}, - RESERVED_MASK_COLUMN, - ) - - assert RESERVED_MASK_COLUMN not in masked.columns - assert masked["cat_col"].to_list() == [3, 2, 5, 2] - assert masked["num_col"].to_list() == [-1.0, 0.0, 3.5, 0.0] - - -def test_preprocessor_applies_mask_column_end_to_end(tmp_path): - project_root = tmp_path / "project" - project_root.mkdir() - metadata_dir = project_root / "configs" / "metadata_configs" - metadata_dir.mkdir(parents=True) - metadata_config_path = "configs/metadata_configs/masked-input-base.json" - (project_root / metadata_config_path).write_text( - json.dumps( - { - "n_classes": {"itemId": 6}, - "id_maps": {"itemId": {"a": 3, "b": 4, "c": 5}}, - "split_paths": [], - "column_types": {"itemId": "Int64", "itemValue": "Float64"}, - "selected_columns_statistics": { - "itemValue": {"mean": 60.0, "std": 10.0} - }, - "stored_context_width": 3, - "max_target_offset": 1, - "stored_window_layout_version": 2, - "special_token_ids": {"[unknown]": 0, "[other]": 1, "[mask]": 2}, - } - ) - ) - data_path = tmp_path / "masked-input.csv" - pl.DataFrame( - { - "sequenceId": [0, 0, 0], - "itemPosition": [0, 1, 2], - "itemId": ["a", "b", "c"], - "itemValue": [10.0, 100.0, 70.0], - RESERVED_MASK_COLUMN: [0, 1, 0], - } - ).write_csv(data_path) - - Preprocessor( - project_root=str(project_root), - continue_preprocessing=False, - data_path=str(data_path), - read_format="csv", - write_format="parquet", - merge_output=True, - selected_columns=["itemId", "itemValue"], - split_ratios=[1.0], - stored_context_width=3, - max_target_offset=1, - stride_by_split=[1], - max_rows=None, - seed=1010, - n_cores=1, - batches_per_file=1024, - process_by_file=True, - subsequence_start_mode="distribute", - use_precomputed_maps=None, - metadata_config_path=metadata_config_path, - mask_column=RESERVED_MASK_COLUMN, - ) - - output = pl.read_parquet(project_root / "data" / "masked-input-split0.parquet") - metadata_path = project_root / "configs" / "metadata_configs" / "masked-input.json" - - item_sequence = ( - output.filter(pl.col("inputCol") == "itemId").select(["2", "1", "0"]).row(0) - ) - value_sequence = ( - output.filter(pl.col("inputCol") == "itemValue").select(["2", "1", "0"]).row(0) - ) - - assert RESERVED_MASK_COLUMN not in output.columns - assert item_sequence == (3.0, 2.0, 5.0) - assert value_sequence[1] == 0.0 - assert value_sequence[0] != 0.0 - assert value_sequence[2] != 0.0 - - metadata = json.loads(metadata_path.read_text()) - assert RESERVED_MASK_COLUMN not in metadata["column_types"] - assert RESERVED_MASK_COLUMN not in metadata["id_maps"] - assert RESERVED_MASK_COLUMN not in metadata["selected_columns_statistics"] - assert metadata["special_token_ids"] == { - "[unknown]": 0, - "[other]": 1, - "[mask]": 2, - } - - -def test_preprocessor_writes_expanded_resume_manifest(tmp_path): - project_root = tmp_path / "project" - project_root.mkdir() - data_path = tmp_path / "manifest-input.csv" - pl.DataFrame( - { - "sequenceId": [0, 0, 0], - "itemPosition": [0, 1, 2], - "itemId": ["a", "b", "c"], - } - ).write_csv(data_path) - - Preprocessor( - project_root=str(project_root), - continue_preprocessing=False, - data_path=str(data_path), - read_format="csv", - write_format="parquet", - merge_output=False, - selected_columns=["itemId"], - split_ratios=[1.0], - stored_context_width=3, - max_target_offset=1, - stride_by_split=[2], - max_rows=2, - seed=1010, - n_cores=1, - batches_per_file=1024, - process_by_file=True, - subsequence_start_mode="exact", - use_precomputed_maps=None, - metadata_config_path=None, - mask_column=None, - ) - - manifest_path = ( - project_root / "data" / "manifest-input-temp" / "preprocess-manifest.json" - ) - manifest = json.loads(manifest_path.read_text()) - config = manifest["preprocessing_config"] - - assert manifest["manifest_version"] == 1 - assert config["read_format"] == "csv" - assert config["write_format"] == "parquet" - assert config["merge_output"] is False - assert config["selected_columns"] == ["sequenceId", "itemPosition", "itemId"] - assert config["data_columns"] == ["itemId"] - assert config["split_ratios"] == [1.0] - assert config["stride_by_split"] == [2] - assert config["max_rows"] == 2 - assert config["process_by_file"] is True - assert config["subsequence_start_mode"] == "exact" - assert config["mask_column"] is None - assert config["metadata_config_path"] is None - assert config["use_precomputed_maps"] is None - assert manifest["effective_metadata_digest"]["algorithm"] == "sha256" - assert len(manifest["effective_metadata_digest"]["value"]) == 64 - - -def test_resume_manifest_rejects_changed_preprocessing_config(tmp_path): - project_root = tmp_path / "project" - manifest_dir = project_root / "data" / "input-temp" - manifest_dir.mkdir(parents=True) - - preprocessor = object.__new__(Preprocessor) - preprocessor.project_root = str(project_root) - preprocessor.target_dir = "input-temp" - preprocessor.continue_preprocessing = False - preprocessor.storage_layout = StoredWindowLayout( - stored_context_width=3, - max_target_offset=1, - version=2, - ) - preprocessor.data_path = "data/input.csv" - preprocessor.data_name_root = "input" - preprocessor.read_format = "csv" - preprocessor.merge_output = False - preprocessor.split_ratios = [1.0] - preprocessor.stride_by_split = [1] - preprocessor.max_rows = None - preprocessor.process_by_file = True - preprocessor.subsequence_start_mode = "distribute" - preprocessor.mask_column = None - preprocessor.metadata_config_path = None - preprocessor.use_precomputed_maps = None - - preprocessor._write_or_validate_resume_manifest( - selected_columns=None, - write_format="parquet", - data_columns=["itemId"], - id_maps={"itemId": {"a": 3}}, - n_classes={"itemId": 4}, - col_types={"itemId": "Int64"}, - selected_columns_statistics={}, - ) - - preprocessor.continue_preprocessing = True - preprocessor.stride_by_split = [2] - - with pytest.raises(ValueError, match="different preprocessing manifest"): - preprocessor._write_or_validate_resume_manifest( - selected_columns=None, - write_format="parquet", - data_columns=["itemId"], - id_maps={"itemId": {"a": 3}}, - n_classes={"itemId": 4}, - col_types={"itemId": "Int64"}, - selected_columns_statistics={}, - ) - - -def test_load_and_preprocess_data_requests_mask_column_for_csv_projection(tmp_path): - data_path = tmp_path / "masked-input.csv" - captured_columns = None - - def projected_read_data(path, read_format, columns=None): - nonlocal captured_columns - captured_columns = columns - assert path == str(data_path) - assert read_format == "csv" - assert columns is not None - assert RESERVED_MASK_COLUMN in columns - return pl.DataFrame( - { - "sequenceId": [0], - "itemPosition": [0], - "itemId": ["a"], - "itemValue": [1.0], - RESERVED_MASK_COLUMN: [1], - } - ) - - with pytest.MonkeyPatch.context() as monkeypatch: - monkeypatch.setattr("sequifier.preprocess.read_data", projected_read_data) - data = _load_and_preprocess_data( - str(data_path), - "csv", - ["itemId", "itemValue"], - None, - RESERVED_MASK_COLUMN, - ) - - assert captured_columns == ["itemId", "itemValue", RESERVED_MASK_COLUMN] - assert data.columns == [ - "sequenceId", - "itemPosition", - "itemId", - "itemValue", - RESERVED_MASK_COLUMN, - ] - - -def test_load_and_preprocess_data_fails_when_mask_column_is_missing(tmp_path): - csv_path = tmp_path / "input.csv" - pl.DataFrame({"sequenceId": [0], "itemPosition": [0], "itemId": ["a"]}).write_csv( - csv_path - ) - - with pytest.raises(ValueError, match="mask_column '.+' not found"): - _load_and_preprocess_data( - str(csv_path), - "csv", - None, - None, - RESERVED_MASK_COLUMN, - ) - - parquet_path = tmp_path / "input.parquet" - pl.DataFrame( - {"sequenceId": [0], "itemPosition": [0], "itemId": ["a"]} - ).write_parquet(parquet_path) - - with pytest.raises(ValueError, match="mask_column '.+' not found"): - _load_and_preprocess_data( - str(parquet_path), - "parquet", - ["itemId"], - None, - RESERVED_MASK_COLUMN, - ) - - -def test_preprocessor_requires_metadata_config_for_mask_column(tmp_path): - project_root = tmp_path / "project" - project_root.mkdir() - data_path = tmp_path / "masked-input.csv" - pl.DataFrame( - { - "sequenceId": [0], - "itemPosition": [0], - "itemId": ["a"], - RESERVED_MASK_COLUMN: [0], - } - ).write_csv(data_path) - - with pytest.raises( - ValueError, - match="metadata_config_path must be set when mask_column is set", - ): - Preprocessor( - project_root=str(project_root), - continue_preprocessing=False, - data_path=str(data_path), - read_format="csv", - write_format="parquet", - merge_output=True, - selected_columns=["itemId"], - split_ratios=[1.0], - stored_context_width=2, - max_target_offset=1, - stride_by_split=[1], - max_rows=None, - seed=1010, - n_cores=1, - batches_per_file=1024, - process_by_file=True, - subsequence_start_mode="distribute", - use_precomputed_maps=None, - metadata_config_path=None, - mask_column=RESERVED_MASK_COLUMN, - ) - - -def test_preprocessor_config_defaults_mask_column_to_none(tmp_path): - data_path = tmp_path / "input.csv" - pl.DataFrame( - { - "sequenceId": [0], - "itemPosition": [0], - "itemId": ["a"], - RESERVED_MASK_COLUMN: [0], - } - ).write_csv(data_path) - - config = PreprocessorModel( - project_root=str(tmp_path), - data_path=str(data_path), - split_ratios=[1.0], - stored_context_width=2, - max_target_offset=1, - seed=1010, - ) - - assert config.mask_column is None - - -def test_preprocessor_config_requires_metadata_config_for_mask_column( - tmp_path, -): - data_path = tmp_path / "input.csv" - pl.DataFrame( - { - "sequenceId": [0], - "itemPosition": [0], - "itemId": ["a"], - RESERVED_MASK_COLUMN: [0], - } - ).write_csv(data_path) - - with pytest.raises( - ValidationError, - match="metadata_config_path must be set when mask_column is set", - ): - PreprocessorModel( - project_root=str(tmp_path), - data_path=str(data_path), - split_ratios=[1.0], - stored_context_width=2, - max_target_offset=1, - seed=1010, - mask_column=RESERVED_MASK_COLUMN, - ) - - -@pytest.mark.parametrize("mode", ["distribute", "exact"]) -def test_extract_subsequences_modes(mode): - """Distribute vs exact stride modes.""" - # Length 10. Seq_len 2 (window 3). - # distribute: adjusts stride to cover data evenly. - # exact: strictly adheres to stride, throws error if misalignment. - input_data = {"col1": list(range(10))} - context_length = 2 - stored_context_width = context_length + 1 - columns = ["col1"] - - if mode == "distribute": - stride = 4 - # distribute might adjust indices to maximize coverage - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data, stored_context_width, stride, columns, mode - ) - assert len(result["col1"]) > 0 - - elif mode == "exact": - stride = ( - 3 # (10-1) - 2 = 7. 7 % 3 != 0. Should fail or require specific alignment - ) - # Testing a failing exact case - with pytest.raises(ValueError): - extract_subsequences(input_data, stored_context_width, 4, columns, mode) - - # Testing a passing exact case - # (10-1) - 2 = 7. If we change input len to 11: (11-1)-2 = 8. stride 4 works. - input_data_exact = {"col1": list(range(11))} - result, left_pad_lengths, subsequence_starts = extract_subsequences( - input_data_exact, stored_context_width, 4, columns, mode - ) - assert len(result["col1"]) > 0 - - -def test_get_batch_limits_perfect_split(): - """Batch boundaries align with sequence boundaries.""" - # 3 sequences, each length 10. Total 30 rows. - # If we want 3 batches, we should get 3 chunks of 10. - data = pl.DataFrame({"sequenceId": np.repeat([1, 2, 3], 10), "val": np.arange(30)}) - - limits = get_batch_limits(data, n_batches=3) - - assert len(limits) == 3 - assert limits == [(0, 10), (10, 20), (20, 30)] - - -def test_get_batch_limits_uneven_split(): - """Batches never split a sequenceId.""" - # Seq 1: 5 rows - # Seq 2: 15 rows - # Seq 3: 5 rows - # Total 25 rows. Request 2 batches. Ideal size 12.5. - # Split point should occur at index 5 (Seq 1 end) or 20 (Seq 2 end), - # NOT at index 12 (middle of Seq 2). - data = pl.DataFrame( - {"sequenceId": np.repeat([1, 2, 3], [5, 15, 5]), "val": np.arange(25)} - ) - - limits = get_batch_limits(data, n_batches=2) - - assert len(limits) == 2 - assert limits[0][0] == 0 - assert limits[-1][1] == data.height - assert all(start < end for start, end in limits) - assert all( - left_end == right_start - for (_, left_end), (right_start, _) in zip(limits, limits[1:]) - ) - - # Check that split points are valid sequence boundaries - for start, end in limits: - # Start of batch must match start of a sequence (unless 0) - if start != 0: - prev_id = data["sequenceId"][start - 1] - curr_id = data["sequenceId"][start] - assert prev_id != curr_id, f"Batch split at {start} broke a sequence" - if end != data.height: - prev_id = data["sequenceId"][end - 1] - curr_id = data["sequenceId"][end] - assert prev_id != curr_id, f"Batch split at {end} broke a sequence" - - -def test_get_batch_limits_rejects_too_many_nonempty_batches(): - """Too many requested chunks fail instead of producing empty batches.""" - data = pl.DataFrame({"sequenceId": [1, 2, 3, 3], "val": np.arange(4)}) - - with pytest.raises(ValueError, match="more non-empty batches"): - get_batch_limits(data, n_batches=4) - - -def test_get_combined_statistics_logic(): - """Merged Welford stats.""" - # Create two chunks of data - chunk1 = np.random.normal(loc=10, scale=2, size=100) - chunk2 = np.random.normal(loc=20, scale=5, size=50) - full_data = np.concatenate([chunk1, chunk2]) - - # Real stats - mean1, std1 = np.mean(chunk1), np.std(chunk1, ddof=1) - mean2, std2 = np.mean(chunk2), np.std(chunk2, ddof=1) - - # Function output - comb_mean, comb_std = get_combined_statistics( - len(chunk1), float(mean1), float(std1), len(chunk2), float(mean2), float(std2) - ) - - # Expected stats - expected_mean = np.mean(full_data) - expected_std = np.std(full_data, ddof=1) - - np.testing.assert_almost_equal(comb_mean, expected_mean) - np.testing.assert_almost_equal(comb_std, expected_std) - - -def test_get_column_statistics_state_accumulation(): - """Chunked and full-pass stats match.""" - data_full = pl.DataFrame( - { - "cat_col": ["a", "b", "a", "c", "b", "d"], - "num_col": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], - } - ) - - # Split into two chunks - chunk1 = data_full.slice(0, 3) - chunk2 = data_full.slice(3, 3) - - id_maps = {} - stats = {} - running_count = 0 - - # Pass 1 - id_maps, stats = _get_column_statistics( - chunk1, ["cat_col", "num_col"], id_maps, stats, running_count, {} - ) - running_count += len(chunk1) - - # Pass 2 - id_maps, stats = _get_column_statistics( - chunk2, ["cat_col", "num_col"], id_maps, stats, running_count, {} - ) - - assert len(id_maps["cat_col"]) == 6 - assert set(id_maps["cat_col"].keys()) == { - "[unknown]", - "[other]", - "a", - "b", - "c", - "d", - } - - expected_mean = data_full["num_col"].mean() - expected_std = data_full["num_col"].std() - - np.testing.assert_almost_equal(stats["num_col"]["mean"], expected_mean) - np.testing.assert_almost_equal(stats["num_col"]["std"], expected_std) - - -def test_get_column_statistics_skips_all_masked_chunks(): - data = pl.DataFrame( - { - "cat_col": ["a", "b"], - "num_col": [1.0, 2.0], - RESERVED_MASK_COLUMN: [1, 1], - } - ) - - id_maps, stats = _get_column_statistics( - data, - ["cat_col", "num_col"], - {}, - {}, - 0, - {}, - mask_column=RESERVED_MASK_COLUMN, - ) - - assert id_maps == {} - assert stats == {} - - -def test_apply_column_statistics_errors_when_all_rows_masked(): - data = pl.DataFrame({"cat_col": ["a"], "num_col": [1.0]}) - - with pytest.raises(ValueError, match="No unmasked examples"): - _apply_column_statistics(data, ["cat_col", "num_col"], {}, {}) - - -def test_create_id_map(): - """Basic ID map creation.""" - df = pl.DataFrame({"A": ["z", "x", "y", "x"]}) - mapping = create_id_map(df, "A") - - # Sorted unique values: x, y, z -> 2, 3, 4 - assert mapping["x"] == 3 - assert mapping["y"] == 4 - assert mapping["z"] == 5 - - -def test_load_precomputed_id_maps_allows_reserved_entries(tmp_path): - project_root = tmp_path / "project" - id_map_dir = project_root / "configs" / "id_maps" - id_map_dir.mkdir(parents=True) - (id_map_dir / "itemId.json").write_text( - json.dumps( - { - "[unknown]": 0, - "[other]": 1, - "[mask]": 2, - "a": 3, - "b": 4, - } - ) - ) - - id_maps = load_precomputed_id_maps(str(project_root), ["itemId"]) - - assert id_maps["itemId"]["[mask]"] == 2 - assert id_maps["itemId"]["a"] == 3 diff --git a/tests/unit/test_probabilities.py b/tests/unit/test_probabilities.py deleted file mode 100644 index d413d841..00000000 --- a/tests/unit/test_probabilities.py +++ /dev/null @@ -1,51 +0,0 @@ -import pytest -import torch - -from sequifier.config.probabilities import ( - GeometricDistribution, - LogNormalDistributionDiscretizedFloor, - NormalDistributionDiscretizedFloor, - PoissonDistributionFloor, -) - - -@pytest.mark.parametrize( - "distribution", - [ - GeometricDistribution(p=0.35), - NormalDistributionDiscretizedFloor(mean=2.0, standard_deviation=0.5), - LogNormalDistributionDiscretizedFloor(mean=0.5, standard_deviation=0.4), - PoissonDistributionFloor(rate=2.0), - ], -) -def test_probability_distributions_use_local_generator_without_global_rng( - distribution, -): - device = torch.device("cpu") - torch.manual_seed(123) - rng_state = torch.get_rng_state().clone() - - first_generator = torch.Generator(device=device) - first_generator.manual_seed(99) - first_samples = distribution.sample( - (64,), - device=device, - generator=first_generator, - ) - after_first = torch.get_rng_state().clone() - - second_generator = torch.Generator(device=device) - second_generator.manual_seed(99) - second_samples = distribution.sample( - (64,), - device=device, - generator=second_generator, - ) - after_second = torch.get_rng_state().clone() - - assert torch.equal(first_samples, second_samples) - assert first_samples.device == device - assert first_samples.dtype == torch.long - assert torch.all(first_samples >= 1) - assert torch.equal(after_first, rng_state) - assert torch.equal(after_second, rng_state) diff --git a/tests/unit/test_train.py b/tests/unit/test_train.py deleted file mode 100644 index 954076b7..00000000 --- a/tests/unit/test_train.py +++ /dev/null @@ -1,1529 +0,0 @@ -import copy -import json -from types import SimpleNamespace - -import numpy as np -import pytest -import torch -import yaml -from pydantic import ValidationError -from torch.utils.data import DataLoader - -from sequifier.config.probabilities import PoissonDistributionFloor -from sequifier.config.train_config import ( - BERTSpecModel, - ModelSpecModel, - ReplacementDistribution, - TrainingSpecModel, - TrainModel, - load_train_config, -) -from sequifier.helpers import ModelWindowView, StoredWindowLayout -from sequifier.io.batch import SequifierBatch -from sequifier.special_tokens import SPECIAL_TOKEN_IDS -from sequifier.train import ( - TransformerModel, - _get_evaluation_loss_mask, - accumulate_class_counts, -) - - -def _training_spec_kwargs(**overrides): - values = { - "training_objective": "causal", - "device": "cpu", - "epochs": 1, - "save_interval_epochs": 1, - "batch_size": 4, - "learning_rate": 0.001, - "criterion": {"cat_col": "CrossEntropyLoss", "real_col": "MSELoss"}, - "optimizer": {"name": "Adam"}, - "scheduler": {"name": "StepLR", "step_size": 1, "gamma": 0.1}, - "loss_weights": {"cat_col": 1.0, "real_col": 1.0}, - } - values.update(overrides) - return values - - -def _bert_spec(): - return BERTSpecModel( - masking_probability=0.5, - replacement_distribution={ - "masked": 1.0, - "random": 0.0, - "identical": 0.0, - }, - span_masking={"type": "GeometricDistribution", "p": 1.0}, - ) - - -def test_replacement_distribution_allows_zero_probabilities(): - distribution = ReplacementDistribution(masked=1.0, random=0.0, identical=0.0) - - assert distribution.masked == 1.0 - assert distribution.random == 0.0 - assert distribution.identical == 0.0 - - -def test_training_spec_model_requires_bert_spec_for_bert_objective(): - with pytest.raises(ValidationError, match="BERT hyperparameters must be set"): - TrainingSpecModel(**_training_spec_kwargs(training_objective="bert")) - - -def test_training_spec_model_rejects_bert_spec_for_causal_objective(): - with pytest.raises( - ValidationError, - match="BERT hyperparameters should only be configured", - ): - TrainingSpecModel(**_training_spec_kwargs(bert_spec=_bert_spec())) - - -def test_training_spec_model_dump_excludes_runtime_offsets(): - training_spec = TrainingSpecModel(**_training_spec_kwargs()) - - dumped = training_spec.model_dump() - - assert "data_offset" not in dumped - assert "target_offset" not in dumped - assert "stored_context_width" not in dumped - assert "max_target_offset" not in dumped - - -def test_poisson_span_masking_samples_at_least_one_token(): - distribution = PoissonDistributionFloor(rate=0.1) - - samples = distribution.sample((1000,), device=torch.device("cpu")) - - assert samples.min().item() >= 1 - - -@pytest.fixture -def model_config(tmp_path): - """Valid TrainModel config.""" - project_root = str(tmp_path) - - # Ensure necessary directories exist to avoid init errors (logging) - (tmp_path / "logs").mkdir(exist_ok=True) - - model_spec = ModelSpecModel( - initial_embedding_dim=16, - dim_model=16, - n_head=4, - dim_feedforward=32, - num_layers=2, - prediction_length=1, - # Embedding dims must sum to dim_model (15 + 1 = 16) - feature_embedding_dims={"cat_col": 15, "real_col": 1}, - ) - - training_spec = TrainingSpecModel( - training_objective="causal", - device="cpu", - epochs=1, - save_interval_epochs=1, - batch_size=4, - learning_rate=0.001, - criterion={"cat_col": "CrossEntropyLoss", "real_col": "MSELoss"}, - optimizer={"name": "Adam"}, - scheduler={"name": "StepLR", "step_size": 1, "gamma": 0.1}, - loss_weights={"cat_col": 1.0, "real_col": 1.0}, - ) - - config = TrainModel( - project_root=project_root, - model_name="unit-test-model", - metadata_config_path="metadata.json", # Dummy path - training_data_path="data/train.pt", # Dummy path - validation_data_path="data/val.pt", # Dummy path - input_columns=["cat_col", "real_col"], - target_columns=["cat_col", "real_col"], - target_column_types={"cat_col": "categorical", "real_col": "real"}, - column_types={"cat_col": "int64", "real_col": "float64"}, - categorical_columns=["cat_col"], - real_columns=["real_col"], - # id_maps is needed for constructing index_maps in model init - id_maps={"cat_col": {"a": 1, "b": 2, "c": 3, "d": 4}}, - n_classes={"cat_col": 5}, # 0 + 4 classes - storage_layout=StoredWindowLayout( - stored_context_width=11, max_target_offset=1, version=2 - ), - window_view=ModelWindowView( - context_length=10, objective="causal", target_offset=1 - ), - inference_batch_size=4, - seed=42, - export_generative_model=True, - export_embedding_model=False, - model_spec=model_spec, - training_spec=training_spec, - ) - return config - - -@pytest.fixture -def model(model_config): - """Instantiates the TransformerModel with the mock config.""" - return TransformerModel(model_config) - - -@pytest.fixture -def causal_model(model_config): - config = copy.deepcopy(model_config) - config.training_spec.training_objective = "causal" - return TransformerModel(config) - - -@pytest.fixture -def bert_model(model_config): - config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = ( - model_config.window_view.context_length - ) - config_values["training_spec"] = _training_spec_kwargs( - training_objective="bert", - bert_spec=_bert_spec(), - ) - config_values["window_view"] = { - **config_values["window_view"], - "objective": "bert", - "target_offset": 0, - } - config = TrainModel(**config_values) - return TransformerModel(config) - - -def _all_valid_metadata(batch_size, seq_len, device=None): - valid_mask = torch.ones( - batch_size, - seq_len, - dtype=torch.bool, - device=device, - ) - return { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - -def _loss_shell_model( - target_column_types, - *, - loss_weights=None, - class_weights=None, -): - model = TransformerModel.__new__(TransformerModel) - model.target_columns = list(target_column_types) - model.target_column_types = dict(target_column_types) - model.loss_weights = loss_weights - model.device = "cpu" - model.criterion = {} - model.n_classes = {} - - for col, col_type in target_column_types.items(): - if col_type == "categorical": - weight = None - n_classes = 3 - if class_weights is not None and col in class_weights: - col_class_weights = class_weights[col] - weight = torch.tensor(col_class_weights, dtype=torch.float32) - n_classes = len(col_class_weights) - model.criterion[col] = torch.nn.CrossEntropyLoss( - reduction="none", - weight=weight, - ) - model.n_classes[col] = n_classes - elif col_type == "real": - model.criterion[col] = torch.nn.MSELoss(reduction="none") - else: - raise ValueError(col_type) - - return model - - -class _IdentityScaler: - def scale(self, loss): - return loss - - def unscale_(self, optimizer): - return None - - def step(self, optimizer): - optimizer.step() - - def update(self): - return None - - -class _NoopLogger: - def info(self, *args, **kwargs): - return None - - def warning(self, *args, **kwargs): - return None - - -def test_transformer_model_initialization(model, model_config): - """Expected model layers.""" - # Check if encoder dicts were created - assert "cat_col" in model.encoder - assert model.pos_encoder is None or "cat_col" in model.pos_encoder - - # Check decoder existence - assert "cat_col" in model.decoder - assert "real_col" in model.decoder - - # Check embedding sizes - assert model.dim_model == 16 - assert model.encoder["cat_col"].embedding_dim == 15 - # Real column 'real_col' has feature_embedding_dims=1, but it goes through a Linear layer - # if dim > 1, or direct if dim == 1. In setup: - # if feature_embedding_dims[col] > 1 -> Linear - # else -> checked to be 1, then no encoder added to self.encoder for 'direct' columns? - # Let's check logic in train.py: - # if self.feature_embedding_dims[col] > 1: ... self.encoder[col] = nn.Linear(...) - # else: self.real_columns_direct.append(col) - # Since we set real_col dim to 1, it should NOT be in model.encoder - if model.feature_embedding_dims["real_col"] == 1: - assert "real_col" not in model.encoder - else: - assert "real_col" in model.encoder - - -def test_train_model_requires_bert_prediction_length_to_equal_context_length( - model_config, -): - config_values = model_config.model_dump() - config_values["model_spec"]["prediction_length"] = ( - model_config.window_view.context_length - 1 - ) - config_values["training_spec"] = _training_spec_kwargs( - training_objective="bert", - bert_spec=_bert_spec(), - ) - config_values["window_view"] = { - **config_values["window_view"], - "objective": "bert", - "target_offset": 0, - } - - with pytest.raises(ValidationError, match="prediction_length must be equal"): - TrainModel(**config_values) - - -def test_train_model_rejects_mismatched_special_token_ids(model_config): - config_values = model_config.model_dump() - config_values["special_token_ids"] = { - "[unknown]": 10, - "[other]": 11, - "[mask]": 12, - } - - with pytest.raises(ValidationError, match="special_token_ids must match"): - TrainModel(**config_values) - - -def test_load_train_config_rejects_mismatched_metadata_special_token_ids( - tmp_path, model_config -): - config_path = tmp_path / "train.yaml" - metadata_path = tmp_path / "metadata.json" - config_values = model_config.model_dump() - config_values["project_root"] = str(tmp_path) - config_values["metadata_config_path"] = metadata_path.name - storage_layout = config_values.pop("storage_layout") - config_values.pop("window_view") - config_values["context_length"] = model_config.window_view.context_length - config_path.write_text(yaml.safe_dump(config_values)) - metadata_path.write_text( - json.dumps( - { - "split_paths": ["data/train.pt", "data/val.pt"], - "stored_context_width": storage_layout["stored_context_width"], - "max_target_offset": storage_layout["max_target_offset"], - "stored_window_layout_version": storage_layout["version"], - "column_types": config_values["column_types"], - "n_classes": config_values["n_classes"], - "id_maps": config_values["id_maps"], - "special_token_ids": { - "[unknown]": 10, - "[other]": 11, - "[mask]": 12, - }, - } - ) - ) - - with pytest.raises(ValueError, match="special_token_ids must match"): - load_train_config(str(config_path), {}, skip_metadata=False) - - -def test_load_train_config_defaults_missing_metadata_special_token_ids( - tmp_path, model_config -): - config_path = tmp_path / "train.yaml" - metadata_path = tmp_path / "metadata.json" - config_values = model_config.model_dump() - config_values["project_root"] = str(tmp_path) - config_values["metadata_config_path"] = metadata_path.name - storage_layout = config_values.pop("storage_layout") - config_values.pop("window_view") - config_values["context_length"] = model_config.window_view.context_length - config_path.write_text(yaml.safe_dump(config_values)) - metadata_path.write_text( - json.dumps( - { - "split_paths": ["data/train.pt", "data/val.pt"], - "stored_context_width": storage_layout["stored_context_width"], - "max_target_offset": storage_layout["max_target_offset"], - "stored_window_layout_version": storage_layout["version"], - "column_types": config_values["column_types"], - "n_classes": config_values["n_classes"], - "id_maps": config_values["id_maps"], - } - ) - ) - - config = load_train_config(str(config_path), {}, skip_metadata=False) - - assert config.special_token_ids == SPECIAL_TOKEN_IDS.ids_by_label - - -@pytest.mark.parametrize( - ("class_share_column", "metadata_overrides", "config_overrides", "match"), - [ - ( - "missing_col", - {}, - {}, - "Class-share column 'missing_col' must be a target column", - ), - ( - "real_col", - {}, - {}, - "Class-share column 'real_col' must be a categorical target column", - ), - ( - "cat_col", - {"n_classes": {}}, - {"drop_n_classes": True}, - "Class-share column 'cat_col' has no configured class count", - ), - ( - "cat_col", - {"id_maps": {}}, - {}, - "Class-share column 'cat_col' has no index map for logging", - ), - ], -) -def test_load_train_config_validates_class_share_columns_after_metadata_load( - tmp_path, - model_config, - class_share_column, - metadata_overrides, - config_overrides, - match, -): - config_path = tmp_path / "train.yaml" - metadata_path = tmp_path / "metadata.json" - config_values = model_config.model_dump() - config_values["project_root"] = str(tmp_path) - config_values["metadata_config_path"] = metadata_path.name - config_values["training_spec"]["class_share_log_columns"] = [class_share_column] - - storage_layout = config_values.pop("storage_layout") - config_values.pop("window_view") - config_values["context_length"] = model_config.window_view.context_length - - if config_overrides.get("drop_n_classes"): - config_values.pop("n_classes") - - metadata = { - "split_paths": ["data/train.pt", "data/val.pt"], - "stored_context_width": storage_layout["stored_context_width"], - "max_target_offset": storage_layout["max_target_offset"], - "stored_window_layout_version": storage_layout["version"], - "column_types": config_values["column_types"], - "n_classes": model_config.n_classes, - "id_maps": model_config.id_maps, - "special_token_ids": SPECIAL_TOKEN_IDS.ids_by_label, - } - metadata.update(metadata_overrides) - - config_path.write_text(yaml.safe_dump(config_values)) - metadata_path.write_text(json.dumps(metadata)) - - with pytest.raises(ValueError, match=match): - load_train_config(str(config_path), {}, skip_metadata=False) - - -def test_forward_train_shapes(model, model_config): - """forward_train output shapes.""" - batch_size = model_config.training_spec.batch_size - seq_len = model_config.window_view.context_length - - # Create dummy inputs - # Categorical: (batch, seq_len) integers - x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) - # Real: (batch, seq_len) floats - x_real = torch.randn(batch_size, seq_len) - - src = {"cat_col": x_cat, "real_col": x_real} - metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) - - # forward_train returns a dict of tensors - outputs = model.forward_train(src, metadata) - - assert "cat_col" in outputs - assert "real_col" in outputs - - # Expected output shape for training: (seq_len, batch_size, n_classes_or_1) - # Note: PyTorch Transformer default is (S, N, E) unless batch_first=True. - # Sequifier seems to use default, so (S, B, OutputDim) - - out_cat = outputs["cat_col"] - assert out_cat.shape == (seq_len, batch_size, model_config.n_classes["cat_col"]) - - out_real = outputs["real_col"] - assert out_real.shape == (seq_len, batch_size, 1) - - -def test_forward_inference_shapes(model, model_config): - """Inference output shapes.""" - batch_size = model_config.training_spec.batch_size - seq_len = model_config.window_view.context_length - prediction_length = model_config.model_spec.prediction_length # 1 - - x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) - x_real = torch.randn(batch_size, seq_len) - src = {"cat_col": x_cat, "real_col": x_real} - metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) - - # forward returns predictions for the *last* prediction_length tokens - # And applies softmax to categorical outputs - outputs = model.forward(src, metadata) - - # Expected shape: (prediction_length, batch_size, n_classes_or_1) - # If prediction_length is 1, dim 0 is size 1. - - out_cat = outputs["cat_col"] - assert out_cat.shape == ( - prediction_length, - batch_size, - model_config.n_classes["cat_col"], - ) - - # Check if Softmax/LogSoftmax was applied (values should be <= 0 for LogSoftmax) - # Sequifier uses LogSoftmax for categorical - assert (out_cat <= 0).all() - - out_real = outputs["real_col"] - assert out_real.shape == (prediction_length, batch_size, 1) - - -def test_calculate_loss(model, model_config): - """Scalar loss tensor.""" - batch_size = model_config.training_spec.batch_size - seq_len = model_config.window_view.context_length - - # Inputs - x_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) - x_real = torch.randn(batch_size, seq_len) - src = {"cat_col": x_cat, "real_col": x_real} - - # Targets (must match sequence length for training) - y_cat = torch.randint(0, model_config.n_classes["cat_col"], (batch_size, seq_len)) - y_real = torch.randn(batch_size, seq_len) - targets = {"cat_col": y_cat, "real_col": y_real} - metadata = _all_valid_metadata(batch_size, seq_len, device=x_cat.device) - - # Run forward pass - outputs = model.forward_train(src, metadata) - - # Calculate loss - total_loss, component_losses = model._calculate_loss(outputs, targets, metadata) - - # Assertions - assert total_loss.dim() == 0 # Scalar - assert total_loss.item() > 0 # Valid loss value - assert "cat_col" in component_losses - assert "real_col" in component_losses - - -def test_calculate_loss_uses_explicit_target_mask_for_real_zero_targets(): - model = TransformerModel.__new__(TransformerModel) - model.target_column_types = {"real_col": "real"} - model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} - model.loss_weights = None - model.categorical_columns = [] - outputs = { - "real_col": torch.tensor( - [ - [[1.0]], - [[2.0]], - [[1.0]], - ] - ) - } - targets = { - "real_col": torch.tensor([[0.0, 0.0, 2.0]]), - } - metadata = { - "attention_valid_mask": torch.tensor([[True, True, True]]), - "target_valid_mask": torch.tensor([[True, True, True]]), - } - - total_loss, component_losses = TransformerModel._calculate_loss( - model, outputs, targets, metadata - ) - - assert torch.isclose(total_loss, torch.tensor(2.0)) - assert torch.isclose(component_losses["real_col"], torch.tensor(2.0)) - - -def test_calculate_loss_uses_explicit_target_mask_for_target_columns(): - model = TransformerModel.__new__(TransformerModel) - model.target_column_types = {"real_target": "real"} - model.criterion = {"real_target": torch.nn.MSELoss(reduction="none")} - model.loss_weights = None - model.categorical_columns = ["context_cat"] - outputs = { - "real_target": torch.tensor( - [ - [[10.0]], - [[20.0]], - [[3.0]], - ] - ) - } - targets = { - "real_target": torch.tensor([[0.0, 0.0, 2.0]]), - } - metadata = { - "attention_valid_mask": torch.tensor([[False, False, True]]), - "target_valid_mask": torch.tensor([[False, False, True]]), - } - - total_loss, component_losses = TransformerModel._calculate_loss( - model, outputs, targets, metadata - ) - - assert torch.isclose(total_loss, torch.tensor(1.0)) - assert torch.isclose(component_losses["real_target"], torch.tensor(1.0)) - - -def test_calculate_local_loss_components_categorical_target_with_padding(): - model = _loss_shell_model({"cat_col": "categorical"}) - model.n_classes["cat_col"] = 3 - logits = torch.tensor( - [ - [[2.0, 0.0, 0.0]], - [[0.0, 2.0, 0.0]], - [[0.0, 0.0, 2.0]], - ] - ) - targets = {"cat_col": torch.tensor([[0, 1, 2]])} - valid_mask = torch.tensor([[True, False, True]]) - - loss_sums, token_count = TransformerModel._calculate_local_loss_components( - model, - {"cat_col": logits}, - targets, - valid_mask, - ) - raw_loss = torch.nn.functional.cross_entropy( - logits.reshape(-1, 3), - targets["cat_col"].T.reshape(-1), - reduction="none", - ) - - assert torch.isclose(loss_sums["cat_col"], raw_loss[[0, 2]].sum()) - assert torch.equal(token_count, torch.tensor(2)) - - -def test_calculate_local_loss_components_real_target_with_padding(): - model = _loss_shell_model({"real_col": "real"}) - output = {"real_col": torch.tensor([[[1.0]], [[2.0]], [[4.0]]])} - targets = {"real_col": torch.tensor([[0.0, 10.0, 1.0]])} - valid_mask = torch.tensor([[True, False, True]]) - - loss_sums, token_count = TransformerModel._calculate_local_loss_components( - model, output, targets, valid_mask - ) - - assert torch.isclose(loss_sums["real_col"], torch.tensor(10.0)) - assert torch.equal(token_count, torch.tensor(2)) - - -def test_calculate_training_loss_intersects_target_and_bert_masks(): - model = _loss_shell_model({"real_col": "real"}) - output = {"real_col": torch.tensor([[[1.0]], [[2.0]], [[4.0]]])} - targets = {"real_col": torch.tensor([[0.0, 10.0, 1.0]])} - metadata = { - "target_valid_mask": torch.tensor([[True, True, True]]), - "bert_mask": torch.tensor([[True, False, True]]), - } - - total_loss, component_losses = TransformerModel._calculate_loss( - model, output, targets, metadata - ) - - assert torch.isclose(total_loss, torch.tensor(5.0)) - assert torch.isclose(component_losses["real_col"], torch.tensor(5.0)) - - -def test_calculate_training_loss_applies_unequal_target_loss_weights(): - model = _loss_shell_model( - {"cat_col": "categorical", "real_col": "real"}, - loss_weights={"cat_col": 0.25, "real_col": 2.0}, - ) - model.n_classes["cat_col"] = 3 - output = { - "cat_col": torch.tensor( - [ - [[2.0, 0.0, 0.0]], - [[0.0, 2.0, 0.0]], - ] - ), - "real_col": torch.tensor([[[1.0]], [[3.0]]]), - } - targets = { - "cat_col": torch.tensor([[0, 1]]), - "real_col": torch.tensor([[0.0, 1.0]]), - } - metadata = {"target_valid_mask": torch.ones(1, 2, dtype=torch.bool)} - - total_loss, component_losses = TransformerModel._calculate_loss( - model, output, targets, metadata - ) - cat_mean = torch.nn.functional.cross_entropy( - output["cat_col"].reshape(-1, 3), - targets["cat_col"].T.reshape(-1), - reduction="mean", - ) - real_mean = torch.nn.functional.mse_loss( - output["real_col"].reshape(-1), - targets["real_col"].T.reshape(-1), - reduction="mean", - ) - - assert torch.isclose(component_losses["cat_col"], cat_mean * 0.25) - assert torch.isclose(component_losses["real_col"], real_mean * 2.0) - assert torch.isclose(total_loss, cat_mean * 0.25 + real_mean * 2.0) - - -def test_calculate_local_loss_components_keeps_class_weights_inside_criterion(): - class_weights = {"cat_col": [1.0, 4.0, 1.0]} - model = _loss_shell_model({"cat_col": "categorical"}, class_weights=class_weights) - logits = torch.tensor( - [ - [[2.0, 0.0, 0.0]], - [[2.0, 0.0, 0.0]], - ] - ) - targets = {"cat_col": torch.tensor([[0, 1]])} - valid_mask = torch.ones(1, 2, dtype=torch.bool) - - loss_sums, token_count = TransformerModel._calculate_local_loss_components( - model, - {"cat_col": logits}, - targets, - valid_mask, - ) - expected = torch.nn.functional.cross_entropy( - logits.reshape(-1, 3), - targets["cat_col"].T.reshape(-1), - reduction="none", - weight=torch.tensor(class_weights["cat_col"]), - ).sum() - - assert torch.isclose(loss_sums["cat_col"], expected) - assert torch.equal(token_count, torch.tensor(2)) - - -def test_calculate_local_loss_components_zero_selected_tokens_stays_connected(): - model = _loss_shell_model({"real_col": "real"}) - output = {"real_col": torch.ones(3, 1, 1, requires_grad=True)} - targets = {"real_col": torch.zeros(1, 3)} - valid_mask = torch.zeros(1, 3, dtype=torch.bool) - - loss_sums, token_count = TransformerModel._calculate_local_loss_components( - model, - output, - targets, - valid_mask, - ) - loss_sums["real_col"].backward() - - assert torch.equal(token_count, torch.tensor(0)) - assert torch.equal(loss_sums["real_col"].detach(), torch.tensor(0.0)) - assert torch.equal(output["real_col"].grad, torch.zeros_like(output["real_col"])) - - -def test_calculate_local_loss_components_raises_on_output_mask_mismatch(): - model = _loss_shell_model({"real_col": "real"}) - output = {"real_col": torch.zeros(3, 1, 1)} - targets = {"real_col": torch.zeros(1, 3)} - valid_mask = torch.ones(1, 2, dtype=torch.bool) - - with pytest.raises(RuntimeError, match="Loss/mask size mismatch"): - TransformerModel._calculate_local_loss_components( - model, - output, - targets, - valid_mask, - ) - - -def test_training_and_validation_loss_finalization_share_weighted_sum_count_semantics(): - model = _loss_shell_model( - {"cat_col": "categorical", "real_col": "real"}, - loss_weights={"cat_col": 0.5, "real_col": 3.0}, - ) - model.n_classes["cat_col"] = 3 - output = { - "cat_col": torch.tensor( - [ - [[1.0, 0.0, 0.0]], - [[0.0, 1.0, 0.0]], - [[0.0, 0.0, 1.0]], - ] - ), - "real_col": torch.tensor([[[1.0]], [[2.0]], [[3.0]]]), - } - targets = { - "cat_col": torch.tensor([[0, 1, 2]]), - "real_col": torch.tensor([[0.0, 0.0, 0.0]]), - } - valid_mask = torch.tensor([[True, False, True]]) - metadata = {"target_valid_mask": valid_mask} - - training_loss, training_components = TransformerModel._calculate_loss( - model, output, targets, metadata - ) - sums, count = TransformerModel._calculate_loss_components( - model, output, targets, valid_mask - ) - finalized_loss, finalized_components = TransformerModel._finalize_loss_components( - model, - sums, - count.double(), - ["cat_col", "real_col"], - "test", - ) - - assert torch.isclose(training_loss.double(), finalized_loss) - assert torch.isclose( - training_components["cat_col"].double(), finalized_components["cat_col"] - ) - assert torch.isclose( - training_components["real_col"].double(), finalized_components["real_col"] - ) - - -@pytest.mark.parametrize( - ("data_parallelism", "expected"), - [ - ("DDP", 7), - ("FSDP", 7), - ], -) -def test_gradient_reduction_factor_uses_active_world_size( - data_parallelism, - expected, - monkeypatch, -): - model = _loss_shell_model({"real_col": "real"}) - model.hparams = SimpleNamespace( - training_spec=SimpleNamespace(data_parallelism=data_parallelism) - ) - group = object() - model._data_parallel_process_group = lambda: group - - monkeypatch.setattr("sequifier.train.dist.is_available", lambda: True) - monkeypatch.setattr("sequifier.train.dist.is_initialized", lambda: True) - - def fake_get_world_size(group=None): - assert group is model._data_parallel_process_group() - return 7 - - monkeypatch.setattr("sequifier.train.dist.get_world_size", fake_get_world_size) - - assert TransformerModel._gradient_reduction_factor(model) == expected - - -def test_calculate_loss_requires_all_configured_targets(): - model = _loss_shell_model( - {"cat_col": "categorical", "real_col": "real"}, - loss_weights={"cat_col": 1.0, "real_col": 1.0}, - ) - output = { - "cat_col": torch.zeros(1, 1, 3), - "real_col": torch.zeros(1, 1, 1), - } - targets = {"cat_col": torch.zeros(1, 1, dtype=torch.long)} - metadata = {"target_valid_mask": torch.ones(1, 1, dtype=torch.bool)} - - with pytest.raises(RuntimeError, match="Missing target columns: \\['real_col'\\]"): - TransformerModel._calculate_loss(model, output, targets, metadata) - - -def test_training_loss_enables_fsdp_token_weighting( - monkeypatch, -): - model = _loss_shell_model({"real_col": "real"}) - model.hparams = SimpleNamespace( - training_spec=SimpleNamespace(data_parallelism="FSDP") - ) - output = {"real_col": torch.zeros(1, 1, 1, requires_grad=True)} - targets = {"real_col": torch.ones(1, 1)} - metadata = {"target_valid_mask": torch.ones(1, 1, dtype=torch.bool)} - process_group = object() - model._data_parallel_process_group = lambda: process_group - - monkeypatch.setattr("sequifier.train.dist.is_available", lambda: True) - monkeypatch.setattr("sequifier.train.dist.is_initialized", lambda: True) - - def fake_get_world_size(group=None): - assert group is process_group - return 2 - - monkeypatch.setattr("sequifier.train.dist.get_world_size", fake_get_world_size) - - reduce_calls = [] - - def fake_all_reduce(tensor, op=None, group=None): - reduce_calls.append((tensor.detach().clone(), op, group)) - tensor.fill_(4) - - monkeypatch.setattr("sequifier.train.dist.all_reduce", fake_all_reduce) - - loss, _ = TransformerModel._calculate_loss(model, output, targets, metadata) - loss.backward() - - assert reduce_calls - assert reduce_calls[0][2] is process_group - assert torch.isclose(loss, torch.tensor(0.5)) - assert torch.allclose(output["real_col"].grad, torch.tensor([[[-1.0]]])) - - -def test_evaluation_loss_mask_intersects_target_bert_and_sample_masks(): - metadata = { - "target_valid_mask": torch.tensor( - [ - [True, True, False], - [True, True, True], - ] - ), - "bert_mask": torch.tensor( - [ - [True, False, True], - [True, True, True], - ] - ), - "sample_valid_mask": torch.tensor([True, False]), - } - - loss_mask = _get_evaluation_loss_mask(metadata) - - assert torch.equal( - loss_mask, - torch.tensor( - [ - [True, False, False], - [False, False, False], - ] - ), - ) - - -def _categorical_logits_from_batch_predictions(batch_predictions, n_classes): - prediction_ids = torch.tensor(batch_predictions, dtype=torch.long).T.contiguous() - return torch.nn.functional.one_hot(prediction_ids, num_classes=n_classes).float() - - -def test_accumulate_class_counts_all_samples_valid(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [[0, 1], [1, 2]], - n_classes=3, - ) - } - valid_mask = torch.ones(2, 2, dtype=torch.bool) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([1, 2, 1])) - - -def test_accumulate_class_counts_excludes_synthetic_samples(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [ - [0, 1], - [2, 2], - ], - n_classes=3, - ) - } - valid_mask = _get_evaluation_loss_mask( - { - "target_valid_mask": torch.ones(2, 2, dtype=torch.bool), - "sample_valid_mask": torch.tensor([True, False]), - } - ) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([1, 1, 0])) - - -def test_accumulate_class_counts_excludes_target_padding(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [[0, 2]], - n_classes=3, - ) - } - valid_mask = torch.tensor([[True, False]]) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([1, 0, 0])) - - -def test_accumulate_class_counts_combines_sample_and_token_masks(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [ - [0, 1], - [2, 2], - ], - n_classes=3, - ) - } - valid_mask = _get_evaluation_loss_mask( - { - "target_valid_mask": torch.tensor( - [ - [True, False], - [True, True], - ] - ), - "sample_valid_mask": torch.tensor([True, False]), - } - ) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([1, 0, 0])) - - -def test_accumulate_class_counts_respects_bert_mask(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [ - [0, 1], - [2, 2], - ], - n_classes=3, - ) - } - valid_mask = _get_evaluation_loss_mask( - { - "target_valid_mask": torch.ones(2, 2, dtype=torch.bool), - "bert_mask": torch.tensor( - [ - [False, True], - [True, True], - ] - ), - "sample_valid_mask": torch.tensor([True, False]), - } - ) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([0, 1, 0])) - - -def test_accumulate_class_counts_retains_missing_class_slots(): - counts = {"cat_col": torch.zeros(5, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [[3, 3]], - n_classes=5, - ) - } - valid_mask = torch.ones(1, 2, dtype=torch.bool) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 5}) - - assert torch.equal(counts["cat_col"], torch.tensor([0, 0, 0, 2, 0])) - - -def test_accumulate_class_counts_all_zero_when_no_positions_are_valid(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [[0, 1]], - n_classes=3, - ) - } - valid_mask = torch.zeros(1, 2, dtype=torch.bool) - - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - assert torch.equal(counts["cat_col"], torch.tensor([0, 0, 0])) - - -def test_accumulate_class_counts_raises_on_shape_mismatch(): - counts = {"cat_col": torch.zeros(3, dtype=torch.int64)} - output = { - "cat_col": _categorical_logits_from_batch_predictions( - [[0, 1, 2]], - n_classes=3, - ) - } - valid_mask = torch.ones(1, 2, dtype=torch.bool) - - with pytest.raises(RuntimeError, match="Prediction/mask size mismatch"): - accumulate_class_counts(counts, output, valid_mask, {"cat_col": 3}) - - -def test_calculate_loss_components_aggregate_by_token_count(): - model = TransformerModel.__new__(TransformerModel) - model.target_column_types = {"real_col": "real"} - model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} - model.loss_weights = {"real_col": 1.0} - - first_sums, first_count = TransformerModel._calculate_loss_components( - model, - {"real_col": torch.zeros(1, 1, 1)}, - {"real_col": torch.tensor([[10.0]])}, - torch.ones(1, 1, dtype=torch.bool), - ) - second_sums, second_count = TransformerModel._calculate_loss_components( - model, - {"real_col": torch.zeros(100, 1, 1)}, - {"real_col": torch.ones(1, 100)}, - torch.ones(1, 100, dtype=torch.bool), - ) - - aggregate = (first_sums["real_col"] + second_sums["real_col"]) / ( - first_count + second_count - ) - - assert torch.isclose(aggregate, torch.tensor(200.0 / 101.0, dtype=torch.float64)) - - -class _QueuedEvalModel(torch.nn.Module): - def __init__(self, outputs): - super().__init__() - self.outputs = iter(outputs) - - def forward(self, data, metadata=None, return_logits=False): - return next(self.outputs) - - -def _evaluation_shell_model(): - model = TransformerModel.__new__(TransformerModel) - model.input_columns = ["cat_col"] - model.target_columns = ["cat_col"] - model.target_column_types = {"cat_col": "categorical"} - model.n_classes = {"cat_col": 3} - model.loss_weights = None - model.criterion = {"cat_col": torch.nn.CrossEntropyLoss(reduction="none")} - model.device = "cpu" - model.class_share_log_columns = ["cat_col"] - model.index_maps = { # type: ignore - "cat_col": { - 0: "[unknown]", - 1: "a", - 2: "b", - } - } # type: ignore - model.decoder = {"cat_col": torch.nn.Linear(1, 1)} - model.hparams = SimpleNamespace( - seed=42, - training_spec=SimpleNamespace( - distributed=False, - layer_autocast=False, - data_parallelism="none", - training_objective="causal", - ), - ) - return model - - -def _validation_batch(predictions, sample_valid_mask=None): - batch_size = len(predictions) - seq_len = len(predictions[0]) - inputs = { - "cat_col": torch.zeros(batch_size, seq_len, dtype=torch.long), - } - targets = { - "cat_col": torch.tensor(predictions, dtype=torch.long), - } - valid_mask = torch.ones(batch_size, seq_len, dtype=torch.bool) - metadata = { - "attention_valid_mask": valid_mask.clone(), - "target_valid_mask": valid_mask, - } - if sample_valid_mask is not None: - metadata["sample_valid_mask"] = torch.tensor( - sample_valid_mask, - dtype=torch.bool, - ) - return SequifierBatch(inputs=inputs, targets=targets, metadata=metadata) - - -def test_evaluate_returns_class_counts_across_all_validation_batches(): - model = _evaluation_shell_model() - batches = [ - _validation_batch([[0, 0, 1]]), - _validation_batch([[2, 2]]), - ] - outputs = [ - {"cat_col": _categorical_logits_from_batch_predictions([[0, 0, 1]], 3)}, - {"cat_col": _categorical_logits_from_batch_predictions([[2, 2]], 3)}, - ] - eval_model = _QueuedEvalModel(outputs) - valid_loader = DataLoader(batches, batch_size=None) - - total_loss, total_losses, class_counts = TransformerModel._evaluate( - model, - valid_loader, - eval_model, - ) - - assert np.isfinite(total_loss) - assert np.isfinite(total_losses["cat_col"]) - assert torch.equal(class_counts["cat_col"], torch.tensor([2, 1, 2])) - assert eval_model.training - assert model.baseline_loss >= 0 - - -def test_evaluate_excludes_synthetic_final_batch_from_class_counts(): - model = _evaluation_shell_model() - batches = [ - _validation_batch([[0, 1]]), - _validation_batch([[2, 2]], sample_valid_mask=[False]), - ] - outputs = [ - {"cat_col": _categorical_logits_from_batch_predictions([[0, 1]], 3)}, - {"cat_col": _categorical_logits_from_batch_predictions([[2, 2]], 3)}, - ] - valid_loader = DataLoader(batches, batch_size=None) - - _, _, class_counts = TransformerModel._evaluate( - model, - valid_loader, - _QueuedEvalModel(outputs), - ) - - assert torch.equal(class_counts["cat_col"], torch.tensor([1, 1, 0])) - - -def test_calculate_loss_zero_token_training_batch_is_differentiable(): - model = TransformerModel.__new__(TransformerModel) - model.target_column_types = {"real_col": "real"} - model.criterion = {"real_col": torch.nn.MSELoss(reduction="none")} - model.loss_weights = None - - output = {"real_col": torch.ones(3, 1, 1, requires_grad=True)} - targets = {"real_col": torch.zeros(1, 3)} - metadata = { - "attention_valid_mask": torch.zeros(1, 3, dtype=torch.bool), - "target_valid_mask": torch.zeros(1, 3, dtype=torch.bool), - } - - total_loss, component_losses = TransformerModel._calculate_loss( - model, output, targets, metadata - ) - total_loss.backward() - - assert torch.equal(total_loss.detach(), torch.tensor(0.0)) - assert torch.equal(component_losses["real_col"].detach(), torch.tensor(0.0)) - assert torch.equal(output["real_col"].grad, torch.zeros_like(output["real_col"])) - - -def _train_epoch_test_batch(model, target_valid_mask): - seq_len = model.window_view.context_length - return SequifierBatch( - inputs={ - "cat_col": torch.ones(1, seq_len, dtype=torch.long), - "real_col": torch.ones(1, seq_len, dtype=torch.float32), - }, - targets={ - "cat_col": torch.ones(1, seq_len, dtype=torch.long), - "real_col": torch.ones(1, seq_len, dtype=torch.float32), - }, - metadata={ - "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), - "target_valid_mask": target_valid_mask, - }, - ) - - -def test_train_epoch_skips_optimizer_and_batch_scheduler_for_empty_accumulation_window( - model, -): - model.rank = 0 - model.log_interval = 2 - model.accumulation_steps = 2 - model.scheduler_step_on = "batch" - model.start_batch = 0 - model.optimizer = torch.optim.AdamW( - model.parameters(), - lr=0.01, - weight_decay=0.1, - ) - model.scheduler = torch.optim.lr_scheduler.StepLR( - model.optimizer, - step_size=1, - gamma=0.1, - ) - seq_len = model.window_view.context_length - empty_batch = _train_epoch_test_batch( - model, - torch.zeros(1, seq_len, dtype=torch.bool), - ) - before = {name: param.detach().clone() for name, param in model.named_parameters()} - lr_before = model.scheduler.get_last_lr()[0] - - TransformerModel._train_epoch( - model, - DataLoader([empty_batch, empty_batch], batch_size=None), - DataLoader([], batch_size=None), - epoch=1, - ) - - after = dict(model.named_parameters()) - assert all(torch.equal(before[name], after[name]) for name in before) - assert len(model.optimizer.state) == 0 - assert model.scheduler.get_last_lr()[0] == lr_before - - -def test_train_epoch_steps_once_for_mixed_empty_and_nonempty_accumulation_window( - model, -): - model.rank = 0 - model.log_interval = 2 - model.accumulation_steps = 2 - model.scheduler_step_on = "batch" - model.start_batch = 0 - model.optimizer = torch.optim.AdamW( - model.parameters(), - lr=0.01, - weight_decay=0.1, - ) - model.scheduler = torch.optim.lr_scheduler.StepLR( - model.optimizer, - step_size=1, - gamma=0.1, - ) - seq_len = model.window_view.context_length - empty_batch = _train_epoch_test_batch( - model, - torch.zeros(1, seq_len, dtype=torch.bool), - ) - nonempty_batch = _train_epoch_test_batch( - model, - torch.ones(1, seq_len, dtype=torch.bool), - ) - before = {name: param.detach().clone() for name, param in model.named_parameters()} - - TransformerModel._train_epoch( - model, - DataLoader([empty_batch, nonempty_batch], batch_size=None), - DataLoader([], batch_size=None), - epoch=1, - ) - - after = dict(model.named_parameters()) - assert any(not torch.equal(before[name], after[name]) for name in before) - assert len(model.optimizer.state) > 0 - assert model.scheduler.last_epoch == 1 - assert model.scheduler.get_last_lr()[0] == pytest.approx(0.001) - - -def test_train_epoch_divides_backward_loss_by_accumulation_steps(model, monkeypatch): - model.rank = 0 - model.log_interval = 100 - model.accumulation_steps = 2 - model.scheduler_step_on = "batch" - model.start_batch = 0 - model.scaler = _IdentityScaler() - model.logger = _NoopLogger() - model.save_latest_interval_minutes = None - model.save_batch_interval_minutes = None - model.save_batch_interval_minutes_val_loss = False - model.last_latest_save_time = 0.0 - model.last_batch_save_time = 0.0 - tracked_param = next(model.parameters()) - tracked_value_before = tracked_param.detach().reshape(-1)[0].clone() - model.optimizer = torch.optim.SGD([tracked_param], lr=0.1) - model.scheduler = torch.optim.lr_scheduler.StepLR( - model.optimizer, - step_size=1, - gamma=0.1, - ) - coefficients = iter([0.2, 0.4]) - - def fake_forward(data, metadata=None, return_logits=True): - return {} - - def fake_calculate_training_loss(output, targets, metadata): - coefficient = next(coefficients) - loss = tracked_param.reshape(-1)[0] * coefficient - loss_sums = { - target_name: loss.detach() - for target_name in model._loss_target_names(targets) - } - count = torch.tensor(1, dtype=torch.int64) - return loss, {}, loss_sums, count, count - - monkeypatch.setattr(model, "forward", fake_forward) - monkeypatch.setattr( - model, - "_calculate_training_loss", - fake_calculate_training_loss, - ) - - seq_len = model.window_view.context_length - batch = _train_epoch_test_batch( - model, - torch.ones(1, seq_len, dtype=torch.bool), - ) - - TransformerModel._train_epoch( - model, - DataLoader([batch, batch], batch_size=None), - DataLoader([], batch_size=None), - epoch=1, - ) - - tracked_value_after = tracked_param.detach().reshape(-1)[0] - - assert torch.allclose( - tracked_value_after, - tracked_value_before - torch.tensor(0.03), - atol=1e-6, - ) - - -def test_padding_keys_are_masked(bert_model): - seq_len = bert_model.window_view.context_length - - valid_mask = torch.ones( - 2, - seq_len, - dtype=torch.bool, - device=bert_model.src_mask.device, - ) - - valid_mask[0, :2] = False - valid_mask[1, :1] = False - - attn_mask = bert_model._build_attention_mask(valid_mask, dtype=torch.float32) - - assert attn_mask.shape == (2, 1, seq_len, seq_len) - - # Batch 0: keys 0 and 1 are padding. - assert torch.all(attn_mask[0, :, :, 0] < -1e20) - assert torch.all(attn_mask[0, :, :, 1] < -1e20) - - # Batch 0: keys 2 onward are not padding-masked. - assert torch.all(attn_mask[0, :, :, 2:] > -1e20) - - # Batch 1: key 0 is padding. - assert torch.all(attn_mask[1, :, :, 0] < -1e20) - assert torch.all(attn_mask[1, :, :, 1:] > -1e20) - - -def test_causal_and_padding_masks_are_combined(causal_model): - seq_len = causal_model.window_view.context_length - - valid_mask = torch.ones( - 1, - seq_len, - dtype=torch.bool, - device=causal_model.src_mask.device, - ) - - valid_mask[0, 0] = False - - attn_mask = causal_model._build_attention_mask( - valid_mask, - dtype=torch.float32, - ) - - assert attn_mask.shape == (1, 1, seq_len, seq_len) - - # Padding key 0 is masked for every query. - assert torch.all(attn_mask[0, :, :, 0] < -1e20) - - # Causal future positions are masked. - assert attn_mask[0, 0, 1, 2] < -1e20 - assert attn_mask[0, 0, 1, seq_len - 1] < -1e20 - - # A past valid key should not be masked by causal masking. - assert attn_mask[0, 0, 1, 1] > -1e20 - assert attn_mask[0, 0, 2, 1] > -1e20 - assert attn_mask[0, 0, seq_len - 1, seq_len - 1] > -1e20 - - -@pytest.fixture -def batch(model): - seq_len = model.context_length - - return { - "cat_col": torch.tensor( - [ - [0, 0] + [1] * (seq_len - 2), - [0] + [2] * (seq_len - 1), - ], - dtype=torch.long, - device=model.src_mask.device, - ), - "real_col": torch.tensor( - [ - [0.0, 0.0] + [0.5] * (seq_len - 2), - [0.0] + [1.5] * (seq_len - 1), - ], - dtype=torch.float32, - device=model.src_mask.device, - ), - } - - -@pytest.fixture -def batch_metadata(model): - seq_len = model.context_length - valid_mask = torch.ones( - 2, - seq_len, - dtype=torch.bool, - device=model.src_mask.device, - ) - valid_mask[0, :2] = False - valid_mask[1, :1] = False - - return { - "attention_valid_mask": valid_mask, - "target_valid_mask": valid_mask.clone(), - } - - -def test_forward_no_nan_with_padding(model, batch, batch_metadata): - out = model.forward_train(batch, batch_metadata) - - for tensor in out.values(): - assert torch.isfinite(tensor).all() diff --git a/tests/unit/test_train_distributed_loss.py b/tests/unit/test_train_distributed_loss.py deleted file mode 100644 index 0e94cf0f..00000000 --- a/tests/unit/test_train_distributed_loss.py +++ /dev/null @@ -1,763 +0,0 @@ -import datetime -import socket -from types import SimpleNamespace - -import pytest -import torch -import torch.distributed as dist -import torch.multiprocessing as mp -from torch.nn.parallel import DistributedDataParallel as DDP -from torch.utils.data import DataLoader - -from sequifier.io.batch import SequifierBatch -from sequifier.train import TransformerModel - - -class _TinyRealModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.param = torch.nn.Parameter(torch.tensor(0.0)) - - def forward(self, seq_len): - return {"real_col": self.param.expand(seq_len, 1, 1)} - - -class _TinyTrainEpochRealModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.param = torch.nn.Parameter(torch.tensor(0.0)) - - def forward(self, data, metadata=None, return_logits=False): - seq_len = data["real_col"].shape[1] - return {"real_col": self.param.expand(seq_len, 1, 1)} - - -class _TinyMultiTargetModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.cat_logits = torch.nn.Parameter(torch.tensor([0.2, -0.1, 0.0])) - self.real_param = torch.nn.Parameter(torch.tensor(0.5)) - - def forward(self, seq_len): - return { - "cat_col": self.cat_logits.reshape(1, 1, 3).expand(seq_len, 1, 3), - "real_col": self.real_param.expand(seq_len, 1, 1), - } - - -def _free_port(): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: - sock.bind(("127.0.0.1", 0)) - return sock.getsockname()[1] - - -def _loss_shell(target_column_types, *, data_parallelism=None, loss_weights=None): - model = TransformerModel.__new__(TransformerModel) - model.target_columns = list(target_column_types) - model.target_column_types = dict(target_column_types) - model.loss_weights = loss_weights - model.device = "cpu" - model.hparams = SimpleNamespace( - training_spec=SimpleNamespace( - data_parallelism=data_parallelism, - distributed=data_parallelism is not None, - training_objective="causal", - layer_autocast=False, - layer_type_dtypes=None, - ) - ) - model.criterion = {} - model.n_classes = {} - - for col, col_type in target_column_types.items(): - if col_type == "real": - model.criterion[col] = torch.nn.MSELoss(reduction="none") - elif col_type == "categorical": - model.criterion[col] = torch.nn.CrossEntropyLoss(reduction="none") - model.n_classes[col] = 3 - else: - raise ValueError(col_type) - - return model - - -class _IdentityScaler: - def scale(self, loss): - return loss - - def unscale_(self, optimizer): - return None - - def step(self, optimizer): - optimizer.step() - - def update(self): - return None - - -class _NoopLogger: - def info(self, *args, **kwargs): - return None - - def warning(self, *args, **kwargs): - return None - - -def _real_batch(seq_len, selected_count, target_value): - targets = {"real_col": torch.full((1, seq_len), float(target_value))} - mask = torch.zeros(1, seq_len, dtype=torch.bool) - mask[:, :selected_count] = True - metadata = {"target_valid_mask": mask} - return targets, metadata - - -def _real_epoch_batch(seq_len, selected_count, target_value): - targets, metadata = _real_batch(seq_len, selected_count, target_value) - return SequifierBatch( - inputs={"real_col": torch.ones(1, seq_len, dtype=torch.float32)}, - targets=targets, - metadata={ - "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), - **metadata, - }, - ) - - -def _concat_real_batch(seq_lens, selected_counts, target_values): - target_parts = [] - mask_parts = [] - for seq_len, selected_count, target_value in zip( - seq_lens, selected_counts, target_values - ): - target_parts.append(torch.full((1, seq_len), float(target_value))) - mask = torch.zeros(1, seq_len, dtype=torch.bool) - mask[:, :selected_count] = True - mask_parts.append(mask) - return ( - {"real_col": torch.cat(target_parts, dim=1)}, - {"target_valid_mask": torch.cat(mask_parts, dim=1)}, - ) - - -def _single_process_real_grad(seq_lens, selected_counts, target_values): - model = _TinyRealModel() - shell = _loss_shell({"real_col": "real"}) - targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(seq_lens)), - targets, - metadata, - ) - loss.backward() - return model.param.grad.detach().clone() - - -def _single_process_real_update(seq_lens, selected_counts, target_values, lr): - model = _TinyRealModel() - optimizer = torch.optim.SGD(model.parameters(), lr=lr) - shell = _loss_shell({"real_col": "real"}) - targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(seq_lens)), - targets, - metadata, - ) - loss.backward() - optimizer.step() - return model.param.detach().clone() - - -def _single_process_accumulated_real_update(microbatches, lr, accumulation_steps): - model = _TinyRealModel() - optimizer = torch.optim.SGD(model.parameters(), lr=lr) - shell = _loss_shell({"real_col": "real"}) - for microbatch in microbatches: - targets, metadata = _concat_real_batch( - microbatch["seq_lens"], - microbatch["selected_counts"], - microbatch["target_values"], - ) - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(microbatch["seq_lens"])), - targets, - metadata, - ) - (loss / accumulation_steps).backward() - optimizer.step() - return model.param.detach().clone() - - -def _analytical_accumulated_real_update(microbatches, lr, accumulation_steps): - accumulated_grad = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - token_count = selected_counts.sum().item() - if token_count == 0: - continue - - weighted_target_mean = ( - selected_counts * target_values - ).sum().item() / token_count - accumulated_grad += -2.0 * weighted_target_mean / accumulation_steps - - return torch.tensor(-lr * accumulated_grad) - - -def _analytical_unnormalized_accumulated_real_update(microbatches, lr): - accumulated_grad = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - token_count = selected_counts.sum().item() - if token_count == 0: - continue - - weighted_target_mean = ( - selected_counts * target_values - ).sum().item() / token_count - accumulated_grad += -2.0 * weighted_target_mean - - return torch.tensor(-lr * accumulated_grad) - - -def _analytical_combined_real_update(microbatches, lr): - weighted_target_sum = 0.0 - token_count = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - weighted_target_sum += (selected_counts * target_values).sum().item() - token_count += selected_counts.sum().item() - - if token_count == 0: - return torch.tensor(0.0) - return torch.tensor(lr * 2.0 * weighted_target_sum / token_count) - - -def _single_process_multi_target_grad( - seq_lens, cat_targets, real_targets, loss_weights -): - model = _TinyMultiTargetModel() - shell = _loss_shell( - {"cat_col": "categorical", "real_col": "real"}, - loss_weights=loss_weights, - ) - targets = { - "cat_col": torch.tensor([sum(cat_targets, [])], dtype=torch.long), - "real_col": torch.tensor([sum(real_targets, [])], dtype=torch.float32), - } - metadata = {"target_valid_mask": torch.ones(1, sum(seq_lens), dtype=torch.bool)} - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(seq_lens)), - targets, - metadata, - ) - loss.backward() - return torch.cat( - [ - model.cat_logits.grad.detach(), - model.real_param.grad.detach().reshape(1), - ] - ) - - -def _ddp_case_worker(rank, world_size, init_method, case, queue): - torch.set_num_threads(1) - dist.init_process_group( - "gloo", - rank=rank, - world_size=world_size, - init_method=init_method, - timeout=datetime.timedelta(seconds=30), - ) - try: - - def put_result(tensor): - detached = tensor.detach().cpu() - if detached.numel() == 1: - queue.put(float(detached.item())) - else: - queue.put(detached.tolist()) - - if case["kind"] in { - "real_grad", - "real_update", - "empty_grad", - "accumulation_update", - "empty_window_state", - "train_epoch_empty_window_state", - }: - if case["kind"] == "train_epoch_empty_window_state": - model = _TinyTrainEpochRealModel() - ddp_model = DDP(model) - shell = _loss_shell({"real_col": "real"}, data_parallelism="DDP") - shell.input_columns = ["real_col"] - shell.rank = rank - shell.device = "cpu" - shell.accumulation_steps = case["accumulation_steps"] - shell.scheduler_step_on = "batch" - shell.start_batch = 0 - shell.log_interval = case["accumulation_steps"] - shell.scaler = _IdentityScaler() - shell.logger = _NoopLogger() - shell.save_latest_interval_minutes = None - shell.save_batch_interval_minutes = None - shell.save_batch_interval_minutes_val_loss = False - shell.last_latest_save_time = 0.0 - shell.last_batch_save_time = 0.0 - shell.parameters = model.parameters - shell.optimizer = torch.optim.AdamW( - model.parameters(), - lr=case["lr"], - weight_decay=case["weight_decay"], - ) - shell.scheduler = torch.optim.lr_scheduler.StepLR( - shell.optimizer, - step_size=1, - gamma=0.1, - ) - - train_loader = [ - _real_epoch_batch( - microbatch["seq_lens"][rank], - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - ) - for microbatch in case["microbatches"] - ] - before = model.param.detach().clone() - - TransformerModel._train_epoch( - shell, - DataLoader(train_loader, batch_size=None), - DataLoader([], batch_size=None), - epoch=1, - ddp_model=ddp_model, - ) - - if rank == 0: - queue.put( - [ - float((model.param.detach() - before).abs().item()), - float(shell.scheduler.get_last_lr()[0]), - float(shell.scheduler.last_epoch), - float(len(shell.optimizer.state)), - ] - ) - return - - model = _TinyRealModel() - ddp_model = DDP(model) - shell = _loss_shell({"real_col": "real"}, data_parallelism="DDP") - - if case["kind"] == "empty_window_state": - optimizer = torch.optim.AdamW( - model.parameters(), - lr=case["lr"], - weight_decay=case["weight_decay"], - ) - scheduler = torch.optim.lr_scheduler.StepLR( - optimizer, - step_size=1, - gamma=0.1, - ) - before = model.param.detach().clone() - accumulated_global_token_count = torch.zeros((), dtype=torch.int64) - - for batch_idx, microbatch in enumerate(case["microbatches"]): - seq_len = microbatch["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - ) - loss, _, _, _, global_count = ( - TransformerModel._calculate_training_loss( - shell, - ddp_model(seq_len), - targets, - metadata, - ) - ) - (loss / case["accumulation_steps"]).backward() - accumulated_global_token_count += global_count.detach() - optimizer_step_due = (batch_idx + 1) % case[ - "accumulation_steps" - ] == 0 or (batch_idx + 1) == len(case["microbatches"]) - optimizer_step_performed = False - if ( - optimizer_step_due - and accumulated_global_token_count.detach().cpu().item() > 0 - ): - optimizer.step() - optimizer.zero_grad() - optimizer_step_performed = True - - if optimizer_step_due: - if not optimizer_step_performed: - optimizer.zero_grad() - accumulated_global_token_count.zero_() - - if optimizer_step_performed: - scheduler.step() - - if rank == 0: - queue.put( - [ - float((model.param.detach() - before).abs().item()), - float(scheduler.get_last_lr()[0]), - float(scheduler.last_epoch), - float(len(optimizer.state)), - ] - ) - return - - if case["kind"] == "accumulation_update": - optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) - for microbatch in case["microbatches"]: - seq_len = microbatch["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - ) - loss, _, _, _, _ = TransformerModel._calculate_training_loss( - shell, - ddp_model(seq_len), - targets, - metadata, - ) - (loss / case["accumulation_steps"]).backward() - optimizer.step() - if rank == 0: - put_result(model.param) - return - - seq_len = case["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - case["selected_counts"][rank], - case["target_values"][rank], - ) - loss, _, _, _, _ = TransformerModel._calculate_training_loss( - shell, - ddp_model(seq_len), - targets, - metadata, - ) - loss.backward() - - if case["kind"] == "real_update": - optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) - optimizer.step() - result = model.param.detach().clone() - else: - result = model.param.grad.detach().clone() - - if rank == 0: - put_result(result) - return - - if case["kind"] == "metrics": - shell = _loss_shell( - {"cat_col": "categorical", "real_col": "real"}, - data_parallelism="DDP", - loss_weights=case["loss_weights"], - ) - sums = { - "cat_col": torch.tensor(case["cat_sums"][rank], dtype=torch.float64), - "real_col": torch.tensor(case["real_sums"][rank], dtype=torch.float64), - } - count = torch.tensor(case["counts"][rank], dtype=torch.float64) - total, losses = TransformerModel._finalize_loss_components( - shell, - sums, - count, - ["cat_col", "real_col"], - "training", - ) - if rank == 0: - queue.put( - [ - float(total.detach().cpu().item()), - float(losses["cat_col"].detach().cpu().item()), - float(losses["real_col"].detach().cpu().item()), - ] - ) - return - - if case["kind"] == "multi_target_grad": - model = _TinyMultiTargetModel() - ddp_model = DDP(model) - shell = _loss_shell( - {"cat_col": "categorical", "real_col": "real"}, - data_parallelism="DDP", - loss_weights=case["loss_weights"], - ) - seq_len = case["seq_lens"][rank] - targets = { - "cat_col": torch.tensor([case["cat_targets"][rank]], dtype=torch.long), - "real_col": torch.tensor( - [case["real_targets"][rank]], dtype=torch.float32 - ), - } - metadata = {"target_valid_mask": torch.ones(1, seq_len, dtype=torch.bool)} - loss, _, _, _, _ = TransformerModel._calculate_training_loss( - shell, - ddp_model(seq_len), - targets, - metadata, - ) - loss.backward() - if rank == 0: - put_result( - torch.cat( - [ - model.cat_logits.grad.detach(), - model.real_param.grad.detach().reshape(1), - ] - ) - ) - return - - raise ValueError(case["kind"]) - finally: - dist.destroy_process_group() - - -def _run_ddp_case(case): - ctx = mp.get_context("spawn") - queue = ctx.SimpleQueue() - init_method = f"tcp://127.0.0.1:{_free_port()}" - mp.spawn( - _ddp_case_worker, - args=(2, init_method, case, queue), - nprocs=2, - join=True, - ) - return torch.tensor(queue.get()) - - -pytestmark = pytest.mark.skipif( - not dist.is_gloo_available(), - reason="torch.is_gloo_available is False", -) - - -def test_ddp_unequal_token_counts_match_single_process_reference(): - case = { - "kind": "real_grad", - "seq_lens": [100, 10], - "selected_counts": [100, 10], - "target_values": [2.0, 8.0], - } - - ddp_grad = _run_ddp_case(case) - reference_grad = _single_process_real_grad( - case["seq_lens"], case["selected_counts"], case["target_values"] - ) - old_equal_rank_mean = torch.tensor((-2.0 * 2.0 + -2.0 * 8.0) / 2.0) - - assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) - assert not torch.allclose(ddp_grad, old_equal_rank_mean, atol=1e-3) - - -def test_ddp_zero_token_rank_does_not_attenuate_populated_rank(): - case = { - "kind": "real_grad", - "seq_lens": [5, 5], - "selected_counts": [5, 0], - "target_values": [3.0, 100.0], - } - - ddp_grad = _run_ddp_case(case) - reference_grad = _single_process_real_grad( - case["seq_lens"], case["selected_counts"], case["target_values"] - ) - - assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) - assert torch.allclose(ddp_grad, torch.tensor(-6.0), atol=1e-6) - - -def test_ddp_equal_token_counts_retain_equal_rank_mean_behavior(): - case = { - "kind": "real_grad", - "seq_lens": [4, 4], - "selected_counts": [4, 4], - "target_values": [1.0, 5.0], - } - - ddp_grad = _run_ddp_case(case) - equal_rank_mean = torch.tensor((-2.0 * 1.0 + -2.0 * 5.0) / 2.0) - - assert torch.allclose(ddp_grad, equal_rank_mean, atol=1e-6) - - -def test_ddp_multi_target_weighting_matches_single_process_reference(): - case = { - "kind": "multi_target_grad", - "seq_lens": [3, 1], - "cat_targets": [[0, 1, 2], [1]], - "real_targets": [[1.0, 2.0, 3.0], [4.0]], - "loss_weights": {"cat_col": 0.25, "real_col": 2.0}, - } - - ddp_grad = _run_ddp_case(case) - reference_grad = _single_process_multi_target_grad( - case["seq_lens"], - case["cat_targets"], - case["real_targets"], - case["loss_weights"], - ) - - assert torch.allclose(ddp_grad, reference_grad, atol=1e-6) - - -def test_ddp_world_size_two_optimizer_update_matches_single_process_reference(): - case = { - "kind": "real_update", - "seq_lens": [6, 4], - "selected_counts": [6, 4], - "target_values": [1.0, 3.0], - "lr": 0.1, - } - - ddp_param = _run_ddp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(ddp_param, reference_param, atol=1e-6) - - -def test_ddp_globally_empty_batch_gradients_are_finite_and_zero(): - case = { - "kind": "empty_grad", - "seq_lens": [3, 4], - "selected_counts": [0, 0], - "target_values": [1.0, 3.0], - } - - ddp_grad = _run_ddp_case(case) - - assert torch.isfinite(ddp_grad) - assert torch.equal(ddp_grad, torch.tensor(0.0)) - - -def test_ddp_globally_empty_accumulation_window_leaves_state_unchanged(): - case = { - "kind": "empty_window_state", - "microbatches": [ - { - "seq_lens": [3, 4], - "selected_counts": [0, 0], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [2, 5], - "selected_counts": [0, 0], - "target_values": [2.0, 4.0], - }, - ], - "accumulation_steps": 2, - "lr": 0.01, - "weight_decay": 0.1, - } - - param_delta, lr, scheduler_epoch, optimizer_state_len = _run_ddp_case(case) - - assert param_delta == 0 - assert lr == pytest.approx(case["lr"]) - assert scheduler_epoch == 0 - assert optimizer_state_len == 0 - - -def test_ddp_train_epoch_globally_empty_accumulation_window_leaves_state_unchanged(): - case = { - "kind": "train_epoch_empty_window_state", - "microbatches": [ - { - "seq_lens": [3, 4], - "selected_counts": [0, 0], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [2, 5], - "selected_counts": [0, 0], - "target_values": [2.0, 4.0], - }, - ], - "accumulation_steps": 2, - "lr": 0.01, - "weight_decay": 0.1, - } - - param_delta, lr, scheduler_epoch, optimizer_state_len = _run_ddp_case(case) - - assert param_delta == 0 - assert lr == pytest.approx(case["lr"]) - assert scheduler_epoch == 0 - assert optimizer_state_len == 0 - - -def test_ddp_gradient_accumulation_averages_per_microbatch_weighting(): - microbatches = [ - { - "seq_lens": [1, 1], - "selected_counts": [1, 1], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [5, 5], - "selected_counts": [5, 5], - "target_values": [10.0, 2.0], - }, - ] - case = { - "kind": "accumulation_update", - "microbatches": microbatches, - "accumulation_steps": 2, - "lr": 0.05, - } - - ddp_param = _run_ddp_case(case) - reference_param = _analytical_accumulated_real_update( - microbatches, case["lr"], case["accumulation_steps"] - ) - unnormalized_param = _analytical_unnormalized_accumulated_real_update( - microbatches, case["lr"] - ) - combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) - - assert torch.allclose(ddp_param, reference_param, atol=1e-6) - assert not torch.allclose(ddp_param, unnormalized_param, atol=1e-3) - assert not torch.allclose(ddp_param, combined_batch_param, atol=1e-3) - - -def test_ddp_global_training_metric_finalization_matches_manual_sum_count(): - case = { - "kind": "metrics", - "cat_sums": [10.0, 5.0], - "real_sums": [2.0, 8.0], - "counts": [4.0, 6.0], - "loss_weights": {"cat_col": 0.5, "real_col": 2.0}, - } - - total, cat_loss, real_loss = _run_ddp_case(case) - - global_count = sum(case["counts"]) - expected_cat = ( - sum(case["cat_sums"]) / global_count * case["loss_weights"]["cat_col"] - ) - expected_real = ( - sum(case["real_sums"]) / global_count * case["loss_weights"]["real_col"] - ) - - assert cat_loss == pytest.approx(expected_cat) - assert real_loss == pytest.approx(expected_real) - assert total == pytest.approx(expected_cat + expected_real) diff --git a/tests/unit/test_train_fsdp_loss.py b/tests/unit/test_train_fsdp_loss.py deleted file mode 100644 index 5c092d68..00000000 --- a/tests/unit/test_train_fsdp_loss.py +++ /dev/null @@ -1,754 +0,0 @@ -import datetime -import importlib -import socket -from types import SimpleNamespace - -import pytest -import torch -import torch.distributed as dist -import torch.multiprocessing as mp -from torch.distributed.checkpoint.state_dict import ( - StateDictOptions, - get_model_state_dict, -) -from torch.utils.data import DataLoader - -from sequifier.io.batch import SequifierBatch -from sequifier.train import TransformerModel - -_train_module = importlib.import_module("sequifier.train") -MixedPrecisionPolicy = getattr(_train_module, "MixedPrecisionPolicy") -fully_shard = getattr(_train_module, "fully_shard") -init_device_mesh = getattr(_train_module, "init_device_mesh") - -pytestmark = pytest.mark.skipif( - not dist.is_available() - or not dist.is_nccl_available() - or not torch.cuda.is_available() - or torch.cuda.device_count() < 2, - reason="FSDP2 loss tests require two CUDA devices and NCCL", -) - - -class _TinyRealModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.param = torch.nn.Parameter(torch.zeros(2)) - - def forward(self, seq_len): - return {"real_col": self.param[0].expand(seq_len, 1, 1)} - - -class _TinyTrainEpochRealModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.param = torch.nn.Parameter(torch.zeros(2)) - - def forward(self, data, metadata=None, return_logits=False): - seq_len = data["real_col"].shape[1] - return {"real_col": self.param[0].expand(seq_len, 1, 1)} - - -class _TinyMultiTargetModel(torch.nn.Module): - def __init__(self): - super().__init__() - self.cat_logits = torch.nn.Parameter(torch.tensor([0.2, -0.1, 0.0])) - self.real_param = torch.nn.Parameter(torch.tensor([0.5, 0.0])) - - def forward(self, seq_len): - return { - "cat_col": self.cat_logits.reshape(1, 1, 3).expand(seq_len, 1, 3), - "real_col": self.real_param[0].expand(seq_len, 1, 1), - } - - -def _free_port(): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: - sock.bind(("127.0.0.1", 0)) - return sock.getsockname()[1] - - -def _loss_shell(target_column_types, *, device, loss_weights=None): - model = TransformerModel.__new__(TransformerModel) - model.target_columns = list(target_column_types) - model.target_column_types = dict(target_column_types) - model.loss_weights = loss_weights - model.device = device - model.hparams = SimpleNamespace( - training_spec=SimpleNamespace( - data_parallelism="FSDP", - distributed=True, - training_objective="causal", - layer_autocast=False, - layer_type_dtypes=None, - ) - ) - model.criterion = {} - model.n_classes = {} - - for col, col_type in target_column_types.items(): - if col_type == "real": - model.criterion[col] = torch.nn.MSELoss(reduction="none") - elif col_type == "categorical": - model.criterion[col] = torch.nn.CrossEntropyLoss(reduction="none") - model.n_classes[col] = 3 - else: - raise ValueError(col_type) - - return model - - -class _IdentityScaler: - def scale(self, loss): - return loss - - def unscale_(self, optimizer): - return None - - def step(self, optimizer): - optimizer.step() - - def update(self): - return None - - -class _NoopLogger: - def info(self, *args, **kwargs): - return None - - def warning(self, *args, **kwargs): - return None - - -def _real_batch(seq_len, selected_count, target_value, device): - targets = {"real_col": torch.full((1, seq_len), float(target_value), device=device)} - mask = torch.zeros(1, seq_len, dtype=torch.bool, device=device) - mask[:, :selected_count] = True - metadata = {"target_valid_mask": mask} - return targets, metadata - - -def _real_epoch_batch(seq_len, selected_count, target_value): - targets = {"real_col": torch.full((1, seq_len), float(target_value))} - mask = torch.zeros(1, seq_len, dtype=torch.bool) - mask[:, :selected_count] = True - return SequifierBatch( - inputs={"real_col": torch.ones(1, seq_len, dtype=torch.float32)}, - targets=targets, - metadata={ - "attention_valid_mask": torch.ones(1, seq_len, dtype=torch.bool), - "target_valid_mask": mask, - }, - ) - - -def _concat_real_batch(seq_lens, selected_counts, target_values): - target_parts = [] - mask_parts = [] - for seq_len, selected_count, target_value in zip( - seq_lens, selected_counts, target_values - ): - target_parts.append(torch.full((1, seq_len), float(target_value))) - mask = torch.zeros(1, seq_len, dtype=torch.bool) - mask[:, :selected_count] = True - mask_parts.append(mask) - return ( - {"real_col": torch.cat(target_parts, dim=1)}, - {"target_valid_mask": torch.cat(mask_parts, dim=1)}, - ) - - -def _single_process_real_update(seq_lens, selected_counts, target_values, lr): - model = _TinyRealModel() - optimizer = torch.optim.SGD(model.parameters(), lr=lr) - shell = _loss_shell({"real_col": "real"}, device="cpu") - targets, metadata = _concat_real_batch(seq_lens, selected_counts, target_values) - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(seq_lens)), - targets, - metadata, - ) - loss.backward() - optimizer.step() - return model.param.detach().clone() - - -def _single_process_accumulated_real_update(microbatches, lr, accumulation_steps): - model = _TinyRealModel() - optimizer = torch.optim.SGD(model.parameters(), lr=lr) - shell = _loss_shell({"real_col": "real"}, device="cpu") - for microbatch in microbatches: - targets, metadata = _concat_real_batch( - microbatch["seq_lens"], - microbatch["selected_counts"], - microbatch["target_values"], - ) - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(microbatch["seq_lens"])), - targets, - metadata, - ) - (loss / accumulation_steps).backward() - optimizer.step() - return model.param.detach().clone() - - -def _analytical_accumulated_real_update(microbatches, lr, accumulation_steps): - accumulated_grad = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - token_count = selected_counts.sum().item() - if token_count == 0: - continue - - weighted_target_mean = ( - selected_counts * target_values - ).sum().item() / token_count - accumulated_grad += -2.0 * weighted_target_mean / accumulation_steps - - return torch.tensor([-lr * accumulated_grad, 0.0]) - - -def _analytical_unnormalized_accumulated_real_update(microbatches, lr): - accumulated_grad = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - token_count = selected_counts.sum().item() - if token_count == 0: - continue - - weighted_target_mean = ( - selected_counts * target_values - ).sum().item() / token_count - accumulated_grad += -2.0 * weighted_target_mean - - return torch.tensor([-lr * accumulated_grad, 0.0]) - - -def _analytical_combined_real_update(microbatches, lr): - weighted_target_sum = 0.0 - token_count = 0.0 - for microbatch in microbatches: - selected_counts = torch.tensor(microbatch["selected_counts"], dtype=torch.float) - target_values = torch.tensor(microbatch["target_values"], dtype=torch.float) - weighted_target_sum += (selected_counts * target_values).sum().item() - token_count += selected_counts.sum().item() - - if token_count == 0: - return torch.tensor([0.0, 0.0]) - return torch.tensor([lr * 2.0 * weighted_target_sum / token_count, 0.0]) - - -def _single_process_multi_target_update( - seq_lens, - cat_targets, - real_targets, - loss_weights, - lr, -): - model = _TinyMultiTargetModel() - optimizer = torch.optim.SGD(model.parameters(), lr=lr) - shell = _loss_shell( - {"cat_col": "categorical", "real_col": "real"}, - device="cpu", - loss_weights=loss_weights, - ) - targets = { - "cat_col": torch.tensor([sum(cat_targets, [])], dtype=torch.long), - "real_col": torch.tensor([sum(real_targets, [])], dtype=torch.float32), - } - metadata = {"target_valid_mask": torch.ones(1, sum(seq_lens), dtype=torch.bool)} - loss, _ = TransformerModel._calculate_loss( - shell, - model(sum(seq_lens)), - targets, - metadata, - ) - loss.backward() - optimizer.step() - return torch.cat( - [ - model.cat_logits.detach().reshape(-1), - model.real_param.detach().reshape(-1), - ] - ) - - -def _state_vector(model, keys, rank): - options = StateDictOptions(full_state_dict=True, cpu_offload=True) - state = get_model_state_dict(model, options=options) - if rank != 0: - return None - - values = [] - for key in keys: - values.append(state[key].reshape(-1).to(dtype=torch.float32)) - return torch.cat(values) - - -def _mixed_precision_policy(case): - reduce_dtype = case.get("reduce_dtype") - if reduce_dtype is None: - return None - - return MixedPrecisionPolicy( - param_dtype=torch.bfloat16, - reduce_dtype=reduce_dtype, - output_dtype=torch.bfloat16, - ) - - -def _fsdp_case_worker(rank, world_size, init_method, case, queue): - torch.cuda.set_device(rank) - device = torch.device(f"cuda:{rank}") - dist.init_process_group( - backend="nccl", - rank=rank, - world_size=world_size, - init_method=init_method, - timeout=datetime.timedelta(seconds=60), - ) - try: - mesh = init_device_mesh("cuda", (world_size,)) - mp_policy = _mixed_precision_policy(case) - - if case["kind"] in { - "real_update", - "accumulation_update", - "empty_window_state", - "train_epoch_empty_window_state", - }: - if case["kind"] == "train_epoch_empty_window_state": - model = _TinyTrainEpochRealModel().to(device) - fully_shard(model, mesh=mesh, mp_policy=mp_policy) - shell = _loss_shell({"real_col": "real"}, device=str(device)) - shell._data_parallel_group = mesh.get_group() - shell.input_columns = ["real_col"] - shell.rank = rank - shell.accumulation_steps = case["accumulation_steps"] - shell.scheduler_step_on = "batch" - shell.start_batch = 0 - shell.log_interval = case["accumulation_steps"] - shell.scaler = _IdentityScaler() - shell.logger = _NoopLogger() - shell.save_latest_interval_minutes = None - shell.save_batch_interval_minutes = None - shell.save_batch_interval_minutes_val_loss = False - shell.last_latest_save_time = 0.0 - shell.last_batch_save_time = 0.0 - shell.parameters = model.parameters - shell.optimizer = torch.optim.AdamW( - model.parameters(), - lr=case["lr"], - weight_decay=case["weight_decay"], - ) - shell.scheduler = torch.optim.lr_scheduler.StepLR( - shell.optimizer, - step_size=1, - gamma=0.1, - ) - before = _state_vector(model, ["param"], rank) - train_loader = [ - _real_epoch_batch( - microbatch["seq_lens"][rank], - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - ) - for microbatch in case["microbatches"] - ] - - TransformerModel._train_epoch( - shell, - DataLoader(train_loader, batch_size=None), - DataLoader([], batch_size=None), - epoch=1, - ddp_model=model, - ) - - after = _state_vector(model, ["param"], rank) - if rank == 0: - assert before is not None - assert after is not None - queue.put( - [ - float((after - before).abs().max().item()), - float(shell.scheduler.get_last_lr()[0]), - float(shell.scheduler.last_epoch), - float(len(shell.optimizer.state)), - ] - ) - return - - model = _TinyRealModel().to(device) - fully_shard(model, mesh=mesh, mp_policy=mp_policy) - shell = _loss_shell({"real_col": "real"}, device=str(device)) - shell._data_parallel_group = mesh.get_group() - - if case["kind"] == "empty_window_state": - optimizer = torch.optim.AdamW( - model.parameters(), - lr=case["lr"], - weight_decay=case["weight_decay"], - ) - scheduler = torch.optim.lr_scheduler.StepLR( - optimizer, - step_size=1, - gamma=0.1, - ) - before = _state_vector(model, ["param"], rank) - accumulated_global_token_count = torch.zeros( - (), dtype=torch.int64, device=device - ) - - for batch_idx, microbatch in enumerate(case["microbatches"]): - seq_len = microbatch["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - device, - ) - loss, _, _, _, global_count = ( - TransformerModel._calculate_training_loss( - shell, - model(seq_len), - targets, - metadata, - ) - ) - (loss / case["accumulation_steps"]).backward() - accumulated_global_token_count += global_count.detach() - optimizer_step_due = (batch_idx + 1) % case[ - "accumulation_steps" - ] == 0 or (batch_idx + 1) == len(case["microbatches"]) - optimizer_step_performed = False - if ( - optimizer_step_due - and accumulated_global_token_count.detach().cpu().item() > 0 - ): - optimizer.step() - optimizer.zero_grad() - optimizer_step_performed = True - - if optimizer_step_due: - if not optimizer_step_performed: - optimizer.zero_grad() - accumulated_global_token_count.zero_() - - if optimizer_step_performed: - scheduler.step() - - after = _state_vector(model, ["param"], rank) - if rank == 0: - assert before is not None - assert after is not None - queue.put( - [ - float((after - before).abs().max().item()), - float(scheduler.get_last_lr()[0]), - float(scheduler.last_epoch), - float(len(optimizer.state)), - ] - ) - return - - optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) - if case["kind"] == "accumulation_update": - for microbatch in case["microbatches"]: - seq_len = microbatch["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - microbatch["selected_counts"][rank], - microbatch["target_values"][rank], - device, - ) - loss, _ = TransformerModel._calculate_loss( - shell, - model(seq_len), - targets, - metadata, - ) - (loss / case["accumulation_steps"]).backward() - else: - seq_len = case["seq_lens"][rank] - targets, metadata = _real_batch( - seq_len, - case["selected_counts"][rank], - case["target_values"][rank], - device, - ) - loss, _ = TransformerModel._calculate_loss( - shell, - model(seq_len), - targets, - metadata, - ) - loss.backward() - - optimizer.step() - state = _state_vector(model, ["param"], rank) - if rank == 0: - assert state is not None - queue.put(state.tolist()) - return - - if case["kind"] == "multi_target_update": - model = _TinyMultiTargetModel().to(device) - fully_shard(model, mesh=mesh, mp_policy=mp_policy) - shell = _loss_shell( - {"cat_col": "categorical", "real_col": "real"}, - device=str(device), - loss_weights=case["loss_weights"], - ) - shell._data_parallel_group = mesh.get_group() - optimizer = torch.optim.SGD(model.parameters(), lr=case["lr"]) - seq_len = case["seq_lens"][rank] - targets = { - "cat_col": torch.tensor( - [case["cat_targets"][rank]], dtype=torch.long, device=device - ), - "real_col": torch.tensor( - [case["real_targets"][rank]], dtype=torch.float32, device=device - ), - } - metadata = { - "target_valid_mask": torch.ones( - 1, seq_len, dtype=torch.bool, device=device - ) - } - loss, _ = TransformerModel._calculate_loss( - shell, - model(seq_len), - targets, - metadata, - ) - loss.backward() - optimizer.step() - state = _state_vector(model, ["cat_logits", "real_param"], rank) - if rank == 0: - assert state is not None - queue.put(state.tolist()) - return - - raise ValueError(case["kind"]) - finally: - dist.destroy_process_group() - torch.cuda.empty_cache() - - -def _run_fsdp_case(case): - ctx = mp.get_context("spawn") - queue = ctx.SimpleQueue() - init_method = f"tcp://127.0.0.1:{_free_port()}" - mp.spawn( - _fsdp_case_worker, - args=(2, init_method, case, queue), - nprocs=2, - join=True, - ) - return torch.tensor(queue.get(), dtype=torch.float32) - - -def test_fsdp_unequal_token_counts_match_single_process_reference(): - case = { - "kind": "real_update", - "seq_lens": [100, 10], - "selected_counts": [100, 10], - "target_values": [2.0, 8.0], - "lr": 0.1, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-5) - - -@pytest.mark.parametrize("reduce_dtype", [torch.bfloat16, torch.float32]) -def test_fsdp_mixed_precision_unequal_token_counts_match_reference(reduce_dtype): - case = { - "kind": "real_update", - "seq_lens": [100, 10], - "selected_counts": [100, 10], - "target_values": [2.0, 8.0], - "lr": 0.1, - "reduce_dtype": reduce_dtype, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-2, rtol=1e-2) - - -def test_fsdp_zero_token_rank_does_not_attenuate_populated_rank(): - case = { - "kind": "real_update", - "seq_lens": [5, 5], - "selected_counts": [5, 0], - "target_values": [3.0, 100.0], - "lr": 0.1, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-5) - - -@pytest.mark.parametrize("reduce_dtype", [torch.bfloat16, torch.float32]) -def test_fsdp_mixed_precision_zero_token_rank_is_not_attenuated(reduce_dtype): - case = { - "kind": "real_update", - "seq_lens": [5, 5], - "selected_counts": [5, 0], - "target_values": [3.0, 100.0], - "lr": 0.1, - "reduce_dtype": reduce_dtype, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-2, rtol=1e-2) - - -def test_fsdp_multi_target_weighting_matches_single_process_reference(): - case = { - "kind": "multi_target_update", - "seq_lens": [3, 1], - "cat_targets": [[0, 1, 2], [1]], - "real_targets": [[1.0, 2.0, 3.0], [4.0]], - "loss_weights": {"cat_col": 0.25, "real_col": 2.0}, - "lr": 0.1, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_multi_target_update( - case["seq_lens"], - case["cat_targets"], - case["real_targets"], - case["loss_weights"], - case["lr"], - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-5) - - -def test_fsdp_world_size_two_optimizer_update_matches_single_process_reference(): - case = { - "kind": "real_update", - "seq_lens": [6, 4], - "selected_counts": [6, 4], - "target_values": [1.0, 3.0], - "lr": 0.1, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _single_process_real_update( - case["seq_lens"], case["selected_counts"], case["target_values"], case["lr"] - ) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-5) - - -def test_fsdp_gradient_accumulation_averages_per_microbatch_weighting(): - microbatches = [ - { - "seq_lens": [1, 1], - "selected_counts": [1, 1], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [5, 5], - "selected_counts": [5, 5], - "target_values": [10.0, 2.0], - }, - ] - case = { - "kind": "accumulation_update", - "microbatches": microbatches, - "accumulation_steps": 2, - "lr": 0.05, - } - - fsdp_param = _run_fsdp_case(case) - reference_param = _analytical_accumulated_real_update( - microbatches, case["lr"], case["accumulation_steps"] - ) - unnormalized_param = _analytical_unnormalized_accumulated_real_update( - microbatches, case["lr"] - ) - combined_batch_param = _analytical_combined_real_update(microbatches, case["lr"]) - - assert torch.allclose(fsdp_param, reference_param, atol=1e-5) - assert not torch.allclose(fsdp_param, unnormalized_param, atol=1e-3) - assert not torch.allclose(fsdp_param, combined_batch_param, atol=1e-3) - - -def test_fsdp_globally_empty_accumulation_window_leaves_state_unchanged(): - case = { - "kind": "empty_window_state", - "microbatches": [ - { - "seq_lens": [3, 4], - "selected_counts": [0, 0], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [2, 5], - "selected_counts": [0, 0], - "target_values": [2.0, 4.0], - }, - ], - "accumulation_steps": 2, - "lr": 0.01, - "weight_decay": 0.1, - } - - param_delta, lr, scheduler_epoch, optimizer_state_len = _run_fsdp_case(case) - - assert param_delta == 0 - assert lr == pytest.approx(case["lr"]) - assert scheduler_epoch == 0 - assert optimizer_state_len == 0 - - -def test_fsdp_train_epoch_globally_empty_accumulation_window_leaves_state_unchanged(): - case = { - "kind": "train_epoch_empty_window_state", - "microbatches": [ - { - "seq_lens": [3, 4], - "selected_counts": [0, 0], - "target_values": [1.0, 3.0], - }, - { - "seq_lens": [2, 5], - "selected_counts": [0, 0], - "target_values": [2.0, 4.0], - }, - ], - "accumulation_steps": 2, - "lr": 0.01, - "weight_decay": 0.1, - } - - param_delta, lr, scheduler_epoch, optimizer_state_len = _run_fsdp_case(case) - - assert param_delta == 0 - assert lr == pytest.approx(case["lr"]) - assert scheduler_epoch == 0 - assert optimizer_state_len == 0 From bb11b238e9cd77b23d809572818cc712997dd781 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 17 Jun 2026 11:51:02 +0200 Subject: [PATCH 68/81] allow_sequence_splitting and device dependent torch float type --- src/sequifier/config/preprocess_config.py | 1 + src/sequifier/preprocess.py | 57 ++++++++++++++++++++--- src/sequifier/train.py | 36 ++++++++++---- 3 files changed, 78 insertions(+), 16 deletions(-) diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index bcff237b..ef1cdf4c 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -42,6 +42,7 @@ class PreprocessorModel(BaseModel): read_format: str = "csv" write_format: str = "parquet" merge_output: bool = True + allow_sequence_splitting: bool = False selected_columns: Optional[list[str]] = None split_ratios: list[float] diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index c2556d03..0550eb6f 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -81,6 +81,7 @@ def __init__( read_format: str, write_format: str, merge_output: bool, + allow_sequence_splitting: bool, selected_columns: Optional[list[str]], split_ratios: list[float], stored_context_width: int, @@ -114,6 +115,8 @@ def __init__( ) self.target_dir = f"{self.data_name_root}-temp" + self.allow_sequence_splitting = allow_sequence_splitting + self.use_precomputed_maps = use_precomputed_maps self.metadata_config_path = metadata_config_path self.mask_column = mask_column @@ -257,6 +260,7 @@ def __init__( self.batches_per_file, subsequence_start_mode, self.merge_output, + self.allow_sequence_splitting, ) if self.merge_output: @@ -590,6 +594,7 @@ def _process_batches_multiple_files( target_dir=self.target_dir, batches_per_file=self.batches_per_file, merge_output=self.merge_output, + allow_sequence_splitting=self.allow_sequence_splitting, continue_preprocessing=self.continue_preprocessing, subsequence_start_mode=subsequence_start_mode, mask_column=mask_column, @@ -635,6 +640,7 @@ def _process_batches_multiple_files( "target_dir": self.target_dir, "batches_per_file": self.batches_per_file, "merge_output": self.merge_output, + "allow_sequence_splitting": self.allow_sequence_splitting, "continue_preprocessing": self.continue_preprocessing, "subsequence_start_mode": subsequence_start_mode, "mask_column": mask_column, @@ -1310,6 +1316,7 @@ def _process_batches_multiple_files_inner( target_dir: str, batches_per_file: int, merge_output: bool, + allow_sequence_splitting: bool, continue_preprocessing: bool, subsequence_start_mode: str, mask_column: Optional[str], @@ -1402,6 +1409,7 @@ def _process_batches_multiple_files_inner( batches_per_file, subsequence_start_mode, merge_output, + allow_sequence_splitting, ) if merge_output: @@ -1449,10 +1457,11 @@ def _process_batches_single_file( batches_per_file: int, subsequence_start_mode: str, merge_output: bool, + allow_sequence_splitting: bool, ) -> int: """Split one file into worker batches and preprocess them.""" n_cores = n_cores or multiprocessing.cpu_count() - batch_limits = get_batch_limits(data, n_cores) + batch_limits = get_batch_limits(data, n_cores, allow_sequence_splitting) valid_batch_limits = [(s, e) for s, e in batch_limits if (e - s) > 0] batches = [ ( @@ -1551,8 +1560,10 @@ def create_id_map(data: pl.DataFrame, column: str) -> dict[Union[str, int], int] @beartype -def get_batch_limits(data: pl.DataFrame, n_batches: int) -> list[tuple[int, int]]: - """Split rows into batches without crossing sequenceId boundaries.""" +def get_batch_limits( + data: pl.DataFrame, n_batches: int, allow_sequence_splitting: bool +) -> list[tuple[int, int]]: + """Split rows into batches without crossing sequenceId boundaries unless allowed.""" if n_batches <= 0: raise ValueError("n_batches must be positive.") if data.is_empty(): @@ -1566,10 +1577,42 @@ def get_batch_limits(data: pl.DataFrame, n_batches: int) -> list[tuple[int, int] sequence_count = len(sequence_start_indices) if n_batches > sequence_count: - raise ValueError( - "Cannot create more non-empty batches than there are sequences without " - "splitting a sequence." - ) + if not allow_sequence_splitting: + raise ValueError( + "Cannot create more non-empty batches than there are sequences without " + "splitting a sequence." + ) + + original_lengths = np.diff(sequence_boundaries) + pieces = np.ones(len(original_lengths), dtype=int) + + for _ in range(n_batches - sequence_count): + largest_piece_idx = int(np.argmax(original_lengths / pieces)) + pieces[largest_piece_idx] += 1 + + if np.any(pieces > original_lengths): + raise ValueError( + "Cannot split further: sequences are too short to reach the " + "requested number of non-empty batches." + ) + + new_boundaries = [] + for start, length, num_pieces in zip( + sequence_boundaries[:-1], original_lengths, pieces + ): + # Calculate evenly spaced boundaries within this sequence + splits = start + np.round(np.linspace(0, length, num_pieces + 1)).astype( + int + ) + + if not new_boundaries: + new_boundaries.extend(splits) + else: + new_boundaries.extend( + splits[1:] + ) # Avoid duplicating the shared boundary + + sequence_boundaries = np.array(new_boundaries) interior_boundaries = sequence_boundaries[1:-1] ideal_limits = np.linspace(0, data.shape[0], n_batches + 1)[1:-1] diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 3d6123f3..ed8100cb 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1737,10 +1737,20 @@ def _calculate_loss_components( output, targets, valid_mask ) return ( - {col: loss_sum.detach().double() for col, loss_sum in loss_sums.items()}, + { + col: loss_sum.detach().to(dtype=self._metric_float_dtype()) + for col, loss_sum in loss_sums.items() + }, token_count.detach(), ) + @beartype + def _metric_float_dtype(self) -> torch.dtype: + """Return the highest precision floating dtype supported by this device.""" + if torch.device(self.device).type == "mps": + return torch.float32 + return torch.float64 + @beartype def _loss_target_names( self, targets: Optional[dict[str, Tensor]] = None @@ -1795,12 +1805,13 @@ def _new_loss_accumulators( self, target_names: list[str] ) -> tuple[dict[str, Tensor], Tensor]: """Create detached sum/count accumulators for logging or validation.""" + dtype = self._metric_float_dtype() return ( { - col: torch.zeros((), device=self.device, dtype=torch.float64) + col: torch.zeros((), device=self.device, dtype=dtype) for col in target_names }, - torch.zeros((), device=self.device, dtype=torch.float64), + torch.zeros((), device=self.device, dtype=dtype), ) @beartype @@ -1813,8 +1824,11 @@ def _accumulate_loss_components( ) -> None: """Accumulate detached local unweighted loss sums and token counts.""" for col in batch_sums: - sums[col] = sums[col] + batch_sums[col].detach().double() - count += batch_count.detach().double() + sums[col] = sums[col] + batch_sums[col].detach().to( + device=sums[col].device, + dtype=sums[col].dtype, + ) + count += batch_count.detach().to(device=count.device, dtype=count.dtype) @beartype def _finalize_loss_components( @@ -1843,14 +1857,15 @@ def _finalize_loss_components( if raise_on_empty: raise RuntimeError(f"No valid {label} tokens found.") + dtype = self._metric_float_dtype() losses = { - col: torch.zeros((), device=self.device, dtype=torch.float64) + col: torch.zeros((), device=self.device, dtype=dtype) for col in target_names } - return torch.zeros((), device=self.device, dtype=torch.float64), losses + return torch.zeros((), device=self.device, dtype=dtype), losses losses = {} - total = torch.zeros((), device=self.device, dtype=torch.float64) + total = torch.zeros((), device=self.device, dtype=self._metric_float_dtype()) for col in target_names: losses[col] = reduced_sums[col] / reduced_count * self._loss_weight(col) total = total + losses[col] @@ -2437,7 +2452,10 @@ def _log_epoch_results( ) continue - shares = counts.to(torch.float64) / total + share_dtype = ( + torch.float32 if counts.device.type == "mps" else torch.float64 + ) + shares = counts.to(share_dtype) / total value_shares = " | ".join( f"{self.index_maps[categorical_column][class_id]}: " From d428055ccd8756acd6ac4581d1799ce92f6495a7 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 17 Jun 2026 16:48:41 +0200 Subject: [PATCH 69/81] Correct state saving and loading WIP --- src/sequifier/train.py | 554 +++++++++++++++++++++++++++++++---------- 1 file changed, 426 insertions(+), 128 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index ed8100cb..f335b1e1 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1,17 +1,20 @@ import contextlib import copy import glob +import hashlib import json import logging import math import os +import random +import re import sys os.environ["TORCH_NCCL_ASYNC_ERROR_HANDLING"] = "1" import time # noqa: E402 import uuid # noqa: E402 import warnings # noqa: E402 -from typing import Any, Optional, Union # noqa: E402 +from typing import Any, Optional, Union, cast # noqa: E402 import numpy as np # noqa: E402 import torch # noqa: E402 @@ -52,6 +55,7 @@ torch._dynamo.config.suppress_errors = True ClassCounts = dict[str, Tensor] +CHECKPOINT_FORMAT_VERSION = 2 from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 @@ -212,15 +216,20 @@ def train_worker( checkpoint = torch.load( latest_model_path, map_location="cpu", weights_only=False ) + model._validate_checkpoint_compatibility(checkpoint, len(train_loader)) model.load_state_dict(checkpoint["model_state_dict"]) model.optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) model.scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) - if checkpoint["batch"] + 1 >= len(train_loader): - base_model.start_epoch = checkpoint["epoch"] + 1 - base_model.start_batch = 0 - else: - base_model.start_epoch = checkpoint["epoch"] - base_model.start_batch = checkpoint["batch"] + 1 + base_model.start_epoch, base_model.start_batch = _checkpoint_start_position( + checkpoint, len(train_loader) + ) + model._apply_checkpoint_training_state( + checkpoint.get("scaler_state_dict"), + checkpoint.get("best_val_loss", float("inf")), + checkpoint.get("n_epochs_no_improvement", 0), + checkpoint.get("best_model_state_dict"), + checkpoint.get("rng_state"), + ) else: model.start_epoch = 1 model.start_batch = 0 @@ -235,6 +244,9 @@ def train_worker( for i in range(len(model.layers)): model.layers[i] = torch.compile(model.layers[i]) + if checkpoint is not None: + base_model._restore_rng_state() + model.train_model(train_loader, valid_loader, ddp_model=None) elif config.training_spec.data_parallelism == "FSDP": mesh = init_device_mesh( @@ -277,13 +289,20 @@ def train_worker( ) full_msd = checkpoint["model_state_dict"] full_osd = checkpoint["optimizer_state_dict"] - - if checkpoint["batch"] + 1 >= len(train_loader): - start_epoch = checkpoint["epoch"] + 1 - start_batch = 0 - else: - start_epoch = checkpoint["epoch"] - start_batch = checkpoint["batch"] + 1 + start_epoch, start_batch = _checkpoint_start_position( + checkpoint, len(train_loader) + ) + resume_state = { + "scaler_state_dict": checkpoint.get("scaler_state_dict"), + "best_val_loss": checkpoint.get("best_val_loss", float("inf")), + "n_epochs_no_improvement": checkpoint.get( + "n_epochs_no_improvement", 0 + ), + "has_best_model_state_dict": checkpoint.get("best_model_state_dict") + is not None, + "rng_state": checkpoint.get("rng_state"), + "checkpoint_metadata": checkpoint.get("checkpoint_metadata"), + } meta = [ start_epoch, @@ -291,15 +310,33 @@ def train_worker( checkpoint["scheduler_state_dict"], full_msd, full_osd, + resume_state, ] else: - meta = [None, None, None, None, None] + meta = [None, None, None, None, None, None] # Broadcast the checkpoint data to all ranks simultaneously dist.broadcast_object_list(meta, src=0) - # Unpack on all ranks - model.start_epoch, model.start_batch, sched_state, full_msd, full_osd = meta # type: ignore + # Unpack on all ranks. The placeholder Nones are replaced by broadcast. + ( + start_epoch_obj, + start_batch_obj, + sched_state_obj, + full_msd_obj, + full_osd_obj, + resume_state_obj, + ) = meta + model.start_epoch = cast(int, start_epoch_obj) + model.start_batch = cast(int, start_batch_obj) + sched_state = cast(Optional[dict[str, Any]], sched_state_obj) + full_msd = cast(dict[str, Tensor], full_msd_obj) + full_osd = cast(dict[str, Any], full_osd_obj) + resume_state = cast(dict[str, Any], resume_state_obj) + model._validate_checkpoint_compatibility( + {"checkpoint_metadata": resume_state.get("checkpoint_metadata")}, + len(train_loader), + ) options = StateDictOptions(full_state_dict=True, cpu_offload=True) @@ -318,6 +355,19 @@ def train_worker( if sched_state is not None: base_model.scheduler.load_state_dict(sched_state) + best_model_state_dict = None + if resume_state.get("has_best_model_state_dict"): + if global_rank == 0 and checkpoint is not None: + best_model_state_dict = checkpoint.get("best_model_state_dict") + else: + best_model_state_dict = {} + model._apply_checkpoint_training_state( + resume_state.get("scaler_state_dict"), + resume_state.get("best_val_loss", float("inf")), + resume_state.get("n_epochs_no_improvement", 0), + best_model_state_dict, + resume_state.get("rng_state"), + ) else: model.start_epoch = 1 @@ -340,22 +390,33 @@ def train_worker( dist.barrier() + if checkpoint is not None: + base_model._restore_rng_state() + model.train_model(train_loader, valid_loader, ddp_model=base_model) cleanup() elif config.training_spec.data_parallelism == "DDP": # DDP + params_to_optimize = model.parameters() + model.initialize_optimizer(params=params_to_optimize) + if config.training_spec.continue_training and latest_model_path: checkpoint = torch.load( latest_model_path, map_location="cpu", weights_only=False ) + base_model._validate_checkpoint_compatibility(checkpoint, len(train_loader)) base_model.load_state_dict(checkpoint["model_state_dict"]) base_model.optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) base_model.scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) - if checkpoint["batch"] + 1 >= len(train_loader): - base_model.start_epoch = checkpoint["epoch"] + 1 - base_model.start_batch = 0 - else: - base_model.start_epoch = checkpoint["epoch"] - base_model.start_batch = checkpoint["batch"] + 1 + base_model.start_epoch, base_model.start_batch = _checkpoint_start_position( + checkpoint, len(train_loader) + ) + base_model._apply_checkpoint_training_state( + checkpoint.get("scaler_state_dict"), + checkpoint.get("best_val_loss", float("inf")), + checkpoint.get("n_epochs_no_improvement", 0), + checkpoint.get("best_model_state_dict"), + checkpoint.get("rng_state"), + ) else: model.start_epoch = 1 model.start_batch = 0 @@ -363,9 +424,6 @@ def train_worker( f"[INFO] Initializing new model with {format_number(pytorch_total_params)} parameters." ) - params_to_optimize = model.parameters() - model.initialize_optimizer(params=params_to_optimize) - if config.training_spec.device.startswith("cuda"): if torch_compile == "outer": model = torch.compile(model) @@ -390,6 +448,8 @@ def train_worker( _ = ddp_model(dummy_data, dummy_metadata, False) dist.barrier() + if checkpoint is not None: + base_model._restore_rng_state() model.train_model(train_loader, valid_loader, ddp_model=ddp_model) cleanup() else: @@ -466,17 +526,13 @@ def train(args: Any, args_config: dict[str, Any]) -> None: @beartype -def format_number(number: Union[int, float, np.float32]) -> str: - """Format finite values, zero, and NaN for logs.""" - if np.isnan(number): +def format_number(number: int | float | np.float32) -> str: + value = float(number) + if math.isnan(value): return "NaN" - elif number == 0: - order_of_magnitude = 0 - else: - order_of_magnitude = math.floor(math.log(np.abs(number), 10)) - - number_adjusted = number * (10 ** (-order_of_magnitude)) - return f"{number_adjusted:5.2f}e{order_of_magnitude}" + if math.isinf(value): + return "Inf" if value > 0 else "-Inf" + return f"{value: .2e}" def _get_evaluation_loss_mask(metadata: dict[str, Tensor]) -> Tensor: @@ -500,6 +556,16 @@ def _get_evaluation_loss_mask(metadata: dict[str, Tensor]) -> Tensor: return valid_mask +@beartype +def _checkpoint_start_position( + checkpoint: dict[str, Any], num_batches: int +) -> tuple[int, int]: + """Return the next epoch/batch position after a saved checkpoint.""" + if checkpoint["batch"] + 1 >= num_batches: + return checkpoint["epoch"] + 1, 0 + return checkpoint["epoch"], checkpoint["batch"] + 1 + + @beartype def accumulate_class_counts( counts: ClassCounts, @@ -787,6 +853,10 @@ def __init__( use_scaler = True self.scaler = GradScaler(device=self.device.split(":")[0], enabled=use_scaler) + self._resume_best_val_loss = float("inf") + self._resume_n_epochs_no_improvement = 0 + self._resume_best_model_state_dict = None + self._resume_rng_state = None self._apply_layer_dtypes() @@ -1186,6 +1256,182 @@ def _check_and_terminate(self): sys.exit(143) + @beartype + def _checkpoint_compatibility_metadata( + self, num_batches: Optional[int] + ) -> dict[str, Any]: + """Return resume-critical settings stored with each new checkpoint.""" + training_spec = self.hparams.training_spec + resume_settings = { + "model_name": self.model_name, + "num_batches": num_batches, + "batch_size": self.batch_size, + "accumulation_steps": self.accumulation_steps, + "learning_rate": training_spec.learning_rate, + "scheduler_step_on": self.scheduler_step_on, + "scheduler": dict(training_spec.scheduler), + "optimizer": dict(training_spec.optimizer), + "distributed": training_spec.distributed, + "data_parallelism": training_spec.data_parallelism, + "world_size": ( + dist.get_world_size(group=self._data_parallel_process_group()) + if self._distributed_is_initialized() + else training_spec.world_size + ), + "training_objective": training_spec.training_objective, + "input_columns": self.input_columns, + "target_columns": self.target_columns, + "target_column_types": self.target_column_types, + "model_spec": self.hparams.model_spec.model_dump(mode="json"), + } + fingerprint_input = json.dumps( + resume_settings, sort_keys=True, default=str + ).encode("utf-8") + return { + "format_version": CHECKPOINT_FORMAT_VERSION, + "config_fingerprint": hashlib.sha256(fingerprint_input).hexdigest(), + "resume_settings": resume_settings, + } + + @beartype + def _validate_checkpoint_compatibility( + self, checkpoint: dict[str, Any], num_batches: int + ) -> None: + """Reject checkpoints whose resume-critical settings no longer match.""" + checkpoint_metadata = checkpoint.get("checkpoint_metadata") + if checkpoint_metadata is None: + self.logger.warning( + "[WARNING] Checkpoint has no compatibility metadata; " + "continuing with legacy resume behavior." + ) + return + + format_version = checkpoint_metadata.get("format_version") + if format_version != CHECKPOINT_FORMAT_VERSION: + self.logger.warning( + "[WARNING] Checkpoint format version " + f"{format_version!r} differs from expected " + f"{CHECKPOINT_FORMAT_VERSION!r}." + ) + + saved_settings = checkpoint_metadata.get("resume_settings") + if saved_settings is None: + self.logger.warning( + "[WARNING] Checkpoint has no resume-settings fingerprint payload; " + "continuing without compatibility checks." + ) + return + + current_settings = self._checkpoint_compatibility_metadata(num_batches)[ + "resume_settings" + ] + mismatches = [] + for key, current_value in current_settings.items(): + saved_value = saved_settings.get(key) + if saved_value != current_value: + mismatches.append( + f"{key}: checkpoint={saved_value!r}, current={current_value!r}" + ) + + if mismatches: + mismatch_text = "; ".join(mismatches) + raise ValueError( + "Checkpoint is incompatible with the current training configuration: " + f"{mismatch_text}" + ) + + @beartype + def _get_rng_state(self) -> dict[str, Any]: + """Capture Python, NumPy, Torch CPU, and CUDA RNG state for this rank.""" + return { + "python": random.getstate(), + "numpy": np.random.get_state(), + "torch": torch.get_rng_state(), + "cuda": torch.cuda.get_rng_state_all() + if torch.cuda.is_available() + else None, + } + + @beartype + def _collect_rng_states_for_checkpoint(self) -> Optional[list[Any]]: + """Gather per-rank RNG states on rank 0 for checkpointing.""" + rng_state = self._get_rng_state() + if not self.hparams.training_spec.distributed: + return [rng_state] + + rng_states = ( + [None] * dist.get_world_size(group=self._data_parallel_process_group()) + if self.rank == 0 + else None + ) + dist.gather_object( + rng_state, + object_gather_list=rng_states, + dst=0, + group=self._data_parallel_process_group(), + ) + return rng_states + + @beartype + def _select_rng_state_for_rank(self, rng_states: Any) -> Optional[dict[str, Any]]: + """Return this rank's saved RNG state from a checkpoint payload.""" + if rng_states is None: + return None + if isinstance(rng_states, dict): + return rng_states + if not isinstance(rng_states, list) or len(rng_states) == 0: + return None + + rank = self.rank or 0 + if rank < len(rng_states): + return rng_states[rank] + self.logger.warning( + "[WARNING] Checkpoint has no RNG state for this rank; " + "using rank 0 RNG state as a fallback." + ) + return rng_states[0] + + @beartype + def _apply_checkpoint_training_state( + self, + scaler_state_dict: Optional[dict[str, Any]], + best_val_loss: Any, + n_epochs_no_improvement: Any, + best_model_state_dict: Any, + rng_states: Any, + ) -> None: + """Restore non-model training state from a checkpoint payload.""" + if scaler_state_dict is not None: + self.scaler.load_state_dict(scaler_state_dict) + elif self.scaler.is_enabled(): + self.logger.warning( + "[WARNING] Checkpoint has no GradScaler state; " + "resuming with a freshly initialized scaler." + ) + + self._resume_best_val_loss = float(best_val_loss) + self._resume_n_epochs_no_improvement = int(n_epochs_no_improvement) + self._resume_best_model_state_dict = best_model_state_dict + self._resume_rng_state = self._select_rng_state_for_rank(rng_states) + + @beartype + def _restore_rng_state(self) -> None: + """Apply the checkpoint RNG state after compile/warm-up work is finished.""" + rng_state = self._resume_rng_state + if rng_state is None: + self.logger.warning( + "[WARNING] Checkpoint has no RNG state; stochastic training will " + "continue from the current process RNG state." + ) + return + + random.setstate(rng_state["python"]) + np.random.set_state(rng_state["numpy"]) + torch.set_rng_state(rng_state["torch"]) + cuda_state = rng_state.get("cuda") + if cuda_state is not None and torch.cuda.is_available(): + torch.cuda.set_rng_state_all(cuda_state) + @beartype def train_model( self, @@ -1196,10 +1442,10 @@ def train_model( """Run epochs, validation, checkpointing, export, and interruption cleanup.""" self.logger.info(f"--- Starting Training for model: {self.model_name} ---") - best_val_loss = float("inf") - n_epochs_no_improvement = 0 + best_val_loss: float = float(self._resume_best_val_loss) + n_epochs_no_improvement = self._resume_n_epochs_no_improvement last_epoch = self.start_epoch - 1 - best_model_state = None + best_model_state = self._resume_best_model_state_dict try: self.last_latest_save_time = time.time() @@ -1231,7 +1477,15 @@ def train_model( train_loader.dataset.set_epoch(epoch) valid_loader.dataset.set_epoch(epoch) - self._train_epoch(train_loader, valid_loader, epoch, ddp_model) + self._train_epoch( + train_loader, + valid_loader, + epoch, + ddp_model, + best_val_loss, + n_epochs_no_improvement, + best_model_state, + ) total_loss, total_losses, class_counts = self._evaluate( valid_loader, ddp_model @@ -1250,7 +1504,7 @@ def train_model( ) if total_loss < best_val_loss: - best_val_loss = total_loss + best_val_loss = float(total_loss) best_model_state = self._get_full_state_dict(ddp_model) n_epochs_no_improvement = 0 else: @@ -1270,6 +1524,10 @@ def train_model( total_loss, ddp_model=ddp_model, suffix=f"epoch-{epoch}", + best_val_loss=best_val_loss, + n_epochs_no_improvement=n_epochs_no_improvement, + best_model_state_dict=best_model_state, + num_batches=len(train_loader), ) last_epoch = epoch @@ -1357,6 +1615,9 @@ def _train_epoch( valid_loader: DataLoader, epoch: int, ddp_model: Optional[nn.Module] = None, + best_val_loss: float = float("inf"), + n_epochs_no_improvement: int = 0, + best_model_state: Optional[dict[str, Tensor]] = None, ) -> None: """Run one train epoch with optional mid-epoch saves.""" target_names = self._loss_target_names() @@ -1528,85 +1789,93 @@ def _train_epoch( ): self.scheduler.step() - should_save_latest = torch.tensor( - [0], dtype=torch.int32, device=self.device - ) - should_save_batch = torch.tensor( - [0], dtype=torch.int32, device=self.device - ) - val_loss_batch = torch.tensor( - [np.float32(np.nan)], dtype=torch.float32, device=self.device - ) - - current_time = time.time() - - if not self.hparams.training_spec.distributed or self.rank == 0: - if self.save_latest_interval_minutes is not None and ( - current_time - self.last_latest_save_time - ) >= (self.save_latest_interval_minutes * 60): - current_time = time.time() - should_save_latest[0] = 1 - self.last_latest_save_time = current_time - - if self.save_batch_interval_minutes is not None and ( - current_time - self.last_batch_save_time - ) >= (self.save_batch_interval_minutes * 60): - should_save_batch[0] = 1 - self.last_batch_save_time = current_time - - if self.hparams.training_spec.distributed: - dist.broadcast(should_save_latest, src=0) - dist.broadcast(should_save_batch, src=0) - dist.barrier() - - if should_save_batch.item() == 1: - if self.save_batch_interval_minutes_val_loss: - val_loss, val_losses, class_counts = self._evaluate( - valid_loader, ddp_model - ) + if optimizer_step_due: + should_save_latest = torch.tensor( + [0], dtype=torch.int32, device=self.device + ) + should_save_batch = torch.tensor( + [0], dtype=torch.int32, device=self.device + ) + val_loss_batch = torch.tensor( + [np.float32(np.nan)], dtype=torch.float32, device=self.device + ) - if not self.hparams.training_spec.distributed or self.rank == 0: - current_global_step = (epoch - 1) * num_batches + ( - batch_count + 1 + current_time = time.time() + elapsed_since_batch_save = current_time - self.last_batch_save_time + + if not self.hparams.training_spec.distributed or self.rank == 0: + if self.save_latest_interval_minutes is not None and ( + current_time - self.last_latest_save_time + ) >= (self.save_latest_interval_minutes * 60): + should_save_latest[0] = 1 + + if self.save_batch_interval_minutes is not None and ( + elapsed_since_batch_save + ) >= (self.save_batch_interval_minutes * 60): + should_save_batch[0] = 1 + + if self.hparams.training_spec.distributed: + dist.broadcast(should_save_latest, src=0) + dist.broadcast(should_save_batch, src=0) + dist.barrier() + + if should_save_batch.item() == 1: + if self.save_batch_interval_minutes_val_loss: + val_loss, val_losses, class_counts = self._evaluate( + valid_loader, ddp_model ) - self._log_epoch_results( - 0, - batch_count + 1, - (current_time - self.last_batch_save_time), - val_loss, - val_losses, - class_counts, - current_global_step, - ) - val_loss_batch[0] = float(val_loss) - self._check_and_terminate() - else: - val_loss_batch[0] = np.float32(np.nan) - if self.hparams.training_spec.distributed: - dist.broadcast(val_loss_batch, src=0) - - if should_save_latest.item() == 1: - self._save( - epoch, - batch_count, - np.float32(np.nan), - ddp_model, - suffix="latest", - ) - if self.rank != 0: + if ( + not self.hparams.training_spec.distributed + or self.rank == 0 + ): + current_global_step = (epoch - 1) * num_batches + ( + batch_count + 1 + ) + self._log_epoch_results( + 0, + batch_count + 1, + elapsed_since_batch_save, + val_loss, + val_losses, + class_counts, + current_global_step, + ) + val_loss_batch[0] = float(val_loss) + self._check_and_terminate() + else: + val_loss_batch.fill_(torch.nan) + + if self.hparams.training_spec.distributed: + dist.broadcast(val_loss_batch, src=0) + + if should_save_latest.item() == 1: + self._save( + epoch, + batch_count, + np.float32(np.nan), + ddp_model, + suffix="latest", + best_val_loss=best_val_loss, + n_epochs_no_improvement=n_epochs_no_improvement, + best_model_state_dict=best_model_state, + num_batches=num_batches, + ) self.last_latest_save_time = time.time() - val_loss = np.float32(val_loss_batch.item()) - if should_save_batch.item() != 0: - self._save( - epoch, - batch_count, - val_loss, # type: ignore - ddp_model, - suffix=f"epoch-{epoch}-batch-{batch_count + 1}", - ) - if self.rank != 0: + val_loss = np.float32(val_loss_batch.item()) + if should_save_batch.item() != 0: + self._save( + epoch, + batch_count, + val_loss, # type: ignore + ddp_model, + suffix=f"epoch-{epoch}-batch-{batch_count + 1}", + best_val_loss=best_val_loss, + n_epochs_no_improvement=n_epochs_no_improvement, + best_model_state_dict=best_model_state, + num_batches=num_batches, + ) self.last_batch_save_time = time.time() @beartype @@ -2305,6 +2574,10 @@ def _save( val_loss: np.float32, ddp_model: Optional[nn.Module] = None, suffix: Optional[str] = None, + best_val_loss: float = float("inf"), + n_epochs_no_improvement: int = 0, + best_model_state_dict: Optional[dict[str, Tensor]] = None, + num_batches: Optional[int] = None, ) -> None: """Save rank-0 checkpoint state.""" model_to_extract = ddp_model if ddp_model is not None else self @@ -2330,6 +2603,8 @@ def _save( } optim_state_dict = self.optimizer.state_dict() + rng_state = self._collect_rng_states_for_checkpoint() + if self.rank != 0: return @@ -2343,17 +2618,33 @@ def _save( file_name, ) - torch.save( - { - "epoch": epoch, - "batch": batch, - "model_state_dict": model_state_dict, - "optimizer_state_dict": optim_state_dict, - "scheduler_state_dict": self.scheduler.state_dict(), - "loss": val_loss, - }, - output_path, + checkpoint = { + "checkpoint_metadata": self._checkpoint_compatibility_metadata(num_batches), + "epoch": epoch, + "batch": batch, + "model_state_dict": model_state_dict, + "optimizer_state_dict": optim_state_dict, + "scheduler_state_dict": self.scheduler.state_dict(), + "scaler_state_dict": self.scaler.state_dict(), + "rng_state": rng_state, + "best_val_loss": float(best_val_loss), + "n_epochs_no_improvement": int(n_epochs_no_improvement), + "best_model_state_dict": best_model_state_dict, + "loss": val_loss, + } + + temp_path = os.path.join( + self.project_root, + "checkpoints", + f".{file_name}.{uuid.uuid4().hex}.tmp", ) + try: + torch.save(checkpoint, temp_path) + os.replace(temp_path, output_path) + except Exception: + with contextlib.suppress(OSError): + os.remove(temp_path) + raise self.logger.info(f"[INFO] Saved checkpoint to {output_path}") @beartype @@ -2384,14 +2675,21 @@ def _initialize_log_file(self): @beartype def _get_latest_model_name(self) -> Optional[str]: """Return the newest checkpoint path for this model name.""" - checkpoint_path = os.path.join(self.project_root, "checkpoints", "*") + checkpoint_path = os.path.join( + self.project_root, "checkpoints", f"{self.model_name}-*.pt" + ) + checkpoint_name_re = re.compile( + rf"^{re.escape(self.model_name)}-(?:latest|epoch-\d+(?:-batch-\d+)?)\.pt$" + ) files = glob.glob(checkpoint_path) files = [ - file for file in files if os.path.split(file)[1].startswith(self.model_name) + file + for file in files + if checkpoint_name_re.fullmatch(os.path.split(file)[1]) ] if files: - return max(files, key=os.path.getctime) + return max(files, key=os.path.getmtime) else: return None From 76d6ba57093f276e1685cd8d47dcc3d46c588cb7 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 17 Jun 2026 18:26:18 +0200 Subject: [PATCH 70/81] Correct state saving and loading WIP --- src/sequifier/train.py | 154 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 136 insertions(+), 18 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index f335b1e1..f7dfee2a 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -9,6 +9,7 @@ import random import re import sys +from dataclasses import asdict os.environ["TORCH_NCCL_ASYNC_ERROR_HANDLING"] = "1" import time # noqa: E402 @@ -56,6 +57,7 @@ ClassCounts = dict[str, Tensor] CHECKPOINT_FORMAT_VERSION = 2 +SUPPORTED_CHECKPOINT_FORMAT_VERSIONS = {2} from sequifier.config.train_config import TrainModel, load_train_config # noqa: E402 from sequifier.distributed.env import setup_distributed_env # noqa: E402 @@ -178,6 +180,13 @@ def train_worker( train_dataset = SequifierDatasetFromFile(config.training_data_path, config) valid_dataset = SequifierDatasetFromFile(config.validation_data_path, config) + configure_determinism(config.seed, config.training_spec.enforce_determinism) + + train_loader_generator = torch.Generator() + train_loader_generator.manual_seed(config.seed + 10_001) + valid_loader_generator = torch.Generator() + valid_loader_generator.manual_seed(config.seed + 10_002) + train_loader = DataLoader( train_dataset, batch_size=None, # Batching is handled natively by the IterableDataset @@ -186,6 +195,7 @@ def train_worker( pin_memory=config.training_spec.device not in ["mps", "cpu"], prefetch_factor=4 if config.training_spec.num_workers > 0 else None, persistent_workers=(config.training_spec.num_workers > 0), + generator=train_loader_generator, ) valid_loader = DataLoader( @@ -196,10 +206,9 @@ def train_worker( pin_memory=config.training_spec.device not in ["mps", "cpu"], prefetch_factor=4 if config.training_spec.num_workers > 0 else None, persistent_workers=(config.training_spec.num_workers > 0), + generator=valid_loader_generator, ) - configure_determinism(config.seed, config.training_spec.enforce_determinism) - model = TransformerModel(config, rank=global_rank, local_rank=local_rank) base_model = model @@ -282,8 +291,18 @@ def train_worker( params_to_optimize = model.parameters() model.initialize_optimizer(params=params_to_optimize) - if config.training_spec.continue_training and latest_model_path: + resume_signal = [ + config.training_spec.continue_training and latest_model_path is not None + if global_rank == 0 + else None + ] + dist.broadcast_object_list(resume_signal, src=0) + did_resume = cast(bool, resume_signal[0]) + + if did_resume: if global_rank == 0: + if latest_model_path is None: + raise RuntimeError("Rank 0 selected resume without a checkpoint.") checkpoint = torch.load( latest_model_path, map_location="cpu", weights_only=False ) @@ -390,7 +409,7 @@ def train_worker( dist.barrier() - if checkpoint is not None: + if did_resume: base_model._restore_rng_state() model.train_model(train_loader, valid_loader, ddp_model=base_model) @@ -857,6 +876,7 @@ def __init__( self._resume_n_epochs_no_improvement = 0 self._resume_best_model_state_dict = None self._resume_rng_state = None + self._checkpoint_path_identity_cache: dict[str, dict[str, Any]] = {} self._apply_layer_dtypes() @@ -1256,14 +1276,85 @@ def _check_and_terminate(self): sys.exit(143) + @beartype + def _path_identity(self, path: str) -> dict[str, Any]: + """Return a cached, JSON-safe identity summary for a file or folder.""" + normalized_path = normalize_path(path, self.project_root) + if normalized_path in self._checkpoint_path_identity_cache: + return self._checkpoint_path_identity_cache[normalized_path] + + identity: dict[str, Any] + if not os.path.exists(normalized_path): + identity = {"path": normalized_path, "exists": False} + elif os.path.isfile(normalized_path): + stat = os.stat(normalized_path) + identity = { + "path": normalized_path, + "exists": True, + "type": "file", + "size": stat.st_size, + "mtime_ns": stat.st_mtime_ns, + } + else: + entries: list[dict[str, Any]] = [] + for root, dirs, files in os.walk(normalized_path): + dirs.sort() + files.sort() + for file_name in files: + file_path = os.path.join(root, file_name) + with contextlib.suppress(OSError): + stat = os.stat(file_path) + entries.append( + { + "path": os.path.relpath(file_path, normalized_path), + "size": stat.st_size, + "mtime_ns": stat.st_mtime_ns, + } + ) + manifest = json.dumps(entries, sort_keys=True).encode("utf-8") + identity = { + "path": normalized_path, + "exists": True, + "type": "directory", + "file_count": len(entries), + "manifest_hash": hashlib.sha256(manifest).hexdigest(), + } + + self._checkpoint_path_identity_cache[normalized_path] = identity + return identity + @beartype def _checkpoint_compatibility_metadata( self, num_batches: Optional[int] ) -> dict[str, Any]: """Return resume-critical settings stored with each new checkpoint.""" training_spec = self.hparams.training_spec + bert_spec = ( + training_spec.bert_spec.model_dump(mode="json") + if training_spec.bert_spec is not None + else None + ) resume_settings = { "model_name": self.model_name, + "read_format": self.hparams.read_format, + "training_data_path": normalize_path( + self.hparams.training_data_path, self.project_root + ), + "validation_data_path": normalize_path( + self.hparams.validation_data_path, self.project_root + ), + "metadata_config_path": normalize_path( + self.hparams.metadata_config_path, self.project_root + ), + "training_data_identity": self._path_identity( + self.hparams.training_data_path + ), + "validation_data_identity": self._path_identity( + self.hparams.validation_data_path + ), + "metadata_config_identity": self._path_identity( + self.hparams.metadata_config_path + ), "num_batches": num_batches, "batch_size": self.batch_size, "accumulation_steps": self.accumulation_steps, @@ -1279,9 +1370,29 @@ def _checkpoint_compatibility_metadata( else training_spec.world_size ), "training_objective": training_spec.training_objective, + "seed": self.hparams.seed, + "dropout": training_spec.dropout, + "bert_spec": bert_spec, + "sampling_strategy": training_spec.sampling_strategy, + "criterion": training_spec.criterion, + "class_weights": training_spec.class_weights, + "loss_weights": training_spec.loss_weights, + "layer_type_dtypes": training_spec.layer_type_dtypes, + "layer_autocast": training_spec.layer_autocast, + "num_workers": training_spec.num_workers, + "load_full_data_to_ram": training_spec.load_full_data_to_ram, + "fsdp_cpu_offload": training_spec.fsdp_cpu_offload, + "storage_layout": asdict(self.storage_layout), + "window_view": asdict(self.window_view), + "column_types": self.hparams.column_types, + "categorical_columns": self.categorical_columns, + "real_columns": self.real_columns, "input_columns": self.input_columns, "target_columns": self.target_columns, "target_column_types": self.target_column_types, + "n_classes": self.n_classes, + "id_maps": self.hparams.id_maps, + "special_token_ids": self.hparams.special_token_ids, "model_spec": self.hparams.model_spec.model_dump(mode="json"), } fingerprint_input = json.dumps( @@ -1305,26 +1416,25 @@ def _validate_checkpoint_compatibility( "continuing with legacy resume behavior." ) return + if not isinstance(checkpoint_metadata, dict): + raise ValueError("Checkpoint compatibility metadata must be a dictionary.") format_version = checkpoint_metadata.get("format_version") - if format_version != CHECKPOINT_FORMAT_VERSION: - self.logger.warning( - "[WARNING] Checkpoint format version " - f"{format_version!r} differs from expected " - f"{CHECKPOINT_FORMAT_VERSION!r}." + if format_version not in SUPPORTED_CHECKPOINT_FORMAT_VERSIONS: + raise ValueError( + "Unsupported checkpoint format version " + f"{format_version!r}; supported versions are " + f"{sorted(SUPPORTED_CHECKPOINT_FORMAT_VERSIONS)!r}." ) saved_settings = checkpoint_metadata.get("resume_settings") - if saved_settings is None: - self.logger.warning( - "[WARNING] Checkpoint has no resume-settings fingerprint payload; " - "continuing without compatibility checks." + if not isinstance(saved_settings, dict): + raise ValueError( + "Checkpoint compatibility metadata is missing resume_settings." ) - return - current_settings = self._checkpoint_compatibility_metadata(num_batches)[ - "resume_settings" - ] + current_metadata = self._checkpoint_compatibility_metadata(num_batches) + current_settings = current_metadata["resume_settings"] mismatches = [] for key, current_value in current_settings.items(): saved_value = saved_settings.get(key) @@ -1340,6 +1450,14 @@ def _validate_checkpoint_compatibility( f"{mismatch_text}" ) + saved_fingerprint = checkpoint_metadata.get("config_fingerprint") + current_fingerprint = current_metadata["config_fingerprint"] + if saved_fingerprint != current_fingerprint: + raise ValueError( + "Checkpoint configuration fingerprint mismatch: " + f"checkpoint={saved_fingerprint!r}, current={current_fingerprint!r}" + ) + @beartype def _get_rng_state(self) -> dict[str, Any]: """Capture Python, NumPy, Torch CPU, and CUDA RNG state for this rank.""" @@ -2676,7 +2794,7 @@ def _initialize_log_file(self): def _get_latest_model_name(self) -> Optional[str]: """Return the newest checkpoint path for this model name.""" checkpoint_path = os.path.join( - self.project_root, "checkpoints", f"{self.model_name}-*.pt" + self.project_root, "checkpoints", f"{glob.escape(self.model_name)}-*.pt" ) checkpoint_name_re = re.compile( rf"^{re.escape(self.model_name)}-(?:latest|epoch-\d+(?:-batch-\d+)?)\.pt$" From 095ad4af80fcc77b9e66840ca400fe99cbd9a0ab Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Wed, 17 Jun 2026 18:49:40 +0200 Subject: [PATCH 71/81] Correct state saving and loading WIP --- src/sequifier/train.py | 129 +++++++++++++++++++---------------------- 1 file changed, 60 insertions(+), 69 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index f7dfee2a..c96cc857 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -210,6 +210,10 @@ def train_worker( ) model = TransformerModel(config, rank=global_rank, local_rank=local_rank) + model._data_loader_generators = { + "train": train_loader_generator, + "valid": valid_loader_generator, + } base_model = model latest_model_path = model._get_latest_model_name() @@ -238,6 +242,7 @@ def train_worker( checkpoint.get("n_epochs_no_improvement", 0), checkpoint.get("best_model_state_dict"), checkpoint.get("rng_state"), + checkpoint.get("data_loader_generator_states"), ) else: model.start_epoch = 1 @@ -255,6 +260,7 @@ def train_worker( if checkpoint is not None: base_model._restore_rng_state() + base_model._restore_data_loader_generator_states() model.train_model(train_loader, valid_loader, ddp_model=None) elif config.training_spec.data_parallelism == "FSDP": @@ -320,6 +326,9 @@ def train_worker( "has_best_model_state_dict": checkpoint.get("best_model_state_dict") is not None, "rng_state": checkpoint.get("rng_state"), + "data_loader_generator_states": checkpoint.get( + "data_loader_generator_states" + ), "checkpoint_metadata": checkpoint.get("checkpoint_metadata"), } @@ -386,6 +395,7 @@ def train_worker( resume_state.get("n_epochs_no_improvement", 0), best_model_state_dict, resume_state.get("rng_state"), + resume_state.get("data_loader_generator_states"), ) else: @@ -411,6 +421,7 @@ def train_worker( if did_resume: base_model._restore_rng_state() + base_model._restore_data_loader_generator_states() model.train_model(train_loader, valid_loader, ddp_model=base_model) cleanup() @@ -435,6 +446,7 @@ def train_worker( checkpoint.get("n_epochs_no_improvement", 0), checkpoint.get("best_model_state_dict"), checkpoint.get("rng_state"), + checkpoint.get("data_loader_generator_states"), ) else: model.start_epoch = 1 @@ -469,6 +481,7 @@ def train_worker( dist.barrier() if checkpoint is not None: base_model._restore_rng_state() + base_model._restore_data_loader_generator_states() model.train_model(train_loader, valid_loader, ddp_model=ddp_model) cleanup() else: @@ -876,7 +889,8 @@ def __init__( self._resume_n_epochs_no_improvement = 0 self._resume_best_model_state_dict = None self._resume_rng_state = None - self._checkpoint_path_identity_cache: dict[str, dict[str, Any]] = {} + self._resume_data_loader_generator_states = None + self._data_loader_generators: dict[str, torch.Generator] = {} self._apply_layer_dtypes() @@ -1276,53 +1290,6 @@ def _check_and_terminate(self): sys.exit(143) - @beartype - def _path_identity(self, path: str) -> dict[str, Any]: - """Return a cached, JSON-safe identity summary for a file or folder.""" - normalized_path = normalize_path(path, self.project_root) - if normalized_path in self._checkpoint_path_identity_cache: - return self._checkpoint_path_identity_cache[normalized_path] - - identity: dict[str, Any] - if not os.path.exists(normalized_path): - identity = {"path": normalized_path, "exists": False} - elif os.path.isfile(normalized_path): - stat = os.stat(normalized_path) - identity = { - "path": normalized_path, - "exists": True, - "type": "file", - "size": stat.st_size, - "mtime_ns": stat.st_mtime_ns, - } - else: - entries: list[dict[str, Any]] = [] - for root, dirs, files in os.walk(normalized_path): - dirs.sort() - files.sort() - for file_name in files: - file_path = os.path.join(root, file_name) - with contextlib.suppress(OSError): - stat = os.stat(file_path) - entries.append( - { - "path": os.path.relpath(file_path, normalized_path), - "size": stat.st_size, - "mtime_ns": stat.st_mtime_ns, - } - ) - manifest = json.dumps(entries, sort_keys=True).encode("utf-8") - identity = { - "path": normalized_path, - "exists": True, - "type": "directory", - "file_count": len(entries), - "manifest_hash": hashlib.sha256(manifest).hexdigest(), - } - - self._checkpoint_path_identity_cache[normalized_path] = identity - return identity - @beartype def _checkpoint_compatibility_metadata( self, num_batches: Optional[int] @@ -1334,27 +1301,9 @@ def _checkpoint_compatibility_metadata( if training_spec.bert_spec is not None else None ) - resume_settings = { + compatibility_settings = { "model_name": self.model_name, "read_format": self.hparams.read_format, - "training_data_path": normalize_path( - self.hparams.training_data_path, self.project_root - ), - "validation_data_path": normalize_path( - self.hparams.validation_data_path, self.project_root - ), - "metadata_config_path": normalize_path( - self.hparams.metadata_config_path, self.project_root - ), - "training_data_identity": self._path_identity( - self.hparams.training_data_path - ), - "validation_data_identity": self._path_identity( - self.hparams.validation_data_path - ), - "metadata_config_identity": self._path_identity( - self.hparams.metadata_config_path - ), "num_batches": num_batches, "batch_size": self.batch_size, "accumulation_steps": self.accumulation_steps, @@ -1395,13 +1344,25 @@ def _checkpoint_compatibility_metadata( "special_token_ids": self.hparams.special_token_ids, "model_spec": self.hparams.model_spec.model_dump(mode="json"), } + provenance = { + "training_data_path": normalize_path( + self.hparams.training_data_path, self.project_root + ), + "validation_data_path": normalize_path( + self.hparams.validation_data_path, self.project_root + ), + "metadata_config_path": normalize_path( + self.hparams.metadata_config_path, self.project_root + ), + } fingerprint_input = json.dumps( - resume_settings, sort_keys=True, default=str + compatibility_settings, sort_keys=True, default=str ).encode("utf-8") return { "format_version": CHECKPOINT_FORMAT_VERSION, "config_fingerprint": hashlib.sha256(fingerprint_input).hexdigest(), - "resume_settings": resume_settings, + "resume_settings": compatibility_settings, + "provenance": provenance, } @beartype @@ -1509,6 +1470,32 @@ def _select_rng_state_for_rank(self, rng_states: Any) -> Optional[dict[str, Any] ) return rng_states[0] + @beartype + def _get_data_loader_generator_states(self) -> dict[str, Tensor]: + """Capture dedicated DataLoader generator states.""" + return { + name: generator.get_state() + for name, generator in self._data_loader_generators.items() + } + + @beartype + def _restore_data_loader_generator_states(self) -> None: + """Restore dedicated DataLoader generator states when present.""" + states = self._resume_data_loader_generator_states + if states is None: + return + if not isinstance(states, dict): + self.logger.warning( + "[WARNING] Checkpoint DataLoader generator state is not a dictionary; " + "using freshly seeded DataLoader generators." + ) + return + + for name, generator in self._data_loader_generators.items(): + state = states.get(name) + if isinstance(state, Tensor): + generator.set_state(state) + @beartype def _apply_checkpoint_training_state( self, @@ -1517,6 +1504,7 @@ def _apply_checkpoint_training_state( n_epochs_no_improvement: Any, best_model_state_dict: Any, rng_states: Any, + data_loader_generator_states: Any, ) -> None: """Restore non-model training state from a checkpoint payload.""" if scaler_state_dict is not None: @@ -1531,6 +1519,7 @@ def _apply_checkpoint_training_state( self._resume_n_epochs_no_improvement = int(n_epochs_no_improvement) self._resume_best_model_state_dict = best_model_state_dict self._resume_rng_state = self._select_rng_state_for_rank(rng_states) + self._resume_data_loader_generator_states = data_loader_generator_states @beartype def _restore_rng_state(self) -> None: @@ -2722,6 +2711,7 @@ def _save( optim_state_dict = self.optimizer.state_dict() rng_state = self._collect_rng_states_for_checkpoint() + data_loader_generator_states = self._get_data_loader_generator_states() if self.rank != 0: return @@ -2745,6 +2735,7 @@ def _save( "scheduler_state_dict": self.scheduler.state_dict(), "scaler_state_dict": self.scaler.state_dict(), "rng_state": rng_state, + "data_loader_generator_states": data_loader_generator_states, "best_val_loss": float(best_val_loss), "n_epochs_no_improvement": int(n_epochs_no_improvement), "best_model_state_dict": best_model_state_dict, From 79b57ed982b8e61f8c8a3961e1f52bd71b8b1f65 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 14:19:59 +0200 Subject: [PATCH 72/81] Refactor checkpoint metadata management --- src/sequifier/io/iteration_state.py | 80 ++++++++++++++++++ .../io/sequifier_dataset_from_file.py | 39 +++++++-- .../sequifier_dataset_from_folder_parquet.py | 38 ++++++++- ...uifier_dataset_from_folder_parquet_lazy.py | 51 +++++++++--- .../io/sequifier_dataset_from_folder_pt.py | 38 ++++++++- .../sequifier_dataset_from_folder_pt_lazy.py | 51 +++++++++--- src/sequifier/train.py | 81 ++++++++++++++++--- 7 files changed, 338 insertions(+), 40 deletions(-) create mode 100644 src/sequifier/io/iteration_state.py diff --git a/src/sequifier/io/iteration_state.py b/src/sequifier/io/iteration_state.py new file mode 100644 index 00000000..d6f80aae --- /dev/null +++ b/src/sequifier/io/iteration_state.py @@ -0,0 +1,80 @@ +from collections.abc import Sequence + +import torch + + +def shared_int(value: int = 0) -> torch.Tensor: + """Return a shared scalar int tensor visible to DataLoader worker copies.""" + state = torch.empty((), dtype=torch.int64) + state.fill_(int(value)) + state.share_memory_() + return state + + +def read_shared_int(state: torch.Tensor) -> int: + return int(state.item()) + + +def write_shared_int(state: torch.Tensor, value: int) -> None: + state.fill_(int(value)) + + +def resolve_resume_worker( + start_batch: int, + worker_id: int, + num_workers: int, + worker_batch_counts: Sequence[int], +) -> tuple[int, int]: + """Map a physical worker to the logical worker/batch offset after resume. + + PyTorch requests IterableDataset samples from workers in worker-id order. To + resume at a non-zero global batch without yielding skipped batches, worker 0 + is rotated onto the worker that would have produced start_batch in the + uninterrupted iterator. Each logical worker then skips only the batches it + owned before start_batch. + """ + if num_workers <= 0: + raise ValueError("num_workers must be positive.") + if len(worker_batch_counts) != num_workers: + raise ValueError("worker_batch_counts must match num_workers.") + + counts = [max(0, int(count)) for count in worker_batch_counts] + total_batches = sum(counts) + capped_start = min(max(0, int(start_batch)), total_batches) + if capped_start == 0 or total_batches == 0: + return worker_id, 0 + + skips = [0] * num_workers + active_workers = [i for i, count in enumerate(counts) if count > 0] + consumed = 0 + start_worker = active_workers[0] if active_workers else 0 + + while active_workers and consumed < capped_start: + rounds_until_next_exhaustion = min(counts[i] - skips[i] for i in active_workers) + block_batches = rounds_until_next_exhaustion * len(active_workers) + remaining = capped_start - consumed + + if remaining >= block_batches: + for i in active_workers: + skips[i] += rounds_until_next_exhaustion + consumed += block_batches + active_workers = [i for i in active_workers if skips[i] < counts[i]] + start_worker = active_workers[0] if active_workers else 0 + continue + + full_rounds, offset = divmod(remaining, len(active_workers)) + for i in active_workers: + skips[i] += full_rounds + for i in active_workers[:offset]: + skips[i] += 1 + start_worker = active_workers[offset] + consumed = capped_start + + logical_worker_id = (worker_id + start_worker) % num_workers + return logical_worker_id, skips[logical_worker_id] + + +def skip_samples_for_batches( + skip_batches: int, batch_size: int, total_samples: int +) -> int: + return min(max(0, int(skip_batches)) * int(batch_size), max(0, int(total_samples))) diff --git a/src/sequifier/io/sequifier_dataset_from_file.py b/src/sequifier/io/sequifier_dataset_from_file.py index da4bc2b0..c96358a3 100644 --- a/src/sequifier/io/sequifier_dataset_from_file.py +++ b/src/sequifier/io/sequifier_dataset_from_file.py @@ -14,6 +14,13 @@ resolve_window_view, ) from sequifier.io.batch import SequifierBatch +from sequifier.io.iteration_state import ( + read_shared_int, + resolve_resume_worker, + shared_int, + skip_samples_for_batches, + write_shared_int, +) class SequifierDatasetFromFile(IterableDataset): @@ -24,7 +31,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.config = config self.batch_size = config.training_spec.batch_size self.shuffle = shuffle - self.epoch = 0 + self._epoch_state = shared_int(0) + self._start_batch_state = shared_int(0) all_columns = sorted(list(set(config.input_columns + config.target_columns))) @@ -70,7 +78,11 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): def set_epoch(self, epoch: int): """Set the shuffle epoch.""" - self.epoch = epoch + write_shared_int(self._epoch_state, epoch) + + def set_start_batch(self, start_batch: int): + """Set the first global batch to yield on the next iteration.""" + write_shared_int(self._start_batch_state, start_batch) def __len__(self) -> int: return math.ceil(self.n_samples / self.batch_size) @@ -84,22 +96,39 @@ def __iter__( if worker_info is None: # Single-process data loading - worker_id = 0 + physical_worker_id = 0 num_workers = 1 else: # Multi-process data loading - worker_id = worker_info.id + physical_worker_id = worker_info.id num_workers = worker_info.num_workers + epoch = read_shared_int(self._epoch_state) + start_batch = read_shared_int(self._start_batch_state) indices = torch.arange(self.n_samples) if self.shuffle: g = torch.Generator() # Use epoch and seed for a different but deterministic shuffle each epoch - g.manual_seed(self.config.seed + self.epoch) + g.manual_seed(self.config.seed + epoch) indices = indices[torch.randperm(self.n_samples, generator=g)] indices_for_rank = indices[rank::world_size] + worker_batch_counts = [ + len(indices_for_rank[i::num_workers]) // self.batch_size + for i in range(num_workers) + ] + worker_id, skip_batches = resolve_resume_worker( + start_batch, + physical_worker_id, + num_workers, + worker_batch_counts, + ) + indices_for_worker = indices_for_rank[worker_id::num_workers] + skipped_samples = skip_samples_for_batches( + skip_batches, self.batch_size, len(indices_for_worker) + ) + indices_for_worker = indices_for_worker[skipped_samples:] for i in range(0, len(indices_for_worker), self.batch_size): batch_end = i + self.batch_size diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py index 93035822..9e4acca7 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet.py @@ -19,6 +19,13 @@ stored_window_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch +from sequifier.io.iteration_state import ( + read_shared_int, + resolve_resume_worker, + shared_int, + skip_samples_for_batches, + write_shared_int, +) class SequifierDatasetFromFolderParquet(IterableDataset): @@ -30,7 +37,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.config = config self.batch_size = config.training_spec.batch_size self.shuffle = shuffle - self.epoch = 0 + self._epoch_state = shared_int(0) + self._start_batch_state = shared_int(0) self.sampling_strategy = config.training_spec.sampling_strategy metadata_path = os.path.join(self.data_dir, "metadata.json") @@ -142,7 +150,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: def set_epoch(self, epoch: int): """Set the shuffle epoch.""" - self.epoch = epoch + write_shared_int(self._epoch_state, epoch) + + def set_start_batch(self, start_batch: int): + """Set the first global batch to yield on the next iteration.""" + write_shared_int(self._start_batch_state, start_batch) def _get_target_samples(self) -> int: """Return per-rank sample count under the configured sampling strategy.""" @@ -171,13 +183,15 @@ def __iter__( rank = dist.get_rank() if dist.is_initialized() else 0 worker_info = get_worker_info() - worker_id = worker_info.id if worker_info is not None else 0 + physical_worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 + epoch = read_shared_int(self._epoch_state) + start_batch = read_shared_int(self._start_batch_state) indices = torch.arange(self.n_samples) if self.shuffle: g = torch.Generator() - g.manual_seed(self.config.seed + self.epoch) + g.manual_seed(self.config.seed + epoch) indices = indices[torch.randperm(self.n_samples, generator=g)] indices_for_rank = indices[rank::world_size].tolist() @@ -202,8 +216,24 @@ def __iter__( indices_for_rank = indices_for_rank[: self.target_samples] sample_is_real = sample_is_real[: self.target_samples] + worker_batch_counts = [ + math.ceil(len(indices_for_rank[i::num_workers]) / self.batch_size) + for i in range(num_workers) + ] + worker_id, skip_batches = resolve_resume_worker( + start_batch, + physical_worker_id, + num_workers, + worker_batch_counts, + ) + indices_for_worker = indices_for_rank[worker_id::num_workers] sample_is_real_for_worker = sample_is_real[worker_id::num_workers] + skipped_samples = skip_samples_for_batches( + skip_batches, self.batch_size, len(indices_for_worker) + ) + indices_for_worker = indices_for_worker[skipped_samples:] + sample_is_real_for_worker = sample_is_real_for_worker[skipped_samples:] for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py index b45ed0cc..df1a71d1 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_parquet_lazy.py @@ -20,6 +20,13 @@ stored_window_layout_from_metadata, ) from sequifier.io.batch import SequifierBatch +from sequifier.io.iteration_state import ( + read_shared_int, + resolve_resume_worker, + shared_int, + skip_samples_for_batches, + write_shared_int, +) class SequifierDatasetFromFolderParquetLazy(IterableDataset): @@ -31,7 +38,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.config = config self.batch_size = config.training_spec.batch_size self.shuffle = shuffle - self.epoch = 0 + self._epoch_state = shared_int(0) + self._start_batch_state = shared_int(0) metadata_path = os.path.join(self.data_dir, "metadata.json") if not os.path.exists(metadata_path): @@ -75,7 +83,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: def set_epoch(self, epoch: int): """Set the shuffle epoch.""" - self.epoch = epoch + write_shared_int(self._epoch_state, epoch) + + def set_start_batch(self, start_batch: int): + """Set the first global batch to yield on the next iteration.""" + write_shared_int(self._start_batch_state, start_batch) def _get_target_samples(self) -> int: """Return per-rank sample count under the configured sampling strategy.""" @@ -144,8 +156,10 @@ def __iter__( rank = dist.get_rank() if dist.is_initialized() else 0 worker_info = get_worker_info() - worker_id = worker_info.id if worker_info is not None else 0 + physical_worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 + epoch = read_shared_int(self._epoch_state) + start_batch = read_shared_int(self._start_batch_state) num_files = len(self.batch_files_info) original_files_for_this_rank = list(range(rank, num_files, world_size)) @@ -162,18 +176,37 @@ def __iter__( base_samples_per_worker = self.target_samples // num_workers remainder = self.target_samples % num_workers + worker_sample_counts = [ + base_samples_per_worker + (1 if i < remainder else 0) + for i in range(num_workers) + ] + worker_batch_counts = [ + math.ceil(sample_count / self.batch_size) + for sample_count in worker_sample_counts + ] + worker_id, skip_batches = resolve_resume_worker( + start_batch, + physical_worker_id, + num_workers, + worker_batch_counts, + ) worker_start_sample = 0 for i in range(worker_id): - worker_start_sample += base_samples_per_worker + (1 if i < remainder else 0) + worker_start_sample += worker_sample_counts[i] - worker_target_samples = base_samples_per_worker + ( - 1 if worker_id < remainder else 0 - ) + worker_target_samples = worker_sample_counts[worker_id] worker_end_sample = worker_start_sample + worker_target_samples + skipped_samples = skip_samples_for_batches( + skip_batches, self.batch_size, worker_target_samples + ) + worker_start_sample += skipped_samples + worker_target_samples -= skipped_samples + if worker_target_samples <= 0: + return g = torch.Generator() - g.manual_seed(self.config.seed + self.epoch) + g.manual_seed(self.config.seed + epoch) if self.shuffle: file_order = torch.randperm(len(files_for_this_rank), generator=g).tolist() @@ -224,7 +257,7 @@ def __iter__( indices = torch.arange(file_samples) if self.shuffle: g_file = torch.Generator() - g_file.manual_seed(self.config.seed + self.epoch + f_id + rank) + g_file.manual_seed(self.config.seed + epoch + f_id + rank) indices = indices[torch.randperm(file_samples, generator=g_file)] worker_file_start_idx = max(0, worker_start_sample - file_start) diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt.py b/src/sequifier/io/sequifier_dataset_from_folder_pt.py index 7327fe93..469b044e 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt.py @@ -16,6 +16,13 @@ validate_stored_window_width, ) from sequifier.io.batch import SequifierBatch +from sequifier.io.iteration_state import ( + read_shared_int, + resolve_resume_worker, + shared_int, + skip_samples_for_batches, + write_shared_int, +) class SequifierDatasetFromFolderPt(IterableDataset): @@ -27,7 +34,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.config = config self.batch_size = config.training_spec.batch_size self.shuffle = shuffle - self.epoch = 0 + self._epoch_state = shared_int(0) + self._start_batch_state = shared_int(0) self.sampling_strategy = config.training_spec.sampling_strategy metadata_path = os.path.join(self.data_dir, "metadata.json") @@ -101,7 +109,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: def set_epoch(self, epoch: int): """Set the shuffle epoch.""" - self.epoch = epoch + write_shared_int(self._epoch_state, epoch) + + def set_start_batch(self, start_batch: int): + """Set the first global batch to yield on the next iteration.""" + write_shared_int(self._start_batch_state, start_batch) def _get_target_samples(self) -> int: """Return per-rank sample count under the configured sampling strategy.""" @@ -130,13 +142,15 @@ def __iter__( rank = dist.get_rank() if dist.is_initialized() else 0 worker_info = get_worker_info() - worker_id = worker_info.id if worker_info is not None else 0 + physical_worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 + epoch = read_shared_int(self._epoch_state) + start_batch = read_shared_int(self._start_batch_state) indices = torch.arange(self.n_samples) if self.shuffle: g = torch.Generator() - g.manual_seed(self.config.seed + self.epoch) + g.manual_seed(self.config.seed + epoch) indices = indices[torch.randperm(self.n_samples, generator=g)] indices_for_rank = indices[rank::world_size].tolist() @@ -161,8 +175,24 @@ def __iter__( indices_for_rank = indices_for_rank[: self.target_samples] sample_is_real = sample_is_real[: self.target_samples] + worker_batch_counts = [ + math.ceil(len(indices_for_rank[i::num_workers]) / self.batch_size) + for i in range(num_workers) + ] + worker_id, skip_batches = resolve_resume_worker( + start_batch, + physical_worker_id, + num_workers, + worker_batch_counts, + ) + indices_for_worker = indices_for_rank[worker_id::num_workers] sample_is_real_for_worker = sample_is_real[worker_id::num_workers] + skipped_samples = skip_samples_for_batches( + skip_batches, self.batch_size, len(indices_for_worker) + ) + indices_for_worker = indices_for_worker[skipped_samples:] + sample_is_real_for_worker = sample_is_real_for_worker[skipped_samples:] for i in range(0, len(indices_for_worker), self.batch_size): batch_indices = indices_for_worker[i : i + self.batch_size] diff --git a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py index 506d12b7..6754f3ec 100644 --- a/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py +++ b/src/sequifier/io/sequifier_dataset_from_folder_pt_lazy.py @@ -17,6 +17,13 @@ validate_stored_window_width, ) from sequifier.io.batch import SequifierBatch +from sequifier.io.iteration_state import ( + read_shared_int, + resolve_resume_worker, + shared_int, + skip_samples_for_batches, + write_shared_int, +) class SequifierDatasetFromFolderPtLazy(IterableDataset): @@ -28,7 +35,8 @@ def __init__(self, data_path: str, config: TrainModel, shuffle: bool = True): self.config = config self.batch_size = config.training_spec.batch_size self.shuffle = shuffle - self.epoch = 0 + self._epoch_state = shared_int(0) + self._start_batch_state = shared_int(0) metadata_path = os.path.join(self.data_dir, "metadata.json") if not os.path.exists(metadata_path): @@ -67,7 +75,11 @@ def _calculate_total_batches(self, target_samples: int) -> int: def set_epoch(self, epoch: int): """Set the shuffle epoch.""" - self.epoch = epoch + write_shared_int(self._epoch_state, epoch) + + def set_start_batch(self, start_batch: int): + """Set the first global batch to yield on the next iteration.""" + write_shared_int(self._start_batch_state, start_batch) def _get_target_samples(self) -> int: """Return per-rank sample count under the configured sampling strategy.""" @@ -136,8 +148,10 @@ def __iter__( rank = dist.get_rank() if dist.is_initialized() else 0 worker_info = get_worker_info() - worker_id = worker_info.id if worker_info is not None else 0 + physical_worker_id = worker_info.id if worker_info is not None else 0 num_workers = worker_info.num_workers if worker_info is not None else 1 + epoch = read_shared_int(self._epoch_state) + start_batch = read_shared_int(self._start_batch_state) num_files = len(self.batch_files_info) original_files_for_this_rank = list(range(rank, num_files, world_size)) @@ -154,18 +168,37 @@ def __iter__( base_samples_per_worker = self.target_samples // num_workers remainder = self.target_samples % num_workers + worker_sample_counts = [ + base_samples_per_worker + (1 if i < remainder else 0) + for i in range(num_workers) + ] + worker_batch_counts = [ + math.ceil(sample_count / self.batch_size) + for sample_count in worker_sample_counts + ] + worker_id, skip_batches = resolve_resume_worker( + start_batch, + physical_worker_id, + num_workers, + worker_batch_counts, + ) worker_start_sample = 0 for i in range(worker_id): - worker_start_sample += base_samples_per_worker + (1 if i < remainder else 0) + worker_start_sample += worker_sample_counts[i] - worker_target_samples = base_samples_per_worker + ( - 1 if worker_id < remainder else 0 - ) + worker_target_samples = worker_sample_counts[worker_id] worker_end_sample = worker_start_sample + worker_target_samples + skipped_samples = skip_samples_for_batches( + skip_batches, self.batch_size, worker_target_samples + ) + worker_start_sample += skipped_samples + worker_target_samples -= skipped_samples + if worker_target_samples <= 0: + return g = torch.Generator() - g.manual_seed(self.config.seed + self.epoch) + g.manual_seed(self.config.seed + epoch) if self.shuffle: file_order = torch.randperm(len(files_for_this_rank), generator=g).tolist() @@ -218,7 +251,7 @@ def __iter__( indices = torch.arange(file_samples) if self.shuffle: g_file = torch.Generator() - g_file.manual_seed(self.config.seed + self.epoch + f_id + rank) + g_file.manual_seed(self.config.seed + epoch + f_id + rank) indices = indices[torch.randperm(file_samples, generator=g_file)] worker_file_start_idx = max(0, worker_start_sample - file_start) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index c96cc857..9f65c4ce 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -230,9 +230,13 @@ def train_worker( latest_model_path, map_location="cpu", weights_only=False ) model._validate_checkpoint_compatibility(checkpoint, len(train_loader)) - model.load_state_dict(checkpoint["model_state_dict"]) - model.optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) - model.scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) + model.load_state_dict(copy.deepcopy(checkpoint["model_state_dict"])) + model.optimizer.load_state_dict( + copy.deepcopy(checkpoint["optimizer_state_dict"]) + ) + model.scheduler.load_state_dict( + copy.deepcopy(checkpoint["scheduler_state_dict"]) + ) base_model.start_epoch, base_model.start_batch = _checkpoint_start_position( checkpoint, len(train_loader) ) @@ -377,7 +381,7 @@ def train_worker( set_optimizer_state_dict( base_model, base_model.optimizer, - optim_state_dict=full_osd, + optim_state_dict=copy.deepcopy(full_osd), options=options, ) @@ -598,6 +602,46 @@ def _checkpoint_start_position( return checkpoint["epoch"], checkpoint["batch"] + 1 +def _update_file_metadata_hash(hasher: Any, file_path: str) -> None: + """Hash file identity metadata without reading the file contents.""" + normalized_path = os.path.abspath(file_path) + file_stat = os.stat(normalized_path) + hasher.update(normalized_path.encode("utf-8")) + hasher.update(str(file_stat.st_size).encode("utf-8")) + hasher.update(str(file_stat.st_mtime_ns).encode("utf-8")) + + +def _update_folder_dataset_metadata_hash(hasher: Any, data_dir: str) -> None: + """Hash folder dataset metadata and chunk file metadata.""" + metadata_path = os.path.join(data_dir, "metadata.json") + _update_file_metadata_hash(hasher, metadata_path) + + with open(metadata_path, "r") as f: + metadata = json.load(f) + + batch_files_info = metadata.get("batch_files") + if not isinstance(batch_files_info, list): + raise ValueError(f"metadata.json in {data_dir!r} is missing batch_files.") + + for file_info in batch_files_info: + relative_path = file_info["path"] + file_path = os.path.join(data_dir, relative_path) + hasher.update(str(relative_path).encode("utf-8")) + hasher.update(str(file_info.get("samples", "")).encode("utf-8")) + _update_file_metadata_hash(hasher, file_path) + + +def _dataset_metadata_fingerprint(data_path: str, config: TrainModel) -> str: + """Return a fast provenance fingerprint from filesystem metadata.""" + normalized_path = normalize_path(data_path, config.project_root) + hasher = hashlib.sha256() + if os.path.isdir(normalized_path): + _update_folder_dataset_metadata_hash(hasher, normalized_path) + else: + _update_file_metadata_hash(hasher, normalized_path) + return hasher.hexdigest() + + @beartype def accumulate_class_counts( counts: ClassCounts, @@ -1342,6 +1386,12 @@ def _checkpoint_compatibility_metadata( "n_classes": self.n_classes, "id_maps": self.hparams.id_maps, "special_token_ids": self.hparams.special_token_ids, + "training_data_fingerprint": _dataset_metadata_fingerprint( + self.hparams.training_data_path, self.hparams + ), + "validation_data_fingerprint": _dataset_metadata_fingerprint( + self.hparams.validation_data_path, self.hparams + ), "model_spec": self.hparams.model_spec.model_dump(mode="json"), } provenance = { @@ -1406,15 +1456,16 @@ def _validate_checkpoint_compatibility( if mismatches: mismatch_text = "; ".join(mismatches) - raise ValueError( - "Checkpoint is incompatible with the current training configuration: " + warnings.warn( + "Checkpoint is not identical with the current training configuration. " + "Ensure that this is the intended configuration. " f"{mismatch_text}" ) saved_fingerprint = checkpoint_metadata.get("config_fingerprint") current_fingerprint = current_metadata["config_fingerprint"] if saved_fingerprint != current_fingerprint: - raise ValueError( + warnings.warn( "Checkpoint configuration fingerprint mismatch: " f"checkpoint={saved_fingerprint!r}, current={current_fingerprint!r}" ) @@ -1739,17 +1790,26 @@ def _train_epoch( num_batches = len(train_loader) start_batch = self.start_batch self.start_batch = 0 + set_dataset_start_batch = getattr(train_loader.dataset, "set_start_batch", None) + dataset_handles_start_batch = callable(set_dataset_start_batch) + if dataset_handles_start_batch: + set_dataset_start_batch(start_batch) model_to_call = ddp_model if ddp_model is not None else self model_to_call.train() - for batch_count, batch in enumerate(train_loader): + for batch_offset, batch in enumerate(train_loader): if not isinstance(batch, SequifierBatch): raise TypeError( "Training DataLoader must yield SequifierBatch objects, " f"got {type(batch).__name__}." ) + batch_count = ( + start_batch + batch_offset + if dataset_handles_start_batch + else batch_offset + ) if batch_count >= start_batch: data = batch.inputs targets = batch.targets @@ -1985,6 +2045,9 @@ def _train_epoch( ) self.last_batch_save_time = time.time() + if dataset_handles_start_batch: + set_dataset_start_batch(0) + @beartype def _calculate_loss( self, @@ -2708,7 +2771,7 @@ def _save( model_state_dict = { k.replace("_orig_mod.", ""): v for k, v in self.state_dict().items() } - optim_state_dict = self.optimizer.state_dict() + optim_state_dict = copy.deepcopy(self.optimizer.state_dict()) rng_state = self._collect_rng_states_for_checkpoint() data_loader_generator_states = self._get_data_loader_generator_states() From 69024a18357d19e6451706faa9304c70212e5b36 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 14:31:05 +0200 Subject: [PATCH 73/81] WIP --- src/sequifier/train.py | 50 +++++------------------------------------- 1 file changed, 5 insertions(+), 45 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 9f65c4ce..92cc7c56 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -230,13 +230,9 @@ def train_worker( latest_model_path, map_location="cpu", weights_only=False ) model._validate_checkpoint_compatibility(checkpoint, len(train_loader)) - model.load_state_dict(copy.deepcopy(checkpoint["model_state_dict"])) - model.optimizer.load_state_dict( - copy.deepcopy(checkpoint["optimizer_state_dict"]) - ) - model.scheduler.load_state_dict( - copy.deepcopy(checkpoint["scheduler_state_dict"]) - ) + model.load_state_dict(checkpoint["model_state_dict"]) + model.optimizer.load_state_dict(checkpoint["optimizer_state_dict"]) + model.scheduler.load_state_dict(checkpoint["scheduler_state_dict"]) base_model.start_epoch, base_model.start_batch = _checkpoint_start_position( checkpoint, len(train_loader) ) @@ -381,7 +377,7 @@ def train_worker( set_optimizer_state_dict( base_model, base_model.optimizer, - optim_state_dict=copy.deepcopy(full_osd), + optim_state_dict=full_osd, options=options, ) @@ -611,37 +607,6 @@ def _update_file_metadata_hash(hasher: Any, file_path: str) -> None: hasher.update(str(file_stat.st_mtime_ns).encode("utf-8")) -def _update_folder_dataset_metadata_hash(hasher: Any, data_dir: str) -> None: - """Hash folder dataset metadata and chunk file metadata.""" - metadata_path = os.path.join(data_dir, "metadata.json") - _update_file_metadata_hash(hasher, metadata_path) - - with open(metadata_path, "r") as f: - metadata = json.load(f) - - batch_files_info = metadata.get("batch_files") - if not isinstance(batch_files_info, list): - raise ValueError(f"metadata.json in {data_dir!r} is missing batch_files.") - - for file_info in batch_files_info: - relative_path = file_info["path"] - file_path = os.path.join(data_dir, relative_path) - hasher.update(str(relative_path).encode("utf-8")) - hasher.update(str(file_info.get("samples", "")).encode("utf-8")) - _update_file_metadata_hash(hasher, file_path) - - -def _dataset_metadata_fingerprint(data_path: str, config: TrainModel) -> str: - """Return a fast provenance fingerprint from filesystem metadata.""" - normalized_path = normalize_path(data_path, config.project_root) - hasher = hashlib.sha256() - if os.path.isdir(normalized_path): - _update_folder_dataset_metadata_hash(hasher, normalized_path) - else: - _update_file_metadata_hash(hasher, normalized_path) - return hasher.hexdigest() - - @beartype def accumulate_class_counts( counts: ClassCounts, @@ -1386,12 +1351,6 @@ def _checkpoint_compatibility_metadata( "n_classes": self.n_classes, "id_maps": self.hparams.id_maps, "special_token_ids": self.hparams.special_token_ids, - "training_data_fingerprint": _dataset_metadata_fingerprint( - self.hparams.training_data_path, self.hparams - ), - "validation_data_fingerprint": _dataset_metadata_fingerprint( - self.hparams.validation_data_path, self.hparams - ), "model_spec": self.hparams.model_spec.model_dump(mode="json"), } provenance = { @@ -1896,6 +1855,7 @@ def _train_epoch( or (batch_count + 1) == num_batches ) optimizer_step_performed = False + if ( optimizer_step_due and accumulated_global_token_count.detach().cpu().item() > 0 From 49096fbd7baa8ce1f1d0ee8b45a6388dc258a6f1 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 14:32:50 +0200 Subject: [PATCH 74/81] Rename save_batch_interval_minutes to save_interval_minutes --- documentation/configs/hyperparameter-search.md | 4 ++-- documentation/configs/train.md | 4 ++-- documentation/consolidated-docs.md | 8 ++++---- .../config/hyperparameter_search_config.py | 8 ++++---- src/sequifier/config/train_config.py | 10 +++++----- src/sequifier/train.py | 14 ++++++-------- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/documentation/configs/hyperparameter-search.md b/documentation/configs/hyperparameter-search.md index 23402080..fa147d06 100644 --- a/documentation/configs/hyperparameter-search.md +++ b/documentation/configs/hyperparameter-search.md @@ -134,8 +134,8 @@ Most fields here are lists for sampling, but some are scalar values fixed for al | `scheduler` | `list[dict]` | No | `[{'name': 'StepLR'...}]`| List of scheduler configs. `scheduler.step()` is only called if \< total\_steps, so correct configuration is essential. | | `scheduler_step_on` | `str` | No | `epoch` | When to step the scheduler: `epoch` or `batch`. | | `save_latest_interval_minutes`| `float`| No | `null` | Time interval to overwrite a "latest" checkpoint. | -| `save_batch_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | -| `save_batch_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | +| `save_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | +| `save_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | | `calculate_validation_loss_on_initialization` | `bool` | No | `false` | Determines if a validation pass runs before epoch 1 begins. | | `log_interval` | `int` | No | `10` | Logging frequency (batches). | | `class_share_log_columns`| `list[str]`| No | `[]` | Columns for which to log the predicted class distribution in validation. | diff --git a/documentation/configs/train.md b/documentation/configs/train.md index 63d986d1..81efc1fb 100644 --- a/documentation/configs/train.md +++ b/documentation/configs/train.md @@ -72,8 +72,8 @@ These fields determine the size and complexity of the Transformer. | `class_weights` | `dict` | No | `null` | Weights for specific classes (useful for imbalanced datasets). | | `save_interval_epochs` | `int` | **Yes** | - | Save a checkpoint every N epochs. | | `save_latest_interval_minutes`| `float`| No | Time interval to overwrite a "latest" checkpoint. | -| `save_batch_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | -| `save_batch_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | +| `save_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | +| `save_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | | `calculate_validation_loss_on_initialization` | `bool` | No | Determines if a validation pass runs before epoch 1 begins. Defaults to true. | | `early_stopping_epochs`| `int` | No | `null` | Stop training if validation loss doesn't improve for N epochs. | | `log_interval` | `int` | No | `10` | Print training logs every N batches. | diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index c02aa5bf..20d6f439 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -421,8 +421,8 @@ These fields determine the size and complexity of the Transformer. | `class_weights` | `dict` | No | `null` | Weights for specific classes (useful for imbalanced datasets). | | `save_interval_epochs` | `int` | **Yes** | - | Save a checkpoint every N epochs. | | `save_latest_interval_minutes`| `float`| No | Time interval to overwrite a "latest" checkpoint. | -| `save_batch_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | -| `save_batch_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | +| `save_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | +| `save_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | | `calculate_validation_loss_on_initialization` | `bool` | No | Determines if a validation pass runs before epoch 1 begins. Defaults to true. | | `early_stopping_epochs`| `int` | No | `null` | Stop training if validation loss doesn't improve for N epochs. | | `log_interval` | `int` | No | `10` | Print training logs every N batches. | @@ -863,8 +863,8 @@ Most fields here are lists for sampling, but some are scalar values fixed for al | `scheduler` | `list[dict]` | No | `[{'name': 'StepLR'...}]`| List of scheduler configs. `scheduler.step()` is only called if \< total\_steps, so correct configuration is essential. | | `scheduler_step_on` | `str` | No | `epoch` | When to step the scheduler: `epoch` or `batch`. | | `save_latest_interval_minutes`| `float`| No | `null` | Time interval to overwrite a "latest" checkpoint. | -| `save_batch_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | -| `save_batch_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | +| `save_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | +| `save_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | | `calculate_validation_loss_on_initialization` | `bool` | No | `false` | Determines if a validation pass runs before epoch 1 begins. | | `log_interval` | `int` | No | `10` | Logging frequency (batches). | | `class_share_log_columns`| `list[str]`| No | `[]` | Columns for which to log the predicted class distribution in validation. | diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index 0ca0ccfe..ce1afc65 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -216,8 +216,8 @@ class TrainingSpecHyperparameterSampling(BaseModel): early_stopping_epochs: Optional[int] = None save_interval_epochs: int save_latest_interval_minutes: Optional[float] = None - save_batch_interval_minutes: Optional[float] = None - save_batch_interval_minutes_val_loss: bool = True + save_interval_minutes: Optional[float] = None + save_interval_minutes_val_loss: bool = True calculate_validation_loss_on_initialization: bool = False training_objective: list[str] = Field(default_factory=lambda: ["causal"]) @@ -398,8 +398,8 @@ def sample_trial(self, trial: Any) -> TrainingSpecModel: early_stopping_epochs=self.early_stopping_epochs, save_interval_epochs=self.save_interval_epochs, save_latest_interval_minutes=self.save_latest_interval_minutes, - save_batch_interval_minutes=self.save_batch_interval_minutes, - save_batch_interval_minutes_val_loss=self.save_batch_interval_minutes_val_loss, + save_interval_minutes=self.save_interval_minutes, + save_interval_minutes_val_loss=self.save_interval_minutes_val_loss, calculate_validation_loss_on_initialization=self.calculate_validation_loss_on_initialization, batch_size=batch_size, learning_rate=learning_rate, diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 21d2457d..9d799a12 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -216,8 +216,8 @@ class TrainingSpecModel(BaseModel): early_stopping_epochs: Optional[int] = None save_interval_epochs: int save_latest_interval_minutes: Optional[float] = None - save_batch_interval_minutes: Optional[float] = None - save_batch_interval_minutes_val_loss: bool = True + save_interval_minutes: Optional[float] = None + save_interval_minutes_val_loss: bool = True calculate_validation_loss_on_initialization: bool = True batch_size: int learning_rate: float @@ -635,11 +635,11 @@ def validate_training_spec(cls, v, info): raise ValueError("save_latest_interval_minutes must be larger than 0") if ( - v.save_batch_interval_minutes is not None + v.save_interval_minutes is not None and not os.getenv("SEQUIFIER_TESTING", "0") == "1" - and v.save_batch_interval_minutes == 0 + and v.save_interval_minutes == 0 ): - raise ValueError("save_batch_interval_minutes must be larger than 0") + raise ValueError("save_interval_minutes must be larger than 0") if v.torch_compile not in ["outer", "inner", "none"]: raise ValueError( diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 92cc7c56..a1953e56 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -880,11 +880,9 @@ def __init__( self.save_latest_interval_minutes = ( hparams.training_spec.save_latest_interval_minutes ) - self.save_batch_interval_minutes = ( - hparams.training_spec.save_batch_interval_minutes - ) - self.save_batch_interval_minutes_val_loss = ( - hparams.training_spec.save_batch_interval_minutes_val_loss + self.save_interval_minutes = hparams.training_spec.save_interval_minutes + self.save_interval_minutes_val_loss = ( + hparams.training_spec.save_interval_minutes_val_loss ) self.continue_training = hparams.training_spec.continue_training @@ -1936,9 +1934,9 @@ def _train_epoch( ) >= (self.save_latest_interval_minutes * 60): should_save_latest[0] = 1 - if self.save_batch_interval_minutes is not None and ( + if self.save_interval_minutes is not None and ( elapsed_since_batch_save - ) >= (self.save_batch_interval_minutes * 60): + ) >= (self.save_interval_minutes * 60): should_save_batch[0] = 1 if self.hparams.training_spec.distributed: @@ -1947,7 +1945,7 @@ def _train_epoch( dist.barrier() if should_save_batch.item() == 1: - if self.save_batch_interval_minutes_val_loss: + if self.save_interval_minutes_val_loss: val_loss, val_losses, class_counts = self._evaluate( valid_loader, ddp_model ) From 9e61362f6a1119f02f7f78d0ab50e4909feed4ff Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 15:01:58 +0200 Subject: [PATCH 75/81] Rename interval checkpointing vars --- README.md | 2 +- docs/source/conf.py | 2 +- .../configs/hyperparameter-search.md | 3 ++- documentation/configs/train.md | 3 ++- documentation/consolidated-docs.md | 8 ++++--- pyproject.toml | 2 +- .../config/hyperparameter_search_config.py | 6 +++-- src/sequifier/config/train_config.py | 10 +++++++- src/sequifier/train.py | 23 +++++++++++++------ 9 files changed, 41 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 10cb0085..c999411d 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Please cite with: title = {sequifier - causal transformer models for multivariate sequence modelling}, year = {2025}, publisher = {GitHub}, - version = {v2.0.0.0}, + version = {v1.9.9.9}, url = {[https://github.com/0xideas/sequifier](https://github.com/0xideas/sequifier)} } diff --git a/docs/source/conf.py b/docs/source/conf.py index b0b88606..3d5bd0d0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -15,7 +15,7 @@ project = 'sequifier' copyright = '2025, Leon Luithlen' author = 'Leon Luithlen' -release = 'v2.0.0.0' +release = 'v1.9.9.9' html_baseurl = 'https://www.sequifier.com/' # -- General configuration --------------------------------------------------- diff --git a/documentation/configs/hyperparameter-search.md b/documentation/configs/hyperparameter-search.md index fa147d06..ab453dbe 100644 --- a/documentation/configs/hyperparameter-search.md +++ b/documentation/configs/hyperparameter-search.md @@ -135,7 +135,8 @@ Most fields here are lists for sampling, but some are scalar values fixed for al | `scheduler_step_on` | `str` | No | `epoch` | When to step the scheduler: `epoch` or `batch`. | | `save_latest_interval_minutes`| `float`| No | `null` | Time interval to overwrite a "latest" checkpoint. | | `save_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | -| `save_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | +| `save_interval_batches` | `int` | No | `null` | Batch interval to save a unique, batch-specific checkpoint. | +| `save_interval_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | | `calculate_validation_loss_on_initialization` | `bool` | No | `false` | Determines if a validation pass runs before epoch 1 begins. | | `log_interval` | `int` | No | `10` | Logging frequency (batches). | | `class_share_log_columns`| `list[str]`| No | `[]` | Columns for which to log the predicted class distribution in validation. | diff --git a/documentation/configs/train.md b/documentation/configs/train.md index 81efc1fb..a663ed46 100644 --- a/documentation/configs/train.md +++ b/documentation/configs/train.md @@ -73,7 +73,8 @@ These fields determine the size and complexity of the Transformer. | `save_interval_epochs` | `int` | **Yes** | - | Save a checkpoint every N epochs. | | `save_latest_interval_minutes`| `float`| No | Time interval to overwrite a "latest" checkpoint. | | `save_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | -| `save_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | +| `save_interval_batches` | `int` | No | Batch interval to save a unique, batch-specific checkpoint. | +| `save_interval_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | | `calculate_validation_loss_on_initialization` | `bool` | No | Determines if a validation pass runs before epoch 1 begins. Defaults to true. | | `early_stopping_epochs`| `int` | No | `null` | Stop training if validation loss doesn't improve for N epochs. | | `log_interval` | `int` | No | `10` | Print training logs every N batches. | diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 20d6f439..96318dab 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -199,7 +199,7 @@ Please cite with: title = {sequifier - causal transformer models for multivariate sequence modelling}, year = {2025}, publisher = {GitHub}, - version = {v2.0.0.0}, + version = {v1.9.9.9}, url = {[https://github.com/0xideas/sequifier](https://github.com/0xideas/sequifier)} } @@ -422,7 +422,8 @@ These fields determine the size and complexity of the Transformer. | `save_interval_epochs` | `int` | **Yes** | - | Save a checkpoint every N epochs. | | `save_latest_interval_minutes`| `float`| No | Time interval to overwrite a "latest" checkpoint. | | `save_interval_minutes` | `float` | No | Time interval to save a unique, batch-specific checkpoint. | -| `save_interval_minutes_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | +| `save_interval_batches` | `int` | No | Batch interval to save a unique, batch-specific checkpoint. | +| `save_interval_val_loss` | `bool` | No | Whether to calculate validation loss at the moment of the batch interval save. Defaults to true. | | `calculate_validation_loss_on_initialization` | `bool` | No | Determines if a validation pass runs before epoch 1 begins. Defaults to true. | | `early_stopping_epochs`| `int` | No | `null` | Stop training if validation loss doesn't improve for N epochs. | | `log_interval` | `int` | No | `10` | Print training logs every N batches. | @@ -864,7 +865,8 @@ Most fields here are lists for sampling, but some are scalar values fixed for al | `scheduler_step_on` | `str` | No | `epoch` | When to step the scheduler: `epoch` or `batch`. | | `save_latest_interval_minutes`| `float`| No | `null` | Time interval to overwrite a "latest" checkpoint. | | `save_interval_minutes` | `float` | No | `null` | Time interval to save a unique, batch-specific checkpoint. | -| `save_interval_minutes_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | +| `save_interval_batches` | `int` | No | `null` | Batch interval to save a unique, batch-specific checkpoint. | +| `save_interval_val_loss` | `bool` | No | `true` | Whether to calculate validation loss at the moment of the batch interval save. | | `calculate_validation_loss_on_initialization` | `bool` | No | `false` | Determines if a validation pass runs before epoch 1 begins. | | `log_interval` | `int` | No | `10` | Logging frequency (batches). | | `class_share_log_columns`| `list[str]`| No | `[]` | Columns for which to log the predicted class distribution in validation. | diff --git a/pyproject.toml b/pyproject.toml index b6550e5c..70f90047 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sequifier" -version = "v2.0.0.0" +version = "v1.9.9.9" authors = [ { name = "Leon Luithlen", email = "leontimnaluithlen@gmail.com" }, ] diff --git a/src/sequifier/config/hyperparameter_search_config.py b/src/sequifier/config/hyperparameter_search_config.py index ce1afc65..122b48f8 100644 --- a/src/sequifier/config/hyperparameter_search_config.py +++ b/src/sequifier/config/hyperparameter_search_config.py @@ -217,7 +217,8 @@ class TrainingSpecHyperparameterSampling(BaseModel): save_interval_epochs: int save_latest_interval_minutes: Optional[float] = None save_interval_minutes: Optional[float] = None - save_interval_minutes_val_loss: bool = True + save_interval_val_loss: bool = True + save_interval_batches: Optional[int] = None calculate_validation_loss_on_initialization: bool = False training_objective: list[str] = Field(default_factory=lambda: ["causal"]) @@ -399,7 +400,8 @@ def sample_trial(self, trial: Any) -> TrainingSpecModel: save_interval_epochs=self.save_interval_epochs, save_latest_interval_minutes=self.save_latest_interval_minutes, save_interval_minutes=self.save_interval_minutes, - save_interval_minutes_val_loss=self.save_interval_minutes_val_loss, + save_interval_batches=self.save_interval_batches, + save_interval_val_loss=self.save_interval_val_loss, calculate_validation_loss_on_initialization=self.calculate_validation_loss_on_initialization, batch_size=batch_size, learning_rate=learning_rate, diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index 9d799a12..c5eff0b6 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -217,7 +217,8 @@ class TrainingSpecModel(BaseModel): save_interval_epochs: int save_latest_interval_minutes: Optional[float] = None save_interval_minutes: Optional[float] = None - save_interval_minutes_val_loss: bool = True + save_interval_batches: Optional[int] = None + save_interval_val_loss: bool = True calculate_validation_loss_on_initialization: bool = True batch_size: int learning_rate: float @@ -641,6 +642,13 @@ def validate_training_spec(cls, v, info): ): raise ValueError("save_interval_minutes must be larger than 0") + if ( + v.save_interval_batches is not None + and not os.getenv("SEQUIFIER_TESTING", "0") == "1" + and v.save_interval_batches == 0 + ): + raise ValueError("save_interval_batches must be larger than 0") + if v.torch_compile not in ["outer", "inner", "none"]: raise ValueError( f'torch_compile {v.torch_compile} invalid, must be one of ["outer", "inner", "none"]' diff --git a/src/sequifier/train.py b/src/sequifier/train.py index a1953e56..a499db76 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -881,9 +881,7 @@ def __init__( hparams.training_spec.save_latest_interval_minutes ) self.save_interval_minutes = hparams.training_spec.save_interval_minutes - self.save_interval_minutes_val_loss = ( - hparams.training_spec.save_interval_minutes_val_loss - ) + self.save_interval_val_loss = hparams.training_spec.save_interval_val_loss self.continue_training = hparams.training_spec.continue_training use_scaler = False @@ -1565,6 +1563,9 @@ def train_model( try: self.last_latest_save_time = time.time() self.last_batch_save_time = time.time() + self.last_batch_save_global_step = (self.start_epoch - 1) * len( + train_loader + ) + self.start_batch if ( self.start_epoch == 1 @@ -1927,6 +1928,10 @@ def _train_epoch( current_time = time.time() elapsed_since_batch_save = current_time - self.last_batch_save_time + current_global_step = (epoch - 1) * num_batches + (batch_count + 1) + batches_since_batch_save = ( + current_global_step - self.last_batch_save_global_step + ) if not self.hparams.training_spec.distributed or self.rank == 0: if self.save_latest_interval_minutes is not None and ( @@ -1939,13 +1944,19 @@ def _train_epoch( ) >= (self.save_interval_minutes * 60): should_save_batch[0] = 1 + if ( + self.save_interval_batches is not None + and batches_since_batch_save >= self.save_interval_batches + ): + should_save_batch[0] = 1 + if self.hparams.training_spec.distributed: dist.broadcast(should_save_latest, src=0) dist.broadcast(should_save_batch, src=0) dist.barrier() if should_save_batch.item() == 1: - if self.save_interval_minutes_val_loss: + if self.save_interval_val_loss: val_loss, val_losses, class_counts = self._evaluate( valid_loader, ddp_model ) @@ -1954,9 +1965,6 @@ def _train_epoch( not self.hparams.training_spec.distributed or self.rank == 0 ): - current_global_step = (epoch - 1) * num_batches + ( - batch_count + 1 - ) self._log_epoch_results( 0, batch_count + 1, @@ -2002,6 +2010,7 @@ def _train_epoch( num_batches=num_batches, ) self.last_batch_save_time = time.time() + self.last_batch_save_global_step = current_global_step if dataset_handles_start_batch: set_dataset_start_batch(0) From 1171da5664fead28ef40775f2638ffe27bf8f724 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 16:21:43 +0200 Subject: [PATCH 76/81] Add self.save_interval_batches --- src/sequifier/train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index a499db76..ce8fbad6 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -881,6 +881,7 @@ def __init__( hparams.training_spec.save_latest_interval_minutes ) self.save_interval_minutes = hparams.training_spec.save_interval_minutes + self.save_interval_batches = hparams.training_spec.save_interval_batches self.save_interval_val_loss = hparams.training_spec.save_interval_val_loss self.continue_training = hparams.training_spec.continue_training From 89cf33c9c82ad8c7c1ef8fbcf82476aafd942e14 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 16:58:17 +0200 Subject: [PATCH 77/81] remove accumulated_global_token_count, empty_global_batches, global_token_count --- src/sequifier/train.py | 30 ++++++------------------------ uv.lock | 36 ++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 42 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index ce8fbad6..3fc97caf 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -1739,10 +1739,7 @@ def _train_epoch( """Run one train epoch with optional mid-epoch saves.""" target_names = self._loss_target_names() train_loss_sums, train_token_count = self._new_loss_accumulators(target_names) - empty_global_batches = 0 - accumulated_global_token_count = torch.zeros( - (), device=self.device, dtype=torch.int64 - ) + batches_aggregated = 0 start_time = time.time() @@ -1814,7 +1811,6 @@ def _train_epoch( backward_components, local_loss_sums, local_token_count, - global_token_count, ) = self._calculate_training_loss(output, targets, metadata) else: output = model_to_call(data, metadata=metadata, return_logits=True) @@ -1823,7 +1819,6 @@ def _train_epoch( backward_components, local_loss_sums, local_token_count, - global_token_count, ) = self._calculate_training_loss(output, targets, metadata) if self.accumulation_steps is None: @@ -1845,9 +1840,6 @@ def _train_epoch( local_loss_sums, local_token_count, ) - accumulated_global_token_count += global_token_count.detach() - if global_token_count.detach().cpu().item() == 0: - empty_global_batches += 1 optimizer_step_due = ( self.accumulation_steps is None @@ -1856,10 +1848,7 @@ def _train_epoch( ) optimizer_step_performed = False - if ( - optimizer_step_due - and accumulated_global_token_count.detach().cpu().item() > 0 - ): + if optimizer_step_due: self.scaler.unscale_(self.optimizer) torch.nn.utils.clip_grad_norm_(self.parameters(), 0.5) @@ -1872,7 +1861,6 @@ def _train_epoch( if optimizer_step_due: if not optimizer_step_performed: self.optimizer.zero_grad() - accumulated_global_token_count.zero_() batches_aggregated += 1 if (batch_count + 1) % self.log_interval == 0: @@ -1891,16 +1879,10 @@ def _train_epoch( self.logger.info( f"[INFO] Epoch {epoch:3d} | Batch {(batch_count+1):5d}/{num_batches:5d} | Loss: {format_number(avg_train_loss.detach().cpu().item())} | LR: {format_number(learning_rate)} | S/Batch {format_number(s_per_batch)}" ) - if empty_global_batches > 0: - self.logger.warning( - "[WARNING] " - f"{empty_global_batches} training microbatch(es) " - "in this logging window contained no selected tokens." - ) + train_loss_sums, train_token_count = self._new_loss_accumulators( target_names ) - empty_global_batches = 0 if self.rank == 0: batches_aggregated = 0 self.start_batch = 0 @@ -2024,7 +2006,7 @@ def _calculate_loss( metadata: dict[str, Tensor], ) -> tuple[Tensor, dict[str, Tensor]]: """Return backward-scaled loss and components for the current rank.""" - loss, backward_components, _, _, _ = self._calculate_training_loss( + loss, backward_components, _, _ = self._calculate_training_loss( output, targets, metadata ) return loss, backward_components @@ -2035,7 +2017,7 @@ def _calculate_training_loss( output: dict[str, Tensor], targets: dict[str, Tensor], metadata: dict[str, Tensor], - ) -> tuple[Tensor, dict[str, Tensor], dict[str, Tensor], Tensor, Tensor]: + ) -> tuple[Tensor, dict[str, Tensor], dict[str, Tensor], Tensor]: """Return the normalized backward loss plus local metric primitives.""" target_names = self._loss_target_names(targets) if not target_names: @@ -2079,7 +2061,7 @@ def _calculate_training_loss( "Loss calculation failed; no loss tensors were generated." ) - return loss, backward_components, local_sums, local_count, global_count + return loss, backward_components, local_sums, local_count @beartype def _calculate_local_loss_components( diff --git a/uv.lock b/uv.lock index f078af13..f4d5481e 100644 --- a/uv.lock +++ b/uv.lock @@ -285,7 +285,7 @@ name = "cuda-bindings" version = "13.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cuda-pathfinder" }, + { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/a9/21/8464d133752951c154feafb3b65c297e7d80f301183d220bec4c830f1441/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:120fcc53d57903df529c3486962c56528cba5b7d6c57c99537320ed9922c8b86", size = 6073403, upload-time = "2026-05-29T23:11:36.22Z" }, @@ -320,34 +320,34 @@ wheels = [ [package.optional-dependencies] cudart = [ - { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cuda-runtime", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] cufft = [ - { name = "nvidia-cufft", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cufft", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] cufile = [ { name = "nvidia-cufile", marker = "sys_platform == 'linux'" }, ] cupti = [ - { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cuda-cupti", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] curand = [ - { name = "nvidia-curand", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-curand", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] cusolver = [ - { name = "nvidia-cusolver", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cusolver", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] cusparse = [ - { name = "nvidia-cusparse", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] nvjitlink = [ - { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] nvrtc = [ - { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] nvtx = [ - { name = "nvidia-nvtx", marker = "sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "nvidia-nvtx", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or sys_platform == 'linux'" }, ] [[package]] @@ -962,7 +962,7 @@ name = "nvidia-cublas" version = "13.1.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cuda-nvrtc" }, + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" }, @@ -1001,7 +1001,7 @@ name = "nvidia-cudnn-cu13" version = "9.20.0.48" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas" }, + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, @@ -1013,7 +1013,7 @@ name = "nvidia-cufft" version = "12.0.0.61" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, @@ -1043,9 +1043,9 @@ name = "nvidia-cusolver" version = "12.0.4.66" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas" }, - { name = "nvidia-cusparse" }, - { name = "nvidia-nvjitlink" }, + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, @@ -1057,7 +1057,7 @@ name = "nvidia-cusparse" version = "12.6.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, @@ -1918,7 +1918,7 @@ wheels = [ [[package]] name = "sequifier" -version = "2.0.0.0" +version = "1.9.9.9" source = { editable = "." } dependencies = [ { name = "beartype" }, From 7f08cd4220e23b49193c8bf0dad0779918b5a539 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Sat, 20 Jun 2026 19:08:07 +0200 Subject: [PATCH 78/81] prevent layer_type_dtypes with FSDP --- src/sequifier/config/train_config.py | 12 ++++++++++++ src/sequifier/train.py | 27 +++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/sequifier/config/train_config.py b/src/sequifier/config/train_config.py index c5eff0b6..da28e1a8 100644 --- a/src/sequifier/config/train_config.py +++ b/src/sequifier/config/train_config.py @@ -654,6 +654,18 @@ def validate_training_spec(cls, v, info): f'torch_compile {v.torch_compile} invalid, must be one of ["outer", "inner", "none"]' ) + if v.data_parallelism == "FSDP": + if v.layer_type_dtypes is not None: + raise ValueError( + "FSDP does not support manual layer pre-casting. Please set " + "'layer_type_dtypes' to null when using FSDP, and rely on " + "'layer_autocast' (MixedPrecisionPolicy) instead." + ) + if v.fsdp_cpu_offload is None: + raise ValueError( + "If data_parallelism == 'FSDP', fsdp_cpu_offload cannot be None" + ) + if v.data_parallelism == "FSDP" and v.torch_compile == "outer": raise ValueError( "If data_parallelism is set to 'FSDP' then torch_compile must be one of 'none' and 'inner'" diff --git a/src/sequifier/train.py b/src/sequifier/train.py index 3fc97caf..cd22b4fb 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -269,18 +269,19 @@ def train_worker( ) # 1D mesh for standard ZeRO-3 full sharding model._data_parallel_group = mesh.get_group() - mp_policy = None if config.training_spec.layer_autocast: amp_dtype = get_torch_dtype( config.training_spec.layer_type_dtypes.get("linear", "bfloat16") if config.training_spec.layer_type_dtypes else "bfloat16" ) - mp_policy = MixedPrecisionPolicy( - param_dtype=amp_dtype, - reduce_dtype=amp_dtype, - output_dtype=amp_dtype, - ) + else: + amp_dtype = torch.float32 + mp_policy = MixedPrecisionPolicy( + param_dtype=amp_dtype, + reduce_dtype=amp_dtype, + output_dtype=amp_dtype, + ) offload_policy = ( OffloadPolicy() if config.training_spec.fsdp_cpu_offload else None @@ -1429,12 +1430,13 @@ def _validate_checkpoint_compatibility( @beartype def _get_rng_state(self) -> dict[str, Any]: """Capture Python, NumPy, Torch CPU, and CUDA RNG state for this rank.""" + device = torch.device(self.device) return { "python": random.getstate(), "numpy": np.random.get_state(), "torch": torch.get_rng_state(), - "cuda": torch.cuda.get_rng_state_all() - if torch.cuda.is_available() + "cuda": torch.cuda.get_rng_state(device=device) + if device.type == "cuda" and torch.cuda.is_available() else None, } @@ -1543,8 +1545,13 @@ def _restore_rng_state(self) -> None: np.random.set_state(rng_state["numpy"]) torch.set_rng_state(rng_state["torch"]) cuda_state = rng_state.get("cuda") - if cuda_state is not None and torch.cuda.is_available(): - torch.cuda.set_rng_state_all(cuda_state) + device = torch.device(self.device) + if ( + cuda_state is not None + and device.type == "cuda" + and torch.cuda.is_available() + ): + torch.cuda.set_rng_state(cuda_state, device=device) @beartype def train_model( From e8427806459dc485181e8c754e87cf84556f20d7 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Mon, 22 Jun 2026 15:01:23 +0200 Subject: [PATCH 79/81] Fix FSDP mixed precision policy --- src/sequifier/train.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/sequifier/train.py b/src/sequifier/train.py index cd22b4fb..ccdb4e11 100644 --- a/src/sequifier/train.py +++ b/src/sequifier/train.py @@ -269,30 +269,28 @@ def train_worker( ) # 1D mesh for standard ZeRO-3 full sharding model._data_parallel_group = mesh.get_group() + fsdp_kwargs = {"mesh": mesh} if config.training_spec.layer_autocast: amp_dtype = get_torch_dtype( config.training_spec.layer_type_dtypes.get("linear", "bfloat16") if config.training_spec.layer_type_dtypes else "bfloat16" ) + + fsdp_kwargs["mp_policy"] = MixedPrecisionPolicy( + param_dtype=amp_dtype, + reduce_dtype=amp_dtype, + output_dtype=amp_dtype, + ) else: - amp_dtype = torch.float32 - mp_policy = MixedPrecisionPolicy( - param_dtype=amp_dtype, - reduce_dtype=amp_dtype, - output_dtype=amp_dtype, - ) + fsdp_kwargs["mp_policy"] = MixedPrecisionPolicy() - offload_policy = ( - OffloadPolicy() if config.training_spec.fsdp_cpu_offload else None - ) + if config.training_spec.fsdp_cpu_offload: + fsdp_kwargs["offload_policy"] = OffloadPolicy() for layer in model.layers: - fully_shard( - layer, mesh=mesh, mp_policy=mp_policy, offload_policy=offload_policy - ) - fully_shard( - model, mesh=mesh, mp_policy=mp_policy, offload_policy=offload_policy - ) + fully_shard(layer, **fsdp_kwargs) + + fully_shard(model, **fsdp_kwargs) dist.barrier() params_to_optimize = model.parameters() From c5e452518b01613a2d1419e541400470b88dd6a9 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 23 Jun 2026 11:54:16 +0200 Subject: [PATCH 80/81] Add type casting to preprocessing --- documentation/configs/preprocess.md | 1 + documentation/consolidated-docs.md | 1 + src/sequifier/config/preprocess_config.py | 27 +- src/sequifier/helpers.py | 67 ++++- src/sequifier/make.py | 1 + src/sequifier/preprocess.py | 293 ++++++++++++++++++++-- 6 files changed, 354 insertions(+), 36 deletions(-) diff --git a/documentation/configs/preprocess.md b/documentation/configs/preprocess.md index 8837d3f0..283af613 100644 --- a/documentation/configs/preprocess.md +++ b/documentation/configs/preprocess.md @@ -36,6 +36,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | +| `column_types` | `dict[str, str]` | No | `null` | Optional output dtype map for processed columns, such as `Float32`, `Float64`, `Int32`, or `Int64`. If set, every processed column must be included. Parquet uses one unified sequence dtype; `pt` writes each variable to its configured tensor dtype. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | | `mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | diff --git a/documentation/consolidated-docs.md b/documentation/consolidated-docs.md index 96318dab..35e0e293 100644 --- a/documentation/consolidated-docs.md +++ b/documentation/consolidated-docs.md @@ -244,6 +244,7 @@ The configuration is defined in a YAML file (e.g., `preprocess.yaml`). Below are | Field | Type | Mandatory | Default | Description | | :--- | :--- | :--- | :--- | :--- | | `selected_columns` | `list[str]` | No | `null` | A specific list of columns to process. If `null`, all columns (except metadata) are processed. | +| `column_types` | `dict[str, str]` | No | `null` | Optional output dtype map for processed columns, such as `Float32`, `Float64`, `Int32`, or `Int64`. If set, every processed column must be included. Parquet uses one unified sequence dtype; `pt` writes each variable to its configured tensor dtype. | | `max_rows` | `int` | No | `null` | Limits processing to the first N rows. Useful for rapid debugging. | | `metadata_config_path` | `Optional[str]` | No | `null` | use a preexisting metadata config path for tokenizing discrete columns and standardising real-valued columns | | `mask_column` | `Optional[str]` | No | `null` | Optional input column used as a row-level mask. If set, `metadata_config_path` must also be set. | diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index ef1cdf4c..36d1d0f9 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -14,7 +14,7 @@ model_validator, ) -from sequifier.helpers import try_catch_excess_keys +from sequifier.helpers import canonicalize_polars_dtype_name, try_catch_excess_keys @beartype @@ -44,6 +44,7 @@ class PreprocessorModel(BaseModel): merge_output: bool = True allow_sequence_splitting: bool = False selected_columns: Optional[list[str]] = None + column_types: Optional[dict[str, str]] = None split_ratios: list[float] stored_context_width: int = Field(gt=0) @@ -138,6 +139,30 @@ def validate_batches_per_file(cls, v: int) -> int: raise ValueError("batches_per_file must be a positive integer") return v + @field_validator("column_types") + @classmethod + def validate_column_types( + cls, v: Optional[dict[str, str]], info: ValidationInfo + ) -> Optional[dict[str, str]]: + if v is None: + return None + + normalized = { + column: canonicalize_polars_dtype_name(dtype) for column, dtype in v.items() + } + selected_columns = info.data.get("selected_columns") + if selected_columns is not None: + missing_columns = [ + column for column in selected_columns if column not in normalized + ] + if missing_columns: + raise ValueError( + "column_types must include every selected column. " + f"Missing: {missing_columns}" + ) + + return normalized + @field_validator("continue_preprocessing") @classmethod def validate_continue_preprocessing(cls, v: bool, info: ValidationInfo) -> bool: diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index 4faee46b..b2a846b0 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -19,8 +19,8 @@ from sequifier.special_tokens import SPECIAL_TOKEN_IDS PANDAS_TO_TORCH_TYPES = { - "Float64": torch.float32, - "float64": torch.float32, + "Float64": torch.float64, + "float64": torch.float64, "Float32": torch.float32, "float32": torch.float32, "Float16": torch.float16, @@ -33,16 +33,63 @@ "int16": torch.int16, "Int8": torch.int8, "int8": torch.int8, - "UInt64": torch.int64, - "uint64": torch.int64, - "UInt32": torch.int64, - "uint32": torch.int64, - "UInt16": torch.int32, - "uint16": torch.int32, - "UInt8": torch.int16, - "uint8": torch.int16, + "UInt64": torch.uint64, + "uint64": torch.uint64, + "UInt32": torch.uint32, + "uint32": torch.uint32, + "UInt16": torch.uint16, + "uint16": torch.uint16, + "UInt8": torch.uint8, + "uint8": torch.uint8, } +POLARS_NUMERIC_DTYPES = { + "Float64": pl.Float64, + "Float32": pl.Float32, + "Float16": pl.Float16, + "Int64": pl.Int64, + "Int32": pl.Int32, + "Int16": pl.Int16, + "Int8": pl.Int8, + "UInt64": pl.UInt64, + "UInt32": pl.UInt32, + "UInt16": pl.UInt16, + "UInt8": pl.UInt8, +} + +POLARS_NUMERIC_DTYPE_ALIASES = { + alias: canonical + for canonical in POLARS_NUMERIC_DTYPES + for alias in (canonical, canonical.lower()) +} + + +@beartype +def canonicalize_polars_dtype_name(dtype_name: str) -> str: + dtype_name = dtype_name.strip() + if dtype_name not in POLARS_NUMERIC_DTYPE_ALIASES: + raise ValueError( + f"Unsupported column type '{dtype_name}'. " + f"Supported types are: {sorted(POLARS_NUMERIC_DTYPES)}" + ) + return POLARS_NUMERIC_DTYPE_ALIASES[dtype_name] + + +@beartype +def polars_dtype_from_name(dtype_name: str) -> Any: + return POLARS_NUMERIC_DTYPES[canonicalize_polars_dtype_name(dtype_name)] + + +@beartype +def is_float_dtype_name(dtype_name: str) -> bool: + return canonicalize_polars_dtype_name(dtype_name).startswith("Float") + + +@beartype +def is_integer_dtype_name(dtype_name: str) -> bool: + canonical = canonicalize_polars_dtype_name(dtype_name) + return canonical.startswith("Int") or canonical.startswith("UInt") + @dataclass(frozen=True) class StoredWindowLayout: diff --git a/src/sequifier/make.py b/src/sequifier/make.py index 51d43a5b..ef87be45 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -5,6 +5,7 @@ read_format: csv write_format: parquet selected_columns: [EXAMPLE_INPUT_COLUMN_NAME] # should include all target column, can include additional columns +column_types: null # optional map of selected columns to output dtypes, e.g. {EXAMPLE_INPUT_COLUMN_NAME: Float32} mask_column: null split_ratios: diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 0550eb6f..09fa568f 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -20,6 +20,10 @@ from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, StoredWindowLayout, + canonicalize_polars_dtype_name, + is_float_dtype_name, + is_integer_dtype_name, + polars_dtype_from_name, read_data, write_data, ) @@ -34,6 +38,38 @@ REAL_MASK_VALUE = 0.0 CURRENT_STORED_WINDOW_LAYOUT_VERSION = 2 +FLOAT_TYPE_ORDER = ("Float16", "Float32", "Float64") +INTEGER_TYPE_ORDER = ( + "Int8", + "UInt8", + "Int16", + "UInt16", + "Int32", + "UInt32", + "Int64", + "UInt64", +) +INTEGER_TYPE_INFO = { + "Int8": np.iinfo(np.int8), + "Int16": np.iinfo(np.int16), + "Int32": np.iinfo(np.int32), + "Int64": np.iinfo(np.int64), + "UInt8": np.iinfo(np.uint8), + "UInt16": np.iinfo(np.uint16), + "UInt32": np.iinfo(np.uint32), + "UInt64": np.iinfo(np.uint64), +} +FLOAT_TYPE_INFO = { + "Float16": np.finfo(np.float16), + "Float32": np.finfo(np.float32), + "Float64": np.finfo(np.float64), +} +FLOAT_EXACT_INTEGER_LIMITS = { + "Float16": 2**11, + "Float32": 2**24, + "Float64": 2**53, +} + def _stable_json_value(value: Any) -> Any: if isinstance(value, dict): @@ -59,6 +95,182 @@ def _stable_json_digest(value: Any) -> str: return hashlib.sha256(encoded).hexdigest() +@beartype +def _normalize_column_types( + column_types: Optional[dict[str, str]], +) -> Optional[dict[str, str]]: + if column_types is None: + return None + return { + column: canonicalize_polars_dtype_name(dtype) + for column, dtype in column_types.items() + } + + +@beartype +def _configured_column_types_for_data_columns( + column_types: Optional[dict[str, str]], + data_columns: list[str], +) -> Optional[dict[str, str]]: + if column_types is None: + return None + + missing_columns = [column for column in data_columns if column not in column_types] + if missing_columns: + raise ValueError( + "column_types must include every to-be-processed column. " + f"Missing: {missing_columns}" + ) + + return {column: column_types[column] for column in data_columns} + + +@beartype +def _dtype_is_numeric(dtype: Any) -> bool: + return dtype.is_numeric() if hasattr(dtype, "is_numeric") else False + + +@beartype +def _apply_configured_input_casting( + data: pl.DataFrame, + data_columns: list[str], + column_types: Optional[dict[str, str]], +) -> pl.DataFrame: + """Cast input columns early when the requested type defines processing semantics.""" + configured = _configured_column_types_for_data_columns(column_types, data_columns) + if configured is None: + return data + + casts = [] + for column in data_columns: + target_type = configured[column] + source_dtype = data.schema[column] + + if is_float_dtype_name(target_type): + casts.append(pl.col(column).cast(polars_dtype_from_name(target_type))) + elif is_integer_dtype_name(target_type) and _dtype_is_numeric(source_dtype): + casts.append(pl.col(column).cast(polars_dtype_from_name(target_type))) + + if not casts: + return data + + return data.with_columns(casts) + + +@beartype +def _apply_output_type_casting( + data: pl.DataFrame, + data_columns: list[str], + col_types: dict[str, str], +) -> pl.DataFrame: + casts = [ + pl.col(column).cast(polars_dtype_from_name(col_types[column])) + for column in data_columns + ] + if not casts: + return data + return data.with_columns(casts) + + +@beartype +def _highest_ranked_type(types: list[str], order: tuple[str, ...]) -> str: + return max(types, key=lambda type_: order.index(type_)) + + +@beartype +def _smallest_float_covering_integer_range(integer_type: str) -> str: + integer_info = INTEGER_TYPE_INFO[integer_type] + largest_magnitude = max(abs(int(integer_info.min)), int(integer_info.max)) + for float_type in FLOAT_TYPE_ORDER: + if ( + largest_magnitude <= float(FLOAT_TYPE_INFO[float_type].max) + and largest_magnitude <= FLOAT_EXACT_INTEGER_LIMITS[float_type] + ): + return float_type + return "Float64" + + +@beartype +def _resolve_integer_sequence_type(integer_types: list[str]) -> Any: + if not integer_types: + raise ValueError("Cannot resolve an integer sequence type without integers") + + min_value = min(int(INTEGER_TYPE_INFO[type_].min) for type_ in integer_types) + max_value = max(int(INTEGER_TYPE_INFO[type_].max) for type_ in integer_types) + + if min_value >= 0 and all(type_.startswith("UInt") for type_ in integer_types): + for dtype_name in ("UInt8", "UInt16", "UInt32", "UInt64"): + info = INTEGER_TYPE_INFO[dtype_name] + if max_value <= int(info.max): + return polars_dtype_from_name(dtype_name) + + for dtype_name in ("Int8", "Int16", "Int32", "Int64"): + info = INTEGER_TYPE_INFO[dtype_name] + if min_value >= int(info.min) and max_value <= int(info.max): + return polars_dtype_from_name(dtype_name) + + raise ValueError(f"Cannot resolve a safe integer dtype for {integer_types}") + + +@beartype +def _resolve_unified_parquet_type(column_types: dict[str, str]) -> Any: + if not column_types: + raise ValueError("column_types cannot be empty") + + normalized_types = [ + canonicalize_polars_dtype_name(type_) for type_ in column_types.values() + ] + float_types = [type_ for type_ in normalized_types if is_float_dtype_name(type_)] + integer_types = [ + type_ for type_ in normalized_types if is_integer_dtype_name(type_) + ] + + if not float_types: + if len(set(integer_types)) > 1: + logger.warning( + "Multiple integer column_types were specified for Parquet output; " + "using a unified integer schema." + ) + return _resolve_integer_sequence_type(integer_types) + + resolved_float = _highest_ranked_type(float_types, FLOAT_TYPE_ORDER) + if len(set(normalized_types)) > 1: + logger.warning( + "Multiple column_types were specified for Parquet output; " + f"using unified sequence dtype {resolved_float}." + ) + + if integer_types: + required_float = _highest_ranked_type( + [ + _smallest_float_covering_integer_range(integer_type) + for integer_type in integer_types + ], + FLOAT_TYPE_ORDER, + ) + if FLOAT_TYPE_ORDER.index(required_float) > FLOAT_TYPE_ORDER.index( + resolved_float + ): + logger.warning( + "An integer column_type has a range exceeding " + f"{resolved_float}; upgrading unified Parquet sequence dtype " + f"to {required_float}." + ) + resolved_float = required_float + + return polars_dtype_from_name(resolved_float) + + +@beartype +def _resolve_pt_extraction_type(column_types: dict[str, str]) -> Any: + normalized_types = [ + canonicalize_polars_dtype_name(type_) for type_ in column_types.values() + ] + if any(is_float_dtype_name(type_) for type_ in normalized_types): + return pl.Float64 + return _resolve_integer_sequence_type(normalized_types) + + @beartype def preprocess(args: Any, args_config: dict[str, Any]) -> None: """Load preprocessing config and run preprocessing.""" @@ -96,6 +308,7 @@ def __init__( metadata_config_path: Optional[str], max_target_offset: int = 1, mask_column: Optional[str] = None, + column_types: Optional[dict[str, str]] = None, ): """Initialize and run preprocessing from validated config fields.""" self.project_root = project_root @@ -125,6 +338,7 @@ def __init__( self.max_rows = max_rows self.process_by_file = process_by_file self.subsequence_start_mode = subsequence_start_mode + self.column_types = _normalize_column_types(column_types) if self.mask_column is not None and self.metadata_config_path is None: raise ValueError("metadata_config_path must be set when mask_column is set") @@ -176,6 +390,12 @@ def __init__( self.mask_column, ) data_columns = _get_data_columns(data, self.mask_column) + configured_col_types = _configured_column_types_for_data_columns( + self.column_types, data_columns + ) + data = _apply_configured_input_casting( + data, data_columns, configured_col_types + ) if self.metadata_config_path: metadata_path = os.path.join( self.project_root, self.metadata_config_path @@ -221,9 +441,12 @@ def __init__( id_maps, selected_columns_statistics, n_classes=n_classes, - col_types=col_types, + col_types=configured_col_types or col_types, ) + if configured_col_types is not None: + col_types = configured_col_types data = _apply_mask_column(data, data_columns, col_types, self.mask_column) + data = _apply_output_type_casting(data, data_columns, col_types) self._write_or_validate_resume_manifest( selected_columns, @@ -308,6 +531,11 @@ def __init__( for col in col_types.keys() if col not in _reserved_input_columns(self.mask_column) ] + configured_col_types = _configured_column_types_for_data_columns( + self.column_types, data_columns + ) + if configured_col_types is not None: + col_types = configured_col_types # We still need to find the files to process files_to_process = [] @@ -324,10 +552,15 @@ def __init__( col_types, data_columns, ) = self._get_column_metadata_across_files( - data_path, read_format, max_rows, selected_columns + data_path, + read_format, + max_rows, + selected_columns, + self.column_types, ) for col in id_maps: - col_types[col] = "Int64" + if self.column_types is None: + col_types[col] = "Int64" self._write_or_validate_resume_manifest( selected_columns, @@ -380,19 +613,10 @@ def _create_schema( "inputCol": pl.String, } - if (np.unique(list(col_types.values())) == np.array(["Int64"]))[0]: - sequence_position_type = pl.Int64 + if self.write_format == "parquet": + sequence_position_type = _resolve_unified_parquet_type(col_types) else: - if not np.all( - [ - type_.lower().startswith("int") - or type_.lower().startswith("uint") - or type_.lower().startswith("float") - for type_ in col_types.values() - ] - ): - raise ValueError("All column types must start with int or float") - sequence_position_type = pl.Float64 + sequence_position_type = _resolve_pt_extraction_type(col_types) schema.update( { @@ -410,6 +634,7 @@ def _get_column_metadata_across_files( read_format: str, max_rows: Optional[int], selected_columns: Optional[list[str]], + column_types: Optional[dict[str, str]], ) -> tuple[ list[str], dict[str, int], @@ -453,10 +678,20 @@ def _get_column_metadata_across_files( ) current_file_cols = _get_data_columns(data, self.mask_column) + current_configured_col_types = ( + _configured_column_types_for_data_columns( + column_types, current_file_cols + ) + ) + data = _apply_configured_input_casting( + data, current_file_cols, current_configured_col_types + ) if col_types is None: data_columns = current_file_cols - col_types = {col: str(data.schema[col]) for col in data_columns} + col_types = current_configured_col_types or { + col: str(data.schema[col]) for col in data_columns + } for col in precomputed_id_maps.keys(): if col not in data_columns: @@ -475,12 +710,13 @@ def _get_column_metadata_across_files( f"Extra: {extra}" ) - for col in current_file_cols: - if str(data.schema[col]) != col_types[col]: - raise ValueError( - f"Type mismatch for column '{col}' in file '{file}'. " - f"Expected {col_types[col]}, got {str(data.schema[col])}" - ) + if column_types is None: + for col in current_file_cols: + if str(data.schema[col]) != col_types[col]: + raise ValueError( + f"Type mismatch for column '{col}' in file '{file}'. " + f"Expected {col_types[col]}, got {str(data.schema[col])}" + ) if data_columns is None: raise ValueError("data_columns is None") @@ -967,7 +1203,9 @@ def _apply_mask_column( updates = [] for col in data_columns: mask_value = ( - SPECIAL_TOKEN_IDS.mask if col_types[col] == "Int64" else REAL_MASK_VALUE + SPECIAL_TOKEN_IDS.mask + if is_integer_dtype_name(col_types[col]) + else REAL_MASK_VALUE ) updates.append( pl.when(mask_expr) @@ -993,6 +1231,8 @@ def _apply_column_statistics( col_types: Optional[dict[str, str]] = None, ) -> tuple[pl.DataFrame, dict[str, int], dict[str, str]]: """Apply categorical maps and numeric standardization.""" + col_types_was_provided = col_types is not None + if n_classes is None: n_classes = {col: max(id_maps[col].values()) + 1 for col in id_maps} @@ -1013,7 +1253,8 @@ def _apply_column_statistics( for col in data_columns: if col in id_maps: data = data.with_columns(pl.col(col).replace(id_maps[col], default=1)) - col_types[col] = "Int64" + if not col_types_was_provided: + col_types[col] = "Int64" elif col in selected_columns_statistics: data = data.with_columns( ( @@ -1145,7 +1386,7 @@ def _get_column_statistics( id_maps[data_col] = combine_maps(new_id_map, id_maps.get(data_col, {})) else: logger.info(f"Applying precomputed map for {data_col}") - elif isinstance(dtype, (pl.Float32, pl.Float64)): + elif isinstance(dtype, (pl.Float16, pl.Float32, pl.Float64)): if data_col in precomputed_id_maps: raise ValueError( f"Column {data_col} is not categorical, precomputed map is invalid." @@ -1380,6 +1621,7 @@ def _process_batches_multiple_files_inner( max_rows_inner, mask_column, ) + data = _apply_configured_input_casting(data, data_columns, col_types) data, _, _ = _apply_column_statistics( data, data_columns, @@ -1389,6 +1631,7 @@ def _process_batches_multiple_files_inner( col_types, ) data = _apply_mask_column(data, data_columns, col_types, mask_column) + data = _apply_output_type_casting(data, data_columns, col_types) data_name_root_inner = f"{data_name_root}-{process_id}-{file_index_str}" From 94ab5fbaed5186fa4ccf8a254d20040845974429 Mon Sep 17 00:00:00 2001 From: Leon Luithlen Date: Tue, 23 Jun 2026 15:39:44 +0100 Subject: [PATCH 81/81] Add between sequences split --- src/sequifier/config/preprocess_config.py | 10 ++ src/sequifier/helpers.py | 14 +++ src/sequifier/make.py | 1 + src/sequifier/preprocess.py | 130 +++++++++++++++++----- 4 files changed, 126 insertions(+), 29 deletions(-) diff --git a/src/sequifier/config/preprocess_config.py b/src/sequifier/config/preprocess_config.py index 36d1d0f9..73d9a42c 100644 --- a/src/sequifier/config/preprocess_config.py +++ b/src/sequifier/config/preprocess_config.py @@ -47,6 +47,7 @@ class PreprocessorModel(BaseModel): column_types: Optional[dict[str, str]] = None split_ratios: list[float] + split_method: str = Field(default="within_sequence") stored_context_width: int = Field(gt=0) max_target_offset: int = Field(default=1, ge=0) stride_by_split: Optional[list[int]] = None @@ -111,6 +112,15 @@ def validate_proportions_sum(cls, v: list[float]) -> list[float]: raise ValueError(f"All split_ratios must be positive: {v}") return v + @field_validator("split_method") + @classmethod + def validate_split_method(cls, v: str) -> str: + if v not in ["within_sequence", "between_sequence"]: + raise ValueError( + "split_method must be one of 'within_sequence', 'between_sequence'" + ) + return v + @field_validator("stride_by_split") @classmethod def validate_step_sizes( diff --git a/src/sequifier/helpers.py b/src/sequifier/helpers.py index b2a846b0..c70b60f8 100644 --- a/src/sequifier/helpers.py +++ b/src/sequifier/helpers.py @@ -1,4 +1,5 @@ import glob +import hashlib import math import os import random @@ -80,6 +81,19 @@ def polars_dtype_from_name(dtype_name: str) -> Any: return POLARS_NUMERIC_DTYPES[canonicalize_polars_dtype_name(dtype_name)] +@beartype +def assign_sequence_to_split( + sequence_id: int, split_ratios: list[float], seed: int +) -> int: + """Deterministically assign one sequenceId to a split index.""" + digest = hashlib.sha256(f"{seed}:{sequence_id}".encode("utf-8")).digest() + hash_value = int.from_bytes(digest[:8], byteorder="big", signed=False) / 2**64 + split_index = int( + np.searchsorted(np.cumsum(split_ratios), hash_value, side="right") + ) + return min(split_index, len(split_ratios) - 1) + + @beartype def is_float_dtype_name(dtype_name: str) -> bool: return canonicalize_polars_dtype_name(dtype_name).startswith("Float") diff --git a/src/sequifier/make.py b/src/sequifier/make.py index ef87be45..938f82ef 100644 --- a/src/sequifier/make.py +++ b/src/sequifier/make.py @@ -12,6 +12,7 @@ - 0.8 - 0.1 - 0.1 +split_method: within_sequence # one of within_sequence, between_sequence stored_context_width: 49 max_target_offset: 1 max_rows: null diff --git a/src/sequifier/preprocess.py b/src/sequifier/preprocess.py index 09fa568f..3ad7b9bb 100644 --- a/src/sequifier/preprocess.py +++ b/src/sequifier/preprocess.py @@ -20,6 +20,7 @@ from sequifier.helpers import ( PANDAS_TO_TORCH_TYPES, StoredWindowLayout, + assign_sequence_to_split, canonicalize_polars_dtype_name, is_float_dtype_name, is_integer_dtype_name, @@ -309,6 +310,7 @@ def __init__( max_target_offset: int = 1, mask_column: Optional[str] = None, column_types: Optional[dict[str, str]] = None, + split_method: str = "within_sequence", ): """Initialize and run preprocessing from validated config fields.""" self.project_root = project_root @@ -333,6 +335,11 @@ def __init__( self.use_precomputed_maps = use_precomputed_maps self.metadata_config_path = metadata_config_path self.mask_column = mask_column + if split_method not in ["within_sequence", "between_sequence"]: + raise ValueError( + "split_method must be one of 'within_sequence', 'between_sequence'" + ) + self.split_method = split_method self.split_ratios = split_ratios self.stride_by_split = stride_by_split self.max_rows = max_rows @@ -484,6 +491,8 @@ def __init__( subsequence_start_mode, self.merge_output, self.allow_sequence_splitting, + self.split_method, + self.seed, ) if self.merge_output: @@ -834,6 +843,8 @@ def _process_batches_multiple_files( continue_preprocessing=self.continue_preprocessing, subsequence_start_mode=subsequence_start_mode, mask_column=mask_column, + split_method=self.split_method, + seed=self.seed, ) input_files = create_file_paths_for_multiple_files2( self.project_root, @@ -880,6 +891,8 @@ def _process_batches_multiple_files( "continue_preprocessing": self.continue_preprocessing, "subsequence_start_mode": subsequence_start_mode, "mask_column": mask_column, + "split_method": self.split_method, + "seed": self.seed, } job_params = [ @@ -988,6 +1001,8 @@ def _write_or_validate_resume_manifest( "selected_columns": selected_columns, "data_columns": data_columns, "split_ratios": self.split_ratios, + "split_method": self.split_method, + "seed": self.seed, "stride_by_split": self.stride_by_split, "max_rows": self.max_rows, "process_by_file": self.process_by_file, @@ -1561,6 +1576,8 @@ def _process_batches_multiple_files_inner( continue_preprocessing: bool, subsequence_start_mode: str, mask_column: Optional[str], + split_method: str, + seed: int, ): """Process this worker's file shard.""" @@ -1653,6 +1670,8 @@ def _process_batches_multiple_files_inner( subsequence_start_mode, merge_output, allow_sequence_splitting, + split_method, + seed, ) if merge_output: @@ -1701,6 +1720,8 @@ def _process_batches_single_file( subsequence_start_mode: str, merge_output: bool, allow_sequence_splitting: bool, + split_method: str = "within_sequence", + seed: int = 1010, ) -> int: """Split one file into worker batches and preprocess them.""" n_cores = n_cores or multiprocessing.cpu_count() @@ -1724,6 +1745,8 @@ def _process_batches_single_file( batches_per_file, subsequence_start_mode, merge_output, + split_method, + seed, ) for process_id, (start, end) in enumerate(valid_batch_limits) ] @@ -2022,6 +2045,56 @@ def _write_accumulated_sequences( combined_df.write_parquet(out_path) +@beartype +def _extract_sequences_for_splits( + data_subset: pl.DataFrame, + sequence_id: int, + schema: Any, + layout: StoredWindowLayout, + stride_by_split: list[int], + data_columns: list[str], + split_ratios: list[float], + subsequence_start_mode: str, + split_method: str, + seed: int, +) -> dict[int, pl.DataFrame]: + """Return extracted windows for one sequence across configured splits.""" + if split_method == "within_sequence": + group_bounds = get_group_bounds(data_subset, split_ratios) + return { + i: cast_columns_to_string( + extract_sequences( + data_subset.slice(lb, ub - lb), + schema, + layout, + stride_by_split[i], + data_columns, + subsequence_start_mode, + ) + ) + for i, (lb, ub) in enumerate(group_bounds) + } + + if split_method == "between_sequence": + assigned_group = assign_sequence_to_split(sequence_id, split_ratios, seed) + sequences = {i: pl.DataFrame(schema=schema) for i in range(len(split_ratios))} + sequences[assigned_group] = cast_columns_to_string( + extract_sequences( + data_subset, + schema, + layout, + stride_by_split[assigned_group], + data_columns, + subsequence_start_mode, + ) + ) + return sequences + + raise ValueError( + "split_method must be one of 'within_sequence', 'between_sequence'" + ) + + @beartype def preprocess_batch( project_root: str, @@ -2040,6 +2113,8 @@ def preprocess_batch( batches_per_file: int, subsequence_start_mode: str, merge_output: bool, + split_method: str = "within_sequence", + seed: int = 1010, ) -> None: """Extract and write all split windows for one batch.""" sequence_ids = sorted(batch.get_column("sequenceId").unique().to_list()) @@ -2051,20 +2126,18 @@ def preprocess_batch( pad_width = len(str(math.ceil(len(sequence_ids) / batches_per_file) + 1)) for i, sequence_id in enumerate(sequence_ids): data_subset = batch.filter(pl.col("sequenceId") == sequence_id) - group_bounds = get_group_bounds(data_subset, split_ratios) - sequences = { - i: cast_columns_to_string( - extract_sequences( - data_subset.slice(lb, ub - lb), - schema, - layout, - stride_by_split[i], - data_columns, - subsequence_start_mode, - ) - ) - for i, (lb, ub) in enumerate(group_bounds) - } + sequences = _extract_sequences_for_splits( + data_subset, + sequence_id, + schema, + layout, + stride_by_split, + data_columns, + split_ratios, + subsequence_start_mode, + split_method, + seed, + ) for group, split_df in sequences.items(): if not split_df.is_empty(): @@ -2103,23 +2176,22 @@ def preprocess_batch( written_files: dict[int, list[str]] = {i: [] for i in range(len(split_paths))} for i, sequence_id in enumerate(sequence_ids): data_subset = batch.filter(pl.col("sequenceId") == sequence_id) - group_bounds = get_group_bounds(data_subset, split_ratios) - sequences = { - j: cast_columns_to_string( - extract_sequences( - data_subset.slice(lb, ub - lb), - schema, - layout, - stride_by_split[j], - data_columns, - subsequence_start_mode, - ) - ) - for j, (lb, ub) in enumerate(group_bounds) - } + sequences = _extract_sequences_for_splits( + data_subset, + sequence_id, + schema, + layout, + stride_by_split, + data_columns, + split_ratios, + subsequence_start_mode, + split_method, + seed, + ) post_split_str = f"{process_id}-{i}" - for split_path, (group, split) in zip(split_paths, sequences.items()): + for group, split in sequences.items(): + split_path = split_paths[group] split_path_batch_seq = split_path.replace( f".{write_format}", f"-{post_split_str}.{write_format}" )