SynaptIX logoSynaptIX

Ecosystem — ViewX & StatsLibX

v0.1.7

SynaptIX is the ML engine of the GhostAnalyst data ecosystem. Export results to ViewX dashboards and reports, run statistical diagnostics with StatsLibX — each library also works standalone.

The Three Libraries

LibraryRoleInstall
statslibxStatistics, data handling, simulationspip install statslibx
synaptixML models, evaluation and tuningpip install synaptix
viewxDashboards, EDA, PDF, slidespip install viewx

Export to ViewX (pip install synaptix[viewx])

export.py
import synaptix as sx

df = sx.load_dataset("iris")
X, y = df.drop(columns="species"), df["species"]
model = sx.supervised.RandomForestClassifier().fit(X, y)
result = model.evaluate(X, y)   # plain dict of metrics, as always

result.to_html("evaluacion.html", theme="dark_enterprise")   # dashboard
result.to_report("evaluacion")                               # PDF
result.to_presentation("evaluacion_slides.html")             # slides

# compare_models table -> dashboard
tabla = sx.model_selection.compare_models(X, y, task="classification")
tabla.to_dashboard("comparacion.html")

# Or the manual pipeline with the shared payload contract
payload = result.to_report_data(include_figures=True)
from viewx import from_report_payload
from_report_payload(payload, target="html", filename="evaluacion.html")

Without ViewX installed everything works normally — export methods raise a clear error with the install instruction.

Statistical Diagnostics (pip install synaptix[stats])

diagnostics.py
diagnostico = model.diagnostics(X_test, y_test)

# Regression models: residual normality (shapiro, ks, anderson,
# jarque-bera) + t-test of mean-zero residuals
print(diagnostico["normalidad_residuos"].interpretation)

# Classification models: chi-square of real vs predicted

Data In from StatsLibX

Models accept DataFrames, arrays, lists and polars DataFrames — StatsLibX output plugs in without manual conversion:

dataflow.py
df_pl = sx.load_dataset("iris", backend="polars")   # requires synaptix[polars]
model.fit(df_pl.drop("species"), df_pl["species"])

X, y = sx.load_dataset("iris", return_X_y=(
    ["sepal_length", "sepal_width", "petal_length", "petal_width"], "species"))

Full Ecosystem Flow

ecosystem.py
# pip install statslibx[viewx] synaptix[viewx,stats] viewx
from statslibx import DescriptiveStats, load_iris
from viewx import from_report_payload
import synaptix as sx

df = load_iris()

# 1. Statistics and data quality (StatsLibX)
DescriptiveStats(df).summary()

# 2. Model, evaluation and diagnostics (SynaptIX + StatsLibX)
X, y = df.drop(columns="species"), df["species"]
model = sx.supervised.RandomForestClassifier().fit(X, y)
evaluation = model.evaluate(X, y)
model.diagnostics(X, y)

# 3. Everything into one dashboard (ViewX)
payload = evaluation.to_report_data(include_figures=True)
from_report_payload(payload, target="html", filename="analisis.html")