Skip to content

GEOPY-2880: Allow EM receiver orientations to be defined as 2D array (per location) - #465

Open
domfournier wants to merge 7 commits into
developfrom
GEOPY-2880
Open

GEOPY-2880: Allow EM receiver orientations to be defined as 2D array (per location)#465
domfournier wants to merge 7 commits into
developfrom
GEOPY-2880

Conversation

@domfournier

@domfournier domfournier commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

GEOPY-2880 - Allow EM receiver orientations to be defined as 2D array (per location)

@github-actions github-actions Bot changed the title GEOPY-2880 GEOPY-2880: Allow EM receiver orientations to be defined as 2D array (per location) Aug 19, 2026
…-drivers into GEOPY-2880

# Conflicts:
#	environments/py-3.12-linux-64-dev.conda.lock.yml
#	environments/py-3.12-linux-64.conda.lock.yml
#	environments/py-3.12-win-64-dev.conda.lock.yml
#	environments/py-3.12-win-64.conda.lock.yml
#	environments/py-3.13-linux-64-dev.conda.lock.yml
#	environments/py-3.13-linux-64.conda.lock.yml
#	environments/py-3.13-win-64-dev.conda.lock.yml
#	environments/py-3.13-win-64.conda.lock.yml
#	py-3.12.conda-lock.yml
#	py-3.13.conda-lock.yml
@domfournier
domfournier marked this pull request as ready for review August 19, 2026 21:33
Copilot AI lite review requested due to automatic review settings August 19, 2026 21:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the EM receiver-orientation pipeline to support per-location orientations (2D arrays), enabling spatially varying receiver orientation definitions across a survey. It also adds a regression/integration test to exercise variable orientations and updates dependency pins/lockfiles to versions that include the required upstream support.

Changes:

  • Pass through per-location (2D) receiver orientations from the receiver factory into SimPEG receiver objects.
  • Update EM projection precomputation to handle per-location orientation arrays.
  • Add a ground TDEM oriented-receiver forward-run test and update dependency pins/conda lockfiles to the GEOPY-2880-compatible stack.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/run_tests/oriented_ground_tem_receiver_test.py Adds a forward-run test validating behavior with variable per-location receiver orientations.
simpeg_drivers/utils/surveys.py Updates EM receiver projection assembly to accept 2D orientation inputs (per location).
simpeg_drivers/utils/nested.py Ensures per-location orientations are correctly subset when building tiled/nested surveys.
simpeg_drivers/components/factories/receiver_factory.py Stops averaging orientations and forwards per-location orientations into receiver kwargs.
pyproject.toml Pins mira-simpeg to the GEOPY-2880 git ref to pick up orientation-related changes.
py-3.13.conda-lock.yml Updates locked dependency set to match the new git refs / resolved packages.
py-3.12.conda-lock.yml Updates locked dependency set to match the new git refs / resolved packages.
environments/py-3.13-win-64.conda.lock.yml Updates environment lock to match new dependency resolution (including git pins).
environments/py-3.13-win-64-dev.conda.lock.yml Updates dev environment lock to match new dependency resolution (including git pins).
environments/py-3.13-linux-64.conda.lock.yml Updates environment lock to match new dependency resolution (including git pins).
environments/py-3.13-linux-64-dev.conda.lock.yml Updates dev environment lock to match new dependency resolution (including git pins).
environments/py-3.12-win-64.conda.lock.yml Updates environment lock to match new dependency resolution (including git pins).
environments/py-3.12-win-64-dev.conda.lock.yml Updates dev environment lock to match new dependency resolution (including git pins).
environments/py-3.12-linux-64.conda.lock.yml Updates environment lock to match new dependency resolution (including git pins).
environments/py-3.12-linux-64-dev.conda.lock.yml Updates dev environment lock to match new dependency resolution (including git pins).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread simpeg_drivers/utils/surveys.py Outdated
Comment on lines +152 to +156
orientations = receiver.orientation.reshape((-1, 3))
for orientation, comp in zip(orientations.T, "xyz", strict=True):
if len(orientation) == 1 and orientation == 0:
continue
elif len(orientation) > 1:

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the orientations.T returns a 1x3 array, or a nx3 array, which then unfolds to orientation being either a 1x1 or 1x3 array, then the logic works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants