Call Graphs

Ok, here is an attempt to map out the structure of WODEN. These call graphs split into two sets: one for the Python side, the other for the C/GPU side. They are generated using the WODEN/docs/sphinx/code_graphs/run_make_graph.sh, via the pyan Python module, and Doxygen.

Python Call Graphs

Firstly, the entire wodenpy call graph looks like this. Obviously this is a mess, so scroll on for individual submodules call graphs.

../_images/wodenpy_all.svg

wodenpy/array_layout:

../_images/wodenpy_array_layout.svg

wodenpy/observational:

../_images/wodenpy_observational.svg

wodenpy/skymodel:

../_images/wodenpy_skymodel.svg

wodenpy/use_libwoden:

../_images/wodenpy_use_libwoden.svg

wodenpy/uvfits:

../_images/wodenpy_uvfits.svg

wodenpy/wodenpy_setup:

../_images/wodenpy_wodenpy_setup.svg

C/GPU Call Graphs

Eventually, run_woden.py calls the C/GPU function calculate_visibilities. This is the call graph for calculate_visibilities; note that dot has truncated some boxes (which are rendered red), as it has a maximum width. Scroll further for a second graph that starts the function source_component_common, which includes the missing calls.

../_images/calculate__visibilities_8cpp_a40d3a09b3be87b97684afc84864248fd_cgraph.png

Call graph starting at source_component_common:

../_images/source__components_8cpp_a577483371b5f50c345ac3a9d141b09aa_cgraph.png