Running Analyses

Executing analysis computations

Running Analyses

Analysis Computations execute your complete workflow, running each algorithm in the DAG in the correct order.

Creating an Analysis Computation

from elements_api.async_client import ElementsAsyncClient

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

# Create computation
analysis_computation_request = client.models.analysis_computation_pb2.AnalysisComputationCreateRequest(
    analysis_config_id=analysis_config_id,
    aoi_collection_id=aoi_collection_id,
    toi_id=toi_id,
)

analysis_computation = await client.api.analysis_computation.create(
    analysis_computation_request
)

print(f"Analysis computation created: {analysis_computation.id}")

Running the Computation

# Start execution
run_request = client.models.analysis_computation_pb2.AnalysisComputationRunRequest(
    ids=[analysis_computation.id]
)

await client.api.analysis_computation.run(run_request)

print("Analysis computation started")

How Analysis Computations Work

When you run an Analysis Computation:

  1. First nodes execute as Algorithm Computations
  2. Platform waits for first nodes to complete
  3. Dependent nodes start once their inputs are ready
  4. Results flow from one algorithm to the next
  5. Final results are available once all nodes complete

Monitoring Progress

# Get status
computation = await client.api.analysis_computation.get(
    analysis_computation_id=analysis_computation.id
)

print(f"Status: {computation.status}")

# View history
history = await client.api.analysis_computation.history(
    analysis_computation_id=analysis_computation.id
)

for event in history:
    print(f"{event.timestamp}: {event.status}")

Managing Analysis Computations

Pause

pause_request = client.models.analysis_computation_pb2.AnalysisComputationPauseRequest(
    ids=[analysis_computation.id]
)

await client.api.analysis_computation.pause(pause_request)

Resume

resume_request = client.models.analysis_computation_pb2.AnalysisComputationResumeRequest(
    ids=[analysis_computation.id]
)

await client.api.analysis_computation.resume(resume_request)

Delete

delete_request = client.models.analysis_computation_pb2.AnalysisComputationDeleteRequest(
    ids=[analysis_computation.id]
)

await client.api.analysis_computation.delete(delete_request)

Viewing Results

Results from each node in the analysis are available through the Result API:

# Get results for final node
result_request = client.models.result_pb2.ResultGetRequest(
    analysis_computation_id=analysis_computation.id
)

result_response = await client.api.result.get(result_request)

Next Steps