No project description provided
Project description
ToolVIPER
Tools and utilities for optimized radio astronomy processing using the VIPER framework.
ToolVIPER provides a suite of high-level tools designed to simplify Dask cluster management, logging, profiling, and data distribution for radio astronomy applications. It is part of the VIPER (Very Large Interferometry Post-processing and Exploratory Research) ecosystem.
Features
- Dask Cluster Management: Easily create and manage local or SLURM-based Dask clusters with optimized configurations.
- Unified Logging: Structured, colorized, and worker-aware logging system.
- Resource Profiling: Built-in decorators to monitor CPU and memory usage of functions.
- Interactive Utilities: Enhanced data display for Jupyter notebooks, including interactive JSON and HTML views for complex dictionaries.
- Data Management: Simple interface for downloading and managing external datasets from Cloudflare.
- Parameter Validation: Decorator-based system for validating function arguments using JSON schemas.
- Graph Distribution: Tools to distribute functions across datasets along specific axes using Dask.
Installation
ToolVIPER requires Python 3.11, 3.12, or 3.13.
Basic Installation
pip install toolviper
With Optional Dependencies
ToolVIPER offers several optional dependency sets:
test: For running tests (pytest,black, etc.)interactive: For Jupyter/IPython support (jupyterlab,matplotlib,ipympl, etc.)docs: For building documentation (sphinx,nbsphinx, etc.)all: Installs all optional dependencies.
Example:
pip install "toolviper[interactive]"
Quick Start
1. Dask Client Management
Example Notebook
ToolVIPER simplifies setting up a Dask environment.
from toolviper.dask.client import local_client
# Start a local Dask client with 4 workers
client = local_client(cores=4, memory_limit="8GB")
print(client.dashboard_link)
For SLURM clusters:
from toolviper.dask.client import slurm_cluster_client
client = slurm_cluster_client(
workers_per_node=1,
cores_per_node=4,
memory_per_node="16GB",
number_of_nodes=2,
queue="normal",
interface="ib0",
python_env_dir="/path/to/env",
dask_local_dir="/tmp/dask",
dask_log_dir="dask_logs"
)
2. Logging
Example Notebook
ToolVIPER provides a pre-configured logger that can be used throughout your application.
from toolviper.utils import logger
logger.info("Initializing process...")
logger.warning("Low memory detected", verbose=True)
3. Profiling
Monitor your functions' resource consumption using decorators.
from toolviper.utils.profile import cpu_usage
@cpu_usage(filename="my_profile.csv")
def heavy_computation():
# Your code here
pass
heavy_computation()
4. Interactive Data Exploration
In a Jupyter notebook, you can use DataDict for better visualization of nested dictionaries.
from toolviper.utils.display import DataDict
my_data = {"level1": {"level2": {"key": "value"}}}
dd = DataDict(my_data)
dd.display() # Renders an interactive JSON tree in Notebooks
5. Data Management
Access and download external datasets easily.
import toolviper
# List available files
toolviper.utils.data.list_files()
# Get a python list available files
toolviper.utils.data.get_files()
# Download a specific dataset
toolviper.utils.data.download("example_dataset.zip", folder="./data")
6. Parameter Validation
A detailed write-up can be found here: Parameter Validation.
Ensure your functions receive correct arguments using the `@validate` decorator.
from toolviper.utils.parameter import validate
@validate()
def my_function(param1: int, param2: str):
# This function will automatically validate arguments
# against a corresponding .param.json schema.
pass
Development and Testing
To contribute or run tests locally:
-
Clone the repository:
git clone https://github.com/casangi/toolviper.git cd toolviper
-
Install in editable mode with test dependencies:
pip install -e ".[test]"
-
Run tests:
pytest tests
License
ToolVIPER is licensed under the terms of the LICENSE file included in the root directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file toolviper-0.1.3.tar.gz.
File metadata
- Download URL: toolviper-0.1.3.tar.gz
- Upload date:
- Size: 53.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef15fe20256a6f477f52d8b9cfe194fc1a5807adf92538e3441ff0324dc077bb
|
|
| MD5 |
499c4f8a70ec19ba7e068279d6df4bfd
|
|
| BLAKE2b-256 |
e92d7fde17f8ce106607788c6a59f3a408fc07687a51542926a9b1f32b89b5c3
|
File details
Details for the file toolviper-0.1.3-py3-none-any.whl.
File metadata
- Download URL: toolviper-0.1.3-py3-none-any.whl
- Upload date:
- Size: 45.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe3265071dd2eeaebf4d188b6b8cc231ca5c4519c4f95aad5c6d3e2db6702ea1
|
|
| MD5 |
1e2b55a03878f78042e0c8db2ce05b84
|
|
| BLAKE2b-256 |
bcc4a2d337ac9bf3a28aba8e29958edb036254a37cff361b4fe069689fcb9d2d
|