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.
- ⚡ 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, andmypyfor a top-tier development experience. - 🛡️ Robustness: Exponential backoff for cluster transactions and custom exception handling.
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 syncEktome 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
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)from ektome.metektome.postprocess_sims import run_postprocessing
# Process all new simulations and save results
results = run_postprocessing(n_cpus=8)
print(results.head())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 pytestThis project is licensed under the GNU GPLv3. See the LICENSE file for details.