Remote drone campaigns¶
Module: spectralbridge.drone_production.
Restart-safe production orchestration above the drone and bulk pipelines.
API glossary ยท Workflow / scientific context
Signatures and documentation below are collected from the current source. Advanced objects are not newly declared stable by inclusion here.
Audience: public. Also exported as spectralbridge.RemoteDronePackage.
RemoteDronePackage
dataclass
¶
RemoteDronePackage(remote_package_path: str, source_root: str, package_name: str, remote_h5_path: str | None, h5_name: str | None, size_bytes: int | None, checksum: str | None, flight_stem: str | None, year: int | None, manifest_id: str | None, acquisition_datetime: str | None, manifest_matched: bool, required_source_exists: bool, completed_local_result: bool, local_flightline_path: str | None, bulk_ready: bool, eligibility: str, reason: str | None = None)
One candidate ExportPackage discovered without downloading its H5.
Attributes:
| Name | Type | Description |
|---|---|---|
remote_package_path |
str
|
Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded. |
source_root |
str
|
Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity. |
package_name |
str
|
Original remote package/HDF5 basename preserved as source provenance. |
remote_h5_path |
str | None
|
Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded. |
h5_name |
str | None
|
Original remote package/HDF5 basename preserved as source provenance. |
size_bytes |
int | None
|
Size or estimated storage requirement in bytes; estimates describe planned artifacts rather than guaranteed disk use. |
checksum |
str | None
|
Optional source checksum used for transfer integrity; absence does not imply verification. |
flight_stem |
str | None
|
Canonical scientific flightline identifier; histories from the same underlying flight must retain this identity. |
year |
int | None
|
Calendar acquisition year used for inventory grouping and completeness checks. |
manifest_id |
str | None
|
Flight identifier matched against the acquisition manifest. |
acquisition_datetime |
str | None
|
Recorded acquisition timestamp, interpreted with the configured timezone convention. |
manifest_matched |
bool
|
Recorded manifest/source/local-result evidence used to decide package eligibility. |
required_source_exists |
bool
|
Recorded manifest/source/local-result evidence used to decide package eligibility. |
completed_local_result |
bool
|
Recorded manifest/source/local-result evidence used to decide package eligibility. |
local_flightline_path |
str | None
|
Canonical local producer output directory; completed products are reused only after readiness validation. |
bulk_ready |
bool
|
Whether the recorded product satisfies the corresponding translation availability/eligibility or producer-to-bulk gate; does not certify empirical sensor calibration. |
eligibility |
str
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
reason |
str | None, default=None
|
Explicit reason for exclusion, failure or unavailable status; None when no reason applies. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.DroneYearSource.
DroneYearSource
dataclass
¶
DroneYearSource(year: int, requested_source: str | None, resolved_sources: tuple[str, ...], resolution_strategy: str, source_status: str, expected_manifest_flights: tuple[str, ...], reason: str | None = None)
Resolved remote source and manifest expectation for one requested year.
Attributes:
| Name | Type | Description |
|---|---|---|
year |
int
|
Calendar acquisition year used for inventory grouping and completeness checks. |
requested_source |
str | None
|
Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity. |
resolved_sources |
tuple[str, ...]
|
Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity. |
resolution_strategy |
str
|
Recorded strategy used to resolve a requested remote root to explicit acquisition-year source locations. |
source_status |
str
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
expected_manifest_flights |
tuple[str, ...]
|
Expected flight identifiers for this requested year, derived from the manifest rather than discovered availability alone. |
reason |
str | None, default=None
|
Explicit reason for exclusion, failure or unavailable status; None when no reason applies. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.DroneCollectionInventory.
DroneCollectionInventory
dataclass
¶
DroneCollectionInventory(source: str, backend: str, created_utc: str, packages: tuple[RemoteDronePackage, ...], manifest_path: str, requested_years: tuple[int, ...] = (), year_sources: tuple[DroneYearSource, ...] = (), result_parent: str | None = None, schema_version: int = _INVENTORY_SCHEMA_VERSION)
Serializable remote collection inventory and campaign expectation set.
Attributes:
| Name | Type | Description |
|---|---|---|
source |
str
|
Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer. |
backend |
str
|
RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter. |
created_utc |
str
|
Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit. |
packages |
tuple[RemoteDronePackage, ...]
|
Immutable remote package inventory, including eligible and excluded records. |
manifest_path |
str
|
Existing acquisition manifest path, or None to follow supported discovery. |
requested_years |
tuple[int, ...], default=()
|
Requested acquisition years whose manifest expectations define campaign completeness. |
year_sources |
tuple[DroneYearSource, ...], default=()
|
Per-year source-resolution and expectation records. |
result_parent |
str | None, default=None
|
Resolved remote result parent or configured result package name; uploads remain explicit opt-in operations. |
schema_version |
int, default=_INVENTORY_SCHEMA_VERSION
|
Serialized payload schema version; preserve it when storing or exchanging this record. |
eligible_packages
property
¶
eligible_packages: tuple[RemoteDronePackage, ...]
Select package records marked eligible for staging.
Returns:
| Type | Description |
|---|---|
tuple[RemoteDronePackage, ...]
|
Tuple of package records whose eligibility equals eligible; no transfer is performed. |
excluded_packages
property
¶
excluded_packages: tuple[RemoteDronePackage, ...]
Select package records excluded from staging.
Returns:
| Type | Description |
|---|---|
tuple[RemoteDronePackage, ...]
|
Tuple of package records whose eligibility is not eligible, retaining their recorded reasons. |
discovery_complete
property
¶
discovery_complete: bool
Report whether all requested-year source discovery is complete.
Returns:
| Type | Description |
|---|---|
bool
|
Whether the recorded state satisfies this method's predicate; no source processing is performed. |
year_summaries ¶
year_summaries() -> dict[str, dict[str, Any]]
Return deterministic manifest-aware discovery evidence by year.
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
write ¶
write(output_dir: str | Path) -> tuple[Path, Path]
Write inventory JSON and CSV tables.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
output_dir
|
str | Path
|
Directory for generated products; bulk outputs must be outside the read-only input tree. |
required |
Returns:
| Type | Description |
|---|---|
tuple[Path, Path]
|
Inventory JSON path and package CSV path, in that order. |
Audience: advanced.
BulkReadinessValidation
dataclass
¶
BulkReadinessValidation(path: str, bulk_ready: bool, canonical_flightline_id: str | None, candidate_count: int, accepted_count: int, translation_available: bool, translation_eligible: bool, exclusion_reasons: tuple[str, ...] = (), error: str | None = None)
Result of classifying one producer directory with bulk's own discovery.
Audience: advanced.
StagedDroneInput
dataclass
¶
StagedDroneInput(package_path: str, local_path: str, remote_path: str, size_bytes: int, status: str, checksum: str | None = None)
Validated local copy of one required remote H5.
Audience: public. Also exported as spectralbridge.DroneCampaignConfig.
DroneCampaignConfig
dataclass
¶
DroneCampaignConfig(years: tuple[int, ...] = (), manifest_path: str | Path | None = None, manifest_timezone: str | None = 'UTC', cleanup_inputs: bool = True, resume: bool = True, require_complete_campaign: bool = True, apply_topo: bool = True, apply_brdf: bool = True, apply_brightness_adjustment: bool = False, require_solar_geometry: bool = True, extraction_mode: str = 'full', parquet_chunk_size: int = 2048, apply_translation: bool = True, translation_strict: bool = False, landsat_qa: bool = True, extraction_workers: int = 1, max_remote_depth: int = 8, max_remote_entries: int = 100000, result_name: str | None = None)
Explicit production settings for independent drone flight checkpoints.
Attributes:
| Name | Type | Description |
|---|---|---|
years |
tuple[int, ...], default=()
|
Requested acquisition years used to resolve sources and verify campaign completeness. |
manifest_path |
str | Path | None, default=None
|
Existing acquisition manifest path, or None to follow supported discovery. |
manifest_timezone |
str | None, default='UTC'
|
Timezone used to interpret manifest acquisition timestamps. |
cleanup_inputs |
bool, default=True
|
Remove staged inputs only after the established producer/readiness checkpoint has completed. |
resume |
bool, default=True
|
Reuse valid durable per-flight checkpoints on restart. |
require_complete_campaign |
bool, default=True
|
Require all expected eligible flights to be bulk-ready before population analysis; prevents silent partial-population claims. |
apply_topo |
bool, default=True
|
Enable the existing topographic correction when required terrain/geometry metadata are available. |
apply_brdf |
bool, default=True
|
Enable the existing BRDF correction when required angular metadata are available. |
apply_brightness_adjustment |
bool, default=False
|
Opt into the established brightness adjustment; does not change the packaged coefficients. |
require_solar_geometry |
bool, default=True
|
Require scientifically usable solar geometry before correction rather than silently proceeding without it. |
extraction_mode |
str, default='full'
|
'full' writes pixel Parquet, 'polygon' requires polygons; None preserves the entry point's documented default extraction behavior. |
parquet_chunk_size |
int, default=2048
|
Positive pixel/window processing budget for bounded extraction; the default and interpretation follow the selected producer. |
apply_translation |
bool, default=True
|
Create separate Landsat-like application products using the reviewed coefficient registry; does not overwrite corrected native MicaSense. |
translation_strict |
bool, default=False
|
Treat unsupported/flagged translation conditions as blocking rather than returning the configured non-strict status. |
landsat_qa |
bool, default=True
|
Enable actual Landsat comparison QA for translated products; requires apply_translation=True and appropriate data/dependencies. |
extraction_workers |
int, default=1
|
Positive number of independent flightline extraction workers; storage bandwidth can limit useful concurrency. |
max_remote_depth |
int, default=8
|
Positive remote traversal limit controlling inventory depth or inspected-entry budget. |
max_remote_entries |
int, default=100000
|
Positive remote traversal limit controlling inventory depth or inspected-entry budget. |
result_name |
str | None, default=None
|
Resolved remote result parent or configured result package name; uploads remain explicit opt-in operations. |
validate ¶
validate() -> None
Validate configuration ranges and supported option combinations.
Returns:
| Type | Description |
|---|---|
None
|
No return value; validation raises on unsupported configuration and directory creation persists the canonical hierarchy. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If option values violate the configuration or relationship-selection contract. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.DroneFlightStatus.
DroneFlightStatus
dataclass
¶
DroneFlightStatus(remote_package_path: str, flight_stem: str | None, state: str, updated_utc: str, local_input_path: str | None = None, local_flightline_path: str | None = None, transfer_status: str | None = None, bulk_ready: bool = False, reused: bool = False, input_removed: bool = False, reason: str | None = None)
Durable campaign state for one expected remote flight package.
Attributes:
| Name | Type | Description |
|---|---|---|
remote_package_path |
str
|
Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded. |
flight_stem |
str | None
|
Canonical scientific flightline identifier; histories from the same underlying flight must retain this identity. |
state |
str
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
updated_utc |
str
|
Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit. |
local_input_path |
str | None, default=None
|
Backing input product path retained for traceability and restart checks. |
local_flightline_path |
str | None, default=None
|
Canonical local producer output directory; completed products are reused only after readiness validation. |
transfer_status |
str | None, default=None
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
bulk_ready |
bool, default=False
|
Whether the recorded product satisfies the corresponding translation availability/eligibility or producer-to-bulk gate; does not certify empirical sensor calibration. |
reused |
bool, default=False
|
Recorded checkpoint reuse or staged-input cleanup outcome; inspect flight state for scientific success. |
input_removed |
bool, default=False
|
Recorded checkpoint reuse or staged-input cleanup outcome; inspect flight state for scientific success. |
reason |
str | None, default=None
|
Explicit reason for exclusion, failure or unavailable status; None when no reason applies. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.DroneCampaignResult.
DroneCampaignResult
dataclass
¶
DroneCampaignResult(inventory: DroneCollectionInventory, flights: tuple[DroneFlightStatus, ...], work_dir: str, flight_outputs: str, state_dir: str, status: str, started_utc: str, completed_utc: str, config: DroneCampaignConfig)
Completed, partial, or failed per-flight campaign outcome.
Attributes:
| Name | Type | Description |
|---|---|---|
inventory |
DroneCollectionInventory
|
DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance. |
flights |
tuple[DroneFlightStatus, ...]
|
Per-flight durable outcomes, including failed, blocked and completed states. |
work_dir |
str
|
Local campaign workspace containing staging, flight outputs and restart/status records. |
flight_outputs |
str
|
Local producer-output or durable restart/status directory. |
state_dir |
str
|
Local producer-output or durable restart/status directory. |
status |
str
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
started_utc |
str
|
Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit. |
completed_utc |
str
|
Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit. |
config |
DroneCampaignConfig
|
Configuration object for this workflow; None selects the documented defaults of its configuration class. |
completed_flights
property
¶
completed_flights: tuple[DroneFlightStatus, ...]
Select producer flight records currently marked bulk-ready.
Returns:
| Type | Description |
|---|---|
tuple[DroneFlightStatus, ...]
|
Tuple of producer flight records marked bulk_ready; this property does not rerun readiness validation. |
failed_flights
property
¶
failed_flights: tuple[DroneFlightStatus, ...]
Select failed or scientifically blocked flight records.
Returns:
| Type | Description |
|---|---|
tuple[DroneFlightStatus, ...]
|
Tuple of flight records whose state is failed or blocked. |
requested_years_complete
property
¶
requested_years_complete: bool
Report whether every requested year satisfies its manifest expectation.
Returns:
| Type | Description |
|---|---|
bool
|
Whether the recorded state satisfies this method's predicate; no source processing is performed. |
year_summaries ¶
year_summaries() -> dict[str, dict[str, Any]]
Combine inventory evidence and durable processing state by year.
summary ¶
summary() -> dict[str, Any]
Summarize recorded flight/campaign states without rerunning processing.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Recorded campaign counts, per-year completeness and output locations; this summary does not regenerate source products. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.BulkProductionResult.
BulkProductionResult
dataclass
¶
BulkProductionResult(inventory: DroneCollectionInventory, campaign: DroneCampaignResult, bulk_result: Mapping[str, Any], summary_result: Mapping[str, Any], local_result_path: str, remote_result_path: str | None, preflight_result: Mapping[str, Any], status: str = 'complete')
Top-level campaign, bulk, summary, package, and upload result.
Attributes:
| Name | Type | Description |
|---|---|---|
inventory |
DroneCollectionInventory
|
DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance. |
campaign |
DroneCampaignResult
|
DroneCampaignResult retaining producer inventory, completeness and per-flight outcomes. |
bulk_result |
Mapping[str, Any]
|
Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage. |
summary_result |
Mapping[str, Any]
|
Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage. |
local_result_path |
str
|
Final compact result package path; remote location may be absent when upload is disabled. |
remote_result_path |
str | None
|
Final compact result package path; remote location may be absent when upload is disabled. |
preflight_result |
Mapping[str, Any]
|
Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage. |
status |
str, default='complete'
|
Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically. |
completed_flights
property
¶
completed_flights: tuple[DroneFlightStatus, ...]
Select producer flight records currently marked bulk-ready.
Returns:
| Type | Description |
|---|---|
tuple[DroneFlightStatus, ...]
|
Tuple of producer flight records marked bulk_ready; this property does not rerun readiness validation. |
failed_flights
property
¶
failed_flights: tuple[DroneFlightStatus, ...]
Select failed or scientifically blocked flight records.
Returns:
| Type | Description |
|---|---|
tuple[DroneFlightStatus, ...]
|
Tuple of flight records whose state is failed or blocked. |
summary ¶
summary() -> dict[str, Any]
Summarize recorded flight/campaign states without rerunning processing.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Recorded campaign counts, per-year completeness and output locations; this summary does not regenerate source products. |
to_dict ¶
to_dict() -> dict[str, Any]
Serialize this record to its established machine-readable mapping.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Mapping of record fields and workflow-derived summary entries in the established serialization schema. |
Audience: public. Also exported as spectralbridge.DroneCampaignIncompleteError.
DroneCampaignIncompleteError ¶
DroneCampaignIncompleteError(message: str, result: DroneCampaignResult)
The intended eligible population was not fully bulk-ready.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
str
|
Explanation of the failed campaign completeness or readiness gate. |
required |
result
|
DroneCampaignResult
|
Durable per-flight outcomes retained as |
required |
Audience: public. Also exported as spectralbridge.validate_bulk_ready_flightline.
validate_bulk_ready_flightline ¶
validate_bulk_ready_flightline(path: str | Path) -> BulkReadinessValidation
Apply bulk's real discovery/classification contract to one producer output.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str | Path
|
Existing producer flightline directory to validate using the actual bulk discovery and product-classification contract. |
required |
Returns:
| Type | Description |
|---|---|
BulkReadinessValidation
|
Structured readiness result, canonical identity, accepted counts, availability and any captured discovery error. |
See Also
spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.
Audience: public. Also exported as spectralbridge.inspect_drone_collection.
inspect_drone_collection ¶
inspect_drone_collection(source: DroneSource, *, backend: RemoteCollectionBackend | None = None, manifest: str | Path | None = None, years: Sequence[int] | None = None, local_output_dir: str | Path | None = None, max_depth: int = 8, max_entries: int = 100000, inventory_output_dir: str | Path | None = None) -> DroneCollectionInventory
Inventory remote ExportPackages and required H5s before large transfer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
source
|
DroneSource
|
Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer. |
required |
backend
|
RemoteCollectionBackend | None
|
RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter. |
None
|
manifest
|
str | Path | None
|
Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata. |
None
|
years
|
Sequence[int] | None
|
Requested acquisition years used to resolve sources and verify campaign completeness. |
None
|
local_output_dir
|
str | Path | None
|
Existing local flight-output root used to recognize completed, bulk-ready flights during remote inventory. |
None
|
max_depth
|
int
|
Maximum recursive remote inventory depth; bounds traversal cost. |
8
|
max_entries
|
int
|
Maximum entries inspected during remote inventory; bounds unintentional collection-wide traversal. |
100000
|
inventory_output_dir
|
str | Path | None
|
Optional directory for inventory JSON/CSV artifacts; None returns the inventory without those files. |
None
|
Returns:
| Type | Description |
|---|---|
DroneCollectionInventory
|
Serializable resolved remote/local inventory with per-package eligibility and source/year provenance. |
See Also
spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.
Examples:
Requires an authorized remote source and configured backend; this inventories metadata before large transfer.
>>> from spectralbridge import inspect_drone_collection
>>> inventory = inspect_drone_collection(remote_source, years=(2025,))
Audience: advanced.
stage_drone_package ¶
stage_drone_package(package: RemoteDronePackage, *, source: str, staging_dir: str | Path, backend: RemoteCollectionBackend) -> StagedDroneInput
Download or reuse one complete H5 while preserving ExportPackage layout.
Audience: public. Also exported as spectralbridge.stage_drone_collection.
stage_drone_collection ¶
stage_drone_collection(inventory: DroneCollectionInventory, *, staging_dir: str | Path, backend: RemoteCollectionBackend | None = None) -> tuple[StagedDroneInput, ...]
Stage every eligible H5; campaign runners normally stage one at a time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
inventory
|
DroneCollectionInventory
|
DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance. |
required |
staging_dir
|
str | Path
|
Local directory for downloaded input packages; stage_drone_collection stages all eligible inputs, unlike the bounded campaign runner. |
required |
backend
|
RemoteCollectionBackend | None
|
RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[StagedDroneInput, ...]
|
StagedDroneInput records for every eligible package; unlike the campaign runner, this stages the full eligible inventory. |
See Also
spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.
Audience: public. Also exported as spectralbridge.run_drone_campaign.
run_drone_campaign ¶
run_drone_campaign(source: DroneSource, *, work_dir: str | Path, years: Sequence[int] | None = None, manifest: str | Path | None = None, backend: RemoteCollectionBackend | None = None, config: DroneCampaignConfig | None = None) -> DroneCampaignResult
Stage and run independent restart-safe drone producer checkpoints.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
source
|
DroneSource
|
Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer. |
required |
work_dir
|
str | Path
|
Local campaign workspace containing staging, flight outputs and restart/status records. |
required |
years
|
Sequence[int] | None
|
Requested acquisition years used to resolve sources and verify campaign completeness. |
None
|
manifest
|
str | Path | None
|
Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata. |
None
|
backend
|
RemoteCollectionBackend | None
|
RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter. |
None
|
config
|
DroneCampaignConfig | None
|
Configuration object for this workflow; None selects the documented defaults of its configuration class. |
None
|
Returns:
| Type | Description |
|---|---|
DroneCampaignResult
|
Per-flight outcomes, inventory, status and restart/output locations; inspect completeness before population analysis. |
See Also
spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.
Examples:
Requires a configured remote source, acquisition manifest and suitable local storage; source packages are staged one at a time.
>>> from spectralbridge import run_drone_campaign
>>> result = run_drone_campaign(remote_source, work_dir=work_dir, years=(2025,))
Audience: advanced.
package_drone_bulk_results ¶
package_drone_bulk_results(*, campaign: DroneCampaignResult, preflight_output: str | Path, bulk_output: str | Path, package_dir: str | Path) -> Path
Build a compact, checksummed closeout package without raw or cache data.
Audience: advanced.
verify_uploaded_results ¶
verify_uploaded_results(local_package: str | Path, remote_path: str, *, backend: RemoteCollectionBackend) -> dict[str, Any]
Verify every packaged file remotely by presence and size/checksum metadata.
Audience: public. Also exported as spectralbridge.run_drone_bulk_production.
run_drone_bulk_production ¶
run_drone_bulk_production(*, source: DroneSource, years: Sequence[int], work_dir: str | Path, manifest: str | Path | None = None, backend: RemoteCollectionBackend | None = None, config: DroneCampaignConfig | None = None, upload_results: bool = False, require_complete_campaign: bool = True) -> BulkProductionResult
Run remote inventory through producer, bulk, reporting, and optional upload.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
source
|
DroneSource
|
Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer. |
required |
years
|
Sequence[int]
|
Requested acquisition years used to resolve sources and verify campaign completeness. |
required |
work_dir
|
str | Path
|
Local campaign workspace containing staging, flight outputs and restart/status records. |
required |
manifest
|
str | Path | None
|
Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata. |
None
|
backend
|
RemoteCollectionBackend | None
|
RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter. |
None
|
config
|
DroneCampaignConfig | None
|
Configuration object for this workflow; None selects the documented defaults of its configuration class. |
None
|
upload_results
|
bool
|
Upload and verify the completed compact result package at its resolved remote destination; False keeps results local. |
False
|
require_complete_campaign
|
bool
|
Require all expected eligible flights to be bulk-ready before population analysis; prevents silent partial-population claims. |
True
|
Returns:
| Type | Description |
|---|---|
BulkProductionResult
|
Inventory/campaign, preflight, bulk and summary results plus local/remote package locations. |
Raises:
| Type | Description |
|---|---|
DroneCampaignIncompleteError
|
If required campaign completeness or the producer-to-bulk population gate fails. |
FileExistsError
|
If a protected destination already exists or conflicts with the requested product. |
RuntimeError
|
If required processing or artifact validation cannot complete. |
See Also
spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.
Examples:
Requires real remote source data and complete producer inputs. Upload is an explicit separate choice.
>>> from spectralbridge import run_drone_bulk_production
>>> result = run_drone_bulk_production(source=remote_source, years=(2025,), work_dir=work_dir, upload_results=False)
Explicitly exported constants and type aliases¶
These values describe package metadata, schemas or configuration; they are not observations from a production dataset.
| Name | Source expression |
|---|---|
DroneSource |
str \| Mapping[int, str] |