Skip to content

Analysis types

/analysis-types/ lists the analyses you can run on this team right now, each with a JSON Schema for its parameters. Read it before building a request rather than hard-coding choices: backends, compute tiers and released analyses change over time, and this endpoint always reflects what the server will accept.

List analysis types

GET /api/v1/teams/{team_id}/analysis-types/

Response 200: {"results": [analysis type, …]}, one entry per analysis available to you.

{
  "results": [
    {
      "slug": "poresize",
      "label": "Pore Size",
      "contract_version": 1,
      "expected_duration_seconds": 300,
      "required_solution_keys": ["R", "pdf", "cdf"],
      "parameters_schema": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "integer",
            "title": "Radius steps",
            "description": "Number of evenly spaced radii used by the local thickness filter.",
            "default": 25,
            "minimum": 2
          },
          "queue_name": {
            "type": "string",
            "title": "Backend",
            "default": "porespy",
            "enum": ["porespy"]
          }
        },
        "required": ["queue_name"],
        "additionalProperties": false
      }
    }
  ]
}

The analysis type object

Field Meaning
slug The analysis_type to send when submitting.
label Human-readable name.
contract_version Version of the analysis's input and output contract.
expected_duration_seconds A typical run time. A job held up well beyond twice this is cancelled. See Job states.
required_solution_keys Keys that are always present in this analysis's result solution.
parameters_schema JSON Schema for parameters.

Reading parameters_schema

  • Send every property listed in required, even if it has a default. The default is what the app pre-fills in its form. The API doesn't fill in missing required fields.
  • Optional properties with a default take that value when you leave them out.
  • Some fields are required only in combination. Diffusivity and conductivity need solver_tolerance for Tortuosity.jl and max_iterations for TauFactor. Network extraction needs boundary_width, accuracy, sigma and r_max when method is snow2, l_max when it's magnet, and n_walkers and step_size when throat_area is on. A missing one comes back as a 400 naming the field.
  • additionalProperties: false: unknown keys are ignored, and they are not stored with the job. A few keys the server sets itself are refused instead: radial density refuses bins and log, and pore size distribution refuses sizes.
  • Backends. queue_name selects the backend. Its enum lists the backends you can use now, by stable identifiers such as porespy, walberla or kabs-taichi. Older names for the same backend are still accepted.
  • Compute tiers. For permeability, diffusivity and conductivity, compute_tier.x-queue-tier-options maps each backend to its tiers: key, display_name, memory, and the largest image (max_voxels) it takes. Send "auto" or one of the keys listed for the backend you chose. See Compute tiers.
  • Phase. Chord length distribution and radial density take an optional phase, pore or solid.

The parameter reference describes every analysis's parameters and what they change in the computation.

Availability

Some analyses are released gradually. Discovery lists only the analyses that are available to the key's owner (or the signed-in user) on this team, and only analyses the API can run. Image operations (segmenting, trimming, cleaning, converting, importing and exporting, noise filtering and resizing) run in the app and aren't in the API yet, so discovery never lists them. Network extraction and network validation are available to PoreStore staff only for now; results of network jobs you already ran stay readable.

A submission for an analysis that isn't available returns 403 with error.code: "analysis_unavailable". It happens before any job is created or work is dispatched. Already-submitted jobs and their results stay readable regardless.

The OpenAPI schema lists every analysis_type the API understands. It doesn't grant access. Use discovery to see what you can run.