Typed pipeline composition

A Pipeline describes how spherical data changes domain and meaning. It is more than a list of callables: every Stage declares accepted and produced kinds, and every spatial result carries the grid, support and validity needed by the next stage.

Surface

Stability

Canonical import

Contract

Public components or entries

spherical-region-analysis-pipeline

Stable

panorai.pipeline

panorai-spherical-region-analysis/v1

AnalyzeRegions, SphericalWatershed

spherical-model-workflow

Experimental

panorai.workflow

panorai-spherical-model-workflow/v1

SPHERICAL_MODEL_WORKFLOW_INTERFACE, AggregatedViewEvidence, EquirectangularImage, FacePointBatch, FaceRegionBatch, FaceViewOutput, GnomonicFace, GnomonicFaceSet, ObservationFusionResult, RasterFieldResult, RasterFieldSpec, SphericalBinaryMask, SphericalInputSpec, SphericalOutputSpec, SphericalOutputTree, SphericalPointObservation, SphericalPointSet, SphericalRegionObservation, SphericalRegionSet, SphericalViewObservation, SphericalViewSet

panorama-stitching-stages

Experimental

panorai.stitching

panorai-panorama-stitching/v1-experimental

BlendStitchingPanorama, CalibrateAndRegister, CompensateExposure, DetectStitchingFeatures, DiscoverOverlaps, StitchingRegistrationError, WarpRegisteredImages

spherical-pipeline-core

Stable

panorai.pipeline

panorai-spherical-pipeline/v1

AggregateViews, Attach, ClassificationResult, EmbeddingResult, LiftToBearings, OnSphere, Output, Parallel, PerView, PerViewResults, Pipeline, PipelineCacheError, PipelineRun, PipelineSerializationError, RasterField, RasterGrid, ReconstructERP, ResultBundle, SampleViews, Select, SphericalObservations, StageRecord, Stage, StageResult, ViewObservations, ViewResult, registered_pipeline_components, register_torch_module, registered_torch_modules

spherical-pipeline-semantic-instances

Experimental

panorai.pipeline

panorai-spherical-instance-pipeline/v1-experimental

CAMEvidenceFrame, CAMGuidedSphericalInstances, CAMRegionProposal, CAMRegionProposalSet, CAMRegionProposals, SAMMaskProposalBatch, SAMMaskRefinement, SphericalCAM, SphericalInstanceFusion

spherical-pipeline-root-convenience

Stable

panorai.pipeline

panorai-spherical-pipeline/v1

Pipeline, PipelineRun, Stage, StageResult, RasterField, ResultBundle, ClassificationResult, EmbeddingResult, SphericalObservations, OnSphere, Output, Parallel, SampleViews, PerView, ReconstructERP, Select, Attach, LiftToBearings, AggregateViews

spherical-pipeline-auto-experimental

Experimental

panorai.pipeline

panorai-spherical-pipeline/auto-experimental

—

Two execution domains

OnSphere keeps computation on an ERP or derived spherical lattice. SampleViews crosses into gnomonic views, PerView runs local planar callables and ReconstructERP crosses back through explicit fusion. Hybrid pipelines can branch across both domains and retain their results together.

Typed results prevent accidental semantics

RasterField binds values to a RasterGrid and declares whether they are image, depth, labels, masks, logits, features or confidence. Classification, embeddings, detections and keypoints use non-raster result types that retain their view and projection provenance. ResultBundle holds named branches without flattening these distinctions.

This typing makes invalid operations fail early. Labels cannot be bilinearly reconstructed, depth cannot omit units, and a downsampled feature lattice cannot be attached as though it were the canonical ERP grid.

Execution remains inspectable

StageResult carries a value and execution details. PipelineRun records each transition and may retain selected intermediates. A Pipeline implements the same Stage protocol, enabling nesting without a second execution model. Logical branching does not promise threads; deterministic batching is an explicit adapter capability.

Persistence and cache are fail-closed

Topology serialization uses registered identifiers rather than Python imports named by a file. Torch state uses checksum-bound safetensors for registered architectures. Cache keys include values, masks, grids, configuration, version and weight identity, and tensors requiring gradients are never silently detached into cache.

See the Pipeline tutorial and Pipeline API.