---
title: "2026-08-28 clinical ve2e ISUP cohort query"
description: "Changed the ISUP CLI to derive its cohort from the vxData non-training split instead of positional patient arguments."
image: "https://docs.virdx.dev/img/virdx-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.virdx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-08-28 clinical ve2e ISUP cohort query

## Work Done

- Removed positional patient identifiers from `scripts/predict_isup.py`.
- Added a direct vxData SDK query for patient identifiers where `default_split != "train"`, then passed the resulting list to the existing `predict_isup` API.
- Verified the production query returns 2,457 identifiers without logging them.
- Validated CLI argument rejection, private output mode, compilation, Ruff, formatting, and the changed call path with calldiff.
- Committed and pushed `a8306351` on `feat/isup-inference`.

## Lessons Learned: Pitfalls

- vxData SDK 3 `TypedNamespace.query()` accepts no positional filter. The working form is `query().filter(expression)`, not `query(expression)`.

## Lessons Learned: Improvements

- Keep cohort selection at the CLI boundary so the reusable `predict_isup(model_id, patients)` API remains useful for explicit programmatic cohorts.
- Validate concise SDK examples against the deployed SDK before committing, even when their intended semantics are clear.

Source: https://docs.virdx.dev/knowledge/inbox/2026-08-28-clinical-ve2e-isup-cohort-query/index.mdx
