Skip to main content

Trial visualization: services

FiltersService​

Returned by: TrialVisualization.filters

MemberKindDescription
listmethodReturn all currently configured filter payloads.
replacemethodReplace the full filter list with raw filter payloads.
add_numericmethodAppend one numeric descriptor filter to the visualization.
add_categoricalmethodAppend one categorical descriptor filter to the visualization.
add_patient_listmethodAppend one patient-list filter to the visualization.
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

list​

list() -> list[dict[str, Any]]

Return all currently configured filter payloads.

Examples:

>>> trial_viz.filters.list()
[{'tag': 'DescriptorFilter', 'contents': [...]}]

replace​

replace(
filters: Sequence[dict[str, Any]], *, version: str | dict | None = None
) -> TrialVisualization

Replace the full filter list with raw filter payloads.

Use this when you already know the backend payload shape and want to set all filters in one call.

Examples:

>>> trial_viz.filters.replace([
... {
... 'tag': 'DescriptorFilter',
... 'contents': [
... {'descriptorId': 'Blood.Drug.tend', 'arm': 'identity', 'operator': 'Gte', 'value': 0.0}
... ],
... }
... ])

add_numeric​

add_numeric(
descriptor: DescriptorRef,
*,
operator: Literal["Eq", "Neq", "Lt", "Lte", "Gt", "Gte"],
value: float,
arm: str | None = None,
version: str | dict | None = None
) -> TrialVisualization

Append one numeric descriptor filter to the visualization.

Pass either a raw descriptor id string, a descriptor handle from trial.descriptors, or a dict with id / descriptorId and optional arm.

Examples:

>>> age = trial.descriptors.scalars.get('Blood.Drug.tend', arm='identity')
>>> trial_viz.filters.add_numeric(age, operator='Gte', value=0.0)

With a raw id:

>>> trial_viz.filters.add_numeric('Blood.Drug.tend', operator='Lte', value=10.0, arm='identity')

add_categorical​

add_categorical(
descriptor: DescriptorRef,
*,
levels: Sequence[str],
arm: str | None = None,
version: str | dict | None = None
) -> TrialVisualization

Append one categorical descriptor filter to the visualization.

Pass either a categorical descriptor handle, a raw descriptor id, or a dict with id / descriptorId and optional arm.

Examples:

>>> sex = trial.descriptors.categoricals.get('sex', arm='identity')
>>> trial_viz.filters.add_categorical(sex, levels=['female'])

add_patient_list​

add_patient_list(
patients: Sequence[str], *, version: str | dict | None = None
) -> TrialVisualization

Append one patient-list filter to the visualization.

Examples:

>>> trial_viz.filters.add_patient_list(['patient-001', 'patient-002'])

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

GroupsService​

Returned by: TrialVisualization.groups

MemberKindDescription
getmethodReturn the current grouping configuration.
replacemethodReplace the full grouping configuration.
clearmethodReset grouping to the default behavior: group by arm only.
set_group_by_armmethodEnable or disable grouping by arm.
add_scalar_distinct_groupingmethodAdd scalar grouping by distinct values.
add_scalar_bin_width_groupingmethodAdd scalar grouping by fixed bin width.
add_scalar_bin_count_groupingmethodAdd scalar grouping by number of bins.
add_scalar_quantile_groupingmethodAdd scalar grouping by quantiles.
add_scalar_explicit_groupingmethodAdd scalar grouping with explicit cut points.
add_categorical_groupingmethodAdd categorical grouping.

get​

get() -> list[dict[str, Any]]

Return the current grouping configuration.

Examples:

>>> trial_viz.groups.get()
[{'tag': 'Scalar', 'contents': {...}}]

Use this when you want to inspect the exact configured groupings or make a local copy before editing it and sending it back with replace.

replace​

replace(
groups: Sequence[dict[str, Any]], *, version: str | dict | None = None
) -> TrialVisualization

Replace the full grouping configuration.

This is the advanced editing path for groupings. The intended workflow is:

  1. read the current configuration with get
  2. edit that list locally
  3. write it back with replace

Examples:

>>> groups = trial_viz.groups.get()
>>> groups.pop(3) # remove the fourth grouping
>>> trial_viz.groups.replace(groups)

groups should be a list of grouping dictionaries in the same shape as returned by get.

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Reset grouping to the default behavior: group by arm only.

Examples:

>>> trial_viz.groups.clear()

set_group_by_arm​

set_group_by_arm(
enabled: bool, *, version: str | dict | None = None
) -> TrialVisualization

Enable or disable grouping by arm.

This controls the same concept as the web UI's "group by arm" toggle. Enabling it ensures one arm-grouping entry is present. Disabling it removes any existing arm-grouping entries while leaving the other configured groupings unchanged.

Examples:

>>> trial_viz.groups.set_group_by_arm(True)
>>> trial_viz.groups.set_group_by_arm(False)

add_scalar_distinct_grouping​

add_scalar_distinct_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
version: str | dict | None = None
) -> TrialVisualization

Add scalar grouping by distinct values.

Pass either a trial scalar descriptor handle or a raw descriptor id. reference_arm may be:

  • an arm id string
  • "crossArms"
  • "identity"
  • a protocol-arm handle

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.groups.add_scalar_distinct_grouping(auc, reference_arm='identity')

add_scalar_bin_width_grouping​

add_scalar_bin_width_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
offset: float,
width: float,
version: str | dict | None = None
) -> TrialVisualization

Add scalar grouping by fixed bin width.

offset is the lower bound of the first bin. width is the size of each bin and must be strictly positive.

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.groups.add_scalar_bin_width_grouping(
... auc,
... reference_arm='identity',
... offset=0.0,
... width=2.5,
... )

add_scalar_bin_count_grouping​

add_scalar_bin_count_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
count: int,
version: str | dict | None = None
) -> TrialVisualization

Add scalar grouping by number of bins.

count is the requested number of bins and must be strictly positive.

Examples:

>>> tend = trial.descriptors.scalars.get('Blood.Drug.tend', arm='identity')
>>> trial_viz.groups.add_scalar_bin_count_grouping(
... tend,
... reference_arm='identity',
... count=3,
... )

add_scalar_quantile_grouping​

add_scalar_quantile_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
count: int,
version: str | dict | None = None
) -> TrialVisualization

Add scalar grouping by quantiles.

count is the requested number of quantile groups and must be strictly positive.

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.groups.add_scalar_quantile_grouping(
... auc,
... reference_arm='identity',
... count=4,
... )

add_scalar_explicit_grouping​

add_scalar_explicit_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
breaks: Sequence[float],
version: str | dict | None = None
) -> TrialVisualization

Add scalar grouping with explicit cut points.

breaks defines the cut points between groups. Values must be strictly increasing.

Examples:

>>> tend = trial.descriptors.scalars.get('Blood.Drug.tend', arm='identity')
>>> trial_viz.groups.add_scalar_explicit_grouping(
... tend,
... reference_arm='identity',
... breaks=[0.0, 2.0, 5.0],
... )

add_categorical_grouping​

add_categorical_grouping(
descriptor: DescriptorRef,
*,
reference_arm: ReferenceArmRef = "crossArms",
version: str | dict | None = None
) -> TrialVisualization

Add categorical grouping.

Pass either a trial categorical descriptor handle or a raw descriptor id. reference_arm may be an arm id string, "crossArms", "identity", or a protocol-arm handle.

Examples:

>>> sex = trial.descriptors.categoricals.get('sex', arm='identity')
>>> trial_viz.groups.add_categorical_grouping(sex, reference_arm='identity')

TimeseriesService​

Returned by: TrialVisualization.timeseries

MemberKindDescription
set_selectorsmethodSet the time-series selector list, preserving existing section options.
add_selectorsmethodAppend selectors to the current time-series selection.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_selectors​

set_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Set the time-series selector list, preserving existing section options.

Pass raw ids, descriptor handles, or dicts with id / descriptorId.

Examples:

>>> trial_viz.timeseries.set_selectors(['Blood.Drug', 'Tumor.Drug'])

add_selectors​

add_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Append selectors to the current time-series selection.

Examples:

>>> trial_viz.timeseries.add_selectors(['Tumor.Drug'])

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

ScalarsService​

Returned by: TrialVisualization.scalars

MemberKindDescription
set_selectorsmethodSet the scalar selector list, preserving existing section options.
add_selectorsmethodAppend selectors to the current scalar selection.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_selectors​

set_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Set the scalar selector list, preserving existing section options.

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.scalars.set_selectors([auc])

add_selectors​

add_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Append selectors to the current scalar selection.

Examples:

>>> trial_viz.scalars.add_selectors(['Tumor.Drug.auc'])

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

ScatterPlotsService​

Returned by: TrialVisualization.scatter_plots

MemberKindDescription
set_configmethodReplace the scatter-plot configuration list and optional regression settings.
add_x_vs_x_plotmethodAppend one X-vs-X scatter plot configuration.
add_x_vs_y_plotmethodAppend one X-vs-Y scatter plot configuration.
set_regressionmethodSet scatter-plot regression options.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_config​

set_config(
scatter_plot_config: Sequence[dict[str, Any]],
*,
regression: dict[str, Any] | None = None,
version: str | dict | None = None
) -> TrialVisualization

Replace the scatter-plot configuration list and optional regression settings.

scatter_plot_config is currently a raw payload surface because the backend shape is fairly specific and we do not yet have a richer typed builder.

Examples:

>>> trial_viz.scatter_plots.set_config([
... {
... 'id': 'auc_vs_cmax',
... 'mode': 'XvsY',
... 'variables': {'x': 'Tumor.Drug.auc', 'y': 'Blood.Drug.max'},
... 'arms': ['identity'],
... 'groupedByArm': True,
... }
... ])
Note

The exact payload contract for every scatter mode is not fully documented beyond OpenAPI/examples and existing UI behavior.

add_x_vs_x_plot​

add_x_vs_x_plot(
variable: DescriptorRef,
*,
reference_arm: ReferenceArmRef,
compare_arms: Sequence[ReferenceArmRef],
grouped_by_arm: bool = True,
plot_id: str | None = None,
version: str | dict | None = None
) -> TrialVisualization

Append one X-vs-X scatter plot configuration.

This compares one variable in a reference arm against the same variable in one or more other arms.

Examples:

>>> trial_viz.scatter_plots.add_x_vs_x_plot(
... 'Blood.Drug.tend',
... reference_arm='identity',
... compare_arms=['treated'],
... )

add_x_vs_y_plot​

add_x_vs_y_plot(
x_variable: DescriptorRef,
y_variable: DescriptorRef,
*,
arms: Sequence[ReferenceArmRef],
grouped_by_arm: bool = True,
plot_id: str | None = None,
version: str | dict | None = None
) -> TrialVisualization

Append one X-vs-Y scatter plot configuration.

This compares one variable against another over one or more arms.

Examples:

>>> trial_viz.scatter_plots.add_x_vs_y_plot(
... 'Tumor.Drug.auc',
... 'Blood.Drug.max',
... arms=['identity'],
... )

set_regression​

set_regression(
*,
show_line_equation: bool,
regression_type: Literal["linear", "quadratic", "cubic"] | None = None,
line_equation_legend: dict[str, Any] | None = None,
version: str | dict | None = None
) -> TrialVisualization

Set scatter-plot regression options.

Examples:

>>> trial_viz.scatter_plots.set_regression(
... show_line_equation=True,
... regression_type='linear',
... )

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

SurvivalAnalysisService​

Returned by: TrialVisualization.survival_analysis

MemberKindDescription
set_selectorsmethodSet the survival-analysis selector list, preserving existing section options.
add_selectorsmethodAppend selectors to the current survival-analysis selection.
set_observation_window_from_start_until_endmethodUse the full simulated period as the survival observation window.
set_observation_window_from_start_until_timemethodRestrict survival analysis to a period ending at period_end.
set_confidence_intervalmethodShow or hide confidence intervals on survival plots.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_selectors​

set_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Set the survival-analysis selector list, preserving existing section options.

Examples:

>>> trial_viz.survival_analysis.set_selectors(['TimeToProgression'])
Note

The exact backend expectations for survival-analysis-compatible selectors are not fully documented in this repository. In practice these should be time-to-event-like outputs accepted by the web UI.

add_selectors​

add_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Append selectors to the current survival-analysis selection.

Examples:

>>> trial_viz.survival_analysis.add_selectors(['TimeToProgression'])

set_observation_window_from_start_until_end​

set_observation_window_from_start_until_end(
*, version: str | dict | None = None
) -> TrialVisualization

Use the full simulated period as the survival observation window.

Examples:

>>> trial_viz.survival_analysis.set_observation_window_from_start_until_end()

set_observation_window_from_start_until_time​

set_observation_window_from_start_until_time(
period_end: str, *, version: str | dict | None = None
) -> TrialVisualization

Restrict survival analysis to a period ending at period_end.

period_end should be a valid time measure accepted by the platform, such as an ISO 8601 duration string.

Examples:

>>> trial_viz.survival_analysis.set_observation_window_from_start_until_time('PT30D')
Note

The exact accepted time formats are only partially documented in this repository.

set_confidence_interval​

set_confidence_interval(
enabled: bool, *, version: str | dict | None = None
) -> TrialVisualization

Show or hide confidence intervals on survival plots.

Examples:

>>> trial_viz.survival_analysis.set_confidence_interval(True)

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

ContributionAnalysisService​

Returned by: TrialVisualization.contribution_analysis

MemberKindDescription
set_selectorsmethodSet the contribution-analysis selector list, preserving existing section options.
add_selectorsmethodAppend selectors to the current contribution-analysis selection.
set_quantilemethodSet the contribution-analysis quantile.
set_input_baseline_onlymethodUse only input baseline descriptors in contribution analysis.
set_all_baselinemethodUse all baseline descriptors in contribution analysis.
set_custom_baselinemethodUse an explicit list of baseline descriptor ids.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_selectors​

set_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Set the contribution-analysis selector list, preserving existing section options.

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.contribution_analysis.set_selectors([auc])

add_selectors​

add_selectors(
selectors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Append selectors to the current contribution-analysis selection.

Examples:

>>> trial_viz.contribution_analysis.add_selectors(['Tumor.Drug.auc'])

set_quantile​

set_quantile(
quantile: float, *, version: str | dict | None = None
) -> TrialVisualization

Set the contribution-analysis quantile.

quantile should be between 0 and 1.

Examples:

>>> trial_viz.contribution_analysis.set_quantile(0.5)

set_input_baseline_only​

set_input_baseline_only(
*, version: str | dict | None = None
) -> TrialVisualization

Use only input baseline descriptors in contribution analysis.

Examples:

>>> trial_viz.contribution_analysis.set_input_baseline_only()

set_all_baseline​

set_all_baseline(
*, version: str | dict | None = None
) -> TrialVisualization

Use all baseline descriptors in contribution analysis.

Examples:

>>> trial_viz.contribution_analysis.set_all_baseline()

set_custom_baseline​

set_custom_baseline(
descriptors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Use an explicit list of baseline descriptor ids.

Examples:

>>> trial_viz.contribution_analysis.set_custom_baseline(['WT'])
Note

The exact expected descriptor family for custom baseline selection is not fully documented in this repository.

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

DataOverlayService​

Returned by: TrialVisualization.data_overlay

MemberKindDescription
set_tablesmethodReplace the full data-overlay table list.
set_ranges_enabledmethodShow or hide observed ranges in the data overlay.
add_tablemethodAppend one data table to the current data-overlay configuration.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set_tables​

set_tables(
tables: Sequence[DataOverlayTableInput],
*,
ranges: bool = True,
version: str | dict | None = None
) -> TrialVisualization

Replace the full data-overlay table list.

Each entry may be a DataTable handle or a raw stored-reference dict with coreItemId and snapshotId.

Examples:

>>> table = client.get_data_table('dt-...')
>>> trial_viz.data_overlay.set_tables([table], ranges=True)

set_ranges_enabled​

set_ranges_enabled(
enabled: bool, *, version: str | dict | None = None
) -> TrialVisualization

Show or hide observed ranges in the data overlay.

Examples:

>>> trial_viz.data_overlay.set_ranges_enabled(True)

add_table​

add_table(
table: DataOverlayTableInput,
*,
include: bool = True,
label: str | None = None,
time_tolerance: float | None = None,
weight: float | None = None,
log_transform_wide_bounds: Sequence[str] | None = None,
version: str | dict | None = None
) -> TrialVisualization

Append one data table to the current data-overlay configuration.

label, when provided, must use only letters, digits, dash -, underscore _, or colon :.

Examples:

>>> table = client.get_data_table('dt-...')
>>> trial_viz.data_overlay.add_table(table, label='ObservedData', include=True)

With a raw stored reference:

>>> trial_viz.data_overlay.add_table(
... {'coreItemId': '...', 'snapshotId': '...'},
... label='ObservedData',
... )
Note

The exact semantics of timeTolerance, weight, and logTransformWideBounds are only partially documented in this repository. The shapes are taken from OpenAPI and the existing raw skill script.

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()

OverlayService​

Returned by: TrialVisualization.patients_overlay

MemberKindDescription
setmethodReplace the individual-patients overlay configuration.
add_patientsmethodAppend patients to the current patient overlay.
add_descriptorsmethodAppend descriptors to the current patient overlay.
replacemethodReplace this section with the provided raw payload. The intended workflow is:
getmethodReturn the current stored payload for this visualization section.
clearmethodClear this visualization section from the trial visualization.

set​

set(
*,
patients: Sequence[str],
descriptors: Sequence[DescriptorRef],
version: str | dict | None = None
) -> TrialVisualization

Replace the individual-patients overlay configuration.

descriptors accepts raw ids, descriptor handles, or dicts with an id key and optional arms list.

Examples:

>>> auc = trial.descriptors.scalars.get('Tumor.Drug.auc', arm='identity')
>>> trial_viz.patients_overlay.set(
... patients=['patient-001'],
... descriptors=[auc],
... )

With explicit arms:

>>> trial_viz.patients_overlay.set(
... patients=['patient-001'],
... descriptors=[{'id': 'Tumor.Drug.auc', 'arms': ['identity']}],
... )
Note

The backend-expected descriptor type for patient overlays is not completely clear from contracts alone. Existing examples suggest descriptor ids plus optional arms are accepted.

add_patients​

add_patients(
patients: Sequence[str], *, version: str | dict | None = None
) -> TrialVisualization

Append patients to the current patient overlay.

Examples:

>>> trial_viz.patients_overlay.add_patients(['patient-002'])

add_descriptors​

add_descriptors(
descriptors: Sequence[DescriptorRef], *, version: str | dict | None = None
) -> TrialVisualization

Append descriptors to the current patient overlay.

Examples:

>>> trial_viz.patients_overlay.add_descriptors(['Tumor.Drug.auc'])

replace​

replace(
payload: dict[str, Any], *, version: str | dict | None = None
) -> TrialVisualization

Replace this section with the provided raw payload. The intended workflow is:

  1. read the current configuration with get
  2. edit it locally
  3. write it back with replace

Examples:

>>> timeseries=trial_viz.timeseries.get()
>>> timeseries["selectors"].pop(2) # edit timeseries
>>> trial_viz.timeseries.replace(timeseries)

get​

get() -> dict[str, Any] | list[dict[str, Any]] | None

Return the current stored payload for this visualization section.

Examples:

>>> trial_viz.timeseries.get()
{'selectors': ['Blood.Drug'], 'layout': {}, ...}

clear​

clear(*, version: str | dict | None = None) -> TrialVisualization

Clear this visualization section from the trial visualization.

Examples:

>>> trial_viz.scatter_plots.clear()