Skip to main content

A Python framework for dosimetric assessments using Sim4Life.

Reason this release was yanked:

venv Python path has no Sim4Life in its path

Project description

Comprehensive automated near- and far-field SAR assessments using Sim4Life

CI/CD Docs Deploy Tests Maintainability Lines of code Code style: ruff Python GUI Cloud Sim4Life

🚀 Get Started📖 View Tutorials

GOLIAT GUI showing real-time progress monitoring


What is GOLIAT?

GOLIAT is a Python framework that automates electromagnetic field (EMF) dosimetry simulations from start to finish. Calculate Specific Absorption Rate (SAR) in digital human phantoms with minimal manual intervention, whether you're simulating a phone call (near-field) or environmental exposure (far-field).

Perfect for: Researchers, compliance engineers, and anyone studying EMF exposure in biological tissues.

Why GOLIAT?

  • Zero manual scene building – Phantoms, antennas, and materials load automatically
  • 🔄 Reproducible – Configuration-driven workflow ensures consistent results
  • ☁️ Cloud-ready – Scale from local testing to 100s of parallel cloud simulations
  • 📊 Analysis built-in – Get plots and detailed SAR reports
  • 🎨 GUI included – Monitor progress in real-time with ETA tracking

Project funding and Acknowledgements

This software is written for subtask 1.5 of 5G expOsure, causaL effects, and rIsk perception through citizen engAgemenT (GOLIAT) funded by the European Union as part of the CLUE-H consortium to study health effects of radio-frequency electromagnetic fields. Subtask 1.5 is central to the project to relate incident fields to absorption values inside of humans.

Key features

🎯 Near-Field Simulations

Simulate devices near the body (phones, wearables). Automatic antenna placement with customizable positions and orientations.

🏗️ Modular Architecture

Plug-and-play components for phantoms, materials, gridding, and sources. Extend easily for custom scenarios.

📊 Built-in Analysis

Extract whole-body SAR, localized peaks (10g), and tissue-specific metrics. Auto-generate heatmaps and statistical reports.

🌐 Far-Field Simulations

Environmental exposure from plane waves. Supports 6 incident directions and multiple polarizations per frequency.

🚀 Dual Execution Modes

  • Local: iSolve for quick testing and debugging
  • Cloud: oSPARC for large-scale batch processing

🖥️ Real-time Monitoring

Interactive GUI with progress bars, ETA estimation, and live logs. Optional web dashboard for monitoring distributed studies across multiple workers. Optional headless mode for automation.

Quick start

Prerequisites: Sim4Life 8.2.0 with a valid license. Note: GOLIAT has only been tested on Sim4Life 8.2.0; compatibility with newer versions is untested.

GOLIAT supports two installation methods. Most users should install from PyPI:

# 1. Create a virtual environment with Sim4Life Python
"C:\Program Files\Sim4Life_8.2.0.16876\Python\python.exe" -m venv venv --system-site-packages
source venv/Scripts/activate  # On Windows Git Bash

# 2. Install GOLIAT
python -m pip install goliat

# 3. Navigate to your project directory and initialize
cd /path/to/your/project
goliat init

# 4. Run your first simulation
goliat study near_field_config

The --system-site-packages flag allows the venv to access Sim4Life's packages (like s4l_v1). This installs the latest released version from PyPI. For unreleased features, use editable installation.

For developers: If you need to modify code, run tests, or access repository tools, you should install in editable mode instead. See installation guide for details.

Note: The goliat init command checks your setup and downloads required data files. If you skip this step, goliat study will automatically prompt you to install when first run.

That's it! The GUI will launch, download required phantoms/antennas, and run the simulation. Results appear in results/ with JSON metrics and plots.

New to GOLIAT? Follow the Quick Start Tutorial for a step-by-step walkthrough.


Usage examples

Example 1: Near-field phone simulation

# Run a 700 MHz phone-to-cheek simulation
goliat study near_field_config

What happens:

  • Loads "thelonious" (6-year-old) phantom
  • Places and rotates PIFA antenna either by the face, belly or cheek
  • Runs FDTD solver (5-10 min on GPU)
  • Extracts head SAR, brain peak SAR (psSAR10g), power balance
  • Generates heatmaps in results/near_field/thelonious/700MHz/by_cheek/

Example 2: Far-field environmental exposure

# Plane wave exposure from 6 directions at 900 MHz
goliat study far_field_config

What happens:

  • Simulates waves from x/y/z axes (± directions)
  • Also theta and phi polarizations (so 12 sims total)
  • Calculates whole-body average SAR
  • Outputs statistical summaries and boxplots

Example 3: Cloud batch processing

"execution_control": {
  "batch_run": true
}
# Submit 100+ sims to cloud in parallel
goliat study large_study

Also want to run setup and extract phases in parallel? See the Cloud Setup Guide for deploying GPU instances. For monitoring distributed studies across multiple workers, see the monitoring dashboard documentation or the goliat-monitoring repository.


Screenshots

Click to see GOLIAT in action

Interactive GUI

Real-time progress tracking with phase-based ETA estimation.

GOLIAT GUI

Analysis results

Auto-generated SAR heatmaps by tissue and frequency.

Results Plot


How it works

GOLIAT follows a simple 5-stage pipeline:

graph LR
    A[📝 Config] --> B[🎬 Setup]
    B --> C[⚡ Simulate]
    C --> D[📊 Extract]
    D --> E[📈 Analyze]

    style A fill:#4CAF50
    style E fill:#4CAF50
    style B fill:#2196F3
    style C fill:#FF9800
    style D fill:#9C27B0
  1. Config: Load JSON with study parameters (phantoms, frequencies, placements)
  2. Setup: Auto-build Sim4Life scene (load models, assign materials, set grid)
  3. Simulate: Run FDTD solver (local or cloud)
  4. Extract: Pull SAR, power balance, point sensors from results
  5. Analyze: Generate CSVs, plots, statistical summaries

Each stage is modular, swap in custom phantoms, antennas, or analysis strategies.

🔗 Detailed Architecture Guide


Documentation

Resource Description
Quick Start Get running in 5 minutes
User Guide Workflows and concepts explained
Tutorials Step-by-step examples (basic → advanced)
Configuration All config options with examples
API Reference Class and function details
Troubleshooting Common issues and solutions
Cloud & Monitoring Web dashboard for distributed execution
Developer Guide Extend GOLIAT or contribute

Contributing

Contributions are welcome! We follow a standard fork-and-PR workflow:

  1. Fork the repo and create a feature branch
  2. Make changes following our code style (Ruff, type hints)
  3. Add tests for new features
  4. Submit a PR with a clear description

See CONTRIBUTING.md for detailed guidelines, code style rules, and how to run tests locally.

Quick links: Code of ConductDeveloper Guide

Note: GOLIAT has just come out of beta and is still in early development. You may still encounter occasional errors. Please report any issues you find.


Citing

If you use this software, please cite it as:

@software{Wydaeghe_GOLIAT,
  title   = {{GOLIAT: A Comprehensive Automated Near- and Far-Field SAR Assessment Toolbox using Sim4Life}},
  author  = {Wydaeghe, Robin},
  url     = {https://github.com/rwydaeghe/goliat},
  license = {Apache-2.0},
  version = {1.2.0}
}

For other citation formats, please refer to the "Cite this repository" button on the main page of our GitHub repository.

License

This project is licensed under the Apache 2.0 License – see LICENSE for details.


🔗 Links


Star this repo if you like the GOLIAT code project!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

goliat-1.2.0.tar.gz (196.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

goliat-1.2.0-py3-none-any.whl (218.1 kB view details)

Uploaded Python 3

File details

Details for the file goliat-1.2.0.tar.gz.

File metadata

  • Download URL: goliat-1.2.0.tar.gz
  • Upload date:
  • Size: 196.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for goliat-1.2.0.tar.gz
Algorithm Hash digest
SHA256 d42a335548787428a2214a3d0e9f98d06f44c22ab54d4220e1da8835dc12f218
MD5 17f353227d51759c3f51b3b93ab3b57c
BLAKE2b-256 2bc8d7c933a69eb4566a429a4b005f5cc34f64275be4d5c555662ef666692755

See more details on using hashes here.

File details

Details for the file goliat-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: goliat-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 218.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for goliat-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dad6b37d8db4f869da4d46fde8a8ad0fdaf7b996e21adbe9d21a6cda54ecf351
MD5 10758b4ba704b117df636730a0e338db
BLAKE2b-256 6d308fcdef6aa1171f721946f8162b7fcccb2a975996b2fa0f13e4731f18a19e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page