Ecosystem — ViewX & StatsLibX
v0.1.7SynaptIX 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
| Library | Role | Install |
|---|---|---|
| statslibx | Statistics, data handling, simulations | pip install statslibx |
| synaptix | ML models, evaluation and tuning | pip install synaptix |
| viewx | Dashboards, EDA, PDF, slides | pip install viewx |
Export to ViewX (pip install synaptix[viewx])
export.py
python
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
python
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 predictedData In from StatsLibX
Models accept DataFrames, arrays, lists and polars DataFrames — StatsLibX output plugs in without manual conversion:
dataflow.py
python
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
python
# 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")