Skip to content

🐛 --full-output errors and damaged PDF #4620

Description

@CoronelBuendia

Description

When running PROCESS with the --full-output option, the PROCESS optimisation/convergence completes successfully, but an exception occurs while generating the full output plots.

This means that the underlying PROCESS result appears to be valid, but the subsequent full-output generation fails and damages/incompletely generates the PDF.

Reproduction

Run PROCESS with:

process -i <input_file> --full-output

For example, this occurs for the LUCIOLE V1 case:

Plotting mfile /home/matti/code/firefly/studies/v001/config/LUCIOLE_V1_PROCESS.MFILE.DAT

The run itself successfully converges before the plotting stage is reached.

Error

Traceback (most recent call last):
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/env/bin/process", line 8, in <module>
    sys.exit(process_cli())
             ^^^^^^^^^^^^^
  ...
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/process/main.py", line 243, in process_cli
    plot_summary(mfile_path)
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/process/core/io/plot/summary.py", line 17236, in plot_summary
    pages_of_plots = main_plot(
                     ^^^^^^^^^^
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/process/core/io/plot/summary.py", line 16732, in main_plot
    plot_brunner_divertor_power_split_comparison_stackplot(
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/process/core/io/plot/summary.py", line 9159, in plot_brunner_divertor_power_split_comparison_stackplot
    axis.set_xlim([
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/env/lib/python3.12/site-packages/matplotlib/axes/_base.py", line 3828, in set_xlim
    return self.xaxis._set_lim(left, right, emit=emit, auto=auto)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/env/lib/python3.12/site-packages/matplotlib/axis.py", line 1216, in _set_lim
    v0 = self.axes._validate_converted_limits(v0, self.convert_units)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/matti/code/PROCESS_PROJECT/PROCESS/env/lib/python3.12/site-packages/matplotlib/axes/_base.py", line 3749, in _validate_converted_limits
    raise ValueError("Axis limits cannot be NaN or Inf")
ValueError: Axis limits cannot be NaN or Inf

Observed behaviour

  • PROCESS completes the optimisation successfully and produces a converged result.
  • --full-output subsequently starts generating the plots from the MFILE.
  • The failure occurs specifically in:
    plot_brunner_divertor_power_split_comparison_stackplot().
  • An invalid (NaN or Inf) value is subsequently passed to axis.set_xlim().
  • This raises a ValueError and interrupts full-output generation.
  • The resulting PDF is therefore incomplete/corrupted rather than containing the complete full output.

Expected behaviour

A successfully converged PROCESS run should not be considered failed because an individual diagnostic/output plot cannot be generated.

Ideally, --full-output should either:

  1. successfully generate the complete PDF, or
  2. skip the problematic plot with a warning and continue generating the remaining output.

In particular, a plotting failure should not invalidate or obscure an otherwise successfully converged PROCESS result.

Additional consideration

The full-output generation should ideally be robust to individual plots being unavailable for a particular PROCESS configuration. A missing quantity in the MFILE should result in a warning or skipped plot rather than terminating the entire PDF generation process.

Models that error when creating the estimations from various models should return N/A or nan.

Environment

  • Python: 3.12
  • PROCESS: main
  • Command: process --full-output ...

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions