Open
Description
Right now the data system contains all the information necessary to figure out dependencies and relationships:
- For chunks, they report what data objects they need and what they produce. This information is available via the
chunk_inputs()
andchunk_outputs()
functions. - For data objects, they contain precursor information. This information is available after the driver runs, and it's also statically preserved in the new
GCAM_DATA_MAP
object (see dstrace fix #751 ).
Right now, the various parts of the system that use this information (dstrace
; graph_chunks
; the driver itself; @pralitp 's PR #660 for figuring out minimum call sequence) get this information in tabular form and figure it out for themselves. It would be a lot better to abstract away these data structures, and have the user-facing routines query functions for the relationship information, e.g. by a call to some precursors(x, all = c(TRUE, FALSE))
utility.
In other words, we'd like, following good OOP practice, to expose relationship information without exposing how it's encoded.