from ...utils import logger
from ..node import Node
[docs]
class PlotNode(Node):
def __init__(self, inputs, merged_node, dag):
super().__init__(inputs)
[docs]
self.job_name = merged_node.job_name + "_plot"
[docs]
self.label = merged_node.job_name + "_plot"
self.setup_arguments(
add_ini=False, add_unknown_args=False, add_command_line_args=False
)
self.arguments.add("result", merged_node.result_file)
self.arguments.add("outdir", self.inputs.result_directory)
for plot_type in ["calibration", "corner", "marginal", "skymap", "waveform"]:
if getattr(inputs, f"plot_{plot_type}", False):
self.arguments.add_flag(plot_type)
self.arguments.add("format", inputs.plot_format)
if self.disable_hdf5_locking:
self.extra_lines.append('environment = "HDF5_USE_FILE_LOCKING=FALSE"')
self.process_node()
self.job.add_parent(merged_node.job)
@property
[docs]
def executable(self):
return self._get_executable_path("bilby_pipe_plot")
@property
[docs]
def request_memory(self):
return "32 GB"
@property
[docs]
def log_directory(self):
return self.inputs.data_analysis_log_directory
@property
[docs]
def universe(self):
if self.inputs.local_plot:
logger.debug(
"Data plotting done locally: please do not use this when "
"submitting a large number of jobs"
)
universe = "local"
else:
logger.debug(f"All data will be grabbed in the {self._universe} universe")
universe = self._universe
return universe