Code Structure¶
pclean/
├── pyproject.toml
├── README.md
├── src/pclean/
│ ├── __init__.py / __main__.py — package entry + CLI
│ ├── pclean.py — tclean-compatible top-level API
│ ├── params.py — parameter container & validation
│ ├── imaging/
│ │ ├── serial_imager.py — single-process imager (base engine)
│ │ ├── deconvolver.py — standalone deconvolution wrapper
│ │ └── normalizer.py — image normalization wrapper
│ ├── parallel/
│ │ ├── cluster.py — Dask LocalCluster / Client management
│ │ ├── cube_parallel.py — channel-parallel cube engine
│ │ ├── continuum_parallel.py — row-parallel continuum engine
│ │ └── worker_tasks.py — pure functions + actors for Dask workers
│ └── utils/
│ ├── partition.py — data/image partitioning via synthesisutils
│ └── image_concat.py — sub-cube concatenation
└── tests/
├── test_params.py — 12 tests (all pass)
└── test_imager.py — 3 tests with mocked casatools (all pass)
Key Design Decisions¶
Aspect |
Approach |
|---|---|
casatools direct |
Wraps |
Cube parallelism |
Channels partitioned via |
Continuum parallelism |
Visibility rows chunked via |
Modularity |
Every component (imager, deconvolver, normalizer, cluster, partitioner) is independently importable and reusable. |
Serialization |
|
Interface |
|
See the individual module docstrings for detailed explanations of each parallelism strategy.