Skip to main content

artistools

DOI PyPI - Version License

Supported Python versions Installation and pytest codecov

Artistools is collection of plotting, analysis, and file format conversion tools for the ARTIS radiative transfer code.

Installation

Requires Python >= 3.13

The artistools command can be invoked with uvx artistools (after installing uv), installed globally with uv tool install artistools, or installed into your environment with pip install artistools.

Development (editable installation)

For development, you will need a rust compiler and a clone of the repository:

git clone https://github.com/artis-mcrt/artistools.git
cd artistools

To make the artistools command available using an isolated uv virtual environment, run:

uv tool install --editable .[extras]
prek install

Alternatively, to avoid uv and install into the system environment with pip:

pip install --group dev --editable .[extras]
prek install

To enable tab completion, run artistools completions. The command detects your shell and gives the steps for it.

Citing artistools

If you artistools for a paper or presentation, please cite it. For details, see https://zenodo.org/badge/latestdoi/53433932.

Usage

Run "artistools" (or the short alias "at") at the command-line to get a full list of subcommands, and "artistools --version" to check the installed version. Some common commands are:

  • artistools plotspectra (alias: at spec)
  • artistools plotlightcurve (alias: at lc)
  • artistools plotestimators (alias: at estimators)
  • artistools plotnltepops
  • artistools inputmodel describe

Use the -h option to get a list of command-line arguments for each subcommand. Set ARTISTOOLS_TRACEBACK=1 to get the full traceback of an error. Most of these commands should be run either within an ARTIS simulation folder or by passing the folder path as the last argument.

A model on a different host

These commands accept a model path of the form host:path, where host is a name that ssh knows:

  • plotestimators and its --interactive viewer;
  • plotlightcurve;
  • plotspectra and its --interactive viewer;
  • at.scan_estimators in a Python script.
artistools plotspectra -t 300 vae26:~/scratch/mymodel

The rule of rsync decides whether a path is remote: a colon before the first slash makes a remote path. A local folder with such a colon in its name needs "./" at the start, e.g. ./run:2.

artistools starts uvx artistools@<version> server on that host through ssh, with the versions of the local artistools and polars. Thus the host needs only uv. The command sets POLARS_MAX_THREADS=16, because a login node can have hundreds of cores, and other users share them. The server reads the files and makes the data of each plot, e.g. it puts the packets into bins. Only the data to draw comes back, and the parquet caches stay beside the data on the host. A script sends the filter and the columns of each query to the host, and only the rows of the query come back.

An option that reads its files on the local host stops with an error. To start the server with a different command on the host, e.g. an artistools in a clone, set ARTISTOOLS_REMOTE_COMMAND:

export ARTISTOOLS_REMOTE_COMMAND='POLARS_MAX_THREADS=16 ~/artistools/.venv/bin/artistools server'

The environment of such a command must have the same version of polars as the client. The filter of a query goes to the host as a polars expression, and the format of an expression changes between two versions. If the versions differ, the client stops with an error that gives the uvx option.

Use from Python

artistools is mainly a set of commands, but a script or a notebook can call the same functions. import artistools as at gives a small set of names at the top level. Each package holds the other names, e.g. at.spectra and at.inputmodel.

from pathlib import Path

import artistools as at
import polars as pl

modelpath = Path("mymodel")
dfmodel, modelmeta = at.get_modeldata(modelpath)
times_days = at.get_timestep_times(modelpath, loc="mid")
dftemperature = at.scan_estimators(modelpath).filter(pl.col("timestep") == 40).select("modelgridindex", "Te").collect()
dfspectrum = at.spectra.get_spectra(modelpath, timestepmin=40, timestepmax=45)[-1].collect()

A function with the prefix scan_ returns a polars LazyFrame, or one LazyFrame for each direction bin, and reads nothing until .collect(). A function with the prefix read_ reads at once. A function with the prefix get_ can do either, and the tables below say which one returns a LazyFrame. The direction bin -1 is the average over all directions.

Names at the top level

Name Purpose
at.get_modeldata Read model.txt. Return the cells as a LazyFrame, and the model parameters as a dictionary.
at.add_derived_cols_to_modeldata Add columns that follow from the model file, e.g. the volume and the mass of each cell.
at.get_inputparams Return the parameters of input.txt.
at.get_model_name Return the name of the model that holds a path.
at.get_nprocs Return the number of MPI processes of the run.
at.get_timestep_times Return the time in days of each timestep (loc is "start", "mid", "end", or "delta").
at.get_timestep_of_timedays Return the timestep that holds a time in days.
at.scan_estimators Read the estimators of a full run as a LazyFrame, with a row for each timestep and cell.
at.get_deposition Return deposition.out as a LazyFrame.
at.get_ionstring Return a text such as Fe II for an atomic number and an ion stage.
at.get_ion_tuple Return (26, 2) for a text such as FeII, Fe II, or 26_2.
at.get_elsymbol Return the element symbol of an atomic number.
at.get_atomic_number Return the atomic number of an element symbol.
at.get_z_a_nucname Return the atomic number and the mass number of a text such as Pb208.
at.decode_roman_numeral Return the integer of a Roman numeral.
at.get_path Return a known path by name, e.g. the package folder.
at.firstexisting Return the first file of a list that exists, with a compressed copy as an alternative.
at.zopen Open a file, or its .zst, .gz, or .xz copy.

Main readers in the packages

Name Purpose
at.estimators.read_estimators Read the estimators of a few cells into a dictionary. This is slow for many cells, thus prefer at.scan_estimators.
at.spectra.get_spectra Return the spectrum of each direction bin, as an average over a range of timesteps.
at.spectra.get_from_packets Return a spectrum from the packets files, for a range of arrival times.
at.lightcurve.scan_lightcurve Read a light curve file. Return one LazyFrame for each direction bin.
at.lightcurve.get_from_packets Return the luminosity against time from the packets files.
at.packets.get_packets Return the number of ranks and a LazyFrame of the packets of a run.
at.nltepops.read_nltepops Read the NLTE populations of a timestep and of one or more cells.
at.atomic.get_levels Return the energy levels of each ion, with the transitions as an option.
at.inputmodel.save_modeldata Write model.txt from a dataframe of the cells.
at.plottools.set_mpl_style Apply the matplotlib style of artistools.

The command of a package

A package that has a plot command gives it as plot, e.g. at.spectra.plot, at.lightcurve.plot, at.estimators.plot, at.nltepops.plot, at.packets.plot, at.nonthermal.plot, and at.gsinetwork.plot. This function is the command itself. Each keyword is one command-line argument:

at.spectra.plot(argsraw=[], specpath=[modelpath], timedays="300", outputfile="spectrum.pdf")

Example output

Emission plot NLTE plot Estimator plot

License

Distributed under the MIT license. See LICENSE for more information.

https://github.com/artis-mcrt/artistools

Metadata

Release files for artistools 2026.9.30

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for artistools 2026.9.30
File Size Uploaded
artistools-2026.9.30.tar.gz 8.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for artistools 2026.9.30
File
artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl CPython 3.15 abi3t, abi3 Linux glibc 2.28+ x86-64 Details
artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl CPython 3.15 abi3, abi3t Linux glibc 2.28+ ARM64 Details
artistools-2026.9.30-cp315-abi3.abi3t-macosx_13_0_arm64.whl CPython 3.15 abi3, abi3t macOS 13.0+ ARM64 Details
artistools-2026.9.30-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
artistools-2026.9.30-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
artistools-2026.9.30-cp314-cp314t-macosx_13_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 13.0+ ARM64 Details
artistools-2026.9.30-cp313-abi3-manylinux_2_28_x86_64.whl CPython 3.13 abi3 Linux glibc 2.28+ x86-64 Details
artistools-2026.9.30-cp313-abi3-manylinux_2_28_aarch64.whl CPython 3.13 abi3 Linux glibc 2.28+ ARM64 Details
artistools-2026.9.30-cp313-abi3-macosx_13_0_arm64.whl CPython 3.13 abi3 macOS 13.0+ ARM64 Details

Total release size: 144.4 MB

Release files / artistools-2026.9.30.tar.gz

Download URL artistools-2026.9.30.tar.gz
Size 8.7 MB
Tags Source
SHA-256 checksum
How to use checksums
32c7230e86f456d9c07a1cc392f5f6c6a42d03212c5369cfa651d35bea06df58
BLAKE2b-256 checksum
How to use checksums
3cf08ee2a29409cf3fa20d1fd4c6115b38dad9a042aa513a294989d3d4cbf921
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 15.7 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
e22297e40ca347d3fa866b14ae88ccdda9ee0aaebd79a84cc49c7e25fe90c3d2
BLAKE2b-256 checksum
How to use checksums
d7709b38b0577c202f7a033c77f669e40d1b605379c523ce0b8da41d8ae62b81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl

Download URL artistools-2026.9.30-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl
Size 15.8 MB
Tags CPython 3.15 Linux glibc 2.28+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
2f357ad8a82071754250f7712ed1511f71b0577a2b6076681681296ece8aebf7
BLAKE2b-256 checksum
How to use checksums
dd4621654d887a34a972b89e9b22f6fdce6f9826ced9ca605040b849779557c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp315-abi3.abi3t-macosx_13_0_arm64.whl

Download URL artistools-2026.9.30-cp315-abi3.abi3t-macosx_13_0_arm64.whl
Size 13.6 MB
Tags CPython 3.15 abi3 abi3t macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
3911647a720b3c082e03b2b90af44c32dc1498d24403ab9b7aa359846bbae2c7
BLAKE2b-256 checksum
How to use checksums
1612e00845ecd4a9c7ca6fc585a08835f9b23a9c406faa2318ba980ee755bb85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL artistools-2026.9.30-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 15.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
776e83a1881f7e516ab7b43424f662b7112a828ba97b6f6ad1d044e0d93bbd10
BLAKE2b-256 checksum
How to use checksums
ea0d82f64df410ee12164d6a9365d1a9e7767b0bb231c58fd49bc8bb4ef26f3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL artistools-2026.9.30-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 15.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
58eb9bfffaa5926a3160c5671e6e2bceabfdebb9d693e950f1e3d81f844f2f51
BLAKE2b-256 checksum
How to use checksums
b29d3fb853c24664fd6736e5748dd305fa3e09b710354dcd8abb155b26f19c17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp314-cp314t-macosx_13_0_arm64.whl

Download URL artistools-2026.9.30-cp314-cp314t-macosx_13_0_arm64.whl
Size 13.6 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
0ce57b5f8bae0a5cfa96f037766381890187e79b82e31fa797932818271da032
BLAKE2b-256 checksum
How to use checksums
c9a0c391050b90e54a9a209973c6d70926cef504e3e817a781388b5001ceadc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp313-abi3-manylinux_2_28_x86_64.whl

Download URL artistools-2026.9.30-cp313-abi3-manylinux_2_28_x86_64.whl
Size 15.7 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
637245799916683d660328318c8b12674dbe1a38229342ef1a2f02e7ebbe28d4
BLAKE2b-256 checksum
How to use checksums
0ece89dc73bda81cd45d80a873d0f1e6cdac5955e2b0df6caa4f6eedf33b76c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp313-abi3-manylinux_2_28_aarch64.whl

Download URL artistools-2026.9.30-cp313-abi3-manylinux_2_28_aarch64.whl
Size 15.8 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
49b0d3957008dbfc83f78904d18b41e6004db8dc7cfbe33974bb151e276f32c9
BLAKE2b-256 checksum
How to use checksums
32935ef20a7ccfb3c859030012abdcd20c50e92a36156c3b083aeec6845e2a12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / artistools-2026.9.30-cp313-abi3-macosx_13_0_arm64.whl

Download URL artistools-2026.9.30-cp313-abi3-macosx_13_0_arm64.whl
Size 13.6 MB
Tags CPython 3.13 abi3 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
c9d22fb43e9fabf50a924d77dc8bef6edd27d869c13ac90e83a4ec00cc57c261
BLAKE2b-256 checksum
How to use checksums
03889315e09dedf9bf0b2216173bcb10e9a1548e8b155ed7f3c31ac1401aa53e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2026.9.30 This release

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page