polaris.tasks.ocean.analysis.publish.Publish
- class polaris.tasks.ocean.analysis.publish.Publish(component, subdir, product_steps)[source]
A step that publishes what the analysis steps made and generates the gallery over it
This is the only step that knows how results are presented. It reads each step’s manifest fragment, symlinks the products into the staging tree, renders a thumbnail for each plot, writes the merged manifest, and generates the site. Working from the fragments rather than from the directory structure is what lets the work be re-chunked later without disturbing output paths, links, or the gallery.
The step never looks for its inputs. Each fragment is a declared input, linked into
fragments/from the step that wrote it, so Polaris checks before this step runs that every one of them is there and names the ones that are not. Each of those steps is also declared as a dependency, which is what reaches anything knowable only after a step has run and what names a step that never ran at all. Nothing reorders steps, so the suite has to list this one last.Every step that makes products writes a fragment, even when it made nothing: an empty product list is what a step with nothing to publish writes, and it is what lets the fragment be declared rather than looked for.
- Variables:
fragment_filenames (list of str) – The fragments, as local paths within this step’s work directory, in the order the steps that wrote them are listed
- __init__(component, subdir, product_steps)[source]
Create the publish step
- Parameters:
component (polaris.tasks.ocean.Ocean) – The ocean component the step belongs to
subdir (str) – The subdirectory for the step
product_steps (list of polaris.Step) – The steps that make products, each of which becomes a dependency
Methods
__init__(component, subdir, product_steps)Create the publish step
add_dependency(step[, name])Add step as a dependency of this step (i.e. this step can't run until the dependency has finished).
add_input_file([filename, target, database, ...])Add an input file to the step (but not necessarily to the MPAS model).
add_output_file(filename[, validate_vars, ...])Add the output file to the step
add_property_check(filename, check_properties)Add a single conservation comparison for an output file
check_properties()Check conservation properties of the output files of this step.
constrain_resources(available_resources)Constrain
cpus_per_taskandntasksbased on the number of cores available to this stepGet the root of the staging tree results are published into
process_inputs_and_outputs()Process the inputs to and outputs from a step added with
polaris.Step.add_input_file()andpolaris.Step.add_output_file().run()Publish every product the fragments describe and generate the gallery
runtime_setup()Update attributes of the step at runtime before calling the
run()method.set_resources([cpus_per_task, ...])Update the resources for the subtask.
set_shared_config(config[, link])Replace the step's config parser with the shared config parser
setup()Set up the task in the work directory, including downloading any dependencies.
validate_baselines()Compare variables between output files in this step and in the same step from a baseline run if one was provided.
work_path(*filenames)Get the absolute path to a file or directory in the step's work directory
Attributes
coresthe number of cores this step needs, in total
gpusthe number of GPUs this step needs, in total
may_span_nodeswhether this step's cores and GPUs may come from several nodes
min_coresthe number of cores this step needs in order to run at all
min_gpusthe number of GPUs this step requires, in total