---
title: "2026-09-18 NanoVirDx vxData adapter extraction"
description: "Extracted ordered histology scan and domain-representation path resolution into an injected-client adapter."
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-09-18 NanoVirDx vxData adapter extraction

## Work Done

- Completed `nanovirdx.data.vxdata_adapter` for HistoScan and HistoDomainRep resources.
- Kept vxData `Client` injection explicit so scalar Sample APIs can control client construction.
- Preserved requested resource order and duplicate IDs, passed local paths through, downloaded only S3 URLs, and included the nuclei segmentation map.
- Defined each domain representation as one typed record containing five scalar paths.
- Verified the adapter with Ruff and focused mock checks for mixed local/S3 data, duplicate order, nuclei maps, and empty inputs.

## Lessons Learned: Pitfalls

- The prior batch API used a struct-of-lists shape. Retaining that shape in the adapter would have leaked the old batch model into the new scalar Sample API.
- vxData storage preserves input shape, but local paths must not be sent through the S3 download API.

## Lessons Learned: Improvements

- Document NanoVirDx's scalar Sample adapter contract near its data model once the refactor lands: adapters accept injected clients and return one scalar path record per requested resource.

Source: https://docs.virdx.dev/knowledge/inbox/2026-09-18-histo-nanovirdx-vxdata-adapter-extraction/index.mdx
