Responsible for invoking the build system to generate Assets corresponding to figures, then copying those assets to the figure directory.
Methods:
Attributes:
runner: Callable[[Sequence[Task]], Mapping[AssetId, Asset]]
export(to_export: Sequence[Task], fig_dir: Path) -> None
Source code in mecfs_bio/figures/figure_exporter.py
| def export(self, to_export: Sequence[Task], fig_dir: Path) -> None:
fig_dir.mkdir(parents=True, exist_ok=True)
meta_list = []
for task in to_export:
assert isinstance(task.meta, ValidFigureMeta)
meta_list.append(task.meta)
result = self.runner(
to_export,
)
for task, meta in zip(to_export, meta_list):
asset = result[task.asset_id]
if isinstance(meta, GWASPlotFileMeta):
assert isinstance(asset, FileAsset)
src = asset.path
dst = get_fig_file_path(meta=meta, fig_dir=fig_dir)
shutil.copy(src, dst)
logger.debug(f"Figure asset {task.asset_id} copied to {dst}.")
elif isinstance(meta, GWASPlotDirectoryMeta):
assert isinstance(asset, DirectoryAsset)
src = asset.path
assert isinstance(meta, GWASPlotDirectoryMeta)
dst = get_fig_dir_meta(meta=meta, fig_dir=fig_dir)
shutil.copytree(src, dst, dirs_exist_ok=True)
logger.debug(f"Directory figure asset {task.asset_id} copied to {dst}.")
elif isinstance(meta, MarkdownFileMeta):
assert isinstance(asset, FileAsset)
src = asset.path
dst = get_md_fig_file_path(meta=meta, fig_dir=fig_dir)
shutil.copy(src, dst)
logger.debug(f"Markdown figure asset {task.asset_id} copied to {dst}.")
else:
raise ValueError(f"Unknown meta type {type(meta)}")
|