Viewing Results

Accessing and exporting algorithm computation results

Viewing Results

Once an algorithm computation completes, you can access the results through the Result API.

Getting Results

from elements_api.async_client import ElementsAsyncClient
from terrascope_api.models.result_pb2 import Pagination

client = ElementsAsyncClient(host, port, secure=True, token=api_token)

# Get results
result_request = client.models.result_pb2.ResultGetRequest(
    algorithm_computation_id=computation_id,
    pagination=Pagination(page_size=100),
    include_measurements=False
)

result_response = await client.api.result.get(result_request, timeout=30)

# Process results
for result in result_response.results:
    print(f"AOI: {result.source_aoi_version}")

    for observation in result.observations:
        print(f"  Time: {observation.observation_start_ts}")
        print(f"  Values: {observation.observation_values}")

Exporting Results

Export results to CSV or Parquet files:

# Export request
export_request = client.models.result_pb2.ResultExportRequest(
    algorithm_computation_id=computation_id,
    file_type=client.models.result_pb2.ResultExportRequest.FileType.CSV,
    export_type=client.models.result_pb2.ResultExportRequest.ExportType.STANDARD
)

export_response = await client.api.result.export(export_request, timeout=300)

download_url = export_response.download_url
print(f"Download: {download_url}")

Downloading Exported Results

import wget
import zipfile
import pandas as pd
import glob

# Download archive
zip_file = wget.download(download_url)

# Extract files
with zipfile.ZipFile(zip_file, 'r') as zip_ref:
    zip_ref.extractall('./results')

# Load data
csv_files = glob.glob('./results/**/*.csv', recursive=True)
df = pd.concat([pd.read_csv(f) for f in csv_files])

print(f"Loaded {len(df)} result rows")

Result Structure

Results contain:

  • source_aoi_version - Which AOI generated this result
  • data_type - Output Data Type
  • observations - List of time-based observations
    • observation_start_ts - Timestamp (Unix epoch)
    • observation_values - Summary metrics
    • measurement_path - Path to detailed result file (if applicable)

Including Detailed Measurements

To get detailed measurement data:

result_request = client.models.result_pb2.ResultGetRequest(
    algorithm_computation_id=computation_id,
    include_measurements=True  # Include detailed data
)

result_response = await client.api.result.get(result_request, timeout=30)

Next Steps