Skip to main content

Python API Reference

timber.store.ModelStore​

Manages the local model store at ~/.timber/models/.

Constructor​

from timber.store import ModelStore

store = ModelStore() # Default: ~/.timber
store = ModelStore(home=Path("/opt/timber")) # Custom location

Methods​

load_model(path, name=None, format=None) → dict​

Compile and cache a model.

info = store.load_model("model.json", name="my-model")
# Returns: {"name": "my-model", "n_trees": 50, "n_features": 30, ...}

list_models() → list[dict]​

List all cached models.

for m in store.list_models():
print(f"{m['name']}: {m['n_trees']} trees")

get_model(name) → dict​

Get metadata for a specific model.

info = store.get_model("my-model")

remove_model(name) → bool​

Remove a cached model.

store.remove_model("my-model")

get_model_dir(name) → Path​

Get the filesystem path to a model's cache directory.

model_dir = store.get_model_dir("my-model")
# ~/.timber/models/my-model/

get_lib_path(name) → Path​

Get the path to the compiled shared library.

lib_path = store.get_lib_path("my-model")
# ~/.timber/models/my-model/libtimber_model.so

timber.runtime.predictor.TimberPredictor​

Native inference from Python via ctypes.

Constructor​

from timber.runtime.predictor import TimberPredictor

pred = TimberPredictor(
lib_path="/path/to/libtimber_model.so",
n_features=30,
n_outputs=1,
n_trees=50,
)
ParameterTypeDescription
lib_pathstr | PathPath to compiled .so / .dylib
n_featuresintNumber of input features
n_outputsintNumber of outputs per sample
n_treesintNumber of trees

Methods​

predict(X) → np.ndarray​

Run inference on a NumPy array.

import numpy as np

X = np.random.randn(100, 30).astype(np.float32)
outputs = pred.predict(X)
# outputs.shape == (100,) for single-output models

Properties​

PropertyTypeDescription
n_featuresintInput feature count
n_outputsintOutput count per sample
n_treesintTree count

timber.frontends.auto_detect​

detect_format(path) → str​

Auto-detect model format from file.

from timber.frontends.auto_detect import detect_format

fmt = detect_format("model.json") # "xgboost"

parse_model(path, format=None) → TimberIR​

Parse a model file into the Timber IR.

from timber.frontends.auto_detect import parse_model

ir = parse_model("model.json")
print(f"Trees: {len(ir.stages)}")

timber.optimizer.pipeline​

run(ir, calibration_data=None) → TimberIR​

Run all 6 optimization passes on an IR.

from timber.optimizer.pipeline import run

optimized_ir = run(ir)

timber.codegen.c99.C99Emitter​

emit() → dict[str, str]​

Generate C99 source files.

from timber.codegen.c99 import C99Emitter

emitter = C99Emitter(ir)
files = emitter.emit()
# files = {"model.h": "...", "model.c": "...", "model_data.c": "...", ...}