Skip to content

import_sofima_20260912 - #253

Merged
trautmane merged 7 commits into
newsolverfrom
import_sofima_20260912
Sep 13, 2026
Merged

trautmane merged 7 commits into
newsolverfrom
import_sofima_20260912

Conversation

@trautmane

@trautmane trautmane commented Sep 13, 2026

Copy link
Copy Markdown
Collaborator

Added spark client for importing SOFIMA results and cleaned-up AlignmentPipelineStep interface.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

There are a couple of concrete correctness/quality issues to address (misleading CLI parameter description and a driver-side collect() that can cause avoidable memory pressure), and the new pipeline step lacks direct test coverage.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR introduces a new Spark pipeline step for importing SOFIMA displacement fields into Render stacks, and simplifies the alignment pipeline step abstraction by removing per-client “default step id” plumbing in favor of enum-driven step creation.

Changes:

  • Added SOFIMA import support end-to-end: SofimaParameters, a Spark ImportSofimaClient, and a new IMPORT_SOFIMA pipeline step id.
  • Simplified AlignmentPipelineStep by removing getDefaultStepId() and updating all step clients/tests accordingly.
  • Minor housekeeping updates (Docker tag comment bump, additional db-dump stage options, small Java 21 stream/list modernizations).
File summaries
File Description
render-ws-with-mongo-db/Dockerfile Updates example image tags in comments (1.0.2 → 1.0.3).
render-ws-with-mongo-db/db-dump-google-collections.sh Adds additional supported stage options including SOFIMA/IC3D.
render-ws-spark-client/src/test/java/org/janelia/render/client/spark/pipeline/AlignmentPipelineParametersTest.java Adjusts tests for step-id/interface cleanup and Java 21 list APIs.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/zspacing/ZPositionCorrectionClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/tile/TileIdHackClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/tile/RenderTilesClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/tile/MaskHackClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/ScapeClient.java Removes default-step-id method; minor Java 21 list usage.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/pipeline/AlignmentPipelineStepId.java Adds IMPORT_SOFIMA step id mapped to the new Spark client.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/pipeline/AlignmentPipelineStep.java Removes getDefaultStepId() from the step interface.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/pipeline/AlignmentPipelineParameters.java Adds SofimaParameters to pipeline parameters and accessor.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/newsolver/DistributedIntensityCorrectionBlockSolverClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/newsolver/DistributedAffineBlockSolverClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/UnconnectedCrossMFOVClient.java Removes default-step-id method; stream .toList() modernization.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/MultiSEMTileRemovalClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/MFOVMontageMatchPatchClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/MFOVAsTileClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/MatchCollectionRenameClient.java Removes default-step-id method; stream .toList() modernization.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/LayerAsTileClient.java Removes default-step-id method; small string check and .toList() modernization.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/ImportSofimaClient.java New Spark client implementing the IMPORT_SOFIMA pipeline step.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/CreepCorrectionSparkClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/multisem/BeamCorrectionSparkClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/MipmapClient.java Removes default-step-id method; stream .toList() modernization.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/match/MultiStagePointMatchClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/match/CopyMatchClient.java Removes default-step-id method; updates step docstring.
render-ws-spark-client/src/main/java/org/janelia/render/client/spark/match/ClusterCountClient.java Removes default-step-id method; updates step docstring.
render-ws-java-client/src/main/java/org/janelia/render/client/parameter/SofimaParameters.java New shared parameter bean for SOFIMA import configuration.
render-ws-java-client/src/main/java/org/janelia/render/client/multisem/ImportSofimaClient.java Refactors Java client to use SofimaParameters and derived target stacks.
Review details
  • Files reviewed: 28/28 changed files
  • Comments generated: 3
  • Review effort level: Lite

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

Comment on lines +83 to +92
@Override
public void validatePipelineParameters(final AlignmentPipelineParameters pipelineParameters)
throws IllegalArgumentException {

final SofimaParameters sofima = pipelineParameters.getSofima();

AlignmentPipelineParameters.validateRequiredElementExists("sofima", sofima);

sofima.validate();
}
trautmane and others added 2 commits September 13, 2026 19:53
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@trautmane
trautmane merged commit 2905e9b into newsolver Sep 13, 2026
2 checks passed
@trautmane
trautmane deleted the import_sofima_20260912 branch September 13, 2026 23:59
@trautmane

trautmane commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator Author

@minnerbe - I went ahead and merged this, but please let me know if you think anything should be changed. Thanks!

@trautmane

Copy link
Copy Markdown
Collaborator Author

I needed to add this to get things working:
c89b171

@trautmane

Copy link
Copy Markdown
Collaborator Author

Also - the log from my first run contains many applyInPlace inversion warnings like these:

applyInPlace-inversion-convergence-warning

Please let me know if this is expected or if it identifies a problem.
Thanks!

@minnerbe

Copy link
Copy Markdown
Collaborator

Thanks, @trautmane ! The fix looks good to me. I'm a bit concerned about the warnings, especially the one that has a 33px residual. I think the screenshot has all information I need to investigate this.

@minnerbe

Copy link
Copy Markdown
Collaborator

I investigated the issue and it turned out that the convergence properties of the inversion of the displacement field weren't great. I implemented a Newton method, which should converge much more robustly (getting rid of the warnings above, which indicated that the inversion was wrong). This has been pushed directly to newsolver.

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.

3 participants