Skip to content

Python framework for automating the lifecycle of Einstein Toolkit simulations on HTCondor clusters, featuring robust pre-processing, asynchronous job monitoring, and scalable post-processing pipelines.

License

Notifications You must be signed in to change notification settings

svretina/Ektome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌌 Ektome: Modern Simulation Management for HTCondor

License: GPL v3 Python 3.8+ Ruff uv

Ektome (from Greek εκτομή, "excision") is a high-performance Python toolkit designed to streamline the lifecycle of Intermediate Mass Ratio Inspiral (IMRI) simulations. It provides a robust, type-safe interface for preparing, submitting, and post-processing EinsteinToolkit simulations on HTCondor clusters.


🚀 Key Features

  • ⚡ Automated Submission: Seamlessly handle HTCondor transactions and parallel job queuing.
  • 🔪 Excision Logic: Intelligent preparation of parameter files for black hole excision techniques.
  • 📊 Advanced Post-Processing: Parallel processing of simulation results with masked error analysis.
  • 🛠️ Modern DX: Built with uv, ruff, and mypy for a top-tier development experience.
  • 🛡️ Robustness: Exponential backoff for cluster transactions and custom exception handling.

📦 Installation

Experience the speed of uv to install Ektome and its dependencies:

# Clone the repository
git clone https://github.com/svretina/Ektome.git
cd Ektome

# Install dependencies and setup environment
uv sync

🖥️ Cluster Environment (AEI Hannover)

Ektome is optimized for the AEI Hannover HTCondor cluster (ssh condor).

Note

The modified TwoPunctures source code used by this toolkit is located at: ~/opt/Cactus/repos/einsteininitialdata/TwoPunctures/src


🚦 Quick Start

Submitting a Simulation

from ektome.proektome.submit import submit
from my_sim_config import SimulationConfig

# Initialize your simulation parameters
sim = SimulationConfig(q=100, b=6.4, excision=True)

# Generate parfiles and submit to HTCondor
submit(sim)

Post-Processing Results

from ektome.metektome.postprocess_sims import run_postprocessing

# Process all new simulations and save results
results = run_postprocessing(n_cpus=8)

print(results.head())

🛠️ Development

We use modern Python tooling to ensure code quality:

# Run linting
uv run ruff check .

# Run type checks
uv run mypy .

# Run tests
uv run pytest

📜 License

This project is licensed under the GNU GPLv3. See the LICENSE file for details.

About

Python framework for automating the lifecycle of Einstein Toolkit simulations on HTCondor clusters, featuring robust pre-processing, asynchronous job monitoring, and scalable post-processing pipelines.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published