Skip to main content

Clinical Zero-Shot Labeler

A tool for adapting ACES (Automated Cohort and Event Selection) task schemas to zero-shot labeling of clinical sequences.

Overview

The Clinical Zero-Shot Labeler extends ACES task schemas, originally designed for cohort extraction and binary classification tasks, to work with generative models. This allows you to:

  1. Use existing ACES task definitions for generative tasks
  2. Control sequence generation using ACES predicates and windows
  3. Extract labels from generated sequences using ACES criteria

By leveraging the ACES schema, you can define complex clinical tasks like:

  • ICU mortality prediction
  • Lab value forecasting
  • Readmission risk assessment
  • etc.

All without needing to modify code or retrain models, and maintaining compatibility with existing ACES configurations.

Installation

pip install clinical-zeroshot-labeler

Quick Start

  1. Define your task in YAML:
predicates:
  hospital_discharge:
    code: {regex: HOSPITAL_DISCHARGE//.*}
  lab:
    code: {regex: LAB//.*}
  abnormal_lab:
    code: {regex: LAB//.*}
    value_min: 2.0
    value_min_inclusive: true

trigger: hospital_discharge

windows:
  input:
    start:
    end: trigger
    start_inclusive: true
    end_inclusive: true
    index_timestamp: end
  target:
    start: input.end
    end: start + 4d
    start_inclusive: false
    end_inclusive: true
    has:
      lab: (1, None)
    label: abnormal_lab
  1. Set up your metadata mapping:
import polars as pl

# Load a metadata mapping of medical codes to vocabulary indices your generative model generates
metadata_df = pl.DataFrame(
    {
        "code": [
            "PAD",
            "HOSPITAL_DISCHARGE//MEDICAL",
            "LAB//NORMAL",
            "LAB//HIGH",
        ]
    }
).with_row_index("code/vocab_index")
  1. Process sequences and get labels:
from clinical_zeroshot_labeler import SequenceLabeler

# Initialize labeler
labeler = SequenceLabeler.from_yaml_str(task_config_yaml, metadata_df, batch_size=2)

# Process tokens one at a time
while not labeler.is_finished():
    # Get next tokens from your model
    tokens, times, values = model.generate_next_token(prompts)

    # Update labeler state
    status = labeler.process_step(tokens, times, values)
    print(
        f"Status: {status}"
    )  # Shows 0=Undetermined, 1=Active, 2=Satisfied, 3=Impossible

    # Update your model's prompts as needed
    prompts = tokens

# Get final labels
labels = labeler.get_labels()

See the notebooks/tutorial.ipynb to run the SequenceLabeler on a mocked Generator.

API Reference

SequenceLabeler

Main class for processing sequences and extracting labels:

# Create from YAML string
labeler = SequenceLabeler.from_yaml_str(yaml_str, metadata_df, batch_size)

# Create from YAML file
labeler = SequenceLabeler.from_yaml_file(yaml_path, metadata_df, batch_size)

# Process tokens (returns status tensor)
status = labeler.process_step(tokens, times, values)

# Check if finished
is_done = labeler.is_finished()

# Get labels
labels = labeler.get_labels()

The labeler tracks window states for each sequence:

  • 0: Undetermined - Initial state
  • 1: Active - Currently processing
  • 2: Satisfied - Success/completion
  • 3: Impossible - Failed/invalid

Metadata

Release files for clinical-zeroshot-labeler 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clinical-zeroshot-labeler 0.0.3
File Size Uploaded
clinical_zeroshot_labeler-0.0.3.tar.gz 37.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for clinical-zeroshot-labeler 0.0.3
File Interpreter ABI Platform
clinical_zeroshot_labeler-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 57.7 kB

Release files / clinical_zeroshot_labeler-0.0.3.tar.gz

Download URL clinical_zeroshot_labeler-0.0.3.tar.gz
Size 37.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3528b8aea4570ab310f1830075768151e6f791c21698c9ae7edd4ffe172cc416
BLAKE2b-256 checksum
How to use checksums
2f0f33edb2705d879a9bc0273e5b78b1a5e2d767d5d9799bf4b6957eea4949b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2024.

Transparency log

Release files / clinical_zeroshot_labeler-0.0.3-py3-none-any.whl

Download URL clinical_zeroshot_labeler-0.0.3-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0f1ecf30d39d5252a6ebf38673b09bec75d27ab03d70dd7634f68b6e3fcfdb7
BLAKE2b-256 checksum
How to use checksums
9b213cd3523662b41585846bbd1916cee1d1959687d583628ce0fc1478f88e28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page