JAXSR Command-Line Interface Guide#
The jaxsr CLI provides a complete workflow for Design of Experiments (DOE)
without writing Python code. It operates on .jaxsr study files that store
your experimental design, data, and fitted models.
Installation#
# Full install (CLI + Excel + Word reports)
pip install jaxsr[cli,excel,reports]
# Minimal CLI only
pip install jaxsr[cli]
# Add Excel support later
pip install jaxsr[excel]
Quick Start#
# 1. Create a study
jaxsr init catalyst_opt \
-f "temperature:300:500" \
-f "pressure:1:10" \
-f "catalyst:A,B,C"
# 2. Generate experiment template
jaxsr design catalyst_opt.jaxsr -n 20 --format xlsx -o experiments.xlsx
# 3. Fill in results in Excel, then import
jaxsr add catalyst_opt.jaxsr experiments.xlsx
# 4. Fit a model
jaxsr fit catalyst_opt.jaxsr --max-terms 5
# 5. Generate report
jaxsr report catalyst_opt.jaxsr -o report.xlsx
Commands Reference#
jaxsr init#
Create a new DOE study.
jaxsr init <name> -f <factor_spec> [-f <factor_spec> ...] [options]
Arguments:
Argument |
Description |
|---|---|
|
Study name (used as default filename) |
Options:
Option |
Short |
Description |
|---|---|---|
|
|
Factor specification (required, repeatable) |
|
|
Study description |
|
|
Output file path (default: |
Factor specification format:
Continuous:
"name:low:high"— defines a numeric factor with boundsCategorical:
"name:level1,level2,..."— defines a categorical factor
Auto-detection: if the value after the first colon contains a comma, it’s treated as categorical.
Examples:
# Simple 2-factor continuous study
jaxsr init yield_study -f "temperature:300:500" -f "pressure:1:10"
# Mixed continuous and categorical
jaxsr init catalyst_opt \
-f "temperature:300:500" \
-f "pressure:1:10" \
-f "catalyst:A,B,C" \
-d "Optimize reaction yield"
# Custom output path
jaxsr init my_study -f "x:0:1" -f "y:0:1" -o /data/studies/my_study.jaxsr
jaxsr design#
Generate an experimental design and optionally export it.
jaxsr design <study_file> [options]
Arguments:
Argument |
Description |
|---|---|
|
Path to the |
Options:
Option |
Short |
Default |
Description |
|---|---|---|---|
|
|
|
Design method |
|
|
|
Number of design points |
|
|
(random) |
Random seed for reproducibility |
|
|
Output format: |
|
|
|
(auto) |
Output file (for csv/xlsx) |
Available design methods:
Method |
Description |
Use when |
|---|---|---|
|
Space-filling LHS design |
General-purpose, default choice |
|
Sobol quasi-random sequence |
Uniform coverage, best with power-of-2 points |
|
Halton quasi-random sequence |
Similar to Sobol, fewer restrictions on n |
|
Full factorial grid |
Small n_factors, want all combinations |
|
Full factorial at 2 or more levels |
Screening designs |
|
Central Composite Design |
Response surface methodology |
|
Box-Behnken design |
RSM with 3+ factors, avoids extreme corners |
|
Fractional factorial |
Screening many factors efficiently |
Examples:
# Print design as table
jaxsr design study.jaxsr -m latin_hypercube -n 20 -s 42
# Export to CSV
jaxsr design study.jaxsr -n 15 --format csv -o design.csv
# Generate Excel template for lab
jaxsr design study.jaxsr -n 20 --format xlsx -o experiments.xlsx
# Central Composite Design (n_points is ignored, CCD determines its own size)
jaxsr design study.jaxsr -m ccd
# Box-Behnken design
jaxsr design study.jaxsr -m box_behnken
Excel template output:
When --format xlsx is used, the output is a formatted Excel workbook with:
Instructions sheet: how to fill in the template
Design sheet: pre-filled factor columns (locked, blue), empty Response column (unlocked, green), and Notes column
_Metadata sheet (hidden): study fingerprint for validation on re-import
Categorical factors get dropdown validation in Excel. The Response column has numeric validation. Factor columns are protected to prevent accidental edits.
jaxsr add#
Import experiment results from an Excel template or CSV file.
jaxsr add <study_file> <data_file> [options]
Arguments:
Argument |
Description |
|---|---|
|
Path to the |
|
Path to the completed |
Options:
Option |
Description |
|---|---|
|
Notes for this batch of observations |
|
Skip template fingerprint validation |
Validation (Excel templates):
When importing an .xlsx file, the CLI validates that:
The file was generated for this specific study (fingerprint match)
Factor columns have not been modified
Response values are numeric
If validation fails, you’ll see a clear error message explaining what’s wrong.
Use --skip-validation to bypass fingerprint checking (useful for manually
created spreadsheets).
CSV format:
For CSV import, the file should have:
One header row (column names, ignored)
Factor columns first (in the same order as the study)
Response column last
temperature,pressure,response
350.2,3.5,85.1
425.1,7.8,92.3
Examples:
# Import from Excel template
jaxsr add study.jaxsr completed_experiments.xlsx
# Import with notes
jaxsr add study.jaxsr batch2.xlsx --notes "Second round from Lab B"
# Import from CSV
jaxsr add study.jaxsr results.csv
# Skip validation for manually created files
jaxsr add study.jaxsr manual_data.xlsx --skip-validation
jaxsr fit#
Fit a symbolic regression model to the study’s observations.
jaxsr fit <study_file> [options]
Arguments:
Argument |
Description |
|---|---|
|
Path to the |
Options:
Option |
Short |
Default |
Description |
|---|---|---|---|
|
|
|
Maximum number of terms in the model |
|
|
Selection strategy |
|
|
|
Information criterion |
Selection strategies:
Strategy |
Description |
|---|---|
|
Start empty, add best term iteratively (default, fast) |
|
Start full, remove worst term iteratively |
|
Try all subsets (slow, guaranteed optimal for small problems) |
|
LASSO regularization path screening |
Information criteria:
Criterion |
Description |
|---|---|
|
Corrected AIC — best default, accounts for small samples |
|
Akaike Information Criterion |
|
Bayesian Information Criterion — stronger penalty for complexity |
Examples:
# Basic fit
jaxsr fit study.jaxsr
# Fit with at most 5 terms
jaxsr fit study.jaxsr --max-terms 5
# Use backward elimination with BIC
jaxsr fit study.jaxsr --strategy greedy_backward --criterion bic
# Output:
# Model: y = 2.01*x1 + 3.02*x2 + 0.15*x1^2
# MSE: 0.00234
# AIC: -125.4321
# BIC: -118.9876
# Terms: 3
jaxsr suggest#
Suggest next experiments using adaptive sampling.
jaxsr suggest <study_file> [options]
Arguments:
Argument |
Description |
|---|---|
|
Path to the |
Options:
Option |
Short |
Default |
Description |
|---|---|---|---|
|
|
|
Number of points to suggest |
|
|
Suggestion strategy |
|
|
|
Output format: |
Suggestion strategies:
Strategy |
Description |
|---|---|
|
Fill gaps in the design space (default) |
|
Target regions of high model uncertainty |
|
Target regions of high prediction error |
|
Target high-leverage points |
|
Target regions of steep response gradients |
|
Random sampling within bounds |
Examples:
# Suggest 5 space-filling points
jaxsr suggest study.jaxsr -n 5
# Target uncertain regions
jaxsr suggest study.jaxsr -n 3 --strategy uncertainty
# Output as CSV for programmatic use
jaxsr suggest study.jaxsr -n 10 --format csv
jaxsr report#
Generate a report (Excel or Word).
jaxsr report <study_file> -o <output_file>
Arguments:
Argument |
Description |
|---|---|
|
Path to the |
Options:
Option |
Short |
Description |
|---|---|---|
|
|
Output file path (required). Extension determines format. |
Excel report (.xlsx):
Contains four sheets:
Sheet |
Contents |
|---|---|
Summary |
Study name, factors, observations, model expression, all metrics |
Coefficients |
Basis function names, coefficient values, bar chart of magnitudes |
Predictions |
Actual vs predicted values, residuals, % error, scatter chart |
Residuals |
Residuals vs predicted scatter chart |
If the output file already exists, report sheets are appended (or replaced if they already exist). This means you can add report sheets to an existing experiment template workbook.
Word report (.docx):
A formatted document with:
Title page with study name, description, timestamps
Factor summary table
Model expression and metrics table (R², MSE, RMSE, AIC, BIC, AICc)
Coefficient table
Embedded matplotlib plots:
Predicted vs actual scatter (with R² in title)
Residuals vs predicted scatter
Coefficient magnitude horizontal bar chart
Full prediction table
Iteration history (if multiple rounds were run)
Examples:
# Excel report
jaxsr report study.jaxsr -o report.xlsx
# Word report
jaxsr report study.jaxsr -o analysis_report.docx
# Add report sheets to the experiment template
jaxsr report study.jaxsr -o experiments.xlsx
jaxsr status#
Display a summary of the study’s current state.
jaxsr status <study_file>
Examples:
jaxsr status study.jaxsr
# Output:
# ============================================================
# DOE Study: catalyst_opt
# ============================================================
# Description: Optimize reaction yield
# Factors: temperature, pressure, catalyst
# Bounds: [(300, 500), (1, 10), (0, 2)]
# Feature types: ['continuous', 'continuous', 'categorical']
# Categories: {2: ['A', 'B', 'C']}
#
# Design: 20 points (15 completed, 5 pending)
# Design method: latin_hypercube
# Observations: 15
#
# Model: y = 0.31*temperature + 1.52*pressure + 4.21*I(catalyst=B)
# MSE: 2.340000
# AIC: 42.1234
# Terms: 3
#
# Iterations: 2
# Round 1: +10 points → 0.28*temperature + 1.48*pressure (First batch)
# Round 2: +5 points → 0.31*temperature + 1.52*pressure + 4.21*I(catalyst=B)
#
# Created: 2026-02-06T12:00:00+00:00
# Modified: 2026-02-06T14:30:00+00:00
# ============================================================
Complete Workflow Example#
This walks through a realistic multi-session DOE workflow for optimizing a chemical process.
Session 1: Setup#
# Create the study
jaxsr init reactor_optimization \
-f "temperature:250:450" \
-f "flow_rate:10:50" \
-f "catalyst_loading:1:5" \
-d "Optimize conversion in the packed bed reactor"
# Generate initial design
jaxsr design reactor_optimization.jaxsr \
-m latin_hypercube -n 15 -s 42 \
--format xlsx -o run_sheet.xlsx
# Check status
jaxsr status reactor_optimization.jaxsr
Give run_sheet.xlsx to the lab team. They fill in the Response column.
Session 2: First analysis#
# Import completed experiments
jaxsr add reactor_optimization.jaxsr run_sheet.xlsx \
--notes "First 15 experiments from Lab A"
# Fit initial model
jaxsr fit reactor_optimization.jaxsr --max-terms 5
# Check results
jaxsr status reactor_optimization.jaxsr
# Generate report for the team
jaxsr report reactor_optimization.jaxsr -o first_report.docx
Session 3: Follow-up experiments#
# Suggest targeted follow-up points
jaxsr suggest reactor_optimization.jaxsr -n 5 --strategy uncertainty
# Export as CSV for the lab
jaxsr suggest reactor_optimization.jaxsr -n 5 --format csv > next_runs.csv
# After running experiments, import new data
jaxsr add reactor_optimization.jaxsr followup_results.csv \
--notes "Follow-up experiments targeting uncertain regions"
# Refit with all data
jaxsr fit reactor_optimization.jaxsr --max-terms 5
# Final report
jaxsr report reactor_optimization.jaxsr -o final_report.xlsx
Python API Integration#
The CLI is a thin wrapper around the Python API. Everything the CLI does can also be done programmatically:
from jaxsr import DOEStudy
from jaxsr.excel import generate_template, read_completed_template, add_report_sheets
from jaxsr.reporting import generate_word_report
# Create study (equivalent to `jaxsr init`)
study = DOEStudy(
name="reactor_optimization",
factor_names=["temperature", "flow_rate", "catalyst_loading"],
bounds=[(250, 450), (10, 50), (1, 5)],
)
# Generate design + Excel template
study.create_design(method="latin_hypercube", n_points=15, random_state=42)
generate_template(study, "run_sheet.xlsx")
study.save("reactor_optimization.jaxsr")
# Later: load, import data, fit
study = DOEStudy.load("reactor_optimization.jaxsr")
X, y = read_completed_template(study, "run_sheet.xlsx")
study.add_observations(X, y, notes="First batch")
study.fit(max_terms=5)
study.save("reactor_optimization.jaxsr")
# Generate reports
add_report_sheets(study, "report.xlsx")
generate_word_report(study, "report.docx")
Troubleshooting#
“click is required for the jaxsr CLI”#
Install the CLI dependencies:
pip install jaxsr[cli]
“xlsxwriter is required” / “openpyxl is required”#
Install the Excel dependencies:
pip install jaxsr[excel]
“python-docx is required”#
Install the reports dependencies:
pip install jaxsr[reports]
“Template fingerprint mismatch”#
The Excel template was generated for a different study. Make sure you are
loading the template into the same study that generated it. If the file was
manually created, use --skip-validation.
“No observations available”#
You need to add experiment results before fitting. Run jaxsr add first.
“No fitted model”#
You need to fit a model before generating reports or suggesting next points.
Run jaxsr fit first.