csemx
An open, vendor-neutral exchange format for modeling-ready frequency-domain controlled-source electromagnetic (CSEM) data.
Status: pre-circulation draft (1.0), open for technical review. Not yet frozen.
A csemx bundle carries calibrated, current-normalized complex response
functions together with the explicit transmitter and receiver geometry, coordinate
reference system, units, and sign/phase conventions needed to model them. A producer
exports once and any code that implements the format can read the delivery, replacing
a matrix of bespoke per-vendor converters.
A bundle is a self-describing ZIP archive of CSV or Parquet tables with a human-readable manifest, so the data remains inspectable long after delivery and is suitable for archival of final, processed CSEM datasets.
What it carries
- Calibrated, current-normalized complex response functions
- Explicit 3D transmitter and receiver geometry
- Coordinate reference system, units, and orientation
- Mandatory, documented sign and phase conventions
- A producer data-quality recommendation per datum
Out of scope
- Raw acquisition / instrument output
- Magnetotelluric (MT) data
- Inversion or modeling settings
- Calibration internals
Bundle structure
A delivered bundle is a .csemx.zip archive containing one
top-level directory. Each required table is supplied exactly once, as CSV or Parquet;
the specification defines the columns, geometry conventions, units, normalization, and
validation rules.
<bundle-name>/
├── manifest.yaml
├── tx.csv | tx.parquet
├── tx_vertices.csv | tx_vertices.parquet
├── rx.csv | rx.parquet
├── rx_vertices.csv | rx_vertices.parquet
├── data.csv | data.parquet
└── notes.md # optional
Validating a bundle
python3 -m pip install -e "./python[full]"
csemx validate --full examples/example.csemx.zip
csemx inspect examples/example.csemx
MATLAB helpers under matlab/+csemx provide csemx.read,
csemx.write, and csemx.validate. See the
repository for full instructions.
Feedback
The conventions are not frozen, and technical review from people who acquire, process, and model CSEM data is what this stage is for. Draft comments are welcome through July 31, 2026; later comments are still tracked.
- Email — plain prose is fine; ask for a PDF to annotate.
- GitHub Issues — a specific defect or single concrete change.
- GitHub Discussions — open-ended design questions.
- Pull request — to propose exact wording.
No GitHub account is needed; emailed comments reach the same backlog.