Conditional turning bands
The conditional turning bands task runs a conditional block turning-bands simulation using an existing continuous distribution. Unlike the full conditional simulation workflow task, this task takes a pre-computed distribution object (created by the continuous-distribution task) instead of computing one internally. The task creates a continuous ensemble attribute with the backtransformed simulation results. The ensemble has one column for each realization. You get to pick how many realizations the task does.
Parameters
source(geoscience object reference)- A geoscience object reference that points to a pointset object containing the source points used for conditioning the simulation.
source_attribute(geoscience object attribute reference)- Reference to the numeric attribute on the source object containing the conditioning values.
target(geoscience object reference)- A geoscience object reference that points to a regular-3d-grid or regular-masked-3d-grid object. The task will save the simulation ensemble onto this grid.
filter(object, optional)- An optional filter to apply to the target grid. When provided, the simulation is only evaluated at grid locations that pass the filter.
source_filter(object, optional)- An optional filter to apply to the source object. When provided, only source points that pass the filter are used for conditioning.
distribution(geoscience object reference)- A geoscience object reference that points to a non-parametric-continuous-cumulative-distribution object. This should be the distribution of your composites, created by the continuous-distribution task.
variogram_model(geoscience object reference)- A geoscience object reference that points to a variogram object. This should be fitted to an experimental variogram of your composites.
neighborhood(object)- A search ellipse that the task will use for simulating and for kriging during the conditioning step.
-
{"ellipsoid": {"ellipsoid_ranges": {"major": 70, // Major axis length of the search ellipsoid"semi_major": 70, // Semi-major axis length"minor": 5 // Minor axis length},"rotation": {"dip_azimuth": 0, // First rotation about z-axis (0-360 degrees)"dip": 0, // Second rotation about x-axis (0-180 degrees)"pitch": 0 // Third rotation about z-axis (0-360 degrees)}},"max_samples": 40, // Maximum number of nearby samples to use"min_samples": 1 // Minimum number of nearby samples to use}
block_discretization(object)- How many pieces you want to chop each grid cell into, in the x, y, and z directions. The task will simulate a value for each piece, then take their mean and assign that number to the cell.
-
{"nx": 5, // Number of subdivisions in x direction (1-9)"ny": 5, // Number of subdivisions in y direction (1-9)"nz": 5 // Number of subdivisions in z direction (1-9)}
number_of_lines(integer, optional)- How many lines to use for the turning-band simulation. Defaults to
500. Must be between 1 and 1000.
- How many lines to use for the turning-band simulation. Defaults to
random_seed(integer, optional)- Seeds random number generation in the task. Defaults to
38239342.
- Seeds random number generation in the task. Defaults to
realizations(integer, optional)- How many realizations you want to simulate. All realizations will be saved. Defaults to
1. Must be between 1 and 100.
- How many realizations you want to simulate. All realizations will be saved. Defaults to
kriging_method(string, optional)- The kriging method to use for the conditioning step. Can be either
"simple"or"ordinary". Defaults to"simple".
- The kriging method to use for the conditioning step. Can be either
Example
For more information, see the conditional turning bands API reference.
Request
requests.post(
"https://{hub}.api.seequent.com/compute/orgs/{org_id}/geostatistics/conditional-turning-bands",
headers={"Authorization": "Bearer {token}"},
json={
"parameters": {
"source": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-pointset.json",
"source_attribute": "locations.attributes[?name=='my-attribute']",
"target": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-grid.json",
"distribution": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-distribution.json",
"variogram_model": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-variogram.json",
"neighborhood": {
"ellipsoid": {
"ellipsoid_ranges": {
"major": 70,
"semi_major": 70,
"minor": 5
},
"rotation": {
"dip_azimuth": 0,
"dip": 0,
"pitch": 0
}
},
"max_samples": 40,
"min_samples": 1
},
"block_discretization": {
"nx": 5,
"ny": 5,
"nz": 5
},
"number_of_lines": 500,
"random_seed": 123,
"realizations": 10,
"kriging_method": "simple"
},
},
)
Result
{
"target": {
"name": "my-grid",
"reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-grid.json",
"simulations": {
"name": "simulation-results",
"reference": "cell_attributes[?key=='5f4e2c3e-3d3b-4f4a-8e2a-1c2b3d4e5f6a']"
}
}
}
Tips
- This task requires a pre-computed distribution. Use the continuous-distribution task to create one first.
- Using a block discretization of
{nx: 1, ny: 1, nz: 1}is like doing a point simulation on the midpoint of each cell. - Higher values of
number_of_linesproduce more accurate results but take longer.