Model Registry and CLI Workflows¶
Model. This notebook uses the model registry rather than focusing on one Hamiltonian. The registry summarizes available builders, categories, basis conventions, dimension scaling, return types, default parameters, and short descriptions.
Typical uses. Programmatic model discovery, documentation tables, quick CLI checks, and choosing an appropriate small-system testbed.
Parameters. Registry rows expose name, category, basis, dimension, return_type, description, and defaults. The CLI accepts model-specific options such as --n-sites, --n-cells, --n-rows, --n-cols, --hopping, and --flux.
Useful plots. Use registry-selected builders with plot_lattice_spectrum; use CLI plot for quick PNG output.
from quantum_lattice_models.registry import get_model_info, list_models, model_table
print("Registered models")
print("category | model")
print("--- | ---")
for name in list_models():
info = get_model_info(name)
print(f"{info.category:<13s} | {name}")
info = get_model_info("ssh_model")
print("\nSSH model metadata")
print(f" basis: {info.basis}")
print(f" dimension: {info.dimension}")
print(f" return type: {info.return_type}")
print(f" defaults: {info.defaults}")
Registered models
category | model
--- | ---
tight_binding | aubry_andre_harper_chain
hubbard | bose_hubbard_chain
hubbard | bose_hubbard_chain_sparse
hubbard | fermi_hubbard_chain
hubbard | fermi_hubbard_chain_sparse
topological | haldane_honeycomb_lattice
topological | haldane_honeycomb_lattice_sparse
topological | harper_hofstadter_square_lattice
topological | harper_hofstadter_square_lattice_sparse
spin | heisenberg_chain
spin | heisenberg_ladder
spin | j1_j2_heisenberg_chain
tight_binding | kagome_lattice_tight_binding
tight_binding | kagome_lattice_tight_binding_sparse
topological | kitaev_chain_bdg
spin | longitudinal_field_ising
spin | next_nearest_neighbor_ising
tight_binding | rice_mele_model
tight_binding | square_lattice_tight_binding
tight_binding | square_lattice_tight_binding_sparse
tight_binding | ssh_model
tight_binding | tight_binding_chain
tight_binding | tight_binding_chain_sparse
spin | transverse_field_ising
tight_binding | triangular_lattice_tight_binding
tight_binding | triangular_lattice_tight_binding_sparse
spin | xxz_chain
spin | xy_chain
SSH model metadata
basis: single particle
dimension: 2*n_cells
return type: LatticeHamiltonian
defaults: {'n_cells': 8, 't1': 0.5, 't2': 1.0}
rows = model_table()
headers = ["name", "category", "basis", "dimension", "return_type"]
print(" | ".join(headers))
print(" | ".join(["---"] * len(headers)))
for row in rows:
print(" | ".join(str(row[key]) for key in headers))
name | category | basis | dimension | return_type --- | --- | --- | --- | --- transverse_field_ising | spin | qubit | 2**n_sites | DenseHamiltonian longitudinal_field_ising | spin | qubit | 2**n_sites | DenseHamiltonian next_nearest_neighbor_ising | spin | qubit | 2**n_sites | DenseHamiltonian heisenberg_chain | spin | qubit | 2**n_sites | DenseHamiltonian xy_chain | spin | qubit | 2**n_sites | DenseHamiltonian xxz_chain | spin | qubit | 2**n_sites | DenseHamiltonian j1_j2_heisenberg_chain | spin | qubit | 2**n_sites | DenseHamiltonian heisenberg_ladder | spin | qubit | 2**(2*n_rungs) | DenseHamiltonian bose_hubbard_chain | hubbard | truncated boson occupation | (max_occupancy+1)**n_sites | LatticeHamiltonian bose_hubbard_chain_sparse | hubbard | truncated boson occupation | (max_occupancy+1)**n_sites | scipy.sparse.csr_matrix fermi_hubbard_chain | hubbard | spinful fermion occupation | 2**(2*n_sites) | LatticeHamiltonian fermi_hubbard_chain_sparse | hubbard | spinful fermion occupation | 2**(2*n_sites) | scipy.sparse.csr_matrix ssh_model | tight_binding | single particle | 2*n_cells | LatticeHamiltonian rice_mele_model | tight_binding | single particle | 2*n_cells | LatticeHamiltonian tight_binding_chain | tight_binding | single particle | n_sites | LatticeHamiltonian tight_binding_chain_sparse | tight_binding | single particle | n_sites | scipy.sparse.csr_matrix square_lattice_tight_binding | tight_binding | single particle | n_rows*n_cols | LatticeHamiltonian square_lattice_tight_binding_sparse | tight_binding | single particle | n_rows*n_cols | scipy.sparse.csr_matrix aubry_andre_harper_chain | tight_binding | single particle | n_sites | LatticeHamiltonian triangular_lattice_tight_binding | tight_binding | single particle | n_rows*n_cols | LatticeHamiltonian triangular_lattice_tight_binding_sparse | tight_binding | single particle | n_rows*n_cols | scipy.sparse.csr_matrix kagome_lattice_tight_binding | tight_binding | single particle | 3*n_rows*n_cols | LatticeHamiltonian kagome_lattice_tight_binding_sparse | tight_binding | single particle | 3*n_rows*n_cols | scipy.sparse.csr_matrix harper_hofstadter_square_lattice | topological | single particle | n_rows*n_cols | LatticeHamiltonian harper_hofstadter_square_lattice_sparse | topological | single particle | n_rows*n_cols | scipy.sparse.csr_matrix kitaev_chain_bdg | topological | Nambu single particle | 2*n_sites | LatticeHamiltonian haldane_honeycomb_lattice | topological | single particle | 2*n_rows*n_cols | LatticeHamiltonian haldane_honeycomb_lattice_sparse | topological | single particle | 2*n_rows*n_cols | scipy.sparse.csr_matrix
CLI examples to run in a terminal after installing the package:
quantum-lattice models
quantum-lattice spectrum --model ssh_model --n-cells 8
quantum-lattice plot --model harper_hofstadter_square_lattice --n-rows 4 --n-cols 4 --flux 0.25 --output images/hofstadter_cli.png