Main Repository Structure

The following diagram demonstrates the folder structure in the repository:

ska-sdp-distributed-fourier-transform
|__ .make
|__ docs
|__ notebook
|__ scripts
|__ slurm_scripts
|__ src
|   |__ska_sdp_exec_swiftly
|       |__fourier_transform
|             algorithm_parameters.py
|             fourier_algorithm.py
|       fourier_transform_dask.py
|       utils.py
|       swift_configs.py
|       dask_wrapper.py
|       api.py
|       api_helper.py
|       generate_hdf5.py
|__ tests
    <repository-related-files; e.g. poetry.lock, gitignore, Makefile, etc>
  • .make: ska-cicd-makefile submodule

  • docs: contains documentation related files

  • notebook: contains a Jupyter notebook, which is a shortened version of facet-subgrid-impl.ipynb. It only contains the algorithm and related functions but not the parameter search

  • src/ska_sdp_exec_swiftly: contains all the relevant functions and classes

  • src/ska_sdp_exec_swiftly/fourier_transform contains all the relevant functions and classes of fundamental fourier transform
    • algorithm_parameters.py: base classes for data models and the actual algorithm

    • fourier_algorithm.py: contains functions commonly used by multiple parts of the algorithm

  • src/fourier_transform_dask.py: contains the main function which orchestrates the code. It also decides whether to run the code with Dask or not. It is set up to run the algorithm in 2D.

  • src/utils.py: contains plotting and validation testing utils

  • src/swift_configs.py: contains a dictionary of example configurations, which can be directly used with the code

  • src/generate_hdf5.py: contains functions that involve generating data and storing them using HDF5 data format. This is used in cases where the initial data size is too big for the machine to handle.

  • src/api.py: contains the basic data structure of the algorithm for the object-oriented API. Includes core parameters, the facet and subgrid class.

  • src/api_helper.py: contains several helper functions for the API implementation.

  • dask_wrapper.py: contains a few functions that help wrap the distributed coded into dask delayed,

    and set up and tear down the dask client.

Please refer to the API page for the details of functions and classes of the algorithm.

Please refer to the scripts page for the details of custom scripts.