PlasmaCalcs.plotting.plotter_manager.DecoratingPlotters

class PlasmaCalcs.plotting.plotter_manager.DecoratingPlotters(known=None)

Bases: object

Decorating functions to put plotters into a dict (self.known)
known: None or dict
will be a dict of {(name, person): Plotter} pairs.
person will be None if it nobody was specified via who.
self.unique will be a dict of {id(plotter): plotter} for all unique plotters.
self.known_names will be a set of all names appearing in any plotter in self.known.
self.known_kinds will be a set of all kinds appearing in any plotter in self.known.
self.known_who will be a set of all people appearing in any plotter in self.known.
Example: known_plotter = DecoratingPlotters(storage_dict)
@known_plotter
def plot_name1(…):
@known_plotter(who=’sam’, kinds=[‘movie’, ‘density’])
def plot_name2(…):
# at this point, we have:
# known_plotter.known == {‘name1’: Plotter(‘plot_name1’),
# ‘name2’: Plotter(‘plot_name2’, who=’sam’, kinds=[‘movie’, ‘density’])}
__init__(known=None)

Methods

__init__([known])

decorator(*[, who, kind, kinds, ani, ...])

track_f(f, *[, who, kind, kinds, ani, ...])

Attributes

known_kinds

known_names

known_who

decorator(*, who=[], kind=UNSET, kinds=UNSET, ani=UNSET, savename=None, cost=20, aliases=[])
returns decorator for plot manager’s f(self, *args, **kw), which returns f, unchanged…
but also sets self.known[name] = Plotter(f.__name__, …).
(requires f.__name__ looks like ‘plot_name’)
who: str or list of str
“person” or people associated with this plotter. Arbitrary strings.
E.g. to only make plots for ‘sam’ person, use PlotterManager.standard_plots(…, who=’sam’).
kind: UNSET, str, or list of str
“kind” or kinds associated with this plotter. Arbitrary strings.
E.g. to only make plots for ‘movie’ kind, use PlotterManager.standard_plots(…, kind=’movie’).
Internally, stored at Plotter.kinds (plural).
kinds: UNSET, str, or list of str
alias for kwarg kind. Can provide kinds or kind but not both.
ani: UNSET or bool
whether the plotter is for an animated plot.
(commands to save/show an animated plot are different than those to save/show a static plot.)
if UNSET, infer from kinds. True if kinds includes any of these (case insensitive):
[‘movie’, ‘gif’, ‘ani’, ‘animation’, ‘animated’]
savename: None or str
default filename when doing plotter.save() for this plot.
None –> use plotter.name, which is fname after removing ‘plot_’ prefix.
cost: number
some guess about the cost to make this plot. Default=20.
when making multiple plots, go in cost order.
Can also set cost thresholds and skip ones that are too expensive.
aliases: list of str
self.known[(person, alias)] = self.known[(person, name)] for each alias provided.
property known_kinds
set of all kinds appearing in any plotter in self
property known_names
set of all names appearing in any plotter in self
property known_who
set of all people appearing in any plotter in self.
plotter_cls

alias of Plotter

track_f(f, *, who=[], kind=UNSET, kinds=UNSET, ani=UNSET, savename=None, cost=20, aliases=[])
add f to self.known as a Plotter.
f must look like ‘plot_name’ where name can be any string;
will make self.known[(name, person)] = Plotter(f, …)
who: str or list of str
“person” or people associated with this plotter. Arbitrary strings.
E.g. to only make plots for ‘sam’ person, use PlotterManager.standard_plots(…, who=’sam’).
kind: UNSET, str, or list of str
“kind” or kinds associated with this plotter. Arbitrary strings.
E.g. to only make plots for ‘movie’ kind, use PlotterManager.standard_plots(…, kind=’movie’).
Internally, stored at Plotter.kinds (plural).
kinds: UNSET, str, or list of str
alias for kwarg kind. Can provide kinds or kind but not both.
ani: UNSET or bool
whether the plotter is for an animated plot.
(commands to save/show an animated plot are different than those to save/show a static plot.)
if UNSET, infer from kinds. True if kinds includes any of these (case insensitive):
[‘movie’, ‘gif’, ‘ani’, ‘animation’, ‘animated’]
savename: None or str
default filename when doing plotter.save() for this plot.
None –> use plotter.name, which is fname after removing ‘plot_’ prefix.
cost: number
some guess about the cost to make this plot. Default=20.
when making multiple plots, go in cost order.
Can also set cost thresholds and skip ones that are too expensive.
aliases: list of str
self.known[(person, alias)] = self.known[(person, name)] for each alias provided.