  Data simulation is fundamental for machine learning and causal inference, as
it allows exploration of scenarios and assessment of methods in settings with
full control of ground truth. Directed acyclic graphs (DAGs) are well
established for encoding the dependence structure over a collection of
variables in both inference and simulation settings. However, while modern
machine learning is applied to data of an increasingly complex nature,
DAG-based simulation frameworks are still confined to settings with relatively
simple variable types and functional forms. We here present DagSim, a
Python-based framework for DAG-based data simulation without any constraints on
variable types or functional relations. A succinct YAML format for defining the
simulation model structure promotes transparency, while separate user-provided
functions for generating each variable based on its parents ensure simulation
code modularization. We illustrate the capabilities of DagSim through use cases
where metadata variables control shapes in an image and patterns in
bio-sequences.
