Getting started¶
abax is a keyboard-first statistics and data-science workstation built on a
scriptable spreadsheet. It reads and writes CSV, TSV, Excel .xlsx, the native
.abax/.json format, and many more (see file formats), and
runs three ways: a Qt desktop GUI (the default), a curses/Textual terminal UI
(TUI), and a headless command-line interface (CLI). This guide covers installing
abax, the ways to launch it, and a five-minute walkthrough from an empty grid to a
saved spreadsheet with a working formula. For the end-to-end data workflow, see the
data science overview.
Prefer copy-paste? The examples catalog has a tested, runnable example for most of what abax does — each one prints the exact output you should see.
Installing¶
abax is pure Python and works with no optional packages at all — the core spreadsheet engine is stdlib-only. The graphical interfaces and the data/format features are pulled in through extras, each with a graceful stdlib fallback. Install only what you need.
Don't want to install Python? Every GitHub Release ships ready-to-run downloads: a portable Linux AppImage of the full
abax[all](download,chmod +x, run), a self-contained Windows build (unzip; double-clickabaxw.exefor the GUI, orabax.exefor the full CLI), a macOS app (.dmg, Apple Silicon — dragAbax.appto Applications; it's unsigned, so clear the quarantine once withxattr -dr com.apple.quarantine /Applications/Abax.app; Intel Macs usepiporabax.pyz), and the tiny cross-platformabax.pyzzipapp (python abax.pyz, needs only a Python 3.13 interpreter).
Clone or download the project, then install from the project root:
# Core CLI/TUI only (no third-party packages) — runs everywhere, tiny
pip install .
# Desktop GUI (Qt) — pulls in PySide6-Essentials (LGPL-3.0)
pip install ".[gui]"
# Lean desktop: GUI + every lightweight convenience, no heavy data libraries
pip install ".[thin]"
# Everything abax can use, including the data-science stack
pip install ".[all]"
# Full developer setup
pip install ".[dev,thin]"
If you have just installed, just install runs the full developer setup for you.
Available extras¶
| Extra | Pulls in | Gives you |
|---|---|---|
gui |
PySide6-Essentials (LGPL-3.0) |
The Qt desktop GUI — recommended default binding (no QtWebEngine) |
gui-pyqt |
PyQt6 (GPL/commercial) |
An alternative Qt binding; the GUI runs unchanged on either |
tui |
textual, rich |
Richer terminal UI support |
excel |
openpyxl |
Reading and writing .xlsx workbooks |
fast-io |
msgspec, platformdirs |
Faster JSON and OS-correct config/data paths |
terminal |
pyte |
A true PTY terminal panel (with pywinpty on Windows) |
parquet |
pyarrow |
Parquet / Feather I/O |
science |
numpy, pandas, scipy, scikit-learn, statsmodels, lifelines, pingouin, scikit-survival | The data-science / (bio)statistics stack behind the analysis, ML, and graphing tools |
bayes |
pymc | Bayesian / probabilistic programming — split out because it's heavy (pytensor + arviz + numba/llvmlite, ~150 MB) |
jupyter |
nbformat, ipykernel, anywidget |
Notebook validation, the abax Jupyter kernel, and the editable-sheet widget (jupyter.md) |
sevenzip |
py7zr |
Create / extract .7z archives in the file manager |
charts |
matplotlib |
Matplotlib rendering backend for embedded charts (the built-in SVG renderer always works without it) |
stats-io |
pyreadstat |
Reading Stata .dta / SPSS .sav files |
hdf5 |
h5py |
Reading HDF5 .h5 / .hdf5 files |
nec |
PyNEC |
Reference NEC-2 antenna solver (cross-checks the built-in MoM) |
thin |
gui + tui + excel + fast-io + terminal + sevenzip |
A lean desktop install — every lightweight convenience, none of the heavy data libraries |
all |
thin + charts + parquet + science + jupyter + bayes + stats-io + hdf5 + nec |
One-shot install of everything abax can use (the full-fat set) |
You choose on first launch. You don't have to pick extras at install time: install just
gui, and the first time you open abax it shows a short chooser that explains each optional feature and offers two presets — Thin (lean everyday conveniences, ~25 MB) and All (everything, recommended) — plus a checkbox per feature so you can pick your own mix. Your choice is fetched in the background (best-effort, non-blocking) and remembered. Re-open it any time from Tools → Install optional features. In the TUI/headless,abax depsinstalls everything, orpip install abax[science](etc.) picks specific extras. Opt out of prompting/auto-install entirely withauto_install: falseorABAX_NO_AUTOINSTALL=1. See Configuration → Auto-install.
Install profiles & footprint¶
Approximate installed sizes (excluding the Python interpreter) — within ~10 % across Windows, Linux, and macOS, since the heavy pieces are comparable binary wheels on each:
| Profile | Command | Size |
|---|---|---|
| Core / headless | pip install . |
< 2 MB |
| Desktop GUI | pip install ".[gui]" |
~0.22 GB |
| Lean desktop | pip install ".[thin]" |
~0.23 GB |
| Everything without Bayesian | pip install ".[thin,parquet,science,jupyter]" |
~0.69 GB |
| Everything | pip install ".[all]" |
~0.84 GB |
Dropping the bayes extra (pymc → pytensor + arviz + numba/llvmlite) saves
~0.15 GB with no loss to the spreadsheet, RF/antenna, DSP, or ML tools.
The GUI tiers are dominated by Qt (~0.2 GB). all adds the scientific stack — roughly +0.7 GB of numpy/scipy/pandas/scikit-learn/pyarrow/… The core and curses TUI need nothing beyond the standard library.
abax is licensed GPL-3.0-or-later. The default GUI binding is PySide6, which is LGPL-3.0. If you prefer PyQt6, install the
gui-pyqtextra instead — the GUI code never branches on the binding, so it behaves identically on either.
Choosing the Qt binding¶
When both bindings are installed, abax prefers PySide6. To force PyQt6 (handy for testing), set the ABAX_QT_BINDING environment variable:
See configuration.md for more on environment variables.
Checking your install¶
Run the dependency report to see which optional packages are present and which fall back to a built-in alternative. This is a fast path — it never imports the heavy Qt or terminal stacks:
It also prints where abax keeps its config, data, cache, and log directories.
Launching abax¶
abax can be run as the abax script (installed by the extras above) or as a module with python -m abax. The two are equivalent.
The GUI is the default¶
Running abax with no subcommand opens the Qt GUI:
abax # opens the GUI on an empty workbook
abax data.csv # the bare-file form is not a subcommand — use `gui`
abax gui # explicitly open the GUI, empty
abax gui data.csv # open the GUI on a file
If Qt is not installed, abax falls back automatically: it opens the TUI when standard output is a terminal, and otherwise prints help. To open the GUI on a specific file, use the gui subcommand with a path.
The terminal UI¶
The TUI is keyboard-driven with vim-style bindings on by default — move around the sheet with h/j/k/l or the arrow keys — and a :command line for everything else (find, fill, sort, macros, the RPN calculator, and more).
Headless CLI¶
For scripting and quick lookups, abax never opens a window:
abax view data.csv # print the sheet as a text table
abax get data.csv B7 # print one computed cell value
abax convert data.csv out.xlsx # convert between formats by extension
The full command and flag reference lives in cli.md.
Your first spreadsheet in five minutes¶
This walkthrough uses the GUI, but the same concepts (typing into cells, writing a formula, saving) apply in the TUI.
1. Open abax¶
You get an empty grid with rows numbered 1, 2, 3, … and columns labelled A, B, C, …, just like any spreadsheet.
2. Enter some data¶
Click cell A1 (or move to it with the arrow keys) and type a label, then press Enter to commit and move down. Build a tiny table:
| A | B | |
|---|---|---|
| 1 | Item | Price |
| 2 | Apples | 3 |
| 3 | Pears | 4 |
| 4 | Cherries | 5 |
Type the text and numbers cell by cell. Numbers are stored as numbers; everything else is text.
3. Add a formula¶
Move to cell B5 and type a formula. Formulas start with =:
Press Enter. The cell shows the computed total, 12. abax ships with 642 functions — SUM, AVERAGE, IF, VLOOKUP, CONCAT, date functions, and more — and array formulas like =SORT(A1:A9) spill across neighbouring cells. As you type a function name the GUI offers autocomplete and an argument hint showing the current parameter. See formula-reference.md for the full function list.
A few things worth knowing right away:
- References look like
A1, ranges likeB2:B4. A$(as in$A$1) anchors a reference so it does not shift when copied. - Errors are values, not crashes: a bad formula shows something like
#DIV/0!,#NAME?, or#REF!. - Editing a cell that others depend on recomputes them automatically.
4. Save your work¶
Save with Ctrl+S and pick a filename. The extension chooses the format:
myfile.abaxormyfile.json— abax's native JSON format (keeps formulas, multiple sheets, formatting, and conditional rules).myfile.csv/.tsv— plain delimited text.myfile.xlsx— Excel (requires theexcelextra).
All of abax's own persistence is JSON, so .abax/.json round-trips everything losslessly. CSV and Excel keep what those formats can represent.
5. Reopen or inspect from the CLI¶
Once saved, you can re-open the file in any interface, or peek at it without launching a window:
Where to go next¶
- cli.md — every command-line subcommand and flag, with examples.
- configuration.md — settings, runtime directories, environment variables, themes, fonts, and pandoc.
- gui-guide.md — the menus, command palette, and keyboard shortcuts.
- formula-reference.md — the function library.
- index.md — documentation home.