Skip to content

Package Index

The package index is a map of tools by task. It is not a ranking and not an endorsement. Package choices should be driven by the calculation, reproducibility burden, licensing constraints, and whether the package’s abstractions reduce or hide physics errors.

For any package-dependent notebook, cite the official documentation and record the version used.

Python.

Typical use: notebooks, scripts, validation cells, and lightweight automation.

Use when: the calculation benefits from a broad scientific ecosystem and readable examples.

Watch for: Python version and package versions must be recorded for reproducibility.

NumPy.

Typical use: arrays, vectorized linear algebra, grid calculations, validation cells, and small dense computations.

Use when: the notebook can be expressed with transparent arrays and direct checks.

Watch for: array shape, dtype, broadcasting, and normalization weights are common sources of hidden mistakes.

SciPy.

Typical use: sparse matrices, eigensolvers, integration, special functions, optimization, and signal processing.

Use when: the calculation needs trusted numerical algorithms beyond base arrays.

Watch for: solver tolerances and sparse matrix formats should be part of the benchmark report.

SymPy.

Typical use: symbolic algebra, exact matrix checks, commutators, series expansions, and expression verification.

Use when: symbolic manipulation clarifies a derivation or catches algebraic errors.

Watch for: symbolic results can become unreadable; keep symbolic checks focused.

Matplotlib.

Typical use: static plots for wavefunctions, spectra, convergence, and benchmark reports.

Use when: figures need local, reproducible generation.

Watch for: a figure is not validated until the plotted quantity, units, parameters, and source notebook are recorded.

QuTiP.

Typical use: open quantum systems, quantum optics, Lindblad dynamics, driven systems, and finite-dimensional models.

Use when: density matrices, collapse operators, and quantum-optical workflows are central.

Watch for: basis ordering, collapse-operator conventions, solver tolerances, and package version should be recorded.

Qiskit.

Typical use: circuit-model quantum information, gates, transpilation, simulators, and IBM quantum workflows.

Use when: the notebook is specifically about circuits, gates, measurement counts, or hardware-facing examples.

Watch for: circuit endianness, measurement bit order, simulator backend, and transpiler settings can change interpretation.

Cirq.

Typical use: circuit construction and simulation, especially in workflows aligned with Google’s quantum software ecosystem.

Use when: circuit notation and simulator behavior match the intended example.

Watch for: qubit ordering and measurement-key conventions.

TeNPy.

Typical use: tensor-network simulations, matrix-product states, DMRG, and time evolution in one-dimensional many-body systems.

Use when: the task genuinely needs tensor-network methods rather than exact diagonalization.

Watch for: truncation errors, bond dimensions, finite-size effects, and boundary conventions.

quimb.

Typical use: tensor networks, exact diagonalization helpers, and Python-native many-body workflows.

Use when: flexible tensor-network and linear-algebra tools are useful for exploratory many-body examples.

Watch for: the abstraction layer can hide index ordering; record tensor layouts and truncation thresholds.

ITensor.

Typical use: tensor networks and many-body simulations in Julia or C++ ecosystems.

Use when: a mature tensor-network workflow is needed and language choice is explicit.

Watch for: site-index conventions, truncation settings, and environment setup.

PySCF.

Typical use: Hartree–Fock, density-functional theory, post-Hartree–Fock methods, and molecular integrals in Python.

Use when: electronic-structure calculations are needed as computational quantum chemistry examples.

Watch for: basis sets, units, molecular geometry, and software version must be recorded.

Psi4.

Typical use: quantum chemistry calculations with a mature standalone package and Python interface.

Use when: the task needs established electronic-structure workflows and benchmarkable molecular examples.

Watch for: input files, basis sets, convergence criteria, and citation requirements.

Before a new package becomes part of a notebook workflow, record:

  • purpose,
  • language and installation route,
  • license if relevant,
  • official documentation link,
  • version used,
  • notebook or page using it,
  • benchmark confirming the package-dependent result,
  • fallback or minimal example if the package is optional.