@@ -604,13 +604,13 @@ def render_periodic_table_grid(
604604def periodic_curve_gallery (
605605 * ,
606606 curve_dir : Path ,
607- periodic_dir : Path ,
608- overview_title : str ,
609- overview_formats : tuple [str , ...] = ("svg" , ),
607+ periodic_dir : Path | None = None ,
608+ overview_title : str | None = None ,
609+ overview_formats : tuple [str , ...] = (),
610610 overview_figsize : tuple [float , float ] | None = (36 , 20 ),
611611 overview_suptitle : dict [str , Any ] | None = None ,
612- focus_title_template : str | None = "Diatomics involving {element}" ,
613- focus_formats : tuple [str , ...] = ("png" , ),
612+ focus_title_template : str | None = None ,
613+ focus_formats : tuple [str , ...] = (),
614614 focus_figsize : tuple [float , float ] = (30 , 15 ),
615615 focus_dpi : int = 200 ,
616616 pair_column : str = "pair" ,
@@ -634,11 +634,13 @@ def periodic_curve_gallery(
634634 curve_dir
635635 Directory where per-pair JSON payloads will be written per model.
636636 periodic_dir
637- Directory where periodic-table overviews and per-element figures are stored.
637+ Optional directory for periodic-table overviews and per-element figures. When
638+ omitted, only the curve payloads are written.
638639 overview_title
639- Format string used for the overview title (receives ``model`` keyword).
640+ Format string used for the overview title (receives ``model`` keyword). Ignored
641+ if ``overview_formats`` is empty.
640642 overview_formats
641- File formats to emit for overview figure.
643+ File formats to emit for overview figure. Empty tuple disables overview output.
642644 overview_figsize
643645 Matplotlib figsize for the overview grid.
644646 overview_suptitle
@@ -647,7 +649,7 @@ def periodic_curve_gallery(
647649 Format string for per-element focus plots (receives ``element`` and ``model``).
648650 Set to ``None`` to disable focus figures.
649651 focus_formats
650- File formats for per-element focus plots.
652+ File formats for per-element focus plots. Empty tuple disables focus output.
651653 focus_figsize
652654 Matplotlib figsize for focus plots.
653655 focus_dpi
@@ -673,7 +675,7 @@ def periodic_curve_gallery(
673675 emits the associated gallery assets.
674676 """
675677 curve_dir = Path (curve_dir )
676- periodic_dir = Path (periodic_dir )
678+ periodic_dir = Path (periodic_dir ) if periodic_dir else None
677679
678680 default_series = {"distance" : distance_column , "energy" : energy_column }
679681 if series_columns :
@@ -956,22 +958,32 @@ def wrapper(*args, **kwargs):
956958 )
957959
958960 curve_dir .mkdir (parents = True , exist_ok = True )
959- periodic_dir .mkdir (parents = True , exist_ok = True )
961+ if periodic_dir :
962+ periodic_dir .mkdir (parents = True , exist_ok = True )
960963
961964 for model_name , frame in model_frames .items ():
962965 if frame is None or frame .empty :
963966 continue
964967 _write_curve_payloads (model_name , frame )
965968
969+ # Skip image/manifest generation when no formats are requested or
970+ # when no periodic_dir is supplied.
971+ if not periodic_dir or (
972+ not overview_formats
973+ and not (focus_title_template and focus_formats )
974+ ):
975+ continue
976+
966977 model_periodic_dir = periodic_dir / model_name
967978 model_periodic_dir .mkdir (parents = True , exist_ok = True )
968979 elements_dir = model_periodic_dir / "elements"
969980 elements_dir .mkdir (parents = True , exist_ok = True )
970981
971- overview_rendered = _render_overview (model_name , frame )
972982 manifest : dict [str , Any ] = {"elements" : {}}
973- if overview_rendered and overview_formats :
974- manifest ["overview" ] = f"overview.{ overview_formats [0 ]} "
983+ if overview_formats :
984+ overview_rendered = _render_overview (model_name , frame )
985+ if overview_rendered :
986+ manifest ["overview" ] = f"overview.{ overview_formats [0 ]} "
975987
976988 if focus_title_template and focus_formats :
977989 available_elements : set [str ] = set ()
0 commit comments