Skip to main content

pyGCG: Grism Classification GUI

PyPI - Version

A Python GUI to aid in viewing and classifying NIRISS data products. This was originally designed for use by the GLASS-JWST collaboration, but has been tested against the data products from the PASSAGE collaboration as well.

Installation

In all cases, it is strongly recommended to install pyGCG into a new virtual environment, to minimise dependency conflicts (see Requirements).

pyGCG can be installed directly from the Python Package Index (PyPI), by running:

pip install --upgrade pygcg

Building from source

Alternatively, to clone the latest GitHub repository, use this command:

git clone https://github.com/PJ-Watson/pyGCG.git

To build and install pyGCG, run (from the root of the source tree):

pip install .

Usage

Launching the GUI

In the most basic configuration, pyGCG can be run in a Python session as follows:

from pygcg.GUI_main import run_app
run_app()

Alternatively, pyGCG can be launched from the terminal using a single line:

python -c "from pygcg.GUI_main import run_app; run_app()"

DPI Scaling

By default, high DPI scaling is disabled for pyGCG. This can be enabled using the hdpi_scaling keyword:

from pygcg.GUI_main import run_app
run_app(hdpi_scaling=True)

Configuration file

When launching pyGCG, one can pass the path of a configuration file using the config_file keyword:

from pygcg.GUI_main import run_app
run_app(config_file="/path/to/your/config.toml")

By default, pyGCG will look for config.toml in the current working directory, and will create this file if it doesn't exist, using the included example_config.toml. This file will also be created if the supplied configuration file is invalid.

The configuration file is TOML-formatted and organised into various sections, or tables.

Files

This table describes the location of the necessary files and directories.

Key Description
extractions_dir The directory in which NIRISS extractions are stored. By default, this is assumed to contain all ancillary data (catalogue, segmentation maps, direct images).
out_dir The directory in which the pyGCG output will be stored. If no directory is provided, or it is not possible to create the supplied directory, pyGCG will run in read-only mode.
cat_path The file path of the input catalogue. By default, pyGCG will search for a file matching *ir.cat.fits inside extractions_dir. The catalogue must contain columns that can be interpreted as id, ra, and dec (see Catalogue).
prep_dir If different to extractions_dir, this can be used to specify the directory containing the segmentation map and direct images.
cube_path The file path of the corresponding MUSE datacube.
temp_dir The directory in which temporary files are stored. Defaults to {out_dir}/.temp/.
skip_existing If True, pyGCG will skip loading objects which already exist in the output catalogue.
out_cat_name The name of the output catalogue. Defaults to pyGCG_output.fits.

Grisms

This table specifies the grism filters and position angles used in observations.

Key Default Description
R "F200W" The name of the grism filter that will be mapped to the red channel in the RGB image. Conventionally, this would be the filter covering the longest wavelengths.
G "F150W" Same as above, but for the green channel.
B "F115W" Same as above, but for the blue channel.
PA1 72.0 The position angle (in degrees) of the first grism orientation.
PA2 341.0 Same as above, but for the second grism orientation.

Catalogue

This table can be used to specify non-standard column names (compared to the default grizli catalogue).

Key Default Description
id "NUMBER" The unique label used to identify objects. Any type which can be represented as a string is acceptable.
ra "X_WORLD" The right ascension of the object, assumed to be in degrees if no unit is present.
dec "Y_WORLD" The declination of the object, assumed to be in degrees if no unit is present.
seg_id "NUMBER" The unique number corresponding to the object identification in the grizli segmentation map and extractions (e.g. nis-wfss_{seg_id}.1D.fits). By default, this is also used as the object id. If seg_id is supplied, but not a valid catalogue column name, a warning will be raised.
seg_id_length 5 The number of characters used for seg_id, which is assumed to be zero-padded (e.g. 76 -> 00076).
mag "MAG_AUTO" The magnitude of the object. If not supplied, or the column name does not exist, this will not be displayed rather than raising an error.
radius 5 The radius of the object. This will fail silently if not found, in the same way as mag.
plate_scale None In arcsec/pixel. By default, radius will be displayed alongside any units included in the catalogue. If plate scale is specified, radius is taken to be in pixels, and converted to angular units using plate_scale.

Lines

In the Spectrum tab, it is possible to overlay the positions of reference lines at a given redshift. These take the following format:

[lines.emission.Lyman_alpha]
tex_name = 'Ly$\alpha$'
centre = 1215.24

pyGCG currently supports grouping lines into two categories, emission and absorption. The visibility of these groups can be toggled separately.

The key for each line, [lines.emission.XXX], must be unique. There is no such requirement for tex_name, which uses the Matplotlib Mathtext parser to render the name on the plot. Note that single quotation marks are used to represent a string literal in TOML. centre is self-evidently the centre of the line, and is given in angstroms.

Appearance

These options can be used to change the appearance of the GUI.

Key Default Description
appearance "system" The overall appearance. Can be one of system (default), light, or dark.
theme "blue" The CustomTkinter colour theme. This can be one of blue (default), dark-blue, or green. This can also point to the location of a custom .json file describing the desired theme.

Requirements

pyGCG has the following strict requirements:

pyGCG has been tested with Python 3.10-3.12, across multiple operating systems, and is developed primarily on Python 3.12 and Ubuntu 22.04.5 LTS.

Metadata

Release files for pyGCG 1.1.3

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

Source distribution (sdist)

Source distribution for pyGCG 1.1.3
File Size Uploaded
pygcg-1.1.3.tar.gz 56.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyGCG 1.1.3
File Interpreter ABI Platform
pygcg-1.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 116.1 kB

Release files / pygcg-1.1.3.tar.gz

Download URL pygcg-1.1.3.tar.gz
Size 56.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f05439ba48c4e971902ba33a1be9d8c6d173f74a906899b4bc30167f5a1636ba
BLAKE2b-256 checksum
How to use checksums
b6ae6c31fe402f8e46d81ff97a62404c871764172caa104616072efaef1dfb29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 23, 2026.

Transparency log

Release files / pygcg-1.1.3-py3-none-any.whl

Download URL pygcg-1.1.3-py3-none-any.whl
Size 59.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e31e058b3870d1a531a78d39813961e37611f086886fa2e2bdace9bd41cf2d6
BLAKE2b-256 checksum
How to use checksums
e262bbc6a82a72e026302f155d547616345685cb8c9934103e9fcb863bbf9b48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 23, 2026.

Transparency log

Release history Release notifications | RSS feed

1.4

2 release files

This release

1.1.3 This release

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8

2 release files

0.7.15

2 release files

0.7.14

2 release files

0.7.11

2 release files

0.7.10

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.0

2 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