Visualization#
In this section you find the reference documentation of the modules contained in the visualization module.
visualize#
Module for visualization.
- visualization.visualize.configure_figure_output(args)[source]#
Set the figure output options of this process (like matplotlib
rcParams).Applications call this once at start with their parsed arguments;
save_figurethen usesfigure_format,figure_dpiandfigure_png_palettefrom them.
- visualization.visualize.convert_png_to_palette(png_file)[source]#
Convert a PNG file in place to a 256-color palette image if that makes it smaller.
- Parameters:
- png_filePath or str
PNG file to convert.
- visualization.visualize.figure_cache_key(renderer, renderer_modules, plot_config, rendered_data, context=None)[source]#
Return a SHA-256 key for identical plot inputs and rendering settings.
- Parameters:
- rendererstr
Stable identifier for the renderer.
- renderer_modulesdict
Mapping of renderer component names to their source file paths.
- plot_configdict
Plot settings that affect the visible figure.
- rendered_dataobject
Normalized data supplied to the renderer.
- contextRunContext or None, optional
Context containing figure output settings.
- Returns:
- str
SHA-256 digest representing the rendered figure inputs.
- visualization.visualize.figure_output_settings(context=None)[source]#
Return figure output options from the context or from
configure_figure_output.
- visualization.visualize.pdf_report(path)[source]#
Write figures to a multi-page PDF, closing each figure after it is added.
- Parameters:
- pathpathlib.Path or str
Destination PDF path.
- Yields:
- _PdfReport
Report with an
add(fig)method.
- visualization.visualize.plot_1d(data, **kwargs)[source]#
Produce a high contrast one dimensional plot from multiple data sets.
- Parameters:
- data: numpy structured array or dict of structured arrays
Columns: x, y and optionally errors. Dict keys are the legend labels; the first entry is the reference for ratio or difference plots.
- **kwargs:
Plot options (palette, big_plot, title, no_legend, legend_fontsize, no_markers, empty_markers, plot_ratio, plot_difference, xscale, yscale, xlim, ylim, xtitle, ytitle, error_type, error_label) and any kwargs accepted by plt.plot.
- Returns:
- pyplot.figure
Figure in which the plot was produced.
- Raises:
- ValueError
if a ratio or difference is requested with one data set.
- visualization.visualize.plot_hist_2d(data, ax=None, **kwargs)[source]#
Produce a two dimensional histogram plot.
- Parameters:
- data: numpy structured array
Columns are used as the x-axis and y-axis titles.
- ax: matplotlib.axes.Axes, optional
Axes to draw on. If not provided, a new figure is created.
- **kwargs:
title, cmap and any kwargs accepted by plt.hist2d.
- Returns:
- pyplot.figure
Figure in which the plot was produced.
- visualization.visualize.plot_histogram(data, ax=None, **kwargs)[source]#
Plot a one-dimensional histogram on the provided or current axes.
- Parameters:
- dataarray-like
Values to plot.
- axmatplotlib.axes.Axes, optional
Axes to draw on. If not provided, the current axes are used.
- **kwargs
Keyword arguments passed to
Axes.hist.
- Returns:
- matplotlib.figure.Figure
Figure containing the histogram.
- visualization.visualize.plot_ratio_difference(ax1, data_dict, plot_ratio, gs, plot_args)[source]#
Plot the ratio or difference plot in the lower panel.
- visualization.visualize.plot_table(table, y_title, **kwargs)[source]#
Produce a high contrast one dimensional plot from an astropy.Table.
The first column is the x-axis; each further column is one data set.
- Parameters:
- table: astropy.Table or astropy.QTable
Table with at least two columns.
- y_title: str
The y-axis title.
- **kwargs:
Options as for
plot_1d().
- Returns:
- pyplot.fig
Figure instance.
- Raises:
- ValueError
if table has less than two columns.
- visualization.visualize.save_figure(fig, output_file, figure_format=None, log_title='', dpi='figure', close=False, pil_kwargs=None, context=None)[source]#
Save figure to output file(s).
A figure suffix in
output_fileis replaced by each format; other dots are kept. Formats default to the configuredfigure_formator PNG. PNG files are converted to a 256-color palette iffigure_png_paletteis configured.- Parameters:
- fig: plt.figure
Figure to save.
- output_file: Path, str
Output path, with or without a format suffix.
- figure_format: list
List of formats to save the figure.
- log_title: str
Title of the figure to be added to the log message.
- dpistr or int, optional
DPI for
fig.savefig; a configuredfigure_dpioverrides it for PNG.- closebool, optional
Close the figure after saving. Defaults to False.
- pil_kwargsdict, optional
Keyword arguments passed to Pillow when saving PNG files.
- visualization.visualize.set_style(palette='default', big_plot=False)[source]#
Set the plotting style (colour palette, font and marker sizes) for following plots.
- Parameters:
- palette: str
Colour palette: classic (default), modified classic, autumn, purples or greens.
- big_plot: bool
If True, fonts and markers are made bigger.
- Raises:
- KeyError
if provided palette does not exist.
legend_handlers#
Helper functions for legend handlers used for plotting.
- class visualization.legend_handlers.BaseLegendHandler(telescope_type=None)[source]#
Base telescope handler that can handle any telescope type.
- class visualization.legend_handlers.HESSHandler(telescope_type=None)[source]#
Legend handler for HESS telescopes.
- class visualization.legend_handlers.HexEdgePixelHandler[source]#
Legend handler class to plot a hexagonal “edge” pixel.
- class visualization.legend_handlers.HexOffPixelHandler[source]#
Legend handler class to plot a hexagonal “off” pixel.
- class visualization.legend_handlers.HexPixelHandler[source]#
Legend handler class to plot a hexagonal “on” pixel.
- class visualization.legend_handlers.LSTHandler(telescope_type=None)[source]#
Legend handler for LST telescopes.
- class visualization.legend_handlers.MAGICHandler(telescope_type=None)[source]#
Legend handler for MAGIC telescopes.
- class visualization.legend_handlers.MSTHandler(telescope_type=None)[source]#
Legend handler for MST telescopes.
- class visualization.legend_handlers.SCTHandler(telescope_type=None)[source]#
Legend handler for SCT telescopes.
- class visualization.legend_handlers.SSTHandler(telescope_type=None)[source]#
Legend handler for SST telescopes.
- class visualization.legend_handlers.SquareEdgePixelHandler[source]#
Legend handler class to plot a square “edge” pixel.
- class visualization.legend_handlers.SquareOffPixelHandler[source]#
Legend handler class to plot a square “off” pixel.
- class visualization.legend_handlers.SquarePixelHandler[source]#
Legend handler class to plot a square “on” pixel.
- class visualization.legend_handlers.VERITASHandler(telescope_type=None)[source]#
Legend handler for VERITAS telescopes.
- visualization.legend_handlers.calculate_center(handlebox, width_factor=3, height_factor=3)[source]#
Calculate the center of the handlebox based on given factors.
- visualization.legend_handlers.get_telescope_config(telescope_type)[source]#
Return the configuration for a given telescope type.
Try both site-dependent and site-independent configurations (e.g. “MSTS” and “MST”).
- Parameters:
- telescope_typestr, None
The type of the telescope (e.g., “LSTN”, “MSTS”).
- Returns:
- dict
The configuration dictionary for the telescope type.
plot_array_layout#
Plot array elements for a layout.
- class visualization.plot_array_layout.PlotBounds(x_lim, y_lim)[source]#
Axis-aligned bounds for the layout in meters.
- Attributes:
- x_limtuple[float, float]
Min/max for x (meters).
- y_limtuple[float, float]
Min/max for y (meters).
- x_lim#
Alias for field number 0
- y_lim#
Alias for field number 1
- visualization.plot_array_layout.create_patches(telescopes, scale, show_label, ax, grayed_out_elements=None, highlighted_elements=None)[source]#
Create telescope patches and labels.
- Parameters:
- telescopesTable
Telescope data table.
- scalefloat
Marker size scale factor.
- show_labelbool
Show telescope labels.
- axAxes
Matplotlib axes object.
- grayed_out_elementslist or None
List of telescope names to plot as gray circles.
- highlighted_elementslist or None
List of telescope names to plot with red circles around them.
- Returns:
- patcheslist
Shape patches.
- radiilist
Telescope radii.
- highlighted_patcheslist
List of highlighted telescope patches.
- text_objectslist
List of text objects for labels.
- visualization.plot_array_layout.finalize_plot(ax, patches, x_title, y_title, x_lim=None, y_lim=None, highlighted_patches=None)[source]#
Finalize plot appearance and limits.
- visualization.plot_array_layout.generate_plot_combinations(args_dict, model_reader=None, *, context=None)[source]#
Yield model version and site combinations for plotting.
- Parameters:
- args_dictdict
Dictionary with command line arguments.
- Yields:
- tuple
Pair of
(model_version, site)values.
- visualization.plot_array_layout.get_patches(ax, telescopes, show_tel_label, axes_range, marker_scaling, grayed_out_elements=None, highlighted_elements=None, filter_x_lim=None, filter_y_lim=None)[source]#
Get plot patches and axis range.
- Parameters:
- axAxes
Matplotlib axes object.
- telescopesTable
Telescope data table.
- show_tel_labelbool
Show telescope labels.
- axes_rangefloat or None
Axis range, auto if None.
- marker_scalingfloat
Marker size scale factor.
- grayed_out_elementslist or None
List of telescope names to plot as gray circles.
- highlighted_elementslist or None
List of telescope names to plot with red circles around them.
- Returns:
- patcheslist
List of telescope patches.
- axes_rangefloat
Calculated or input symmetric axis range (meters).
- highlighted_patcheslist
List of highlighted telescope patches.
- boundsPlotBounds
Min/max for x and y in meters.
- text_objectslist
List of text objects for labels.
- visualization.plot_array_layout.get_positions(telescopes)[source]#
Get X/Y positions depending on coordinate system.
For ground coordinates, rotates the positions by 90 degrees.
- Returns:
- x_rot, y_rotQuantity
Position coordinates.
- visualization.plot_array_layout.get_sphere_radius(tel)[source]#
Get telescope sphere radius.
- Returns:
- radiusQuantity
Radius with units.
- visualization.plot_array_layout.get_telescope_name(tel)[source]#
Get telescope name.
- Returns:
- namestr
Telescope name or fallback identifier.
- visualization.plot_array_layout.get_telescope_patch(tel_type, x, y, radius, is_grayed_out=False)[source]#
Create patch for a telescope.
- Parameters:
- tel_type: str
Telescope type.
- xQuantity
X position.
- yQuantity
Y position.
- radiusQuantity
Telescope radius.
- is_grayed_outbool
Whether to plot telescope in gray.
- Returns:
- patchPatch
Circle or rectangle patch.
- visualization.plot_array_layout.plot_array_layout(telescopes, show_tel_label=False, axes_range=None, marker_scaling=1.0, background_telescopes=None, grayed_out_elements=None, highlighted_elements=None, legend_location='best', bounds_mode='exact', padding=0.1, x_lim=None, y_lim=None)[source]#
Plot telescope array layout.
- Parameters:
- telescopesTable
Telescope data table.
- show_tel_labelbool
Show telescope labels (default False).
- axes_rangefloat or None
Axis range, auto if None.
- marker_scalingfloat
Marker size scale factor.
- background_telescopesTable or None
Optional background telescope table.
- grayed_out_elementslist or None
List of telescope names to plot as gray circles.
- highlighted_elementslist or None
List of telescope names to plot with red circles around them.
- legend_locationstr
Location of the legend (default “best”).
- Returns:
- figFigure
Matplotlib figure object.
- Other Parameters:
- bounds_mode{“symmetric”, “exact”}
Controls axis limits calculation. “symmetric” uses +-R where R is the padded maximum extent (default), while “exact” uses individual x/y min/max bounds.
- paddingfloat
Fractional padding applied around computed extents (used for both modes).
- x_lim, y_limtuple(float, float), optional
Explicit axis limits in meters. If provided, these override axes_range and bounds_mode for the respective axis. If only one is provided, the other axis is derived per mode.
- visualization.plot_array_layout.plot_array_layouts(args_dict, output_path, layouts, background_layout=None)[source]#
Plot multiple array layouts.
- Parameters:
- args_dictdict
Application arguments.
- output_pathPath
Output path for figures.
- layoutsdict
Dictionary of layout name to telescope table.
- background_layoutTable or None
Optional background telescope table.
- Returns:
- figsdict
Dictionary of layout name to matplotlib figure object.
array_layout_cache#
Cache identities for rendered array layouts.
- visualization.array_layout_cache.array_layout_figure_name(layout, args_dict, background_layout=None)[source]#
Return the content-derived filename stem for an array layout figure.
Layout names and sites are intentionally omitted because they are not drawn in the figure. Rendered data, display options, renderer source, and output settings determine the identity.
- Parameters:
- layoutdict
Layout data containing
array_elementsand optionalsitefields.- args_dictdict
Plot options used to render the layout.
- background_layoutastropy.table.Table or None, optional
Optional telescope data drawn behind the layout.
- Returns:
- str
Filename stem shared by figures with identical rendering inputs.
plot_camera#
Plot camera pixel layout and trigger patches.
Model data (camera, trigger tables) are passed in by the caller so that this module does not import the model package.
- visualization.plot_camera.parse_pixel_ids_to_print(print_pixels_id_arg, camera)[source]#
Parse the print_pixels_id argument into an integer pixel count.
- Parameters:
- print_pixels_id_argstr or int
Integer, 0 (suppress) or ‘All’.
- cameraCamera
Camera used to determine the total pixel count for ‘All’.
- Returns:
- int
Number of pixel IDs to print; -1 when printing should be suppressed.
- Raises:
- ValueError
If the argument is not an integer string or ‘All’.
- visualization.plot_camera.plot_pixel_layout(camera, camera_in_sky_coor=False, pixels_id_to_print=50)[source]#
Plot the pixel layout for an observer facing the camera.
Includes edge pixels, off pixels, pixel IDs (up to
pixels_id_to_print), coordinate axes, the focal length, the average edge radius and the FoV.- Parameters:
- cameraCamera
Camera object to plot.
- camera_in_sky_coorbool, optional
Plot the camera in the sky coordinate system.
- pixels_id_to_printint, optional
Number of pixel IDs to print in the plot.
- Returns:
- matplotlib.figure.Figure
Figure with the pixel layout.
- visualization.plot_camera.plot_pixel_layout_with_image(camera, image=None, colormap='viridis', norm='lin', ax=None, vmin=None, vmax=None, add_color_bar=True, color_bar_label='Pixel Value', **kwargs)[source]#
Plot pixel layout with optional per-pixel values as colors.
Used to display DL1 images (e.g., integrated signal, peak timing) on the camera.
- Parameters:
- cameraCamera
Camera object with pixel geometry.
- imagenp.ndarray, optional
Per-pixel values to display as colors (shape: n_pix,). If None, plot layout without colored values.
- colormapstr, optional
Colormap name (default “viridis”).
- normstr, optional
Normalization type: “lin” (linear), “log”, or “symlog” (default “lin”).
- axplt.Axes, optional
Existing axes to plot on. If None, create new figure.
- vmin, vmaxfloat, optional
Value range for normalization. If None, use data range.
- add_color_barbool, optional
Whether to add a color bar (default True).
- color_bar_labelstr, optional
Label for the color bar (default “Pixel Value”).
- **kwargs
Additional arguments passed to plt.subplots() if ax is None.
- Returns:
- plt.Figure
Figure with the pixel layout and optional image overlay.
- visualization.plot_camera.plot_selected_trigger_patches(camera, groups, sky_coordinates)[source]#
Draw selected trigger groups on a camera overview and a labelled close-up of their union.
- Parameters:
- cameraCamera
Camera object.
- groupsdict
Mapping of group ID to its set of pixel IDs (see
read_selected_trigger_patches()).- sky_coordinatesbool
Plot in sky coordinates (no vertical flip for single-mirror telescopes).
- Returns:
- matplotlib.figure.Figure
The generated figure.
- visualization.plot_camera.read_selected_trigger_patches(definitions, members, patch_ids, camera_pixels)[source]#
Resolve the selected trigger groups into their pixel sets, with validation.
- Parameters:
- definitionsastropy.table.Table
Trigger group definitions with a
group_idcolumn.- membersastropy.table.Table
Trigger memberships with
group_idandpixel_idcolumns.- patch_idslist of int
Selected trigger-group IDs.
- camera_pixelsset of int
Pixel IDs present in the camera.
- Returns:
- dict
Mapping of group ID to its set of pixel IDs.
- visualization.plot_camera.trigger_patches_for_pixel(members, pixel_id, camera_pixels)[source]#
Find the distinct trigger-group IDs containing a camera pixel.
- Parameters:
- membersastropy.table.Table
Trigger memberships with
group_idandpixel_idcolumns.- pixel_idint
Camera pixel ID.
- camera_pixelsset of int
Pixel IDs present in the camera.
- Returns:
- list of int
Sorted trigger-group IDs.
plot_telescope_structure#
Plot the optical structure of a telescope: mirrors, camera housing and telescope structure.
The geometry is read from the model parameters with the nominal positions, that is
without the random alignment errors of a particular instrument. Only simtools is
needed. With shadowing, the structure is coloured by the light each element stops
on its own; that needs the obdeect package.
- visualization.plot_telescope_structure.plot_telescope_structure(geometry, output_file, shares=None)[source]#
Plot the telescope seen from the sky (x, y) and from the side (x, z).
- Parameters:
- geometry: TelescopeGeometry
Elements to draw (see
telescope_geometry).- output_file: Path or str
Output file name without suffix (see
save_figure).- shares: dict, optional
Element name -> (share of light stopped alone in per cent, photons crossing it), as from
shadowing_shares. Without it, all structure elements are grey.
plot_corsika_histograms#
Visualize Cherenkov photon distributions from CORSIKA.
- visualization.plot_corsika_histograms.export_all_photon_figures_pdf(histograms_instance, pdf_file_name, labels=None)[source]#
Build and save all photon histogram figures into a single PDF.
- Parameters:
- histograms_instance: corsika.corsika_histograms.CorsikaHistograms or list
Single histogram instance or list of CorsikaHistograms instances from multiple files. When a list is provided, 1D histograms from all files are combined into single plots with different colors, while 2D histograms of the same type are plotted sequentially.
- pdf_file_name: str or Path
Name of the output pdf file to save the histograms.
- labels: list or None
Optional list of labels for the input files. If None, file names are used as labels. The order should match the order of histograms_instance if it’s a list.
plot_tables#
Plot tabular data.
- visualization.plot_tables.fit_bias_curve(thresholds, rates)[source]#
Fit log10(rate) as a linear function of threshold.
- Parameters:
- thresholdsarray-like
Trigger thresholds.
- ratesarray-like
Trigger rates; only finite positive values are used.
- Returns:
- tuple or None
Valid thresholds and fit coefficients (slope, intercept), or None if fewer than two distinct finite thresholds have corresponding finite, positive rates.
- visualization.plot_tables.generate_plot_configurations(parameter, parameter_version, site, telescope, output_path, plot_type, model_reader=None, model_version=None, *, context=None)[source]#
Generate plot configurations for a model parameter from schema files.
- Parameters:
- parameter: str
Model parameter name.
- parameter_version: str
Parameter version.
- site: str
Site name.
- telescope: str
Telescope name.
- output_path: str or Path
Output path for the plots.
- plot_type: str
Plot type or “all” for all plots.
- model_version: str, optional
Exact model version used to read the table data.
- Returns:
- tuple or None
List of plot configurations and list of output file names, or None if no plot configurations are found.
- visualization.plot_tables.plot(config, output_file, data_path=None, model_reader=None, *, context=None)[source]#
Plot tabular data from data or from model parameter files.
- Parameters:
- config: dict
Configuration dictionary for plotting.
- output_file: str
Output file.
- data_path: Path or str, optional
Path to the data files. All files are expected in the same directory.
- visualization.plot_tables.plot_bias_curves(nsb_stats, proton_stats, config, output_path, trigger_threshold=None)[source]#
Plot NSB and proton bias curves.
- Parameters:
- nsb_statsdict
NSB statistics by threshold.
- proton_statsdict
Proton statistics by threshold.
- configdict
Plot configuration with title, ymin, ymax, and scaling_factor.
- output_pathPath or str
Output path for plot image.
- trigger_thresholdfloat, optional
Trigger threshold value to annotate on the plot.
- visualization.plot_tables.read_table_data(config, data_path=None, model_reader=None, *, context=None)[source]#
Read table data from file or parameter repository.
- Parameters:
- config: dict
Configuration dictionary for plotting.
- data_path: Path or str, optional
Path to the data files. All files are expected in the same directory.
- Returns:
- Dict
Dict with table data (numpy structured arrays).
plot_pixels#
Functions for plotting pixel layout information.
The camera (simtools.model.camera.Camera) and its raw pixel data are built by the caller,
so this module does not import the model package.
- visualization.plot_pixels.plot(output_file, camera, raw_pixels, *, rotate_angle=None, pixels_id_to_print=80)[source]#
Plot a pixel layout and save it to file.
- Parameters:
- output_filestr or Path
Path where to save the plot.
- cameraCamera
Camera with pixel geometry (
pixels,telescope_name,get_edge_pixels).- raw_pixelsdict
Unrotated pixel data with keys
x,yandrotate_angle(radians).- rotate_angleastropy.units.Quantity, optional
Rotation applied to the telescope-specific pixel transform (default: from raw_pixels).
- pixels_id_to_printint, optional
Pixel IDs below this value are printed.
- visualization.plot_pixels.plot_pixel_layout(camera, raw_pixels, *, rotate_angle=None, pixels_id_to_print=50)[source]#
Create the pixel layout figure.
- Parameters:
- cameraCamera
Camera with pixel geometry; its pixel positions are transformed in place.
- raw_pixelsdict
Unrotated pixel data with keys
x,yandrotate_angle(radians).- rotate_angleastropy.units.Quantity, optional
Rotation applied to the telescope-specific pixel transform.
- pixels_id_to_printint, optional
Pixel IDs below this value are printed.
- Returns:
- matplotlib.figure.Figure
The generated figure.
- visualization.plot_pixels.raw_pixels_from_configuration(configuration)[source]#
Return unrotated pixel data from resolved camera components.
- Parameters:
- configurationdict
Output of
resolve_camera_components().
- Returns:
- dict
Keys
x,y(cm) androtate_angle(radians).
plot_trigger_patches#
Analyze and plot camera trigger-patch configuration.
- visualization.plot_trigger_patches.analyze_trigger_patch_configuration(camera, trigger_groups, trigger_members)[source]#
Calculate per-pixel patch distances and per-group spatial summaries.
- Parameters:
- cameraCamera
Camera geometry with pixel IDs and neighbor lookup.
- trigger_groupsastropy.table.Table
Group definitions with
group_idandkindcolumns.- trigger_membersastropy.table.Table
Memberships with
group_idandpixel_idcolumns.
- Returns:
- tuple of astropy.table.Table
Per-pixel and per-group diagnostics. Distances are in camera-plane centimeters; undefined distances are NaN.
- Raises:
- ValueError
If the camera or trigger tables contain inconsistent identifiers.
- visualization.plot_trigger_patches.format_trigger_patch_summary(pixel_table, group_table)[source]#
Format the page-two summary for both the report and application log.
- Parameters:
- pixel_tableastropy.table.Table
Per-pixel diagnostics.
- group_tableastropy.table.Table
Per-group diagnostics.
- Returns:
- str
Multi-line summary text.
- visualization.plot_trigger_patches.write_trigger_patch_report(camera, pixel_table, group_table, pdf_path)[source]#
Write a two-page PDF for trigger-patch diagnostics.
- Parameters:
- cameraCamera
Camera geometry used for both pages.
- pixel_tableastropy.table.Table
Per-pixel output from
analyze_trigger_patch_configuration().- group_tableastropy.table.Table
Per-group output from
analyze_trigger_patch_configuration().- pdf_pathpathlib.Path or str
Destination PDF path.
- Returns:
- str
The page-two summary text for application logging.
plot_simtel_events#
Plot sim_telarray events.
- class visualization.plot_simtel_events.PlotSimtelEvent(file_name, telescope, event_ids=None, max_events=None, prepared_events=None)[source]#
Plot a single sim_telarray event.
- Parameters:
- file_namestr | pathlib.Path
Path to the sim_telarray file.
- telescopestr
Telescope name or ID to process.
- event_idsint or list of int, optional
IDs of the event(s) to process.
- max_eventsint, optional
Maximum number of events to process.
- plot(plots, args, output_file, save_png=False, dpi=300)[source]#
Generate all requested plots for the event.
- Parameters:
- plotslist of str
List of plot names to generate.
- argsdict
Additional arguments for plot functions.
- output_filePath
Base output file path for saving plots.
- save_pngbool
Whether to save individual PNG files per plot.
- dpiint
DPI for saved PNG files.
- plot_peak_timing(event_index, sum_threshold=10.0, timing_bins=None)[source]#
Peak finding per pixel; plot histogram of peak sample times.
- Parameters:
- event_indexint
Event index.
- sum_thresholdfloat, optional
Minimum sum over samples for a pixel to be considered.
- timing_binsint | None, optional
Number of histogram bins. If None, use unit-width bins.
- Returns:
- matplotlib.figure.Figure | None
The created figure, or None if no pixels exceed threshold.
- plot_step_traces(event_index, pixel_step=10, max_pixels=None)[source]#
Plot step-style R1 traces for regularly sampled pixels (0, N, 2N, …).
- Parameters:
- event_indexint
Event index.
- pixel_stepint, optional
Interval between pixel indices to plot.
- max_pixelsint | None, optional
Maximum number of pixels to plot. If None, plot all selected by
pixel_step.
- Returns:
- matplotlib.figure.Figure
The created figure.
- plot_time_traces(event_index, number_of_pixels=3)[source]#
Plot R1 time traces for pixels with highest signal.
- Parameters:
- event_indexint
Event index.
- number_of_pixelsint, optional
Number of pixels with highest signal to plot.
- Returns:
- matplotlib.figure.Figure
The created figure.
- plot_waveforms(event_index, vmax=None, pixel_step=None)[source]#
Create a pseudocolor image of R1 waveforms (sample index vs. pixel id).
- Parameters:
- event_indexint
Event index.
- vmaxfloat | None, optional
Upper limit for color normalization. If None, determined automatically.
- pixel_stepint | None, optional
Step between plotted pixel ids (e.g., 1 plots all, 2 plots every second pixel).
- Returns:
- matplotlib.figure.Figure
The created figure.
- visualization.plot_simtel_events.generate_and_save_plots(plots, args, ioh, prepared_events=None)[source]#
Generate events plots from a sim-telarray file and save a multi-page PDF per input.
Writes additionally metadata.
- Parameters:
- plotslist of str
List of plot names to generate.
- argsdict
Additional arguments for plot functions.
- iohOutputPaths
Paths used for output files and metadata.
- prepared_eventsPreparedEvents
Events prepared by
camera.event_images. Required to generate plots.
plot_simtel_event_histograms#
Plot simtel event histograms filled with EventDataHistograms.
- visualization.plot_simtel_event_histograms.plot(histograms, output_path=None, limits=None, array_name=None, add_distance_projections=False, use_broad_range_limits=False)[source]#
Plot simtel event histograms.
- Parameters:
- histograms: EventDataHistograms
Instance containing the histograms to plot.
- output_path: Path or str, optional
Directory to save plots. If None, plots will be displayed.
- limits: dict, optional
Dictionary containing limits for plotting. Keys can include: - “upper_radius_limit”: Upper limit for core distance - “lower_energy_limit”: Lower limit for energy - “viewcone_radius”: Radius for the viewcone
- array_name: str, optional
Name of the telescope array configuration.
- add_distance_projections: bool, optional
Add overall and sliced x/y projections to raw distance-vs-energy plots.
- use_broad_range_limits: bool, optional
Restrict plot axes to the broad-range simulation limits in
limits.
- visualization.plot_simtel_event_histograms.plot_monte_carlo_statistics_diagnostics(output_dir, array_name, file_info, energy_edges, angular_edges, expected_counts, relative_uncertainty)[source]#
Write Monte Carlo statistics diagnostic plots.
- Parameters:
- output_dirstr or pathlib.Path
Directory to write plot files.
- array_namestr
Array or telescope-selection name used in plot titles and filenames.
- file_infodict, optional
Simulation metadata (zenith, azimuth, nsb_level) to make filenames unique per setup.
- energy_edgesarray-like
Energy bin edges in TeV.
- angular_edgesarray-like
Angular-distance bin edges in deg.
- expected_countsnumpy.ndarray
Expected triggered events per angular-distance and energy bin.
- relative_uncertaintynumpy.ndarray
Poisson relative uncertainty per angular-distance and energy bin.
- visualization.plot_simtel_event_histograms.plot_trigger_histograms(loaded_histograms, output_dir)[source]#
Plot loaded trigger histograms, writing one directory per array layout.
- Parameters:
- loaded_histogramsiterable
Loaded histogram records, each paired with its array layout.
- output_dirstr or pathlib.Path
Base directory where plot files will be written.
plot_production_comparison#
Plot event-level and signal-level comparisons across simulation productions.
- visualization.plot_production_comparison.annotate_comparison_statistics(ax, statistics)[source]#
Overlay comparison metric values for baseline-vs-candidate comparisons on a plot.
- visualization.plot_production_comparison.plot_event_level_comparison(metrics_per_production, output_path=None, array_layout_name=None, bins=40, figure_format=None, report_mode='diagnostic', compact_figures=None, comparison_title=None, comparison_context=None, *, context=None)[source]#
Create all event-level production comparison plots.
- Parameters:
- metrics_per_productionlist[ProductionEventMetrics]
Aggregated metrics per production.
- output_pathpathlib.Path, optional
Output directory for the generated plots. Falls back to the current application output directory when omitted.
- array_layout_namestr, optional
Array-layout selection used to collect the metrics. When set, plots are written into a subdirectory with that name.
- binsint, optional
Number of bins for 1D histograms.
- figure_formatlist[str] or str, optional
Figure formats to write. Formats supported by Matplotlib can be used. Defaults to the configured formats or
["png"].- comparison_titlestr, optional
Context heading shown above each plot, such as the configuration of a matched production pair.
- comparison_contextdict, optional
Baseline and candidate configuration metadata. Compact reports omit fixed-energy and on-axis angular distributions when both configurations establish those conditions.
- Returns:
- pathlib.Path
Path to the JSON file containing the comparison statistics.
- visualization.plot_production_comparison.plot_signal_level_comparison(metrics_by_telescope, output_path, bins=40, figure_format=None)[source]#
Create signal comparison plots for every telescope in a layout.
- Parameters:
- metrics_by_telescopedict[str, list[ProductionSignalMetrics]]
Metrics grouped by telescope name and ordered by production.
- output_pathpathlib.Path
Base output directory.
- binsint, optional
Number of histogram bins.
- figure_formatlist[str] or str, optional
Figure formats to write. Defaults to the configured formats or
["png"].
- Returns:
- list[pathlib.Path]
Paths to the comparison statistics JSON files.
plot_resource_requirements#
Plot normalized CORSIKA and sim_telarray resource requirements.
- visualization.plot_resource_requirements.plot(rows, output_path, figure_format=None, report_mode='diagnostic')[source]#
Write resource plots versus energy.
- Parameters:
- rowsiterable[dict]
Normalized process rows returned by the resource collector.
- output_pathstr or pathlib.Path
Destination directory for the figures.
- figure_formatiterable[str], optional
File formats passed to
visualization.visualize.save_figure().- report_modestr, optional
"diagnostic"writes one figure per metric and role,"compact"a multipage PDF, and"none"writes nothing.
- Returns:
- list[pathlib.Path]
Base paths of the written figures.
Notes
Byte-based quantities are plotted in MB or GB, selected from the largest value in each plot, using decimal units. Per-run plots use the
*_bytesand raw time columns; per-event and per-triggered-event plots use their normalized columns. When both baseline and candidate rows are present, additional plots show candidate-to-baseline ratios for matching primary, site, layout, and model-version configurations.
plot_psf#
Optical PSF plotting functions for parameter optimization visualization.
This module provides plotting functionality for PSF parameter optimization, including parameter comparison plots, convergence plots, and PSF diameter vs off-axis plots.
- visualization.plot_psf.create_gradient_descent_convergence_plot(gd_results, threshold, output_file, fraction=0.8, use_ks_statistic=False)[source]#
Create convergence plot during gradient descent.
- Parameters:
- gd_resultslist
List of (params, metric, p_value, psf_diameter, simulated_data) tuples.
- thresholdfloat
Optimization metric threshold used for convergence.
- output_filePath
Output file path for saving the plot.
- fractionfloat, optional
PSF containment fraction for labeling (default: 0.8).
- use_ks_statisticbool
Whether to use KS statistic or RMSD labels and titles.
- visualization.plot_psf.create_monte_carlo_uncertainty_plot(mc_results, output_file, fraction=0.8, use_ks_statistic=False)[source]#
Create uncertainty analysis plots showing optimization metric and p-value distributions.
- Parameters:
- mc_resultstuple
(mean_metric, std_metric, metric_values, mean_p, std_p, p_values, mean_psf_diameter, std_psf_diameter, psf_diameter_values) from the Monte Carlo analysis.
- output_filePath
Output file path; its suffix is replaced by
_ksor_rmsd.- fractionfloat, optional
PSF containment fraction for labeling (default: 0.8).
- use_ks_statisticbool, optional
Whether KS statistic mode is being used (affects filename suffix).
- visualization.plot_psf.create_psf_parameter_plot(data_to_plot, pars, psf_diameter, metric, is_best, pdf_pages, fraction=0.8, p_value=None, use_ks_statistic=False, second_metric=None)[source]#
Add a cumulative PSF plot of one parameter set to a PDF report.
- Parameters:
- data_to_plotdict
Data dictionary for plotting.
- parsdict
Parameter set dictionary.
- psf_diameter, metricfloat
PSF diameter and metric (RMSD, or KS statistic if
use_ks_statistic).- is_bestbool
Whether this is the best parameter set.
- pdf_pagesPDF report object
Open report for adding plots.
- fraction, p_value, use_ks_statistic, second_metricoptional
PSF containment fraction, KS p-value, KS mode flag and second metric.
- visualization.plot_psf.get_psf_diameter_label(fraction, unit='cm')[source]#
Generate PSF diameter label from the containment fraction, e.g. “D80 (cm)”.
- Parameters:
- fractionfloat
PSF containment fraction (0.8 for D80).
- unitstr, optional
Unit appended in parentheses (default: “cm”).
- Returns:
- str
Label such as “D80 (cm)”, or “D80” if unit is empty.
plot_ray_tracing_psf#
Shared PSF plotting helpers for ray-tracing workflows.
- visualization.plot_ray_tracing_psf.create_annotated_psf_image_figure(data, off_x, off_y, psf, containment_radius, image_range, bins=150, cmap=None, psf_kwargs=None, telescope_name=None)[source]#
Create a PSF image figure annotated with offset and PSF information.
- Parameters:
- datanumpy.ndarray
Structured array with
XandYcolumns, in the display unit.- off_x, off_yfloat
Off-axis components in degrees.
- psfastropy.units.Quantity
PSF diameter; its unit sets the axis labels and annotation.
- containment_radiusastropy.units.Quantity
Containment radius in the same unit as
psf.- image_rangelist
Range passed to
Axes.hist2d.- binsint
Number of histogram bins.
- cmapmatplotlib colormap, optional
Colormap passed to
Axes.hist2d.- psf_kwargsdict, optional
Keyword arguments passed to
matplotlib.patches.Circle.- telescope_namestr, optional
Telescope name shown in the annotation box.
- Returns:
- matplotlib.figure.Figure
Created figure.
- visualization.plot_ray_tracing_psf.create_cumulative_psf_figure(data, radius_key, cumulative_key, containment_radius_cm, psf_diameter_cm=None, **plot_kwargs)[source]#
Create a cumulative PSF plot.
- Parameters:
- datanumpy.ndarray
Structured array with radius and cumulative PSF columns.
- radius_key, cumulative_keystr
Column names of the radius and cumulative PSF values.
- containment_radius_cmfloat
Containment marker radius in cm.
- psf_diameter_cmfloat, optional
PSF diameter marker in cm.
- **plot_kwargs
Passed to
Axes.plot.
- Returns:
- tuple
Figure and axes.
- visualization.plot_ray_tracing_psf.create_psf_image_figure(data, containment_radius, center, psf_kwargs=None, use_current_axes=False, **hist_kwargs)[source]#
Create a 2D histogram plot of a PSF image with the containment circle.
- Parameters:
- datanumpy.ndarray
Structured array with
XandYcolumns.- containment_radiusfloat
Radius of the containment circle, in the same unit as the data.
- centertuple
Center of the PSF circle, in the same unit as the data.
- psf_kwargsdict, optional
Keyword arguments passed to
matplotlib.patches.Circle.- use_current_axesbool
Draw on the current axes instead of a new figure.
- **hist_kwargs
Passed to
visualize.plot_hist_2d(image_rangeis an alias ofrange).
- Returns:
- tuple
Figure and axes.
plot_mirrors#
Functions for plotting mirror panel layout information.
- visualization.plot_mirrors.plot(config, output_file, data_file_path, mirrors=None)[source]#
Plot mirror panel layout based on configuration.
- Parameters:
- configdict
Keys
parameter(e.g., “mirror_list”, “primary_mirror_segmentation”) andtelescope(e.g., “LSTN-01”).- output_filestr or Path
Path where to save the plot (without extension).
- data_file_pathstr or Path
Exported mirror or segmentation file.
- mirrorsMirrors, optional
Parsed mirror data; required for mirror lists.
- visualization.plot_mirrors.plot_mirror_layout(mirrors, mirror_file_path, telescope_model_name)[source]#
Plot the mirror panel layout from a Mirrors object.
- Parameters:
- mirrorsMirrors
Mirror panel positions, diameters, focal lengths and shape types.
- mirror_file_pathPath or str
Mirror list file (its header provides the statistics).
- telescope_model_namestr
Telescope model name (e.g., “LSTN-01”, “MSTN-01”).
- Returns:
- matplotlib.figure.Figure
The generated figure object.
- visualization.plot_mirrors.plot_mirror_ring_segmentation(data_file_path, telescope_model_name, parameter_type)[source]#
Plot mirror ring segmentation layout (polar view).
- Parameters:
- data_file_pathPath or str
Segmentation file with
ring <nseg> <rmin> <rmax> <dphi> <phi0>lines.- telescope_model_namestr
Telescope model name (e.g., “LSTN-01”).
- parameter_typestr
Segmentation parameter (e.g., “primary_mirror_segmentation”).
- Returns:
- matplotlib.figure.Figure or None
The generated figure object, or None if no ring data is found.
- visualization.plot_mirrors.plot_mirror_segmentation(data_file_path, telescope_model_name, parameter_type)[source]#
Plot mirror segmentation layout from a standard segmentation file.
- Parameters:
- data_file_pathPath or str
Segmentation file with positions, diameters, shape types and segment IDs.
- telescope_model_namestr
Telescope model name (e.g., “LSTN-01”).
- parameter_typestr
Segmentation parameter (e.g., “primary_mirror_segmentation”).
- Returns:
- matplotlib.figure.Figure
The generated figure object.
- visualization.plot_mirrors.plot_mirror_shape_segmentation(data_file_path, telescope_model_name, parameter_type)[source]#
Plot mirror shape segmentation layout (explicit hex and yhex shapes).
- Parameters:
- data_file_pathPath or str
Segmentation file with explicit shape definitions (hex, yhex).
- telescope_model_namestr
Telescope model name (e.g., “LSTN-01”, “MSTN-design”).
- parameter_typestr
Segmentation parameter (e.g., “primary_mirror_segmentation”).
- Returns:
- matplotlib.figure.Figure
The generated figure object.
plot_incident_angles#
Plot incident angle histograms for focal, primary, and secondary mirrors.
Plots the primary-mirror hit radius if available.
- members:
camera_plot_utils#
Shared helpers for camera pixel plotting.
- visualization.camera_plot_utils.add_pixel_legend(ax, on_pixels, off_pixels)[source]#
Add the pixel, edge pixel and disabled pixel legend.
- Parameters:
- axmatplotlib.axes.Axes
Axes object to add the legend to.
- on_pixelslist
Enabled pixel patches (selects hexagonal or square legend handlers).
- off_pixelslist
Disabled pixel patches.
- visualization.camera_plot_utils.add_pixel_patch_collections(ax, on_pixels, edge_pixels, off_pixels)[source]#
Add patch collections for on, edge and off pixels to the axes.
- Parameters:
- axmatplotlib.axes.Axes
Axes object to add the patch collections to.
- on_pixels, edge_pixels, off_pixelslist
Pixel patches (see
create_pixel_patches_by_type()).
- visualization.camera_plot_utils.create_pixel_patches_by_type(camera)[source]#
Create pixel patches categorized by type.
- Parameters:
- cameraCamera
Camera object containing pixel positions and status.
- Returns:
- tuple of (list, list, list)
Patches for enabled inner pixels, enabled edge pixels and disabled pixels.
- visualization.camera_plot_utils.pixel_shape(camera, x, y)[source]#
Return the matplotlib patch of one pixel.
- Parameters:
- cameraCamera
Camera object containing pixel configuration.
- x, yfloat
Coordinates of the pixel center.
- Returns:
- matplotlib.patches.Patch or None
Hexagon or rectangle patch; None if the pixel shape is not recognized.
- visualization.camera_plot_utils.setup_camera_axis_properties(ax, camera, grid=False, axis_below=False, grid_alpha=None, y_scale_factor=1.0, padding=0)[source]#
Set up common axis properties for camera plots.
- Parameters:
- axmatplotlib.axes.Axes
Axes object to configure.
- cameraCamera
Camera object containing pixel positions.
- grid, axis_belowbool, optional
Show grid lines; place axis below the plot elements.
- grid_alphafloat, optional
Transparency of grid lines (default grid alpha if None).
- y_scale_factorfloat, optional
Scaling factor for y-axis limits.
- paddingfloat, optional
Padding around the camera extent.
plot_science_comparison#
Plot telescope-throughput science-result comparisons into PDF pages.
- visualization.plot_science_comparison.plot_components(baseline_table, candidate_table, title, labels, pdf_pages)[source]#
Add absolute and relative pages for each optical efficiency component.
- Parameters:
- baseline_table, candidate_tablestr or pathlib.Path
Wavelength tables of one channel.
- titlestr
Page title prefix.
- labelstuple of str
Baseline and candidate legend labels.
- pdf_pagesPDF report object
Open PDF report.
- Returns:
- str or None
Reason the components could not be compared.
- visualization.plot_science_comparison.plot_metric_changes(changes, title, pdf_pages)[source]#
Add a page with scalar values and their relative change.
- Parameters:
- changesdict
Metric changes as returned by
telescope_throughput.compare_results.- titlestr
Page title.
- pdf_pagesPDF report object
Open PDF report.
- visualization.plot_science_comparison.plot_spectra(baseline_tables, candidate_tables, title, labels, pdf_pages)[source]#
Add a page comparing the detected spectrum of each common channel.
- Parameters:
- baseline_tables, candidate_tablesdict
Wavelength-table paths by channel.
- titlestr
Page title.
- labelstuple of str
Baseline and candidate legend labels.
- pdf_pagesPDF report object
Open PDF report.
- Returns:
- list of str
Channels that could not be compared.
plot_production_grid#
Plot production-grid points on sky coordinate projections.
- class visualization.plot_production_grid.ProductionGridPlotter(grid_points_file, output_path, column_units)[source]#
Plot production grid points on sky coordinate projections.
- Parameters:
- grid_points_filestr or Path
Path to the ECSV file containing grid points.
- output_pathstr or Path
Path to save output plots.
- plot_azimuth_zenith_projection_with_color_scale(value_key, value_label, output_file_stem, plot_points=None)[source]#
Plot azimuth/zenith points with a color scale for one value column.
- plot_shower_statistics_vs_zenith(azimuth_center=180.0, azimuth_width=1.0)[source]#
Plot total and per-run showers against zenith angle.
- Parameters:
- azimuth_centerfloat, optional
Center of the azimuth interval used for the selected-azimuth plot.
- azimuth_widthfloat, optional
Width in degrees of the selected azimuth interval.
- Raises:
- ValueError
If
azimuth_widthis not positive.
plot_corsika_limits#
Plotting utilities for CORSIKA limits tables.
- visualization.plot_corsika_limits.plot_limits(limits_table, output_dir)[source]#
Create plots of derived CORSIKA limits for each array and primary particle.
NSB levels are distinguished by color. Azimuth directions share a plot and use filled and open markers in ascending azimuth order.
- Parameters:
- limits_table (Table)
An astropy Table containing the CORSIKA limits data.
- output_dir (str or Path)
Directory where the generated plots will be saved.
- Returns:
- list of Path
List of file paths to the generated plots.
matplotlib_backend#
Configure the Matplotlib backend used by simtools visualizations.
- visualization.matplotlib_backend.lazy_module(module_name)[source]#
Return a proxy that imports a plotting dependency on first use.
- Parameters:
- module_namestr
Fully qualified name of the plotting module to import lazily.
- Returns:
- _MatplotlibModuleProxy
Proxy that loads
module_namewhen an attribute or item is accessed.
plot_pulse_response#
Plot gain-resolved pulse-response measurements.
- simtools.visualization.plot_pulse_response.plot_response(summary, waves, output_file)[source]#
Save peak, charge, width and mean-waveform panels in one PDF.
- Parameters:
- summaryastropy.table.Table
Mean metrics with standard deviations, counts, and illumination units.
- waveslist of dict
Time in ns and baseline-subtracted waveform for each response and gain.
- output_filepath-like
Destination PDF file.