{"id":26848955,"url":"https://github.com/aignostics/python-sdk","last_synced_at":"2026-03-10T21:03:03.704Z","repository":{"id":294855556,"uuid":"952180169","full_name":"aignostics/python-sdk","owner":"aignostics","description":"🔬 Python SDK providing access to the Aignostics Platform. Includes Aignostics Launchpad (Desktop Application), Aignostics CLI (Command-Line Interface), example notebooks, and Aignostics Client Library.","archived":false,"fork":false,"pushed_at":"2025-06-06T09:05:27.000Z","size":15951,"stargazers_count":6,"open_issues_count":12,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-06T10:20:14.447Z","etag":null,"topics":["aignostics","atlas","dicom","digital-pathology","image-data-commons","machine-learning","marimo","medical-imaging","nicegui","oe-python-template","openslide","pydantic","pydicom","qupath","typer","uv","whole-slide-imaging"],"latest_commit_sha":null,"homepage":"https://aignostics.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aignostics.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-20T21:30:18.000Z","updated_at":"2025-06-06T09:05:29.000Z","dependencies_parsed_at":"2025-06-06T10:19:43.894Z","dependency_job_id":"a2c4e6d3-7297-423f-b992-1a970760bdd7","html_url":"https://github.com/aignostics/python-sdk","commit_stats":null,"previous_names":["aignostics/python-sdk"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/aignostics/python-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aignostics%2Fpython-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aignostics%2Fpython-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aignostics%2Fpython-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aignostics%2Fpython-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aignostics","download_url":"https://codeload.github.com/aignostics/python-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aignostics%2Fpython-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259843315,"owners_count":22920309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aignostics","atlas","dicom","digital-pathology","image-data-commons","machine-learning","marimo","medical-imaging","nicegui","oe-python-template","openslide","pydantic","pydicom","qupath","typer","uv","whole-slide-imaging"],"created_at":"2025-03-30T21:23:49.419Z","updated_at":"2026-03-10T21:03:03.685Z","avatar_url":"https://github.com/aignostics.png","language":"Python","readme":"\n[//]: # (README.md generated from docs/partials/README_*.md)\n\n# 🔬Aignostics Python SDK\n\n[![License](https://img.shields.io/github/license/aignostics/python-sdk?logo=opensourceinitiative\u0026logoColor=3DA639\u0026labelColor=414042\u0026color=A41831)](https://github.com/aignostics/python-sdk/blob/main/LICENSE)\n[![Python Version](https://img.shields.io/pypi/pyversions/aignostics.svg?logo=python\u0026color=204361\u0026labelColor=1E2933)](https://pypi.org/project/aignostics/)\n[![CI/CD](https://github.com/aignostics/python-sdk/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/aignostics/python-sdk/actions/workflows/ci-cd.yml)\n[![Docs](https://img.shields.io/readthedocs/aignostics)](https://aignostics.readthedocs.io/en/latest/)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=aignostics_python-sdk\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=aignostics_python-sdk)\n[![Security](https://sonarcloud.io/api/project_badges/measure?project=aignostics_python-sdk\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=aignostics_python-sdk)\n[![Maintainability](https://sonarcloud.io/api/project_badges/measure?project=aignostics_python-sdk\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=aignostics_python-sdk)\n[![Coverage](https://codecov.io/gh/aignostics/python-sdk/graph/badge.svg?token=SX34YRP30E)](https://codecov.io/gh/aignostics/python-sdk)\n[![Uptime](https://uptime.betterstack.com/status-badges/v2/monitor/1wbqa.svg)](https://aignostics.betteruptime.com)\n\n\u003e [!NOTE]\n\u003e The Aignostics Python SDK is in alpha, with [Atlas H\u0026E-TME](https://www.aignostics.com/products/he-tme-profiling-product) and the [Aignostics Platform](https://platform.aignostics.com) in [early access](https://www.linkedin.com/posts/aignostics_introducing-atlas-he-tme-aignostics-is-activity-7325865745827979265-Sya9?utm_source=share\u0026utm_medium=member_desktop\u0026rcm=ACoAABRmV7cBCGv8eM_ot_kRTrBsb12olQvoLS4). \n\u003e Watch or star this repository to receive updates on new features and improvements of the SDK.\n\n---\n\n\n## Introduction\n\nThe **Aignostics Python SDK** provides multiple ways to interact with the **Aignostics Platform** for running advanced computational pathology applications like [Atlas H\u0026E-TME](https://www.aignostics.com/products/he-tme-profiling-product), which analyzes tumor microenvironments in H\u0026E-stained tissue samples.\n\n### We take quality and security seriously\n\nWe know you take **quality** and **security** as seriously as we do. That's why\nthe Aignostics Python SDK is built following best practices and with full\ntransparency. This includes (1) making the complete\n[source code of the SDK\navailable on GitHub](https://github.com/aignostics/python-sdk/), maintaining a\n(2)\n[A-grade code quality](https://sonarcloud.io/summary/new_code?id=aignostics_python-sdk)\nwith [high test coverage](https://app.codecov.io/gh/aignostics/python-sdk) in\nall releases, (3) achieving\n[A-grade security](https://sonarcloud.io/summary/new_code?id=aignostics_python-sdk)\nwith\n[active scanning of dependencies](https://github.com/aignostics/python-sdk/issues/4),\nand (4) providing\n[extensive documentation](https://aignostics.readthedocs.io/en/latest/). Read\nmore about how we achieve\n[operational excellence](https://aignostics.readthedocs.io/en/latest/operational_excellence.html) and\n[security](https://aignostics.readthedocs.io/en/latest/security.html).\n\n## Installation\n\nThe **Aignostics Python SDK** can be installed via the [uv package manager](https://docs.astral.sh/uv/). The installation process sets up the SDK along with the necessary dependencies, including the **uv** package manager itself if not already present.\n\nBefore proceeding, ensure you have an **Aignostics Platform account**. You can get access either through your organization admin (if your organization has an Aignostics account) or directly from Aignostics. Check your email for an invitation before proceeding.\n\n### Requirements\n\n- **Python 3.11, 3.12, 3.13, or 3.14**\n- **macOS 11.0+, Linux, or Windows**\n- **Homebrew** (only if you previously installed `uv` via Homebrew)\n\n### Installation Steps\n\nThe installation will:\n\n1. Install or update **uv** (Python package installer)\n2. Install the **Aignostics Python SDK** (includes Launchpad, CLI, and Python Library)\n\nCopy and paste the appropriate command below into your terminal (macOS/Linux) or PowerShell (Windows):\n\n**Linux/macOS:**\n\n```bash\nif ! command -v uv \u0026\u003e /dev/null; then\n    echo \"uv not found, installing...\"\n    curl -LsSf https://astral.sh/uv/install.sh | sh\n    source $HOME/.local/bin/env\nelse\n    UV_VERSION=$(uv --version | cut -d' ' -f2)\n    if [ \"$(printf '%s\\n' \"0.6.17\" \"$UV_VERSION\" | sort -V | head -n1)\" != \"0.6.17\" ]; then\n        echo \"Updating uv to the latest version...\"\n        UV_PATH=$(which uv)\n        if [[ \"$UV_PATH\" == *\"brew\"* ]]; then\n            echo \"Updating uv using Homebrew...\"\n            brew upgrade uv\n        else\n            echo \"Updating uv using the installer...\"\n            uv self update\n        fi\n    else\n        echo \"uv is up to date\"\n    fi\nfi\n```\n\n**Windows (PowerShell):**\n\n```powershell\nwinget install --id=Microsoft.VCRedist.2015+.x64 -e\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n```\n\nVerify your installation by running:\n\n```bash\nuvx aignostics --help\n```\n\nYou should see the Aignostics CLI help output.\n\nYou can then proceed by choosing your preferred user interface below.\n\n## Platform Workflow Overview\n\nThe Aignostics Platform delivers enterprise-grade computational pathology through a secure, scalable cloud architecture. Organizations subscribe to the platform, and their users interact through three interfaces - all part of the Python SDK - to leverage advanced AI/ML models running on dedicated NVIDIA® GPU infrastructure.\n\n**Key architectural components:**\n\n- **Python SDK**: Provides three user interfaces (Launchpad desktop app, CLI, and Client Library) with unified functionality\n- **Enterprise authentication**: Powered by Auth0, supporting Single Sign-On (SSO) and existing identity management systems\n- **Organization storage**: Dedicated Google Cloud Storage bucket per organization with automatic 30-day cleanup\n- **Aignostics Platform API**: Orchestrates application discovery, run submission, status monitoring, and results delivery\n- **NVIDIA® GPU clusters**: Dedicated compute provisioned per application run for maximum security and compliance\n\n```mermaid\n%%{init: {'theme':'dark', 'themeVariables': { 'fontSize':'18px', 'fontFamily':'arial', 'darkMode':'true', 'background':'#1e1e1e', 'primaryColor':'#4a4a4a', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#ffffff', 'lineColor':'#ffffff', 'secondaryColor':'#3a3a3a', 'tertiaryColor':'#2a2a2a', 'actorBkg':'#4a4a4a', 'actorBorder':'#ffffff', 'actorTextColor':'#ffffff', 'actorLineColor':'#ffffff', 'signalColor':'#ffffff', 'signalTextColor':'#ffffff', 'labelBoxBkgColor':'#3a3a3a', 'labelBoxBorderColor':'#ffffff', 'labelTextColor':'#ffffff', 'noteBkgColor':'#4a4a4a', 'noteTextColor':'#ffffff', 'noteBorderColor':'#ffffff', 'sequenceNumberColor':'#000000'}}}%%\nsequenceDiagram\n    autonumber\n    actor User as User\u003cbr/\u003e(Organization Member)\n    participant SDK as Python SDK\u003cbr/\u003e(Launchpad/CLI/Client Library)\n    participant Auth0 as Auth0\u003cbr/\u003e(Enterprise Identity)\n    participant Bucket as Organization Bucket\u003cbr/\u003e(Google Cloud Storage)\n    participant API as Aignostics Platform API\n    participant GPU as NVIDIA® GPU Cluster\u003cbr/\u003e(per-run isolation)\n\n    Note over User,GPU: Authentication \u0026 Authorization\n    User-\u003e\u003eSDK: Launch interface\n    SDK-\u003e\u003eAuth0: Authenticate user\n    Auth0--\u003e\u003eSDK: Access token\n    SDK-\u003e\u003eAPI: Validate token\n    API--\u003e\u003eSDK: User authorized\n\n    Note over User,GPU: Application Selection\n    User-\u003e\u003eSDK: Browse applications\n    SDK-\u003e\u003eAPI: List applications \u0026 versions\n    API--\u003e\u003eSDK: Application catalog\n    SDK--\u003e\u003eUser: Display options\n\n    Note over User,GPU: Data Upload\n    User-\u003e\u003eSDK: Select WSIs + metadata\n    SDK-\u003e\u003eBucket: Upload files\n    Note over Bucket: 30-day auto-cleanup\n    Bucket--\u003e\u003eSDK: Upload complete\n    SDK-\u003e\u003eSDK: Generate signed download URLs\n\n    Note over User,GPU: Run Submission\n    SDK-\u003e\u003eAPI: Submit run (app, metadata, signed URLs)\n    API--\u003e\u003eSDK: Run ID + queue position\n    SDK--\u003e\u003eUser: Confirm submission\n\n    Note over User,GPU: GPU Processing\n    API-\u003e\u003eGPU: Provision dedicated NVIDIA® cluster\n    GPU-\u003e\u003eBucket: Download WSIs via signed URLs\n    GPU-\u003e\u003eGPU: Process slides incrementally\n    GPU-\u003e\u003eAPI: Upload results per slide\n    Note over GPU: Deprovision after completion\n\n    Note over User,GPU: Status Monitoring \u0026 Results\n    User-\u003e\u003eSDK: Check status\n    SDK-\u003e\u003eAPI: Poll run status\n    API--\u003e\u003eSDK: Progress (e.g., \"3 of 10 complete\")\n    SDK--\u003e\u003eUser: Display progress\n\n    User-\u003e\u003eSDK: Download results\n    SDK-\u003e\u003eAPI: Request result URLs\n    API--\u003e\u003eSDK: Signed download URLs\n    SDK-\u003e\u003eAPI: Download files (GeoJSON, CSV, TIFF)\n    SDK--\u003e\u003eUser: Results ready for inspection\n```\n\n**How it works:**\n\nOrganizations subscribe to the Aignostics Platform and receive dedicated infrastructure including a Google Cloud Storage bucket and API access. Users within the organization authenticate through Auth0, which integrates with enterprise identity management systems for seamless Single Sign-On (SSO).\n\nThe Python SDK - available as a desktop application (Launchpad), command-line interface (CLI), or programmable library (Client Library) - handles all complexity of authentication, data upload, run orchestration, and results delivery. Users simply select an application, provide whole slide images with metadata, and submit.\n\nBehind the scenes, the Aignostics Platform API provisions dedicated NVIDIA® GPU clusters for each application run, ensuring data isolation and compliance with healthcare regulations. Processing occurs incrementally (slide-by-slide), allowing users to monitor progress and download results as they become available rather than waiting for entire cohorts.\n\nThe organization's Google Cloud Storage bucket stores uploaded files with automatic 30-day cleanup, optimizing costs while maintaining data availability throughout processing. All data transfers use time-limited signed URLs, eliminating credential management complexity and security risks.\n\n**Enterprise benefits:**\n\n- **Security \u0026 compliance**: Per-run GPU isolation, enterprise SSO integration, zero-trust architecture with signed URLs\n- **Scalability**: Handles single exploratory slides through thousand-slide clinical studies with identical user experience\n- **Cost efficiency**: Pay-per-use GPU provisioning, automatic storage cleanup, no idle infrastructure costs\n- **Operational simplicity**: Python SDK abstracts all cloud complexity; IT teams manage access through existing identity systems\n\n## Choose your interface\n\nChoose your preferred interface for working with the Aignostics Platform. Each interface is designed for different user roles and use cases:\n\n### 🖥️ Launchpad (Desktop Application)\n\n| | |\n|---|---|\n| **What it is** | Graphical application for analyzing slides and viewing results in QuPath or Python notebooks |\n| **Best for** | Pathologists and researchers who want to analyze slides without writing code |\n| **Use when** | Running analyses on individual cases or small cohorts (1-20 slides) and exploring results interactively |\n| **Get started** | \u003ca href=\"#launchpad-run-your-first-computational-pathology-analysis-in-10-minutes-from-your-desktop\"\u003eInstall and run your first analysis\u003c/a\u003e |\n\n### ⌨️ CLI (Command-Line Interface)\n\n| | |\n|---|---|\n| **What it is** | Terminal tool for scripting and automation |\n| **Best for** | Bioinformaticians and technical researchers who work with terminal-based workflows |\n| **Use when** | Processing large cohorts (10s-100s of slides), automating repetitive analyses, or integrating with computational pipelines |\n| **Get started** | \u003ca href=\"#cli-manage-datasets-and-application-runs-from-your-terminal\"\u003eManage datasets and application runs from your terminal\u003c/a\u003e |\n\n### 📚 Python Library\n\n| | |\n|---|---|\n| **What it is** | Python library for programmatic access in scripts, notebooks, and applications |\n| **Best for** | Data scientists and developers who want to integrate the platform into Python-based workflows |\n| **Use when** | Building custom analysis pipeline in Python for repeated usage and processing large datasets (10s-1000s of slides) |\n| **Get started** | \u003ca href=\"#example-notebooks-interact-with-the-aignostics-platform-from-your-python-notebook-environment\"\u003eRun example notebooks\u003c/a\u003e or \u003ca href=\"#python-library-call-the-aignostics-platform-api-from-your-python-scripts\"\u003ecall the Aignostics Platform API from your Python scripts\u003c/a\u003e |\n\n### 🤖 MCP Server (AI Agent Integration)\n\n| | |\n|---|---|\n| **What it is** | Model Context Protocol server that exposes SDK functionality to AI agents like Claude |\n| **Best for** | Users who want AI assistants to help with platform operations |\n| **Use when** | Working with Claude Desktop or other MCP-compatible AI tools to manage datasets, submit runs, or query results |\n| **Get started** | \u003ca href=\"#mcp-server-integrate-with-ai-agents\"\u003eConfigure Claude Desktop for MCP integration\u003c/a\u003e |\n\n\u003e 💡 Launchpad and CLI handle authentication automatically. Python Library requires manual setup (see [authentication section](#example-notebooks-interact-with-the-aignostics-platform-from-your-python-notebook-environment)).\n\n## Launchpad: Run your first computational pathology analysis in 10 minutes from your desktop\n\nThe **Aignostics Launchpad** is a graphical desktop application that allows you to run applications on whole slide images (WSIs) from your computer, and inspect results with QuPath and Python Notebooks with one click. It is designed to be user-friendly and intuitive, for use by Research Pathologists and Data Scientists.\n\n**New to Launchpad?** See \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e section above to get started.\n\n### Running Your First Analysis\n\nThis tutorial uses [Atlas H\u0026E-TME](https://www.aignostics.com/products/he-tme-profiling-product) with a public lung cancer dataset from the NCI Image Data Commons.\n\n**Step 1: Start Aignostics Launchpad**\n\n1. Open a terminal or command prompt\n2. Run the command: `uvx aignostics launchpad`\nThis starts the Launchpad application.\n\n**Step 2: Download a Sample Dataset**\n\n1. Click the menu icon (☰) in the top right corner\n2. Click \"Download Datasets\". The system displays the dataset download interface.\n3. Click \"EXAMPLE DATASET\". The system populates the dataset ID field with a TCGA lung adenocarcinoma sample.\n4. Click \"DATA\". The system shows a folder selection dialog.\n5. Click \"OK\"\n6. Click \"DOWNLOAD\". The system downloads the DICOM dataset. A progress indicator shows download status.\n7. Click the menu icon and select \"Run Applications\"\n\n**Step 3: Select Atlas H\u0026E-TME**\n\n1. Click \"Atlas H\u0026E-TME\" in the left sidebar. The system displays the application workflow with six steps.\n2. Click the version dropdown to view available versions. The system shows all available versions with release notes accessible via the \"RELEASE NOTES\" button.\n3. Keep the default version (latest)\n4. Click \"NEXT\"\n\n**Step 4: Select Slides and Provide Metadata**\n\n1. Click \"DATA\". The system opens a folder selection dialog showing the Launchpad datasets directory.\n2. Navigate to the downloaded dataset folder (e.g., `/datasets/idc/tcga_luad/`)\n3. Click \"OK\". The system displays the selected folder path and scans the folder, showing a table with all compatible slides. Each row shows thumbnail preview, technical metadata (file size, MPP resolution, dimensions), and status indicators.\n4. The system automatically extracts technical file metadata. You must provide the required medical metadata by double-clicking the red cells in the \"Tissue\" column. The system displays a dropdown menu with tissue types.\n5. Select the tissue type (e.g., \"LUNG\") and disease (e.g., \"LUNG_CANCER\") by double-clicking in the red cells and selecting the value from the dropdown. The system marks these cells green indicating valid metadata.\n6. Review the \"Staining\" column. The system shows \"H\u0026E\" if this information was extracted from the DICOM file.\n7. Click \"NEXT\"\n\n**Step 5: Add Notes and Tags (Optional)**\n\n1. The system displays the notes and tags screen.\n2. Enter an optional note in the text field (e.g., \"TCGA lung sample analysis\")\n3. Add optional tags by typing and pressing Enter (e.g., \"TCGA\", \"lung\")\n4. Click \"NEXT\"\n\n**Step 6: Set Schedule (Optional)**\n\n1. The system displays scheduling options with soft due date and hard deadline pickers.\n2. Click \"NEXT\" to leave the default settings.\n\nThe soft due date indicates when the platform will attempt to complete processing. The hard deadline is when the platform may cancel the run if resources are unavailable.\n\n**Step 7: Submit Your Run**\n\n1. The system displays the submission screen showing number of slides to be analyzed, full file paths, and upload and submit button.\n2. Review the slide information\n3. Click \"UPLOAD AND SUBMIT\". The system uploads your slides to the Aignostics Platform and submits the analysis run. A progress indicator shows upload status.\n\nThe left sidebar now shows your submitted run with application name and version, submission timestamp, running status icon (🏃), and any tags you added.\n\n**Step 8: Monitor Your Run**\n\nAtlas H\u0026E-TME processing time depends on slide size and system load. Depending on the file size and the number of files, processing can take minutes to many hours.\n\nClick on your run in the sidebar to view run details and metadata, slide thumbnails, and processing status for each slide. The status icon updates as processing progresses.\n\n### Understanding Your Results\n\nWhen processing completes, Atlas H\u0026E-TME provides comprehensive tumor microenvironment analysis results for each processed slide:\n\n**What You'll Receive:**\n\n- **Tissue analysis**: Identification of tissue regions (tumor, stroma, necrosis, etc.) with quality assessment in GeoJSON format\n- **Cell analysis**: Individual cells detected and classified by type (tumor cells, immune cells, stromal cells, etc.) in GeoJSON format\n- **Visual segmentation maps**: Color-coded images showing spatial distribution of tissue and cell types\n- **Quantitative measurements**: Cell counts, densities, spatial relationships, and statistical summaries provided in CSV format\n\n**Downloading Results:**\n\nWhen processing completes, the status icon changes to show completion. To download results:\n\n1. Click the \"Download Results\" button\n2. The system downloads a ZIP file containing all outputs to your computer\n\n**Inspecting Results in QuPath:**\n\nQuPath integration provides the most powerful way to visualize and interact with your results:\n\n1. Click \"Open in QuPath\" (requires QuPath extension - see Advanced Setup below)\n2. The system automatically creates a QuPath project with your slides and annotations loaded\n3. In QuPath, you can:\n   - View tissue and cell annotations overlaid on your slides\n   - Explore cell classifications and measurements\n   - Analyze spatial relationships between different cell types\n   - Export annotations or perform additional analysis\n\n**Congratulations!** You have successfully downloaded a public dataset, submitted an Atlas H\u0026E-TME analysis run, and learned how to access and inspect your results.\n\n### System Health Checks\n\nThe Launchpad automatically monitors system health before allowing run submissions. If the system is unhealthy (e.g., network connectivity issues, authentication problems, or platform unavailability), the submission workflow is blocked:\n\n- A tooltip displays \"System is unhealthy, you cannot prepare a run at this time.\"\n- The \"Next\" button in the application workflow is disabled.\n- The health status is shown in the footer bar at the bottom of the Launchpad.\n\nTo resolve health issues:\n\n1. Check the health status indicator in the footer bar\n2. Click \"Info and Settings\" in the menu to see detailed health information\n3. Verify your network connection and authentication status\n4. Check the [Aignostics Platform Status](https://status.aignostics.com) page\n\n### Advanced Setup: Extensions\n\n\u003e 💡 The Launchpad features a growing ecosystem of extensions that seamlessly integrate with standard digital pathology tools. To use the Launchpad with all available extensions, run `uvx --from \"aignostics[qupath,marimo]\" aignostics launchpad`. Currently available extensions are:\n\u003e\n\u003e 1. **QuPath extension**: View your application results in [QuPath](https://qupath.github.io/) with a single click. The Launchpad creates QuPath projects on-the-fly.\n\u003e 2. **Marimo extension**: Analyze your application results using [Marimo](https://marimo.io/) notebooks embedded in the Launchpad. You don't have to leave the Launchpad to do real data science.\n\n## CLI: Manage datasets and application runs from your terminal\n\nThe Python SDK includes the **Aignostics CLI**, a Command-Line Interface (CLI) that allows you to\ninteract with the Aignostics Platform directly from your terminal or shell script.\n\n**New to CLI?** See \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e section above to get started.\n\n**Common workflows:**\n\n- Download public datasets from NCI Image Data Commons\n- Submit batch processing runs for multiple slides\n- Monitor run status and download results incrementally\n- Automate repetitive tasks with shell scripts\n\nSee as follows for a simple example where we download a sample dataset for the [Atlas\nH\u0026E-TME application](https://www.aignostics.com/products/he-tme-profiling-product), submit an application run, and download the results.\n\n### Example: Running Atlas H\u0026E-TME with CLI\n\n1. Open a terminal or command prompt\n2. Use the following commands to run the Atlas H\u0026E-TME application on a sample dataset:\n\n```shell\n# Download a sample dataset from the NCI Image Data Commons (IDC) portal to your current working directory\n# As the dataset id refers to the TCGA LUAD collection, this creates a directory tcga_luad with the DICOM files\nuvx aignostics dataset idc download 1.3.6.1.4.1.5962.99.1.1069745200.1645485340.1637452317744.2.0 data/\n# Prepare the metadata for the application run by creating a metadata.csv, extracting \n# the required metadata from the DICOM files. We furthermore add the required\n# information about the tissue type and disease.\nuvx aignostics application run prepare he-tme data/tcga_luad/run.csv data/\n# Edit the metadata.csv to insert the required information about the staining method, tissue type and disease\n# Adapt to your favourite editor\nnano tcga_luad/metadata.csv \n# Upload the metadata.csv and referenced whole slide images to the Aignostics Platform\nuvx aignostics application run upload he-tme data/tcga_luad/run.csv\n# Submit the application run and print the run id\nuvx aignostics application run submit he-tme data/tcga_luad/run.csv\n# Check the status of the application run you submitted\nuvx aignostics application run list\n# Incrementally download results when they become available\n# Fill in the id from the output in the previous step\nuvx aignostics application run result download APPLICATION_RUN_ID \n```\n\nFor convenience the `application run execute` command combines preparation, upload, submission and download.\nThe below is equivalent to the above, while adding additionally required metadata using a mapping:\n\n```shell\nuvx aignostics dataset idc download 1.3.6.1.4.1.5962.99.1.1069745200.1645485340.1637452317744.2.0 data/\nuvx aignostics application run execute he-tme data/tcga_luad/run.csv data/ --mapping \".*\\.dcm:staining_method=H\u0026E,tissue=LUNG,disease=LUNG_CANCER\"\n```\n\nThe CLI provides extensive help:\n\n```shell\nuvx aignostics --help                           # list all spaces such as application, dataset, bucket and system, \nuvx aignostics application --help               # list subcommands in the application space\nuvx aignostics application run --help           # list subcommands in the application run sub-space\nuvx aignostics application run list --help      # show help for specific command\nuvx aignostics application run execute --help   # show help for another command\n```\n\nCheck out our\n[CLI reference documentation](https://aignostics.readthedocs.io/en/latest/cli_reference.html)\nto learn about all commands and options available.\n\n### System Health Checks\n\nThe CLI automatically checks system health before uploading slides or submitting runs. If the system is unhealthy, the operation is blocked and an error message is displayed:\n\n```\nError: Platform is not healthy: \u003creason\u003e. Aborting.\n```\n\nTo override this behavior (not recommended for production use), add the `--force` flag:\n\n```shell\nuvx aignostics application run upload he-tme metadata.csv --force\nuvx aignostics application run submit he-tme metadata.csv --force\nuvx aignostics application run execute he-tme metadata.csv data/ --force\n```\n\nTo manually check system health before running commands:\n\n```shell\nuvx aignostics system health\n```\n\n## Python Library: Call the Aignostics Platform API from your Python scripts\n\nThe Python SDK includes the *Aignostics Python Library* for integration with your Python codebase.\n\n**New to Python Library?** See \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e section above to get started.\n\n\u003c!-- - **Authentication setup** - ADD INSTRUCTIONS. --\u003e\n\n### Installation\n\nAdd the Aignostics Python SDK to your Python project:\n\n**Install with [uv](https://docs.astral.sh/uv/):**\n\n```shell\nuv add aignostics\n```\n\n**Install with [pip](https://pip.pypa.io/en/stable/):**\n\n```shell\n# Add Python SDK as dependency to your project\npip install aignostics\n```\n\n#### Usage\n\nThe following snippet shows how to use the Client to submit an application\nrun:\n\n```python\nfrom aignostics import platform\n\n# initialize the client\nclient = platform.Client()\n# submit an application run\napplication_run = client.runs.submit(\n   application_id=\"test-app\",\n   items=[\n      platform.InputItem(\n         external_id=\"slide-1\",\n         input_artifacts=[\n            platform.InputArtifact(\n               name=\"whole_slide_image\",\n               download_url=\"\u003ca signed url to download the data\u003e\",\n               metadata={\n                  \"checksum_base64_crc32c\": \"AAAAAA==\",\n                  \"resolution_mpp\": 0.25,\n                  \"width_px\": 1000,\n                  \"height_px\": 1000,\n               },\n            )\n         ],\n      ),\n   ],\n)\n# wait for the results and download incrementally as they become available\napplication_run.download_to_folder(\"path/to/download/folder\")\n```\n\nPlease look at the notebooks in the `example` folder for a more detailed example\nand read the\n[client reference documentation](https://aignostics.readthedocs.io/en/latest/lib_reference.html)\nto learn about all classes and methods.\n\n### System Health Checks\n\nThe low-level Python SDK does **not** perform automated health checks before operations. If health verification is required for your use case, you should implement checks in your application logic:\n\n```python\nfrom aignostics import platform\nfrom aignostics.system import Service as SystemService\n\n# Check system health before submitting runs\nhealth = SystemService().health()\nif not health:\n    raise RuntimeError(f\"System is unhealthy: {health.reason}\")\n\n# Proceed with run submission\nclient = platform.Client()\nrun = client.runs.submit(...)\n```\n\nThis design gives you full control over health check behavior, allowing you to:\n\n- Implement custom retry logic for transient failures\n- Log health status for monitoring and debugging\n- Gracefully handle unhealthy states in your application\n\n### Example Notebooks: Interact with the Aignostics Platform from your Python Notebook environment\n\n\u003e [!IMPORTANT]\n\u003e Before you get started, you need to set up your authentication credentials if\n\u003e you did not yet do so! Please visit\n\u003e [your personal dashboard on the Aignostics Platform website](https://platform.aignostics.com/getting-started/quick-start)\n\u003e and follow the steps outlined in the `Use in Python Notebooks` section.\n\nThe Python SDK includes ready-to-use Marimo notebooks that demonstrate platform interaction patterns. These notebooks are ideal for:\n\n- Learning the API through interactive examples\n- Prototyping custom analysis workflows\n- Integrating with existing data science pipelines\n\nThe example notebooks use our \"Test Application\" (free for all users). To run them,\nplease follow the steps outlined in the snippet below to clone this repository and start the\n[Marimo](https://marimo.io/)\n([examples/notebook.py](https://github.com/aignostics/python-sdk/blob/main/examples/notebook.py))\nnotebook:\n\n```shell\n# clone the `python-sdk` repository\ngit clone https://github.com/aignostics/python-sdk.git\n# within the cloned repository, install the SDK and all dependencies\nuv sync --all-extras\n# show marimo example notebook in the browser\nuv run marimo edit examples/notebook.py\n```\n\n\u003e 💡 You can also run a notebook within the Aignostics Launchpad. To do so, select the\n\u003e Run you want to inspect in the left sidebar, and click the button \"Open in Python Notebook\".\n\n### Defining the input for an application run\n\nThe following sections provide technical details for advanced use cases. These examples use the \"Test Application\" - a free application available to all users for testing and development purposes.\n\nWhen creating an application run, you need to specify the `application_id` and optionally the\n`application_version` (version number) of the application you want to run. If you omit the version,\nthe latest version will be used automatically. Additionally, you need to define the input items you\nwant to process in the run. The input items are defined as follows:\n\n```python\nplatform.InputItem(\n    external_id=\"1\",\n    input_artifacts=[\n        platform.InputArtifact(\n            name=\"whole_slide_image\", # defined by the application version's input artifact schema\n            download_url=\"\u003ca signed url to download the data\u003e\",\n            metadata={ # defined by the application version's input artifact schema\n                \"checksum_base64_crc32c\": \"N+LWCg==\",\n                \"resolution_mpp\": 0.46499982,\n                \"width_px\": 3728,\n                \"height_px\": 3640,\n            },\n        )\n    ],\n),\n```\n\nFor each item you want to process, you need to provide a unique `reference`\nstring. This is used to identify the item in the results later on. The\n`input_artifacts` field is a list of `InputArtifact` objects, which defines what\ndata \u0026 metadata you need to provide for each item. The required artifacts depend\non the application version you want to run - in the case of test application,\nthere is only one artifact required, which is the image to process on. The\nartifact name is defined as `whole_slide_image` for this application.\n\nThe `download_url` is a signed URL that allows the Aignostics Platform to\ndownload the image data later during processing.\n\n### Self-signed URLs for large files\n\nTo make the whole slide images you want to process available to the Aignostics Platform, you\nneed to provide a signed URL that allows the platform to download the data.\nSelf-signed URLs for files in google storage buckets can be generated using the\n`generate_signed_url`\n([code](https://github.com/aignostics/python-sdk/blob/407e74f7ae89289b70efd86cbda59ec7414050d5/src/aignostics/client/utils.py#L85)).\n\n**We expect that you provide the\n[required credentials](https://cloud.google.com/docs/authentication/application-default-credentials)\nfor the Google Storage Bucket**\n\n## MCP Server: Integrate with AI Agents\n\nThe Python SDK includes an MCP (Model Context Protocol) server that exposes SDK functionality to AI agents like Claude. This enables AI assistants to help you interact with the Aignostics Platform through natural conversation.\n\n### Quick Start with Claude Desktop\n\nAdd the following to your Claude Desktop configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"aignostics\": {\n      \"command\": \"uvx\",\n      \"args\": [\"aignostics\", \"mcp\", \"run\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop after adding this configuration.\n\n### CLI Commands\n\n```bash\n# Using uvx (no installation required)\nuvx aignostics mcp run\nuvx aignostics mcp list-tools\n```\n\n### Using Plugins\n\nThe MCP server supports plugins that extend its functionality with additional tools. To run the MCP server with a plugin installed:\n\n```bash\n# With a local plugin\nuv run --with /path/to/plugin aignostics mcp run\n\n# With a plugin from a git repository\nuvx --with git+ssh://git@github.com/org/plugin aignostics mcp run\n```\n\nPlugins register themselves via Python entry points and their tools are automatically discovered and namespaced by the MCP server.\n\n### What AI Agents Can Do\n\nOnce configured, AI agents can help you with platform operations through natural language, with access to tools from the SDK and any installed plugins.\n\n## Next Steps\n\nNow that you have an overview of the Aignostics Python SDK and its interfaces, here are some recommended next steps to deepen your understanding and get the most out of the platform:\n\n- **Understand the platform**: Read the [Aignostics Platform Overview](platform_overview.md) to learn about architecture and core concepts\n- **Review detailed documentation**: See the [CLI reference](https://aignostics.readthedocs.io/en/latest/cli_reference.html) and [Python Library reference](https://aignostics.readthedocs.io/en/latest/lib_reference.html)\n- **Explore QuPath integration**: Use the QuPath extension to visualize and interact with your results\n- **Get support**: Contact [support@aignostics.com](mailto:support@aignostics.com) or check the [full documentation](https://aignostics.readthedocs.io/en/latest/)\n\n\n## Platform\n\n### Overview\n\nThe **Aignostics Platform** is a comprehensive cloud-based service that allows organizations to leverage advanced computational pathology applications without the need for specialized expertise or complex infrastructure. Via its API it provides a standardized, secure interface for accessing Aignostics' portfolio of advanced computational pathology applications. These applications perform machine learning based tissue and cell analysis on histopathology slides, delivering quantitative measurements, visual representations, and detailed statistical data.\n\n![Overview](https://raw.githubusercontent.com/aignostics/python-sdk/main/platform.png)\n\n### Key Features\nAignostics Platform offers key features designed to maximize value for its users:\n\n1. **Run Aignostics applications:** Run Aignostics advanced computational pathology applications like [Atlas H\u0026E-TME](https://www.aignostics.com/products/he-tme-profiling-product) on your whole slide images (WSIs) and receive results in a easy to inspect formats.\n2. **Multiple Access Points:** Interact with the platform via various pathways, from **Aignostics Launchpad** (desktop application for MacOS, Windows and Linux), **Aignostics CLI** (command-line interface for your terminal or shell scripts), **Example Notebooks** (we support Jupyter and Marimo), **Aignostics Client Library** (for integration with your Python codebase), or directly through the **API of the Aignostics Platform** (for integration with any programming language). Contact your business partner at Aignostics if you are interested to discuss a direct integration with your Imaging Management Systems (IMS) and Laboratory Information Management Systems (LIMS).\n3. **Secure Data Handling:** Maintain control of your slide data through secure self-signed URLs. Results are automatically deleted after 30 days, and can be deleted earlier by the user.\n4. **High-throughput processing with incremental results delivery:** Submit up to 500 whole slide images (WSI) in one batch request. Access results for individual slides as they completed processing, without having to wait for the entire batch to finish.\n5. **Standard formats:** Support for commonly used image formats in digital pathology such as pyramidal DICOM, TIFF, and SVS. Results provided in standard formats like QuPath GeoJSON (polygons), TIFF (heatmaps) and CSV (measurements and statistics).\n\n### Registration and User Access\n\nTo start using the Aignostics Platform and its advanced applications, your organization must be registered by our business support team:\n\n1. Access to the Aignostics Platform requires a formal business agreement. Once an agreement is in place between your organization and Aignostics, we proceed with your organization's registration. If your organization does not yet have an account, please contact your account manager or email us at [support@aignostics.com](mailto:support@aignostics.com) to express your interest.\n2. To register your organization, we require the name and email address of at least one employee, who will be assigned the Administrator role for your organisation. Your organisation's Administrator can invite and manage additional users. \n\n\u003e [!Important]\n\u003e 1. All user accounts must be associated with your organization's official domain. We do not support the registration of private or personal email addresses.\n\u003e 2. For security, Two-Factor Authentication (2FA) is mandatory for all user accounts.\n\u003e 3. We can integrate with your IDP system (e.g. SAML, OIDC) for user authentication. Please contact us to discuss the integration.\n\u003e 4. Registering your organistation typically takes 2 business days depending on the complexity of the signed business agreement and specific requirements.\n\n### Console\n\nThe web-based [*Aignostics Console*](https://platform.aignostics.com) is a user-friendly interface that allows you to \nmanage your organization, applications, quotas, and users registered with the Aignostics Platform.\n\n1. The Console is available to users registered for your organisation to manage their profile and monitor usage of their quota.\n2. Administrators of your organization can invite additional users, manage the organisation and user specific quotas and monitor usage.\n3. Both roles can trigger application runs.\n\n### Applications\nAn application is a fully automated advanced machine learning based workflow composed of one or more specific tasks (e.g. Tissue Quality Control, Tissue Segmentation, Cell Detection, Cell Classification and predictive analysis). Each application is designed for a particular analysis purpose (e.g. Tumor Micro Environment analysis or biomarker scoring). For each application we define input requirements, processing tasks and output formats.\n\nAs contracted in your business agreement with Aignostics your organisation subscribes to one or more applications. The applications are available for your organization in the Aignostics Platform. You can find the list of available applications in the Console of the Aignostics Platform.\n\nEach application can have multiple versions. Please make sure you read dedicated application documentation to understand its specific constraints regarding acceptable formats, staining method, tissue types and diseases.\n\nOnce registered to the Platform, your organization will automatically gain access to the \"Test Application\". This application can be used to configure the workflow and to make sure that the integration works correctly.\n\n\n### Application run\n\nTo trigger the application run, users can use the Aignostics Launchpad, Aignostics CLI, Example Notebooks, our Client Library, or directly call the REST API. The platform expects the user payload, containing the metadata and the signed URLs to the whole slide images (WSIs). The detailed requirements of the payload depend on the application and are described in the documentation, and accessible via the Info button in the Launchpad, as well as via the CLI and `/v1/applications` endpoint in the API.\n\nWhen the application run is created, it can be in one of the following states:\n\n1. **received**: the application run received from the client\n2. **scheduled**: the application run request is valid and is scheduled for execution\n3. **running**: the application run execution started\n4. **completed**: the application run execution is done and all outputs are available for download\n5. **completed**: the application run execution is done, but some items end up in the failed state\n6. **rejected**: the application run request is rejected before it is scheduled\n7. **cancelled by the system**: the application run failed during the execution with the number of errors higher than the threshold\n9. **cancelled by the user**: the application run is cancelled by the user before it is finished\n\nThe status and operations of an application run are private to the user who triggered the run.\n\n### Results\nWhen the processing of whole slide image is successfully completed, the resulting outputs become available for download. To assess specifics of application outputs please consult our application specific documentation, which you can find in the **Console**. Please note that you access to documentation is restricted to those applications your organisation subscribed to.\n\nApplication run outputs are automatically deleted 30 days after the application run has completed. However, the owner of the application run (the user who initiated it) can use the API to manually delete outputs earlier, once the run has reached a final state - completed, cancelled by the system or cancelled by the user. The Launchpad and CLI provide enable to delete results with one click resp. command.\n\n### Quotas\nEvery organization has a limit on how many WSIs it can process in a calendar month. The following quotas exist:\n\n1. **Per organization**: as defined in your business agreement with Aignostics\n2. **Per user**: defined by your organization Admin\n\nWhen the per month quota is reached, an application run request is denied.\n\nOther limitations may apply to your organization:\n\n1. Allowed number of users an organization can register\n2. Allowed number of images user can submit per application run\n3. Allowed number of parallel application runs for the whole organization\n\nAdditionally, we allow organization Admin to define following limitations for its users:\n\n1. Maximum number of images the user can process per calendar month.\n2. Maximum number of parallel application runs for a given user\n\nVisit the [Console](https://platform.aignostics.com) to check your current quota and usage. The Console provides a clear overview of the number of images processed by your organization and by each user, as well as the remaining quota for the current month.\n\n### API\n\nThe **Aignostics Platform API** is a RESTful web service that allows you to interact with the platform programmatically. It provides endpoints for submitting whole slide images (WSIs) for analysis, checking the status of application runs, and retrieving results.\n\nYou can interact with the API using the Python client, which is a wrapper around the RESTful API. The Python client simplifies the process of making requests to the API and handling responses. It also provides convenient methods for uploading WSIs, checking application run status, and downloading results.\n\nFor integration with programming languages other than Python, you can use the RESTful API directly. The API is designed to be language-agnostic, meaning you can use any programming language that supports HTTP requests to interact with it. This includes languages like Java, Kotlin, C#, Ruby, and Typescript. \n\n### Cost\n\nEvery WSI processed by the Platform generates a cost. Usage of the \"Test Application\" is free of charge for any registered user. The cost for other applications is defined in your business agreement with Aignostics. The cost is calculated based on the number of slides processed. When an application run is cancelled, either by the system or by the user, only processed images incur a cost.\n\n**[Read the API reference documentation](https://aignostics.readthedocs.io/en/latest/api_reference_v1.html)** or use our **[Interactive API Explorer](https://platform.aignostics.com/explore-api)** to dive into details of all operations and parameters.\n\n\n## Further Reading\n\n1. Inspect our\n   [security policy](https://aignostics.readthedocs.io/en/latest/security.html)\n   with detailed documentation of checks, tools and principles.\n1. Inspect how we achieve\n   [operational excellence](https://aignostics.readthedocs.io/en/latest/operational_excellence.html)\n   with information on our modern toolchain and software architecture.\n2. Check out the\n   [CLI reference](https://aignostics.readthedocs.io/en/latest/cli_reference.html)\n   with detailed documentation of all CLI commands and options.\n3. Check out the\n   [library reference](https://aignostics.readthedocs.io/en/latest/lib_reference.html)\n   with detailed documentation of public classes and functions.\n4. Check out the\n   [API reference](https://aignostics.readthedocs.io/en/latest/api_reference_v1.html)\n   with detailed documentation of all API operations and parameters. See as well\n   the OpenAPI Specification in [JSON](https://github.com/aignostics/python-sdk/blob/main/docs/source/_static/openapi_v1.json) and [YAML](https://github.com/aignostics/python-sdk/blob/main/docs/source/_static/openapi_v1.yaml), and the [API Explorer](https://aignostics.readthedocs.io/en/latest/api_explorer_v1.html).\n5. Our\n   [release notes](https://aignostics.readthedocs.io/en/latest/release-notes.html)\n   provide a complete log of recent improvements and changes.\n6. We gratefully acknowledge the numerous\n   [open source projects](https://aignostics.readthedocs.io/en/latest/attributions.html)\n   that this project builds upon. Thank you to all these wonderful contributors!\n\n\n## Glossary\n\n### A\n\n**Administrator Role**  \nA user role within an organization that has permissions to invite and manage additional users, define user-specific quotas, and monitor organizational usage.\n\n**Aignostics CLI**  \nCommand-Line Interface that allows interaction with the Aignostics Platform directly from terminal or shell scripts, enabling dataset management and application runs.\n\n**Aignostics Client Library**  \nPython library for seamless integration of the Aignostics Platform with enterprise image management systems and scientific workflows.\n\n**Aignostics Console**  \nWeb-based user interface for managing organizations, applications, quotas, users, and monitoring platform usage.\n\n**Aignostics Launchpad**  \nGraphical desktop application (available for Mac OS X, Windows, and Linux) that allows users to run computational pathology applications on whole slide images and inspect results with QuPath and Python Notebooks.\n\n**Aignostics Platform**  \nComprehensive cloud-based service providing standardized, secure interface for accessing advanced computational pathology applications without requiring specialized expertise or complex infrastructure.\n\n**Aignostics Platform API**  \nRESTful web service that allows programmatic interaction with the Aignostics Platform, providing endpoints for submitting WSIs, checking application run status, and retrieving results.\n\n**Aignostics Python SDK**  \nSoftware Development Kit providing multiple pathways to interact with the Aignostics Platform, including the Launchpad, CLI, Client Library, and example notebooks.\n\n**Application**  \nFully automated advanced machine learning workflow composed of specific tasks (e.g., Tissue Quality Control, Tissue Segmentation, Cell Detection, Cell Classification) designed for particular analysis purposes.\n\n**Application Run**  \nThe execution instance of an application on submitted whole slide images, which can be in various states: received, scheduled, running, completed, rejected, cancelled by system, or cancelled by user.\n\n**Application Version**  \nSpecific version of an application with defined input requirements, processing tasks, and output formats. Each application can have multiple versions.\n\n**Atlas H\u0026E-TME**  \nAdvanced computational pathology application for Hematoxylin and Eosin-stained Tumor Microenvironment analysis.\n\n### B\n\n**Base MPP (Microns Per Pixel)**  \nMetadata parameter specifying the resolution of whole slide images, indicating the physical distance represented by each pixel.\n\n**Business Agreement**  \nFormal contract between an organization and Aignostics required for platform access, defining quotas, applications, and terms of service.\n\n### C\n\n**Checksum CRC32C**  \nCyclic Redundancy Check used to verify data integrity of uploaded whole slide images.\n\n**Client**  \nThe main class in the Aignostics Python SDK used to initialize connections and interact with the platform API.\n\n**Computational Pathology**  \nField combining digital pathology with artificial intelligence and machine learning to analyze histopathology slides quantitatively.\n\n**Aignostics Console**  \nWeb-based user interface for managing organizations, applications, quotas, users, and monitoring platform usage.\n\n### D\n\n**DICOM (Digital Imaging and Communications in Medicine)**  \nStandard format for medical imaging data, supported by the Aignostics Platform for whole slide images.\n\n**Download URL**  \nSigned URL that allows the Aignostics Platform to securely download image data during processing.\n\n### G\n\n**GeoJSON**  \nStandard format used by QuPath for representing polygonal annotations and results.\n\n**Google Storage Bucket**  \nCloud storage service where users can store whole slide images and generate signed URLs for platform access.\n\n### H\n\n**H\u0026E (Hematoxylin and Eosin)**  \nCommon histological staining method for tissue visualization, used in Atlas H\u0026E-TME application.\n\n**Heatmaps**  \nVisual representations of analysis results provided in TIFF format showing spatial distribution of measurements.\n\n### I\n\n**IDC (NCI Image Data Commons)**  \nPublic repository of medical imaging data that can be queried and downloaded through the Aignostics CLI.\n\n**IMS (Imaging Management Systems)**  \nEnterprise systems for managing medical imaging data that can be integrated with the Aignostics Platform.\n\n**Input Artifact**  \nData object required for application processing, including the actual data file and associated metadata.\n\n**Input Item**  \nIndividual unit of processing in an application run, containing one or more input artifacts with a unique reference identifier.\n\n**Interactive API Explorer**  \nTool for exploring and testing API endpoints and parameters interactively.\n\n### J\n\n**Jupyter**  \nPopular notebook environment supported by the Aignostics Platform for interactive analysis and visualization.\n\n### L\n\n**LIMS (Laboratory Information Management Systems)**  \nLaboratory systems that can be integrated with the Aignostics Platform for workflow automation.\n\n### M\n\n**Marimo**\nModern notebook environment supported by the Aignostics Platform as an alternative to Jupyter.\n\n**MCP (Model Context Protocol)**\nProtocol that enables AI agents like Claude to interact with external tools and services. The Aignostics SDK includes an MCP server that exposes platform functionality to AI assistants.\n\n**Metadata**  \nDescriptive information about whole slide images including dimensions, resolution, tissue type, and disease information required for processing.\n\n**MPP (Microns Per Pixel)**  \nSee Base MPP.\n\n### N\n\n**NCI Image Data Commons (IDC)**  \nSee IDC.\n\n### O\n\n**Operational Excellence**  \nAignostics' commitment to high-quality software development practices including A-grade code quality, security scanning, and comprehensive documentation.\n\n### P\n\n**Pyramidal**  \nMulti-resolution image format that stores the same image at different zoom levels for efficient viewing and processing.\n\n**Python SDK**  \nSoftware Development Kit providing multiple pathways to interact with the Aignostics Platform through Python programming language.\n\n### Q\n\n**QuPath**  \nOpen-source software for bioimage analysis that can be launched directly from the Aignostics Launchpad to view results.\n\n**Quota**  \nLimit on the number of whole slide images an organization or user can process per calendar month, as defined in business agreements.\n\n### R\n\n**Reference**  \nUnique identifier string for each input item in an application run, used to match results with original inputs.\n\n**Results**  \nOutput data from application processing, including measurements, statistics, heatmaps, and annotations, automatically deleted after 30 days.\n\n**RESTful API**  \nArchitectural style for web services that the Aignostics Platform API follows, enabling language-agnostic integration.\n\n### S\n\n**Self-signed URLs**  \nSecure URLs with embedded authentication that allow the platform to access user data without exposing credentials.\n\n**SVS**\nAperio ScanScope Virtual Slide format, commonly used for whole slide images and supported by the platform.\n\n**System Health Check**\nAutomated verification that the SDK and Aignostics Platform are operational before critical operations. The Launchpad blocks run submission when unhealthy (no override available for regular users). The CLI blocks uploads and submissions by default but allows override with `--force`. The Python Library does not perform automatic health checks, giving developers full control over health verification logic.\n\n### T\n\n**Test Application**  \nFree application automatically available to all registered organizations for workflow configuration and integration testing.\n\n**TIFF (Tagged Image File Format)**  \nStandard image format supported for both input whole slide images and output heatmaps.\n\n**Tissue Segmentation**  \nComputational process of identifying and delineating different tissue regions within histopathology slides.\n\n**TME (Tumor Microenvironment)**  \nThe cellular environment surrounding tumor cells, analyzed by the Atlas H\u0026E-TME application.\n\n**Two-Factor Authentication (2FA)**  \nMandatory security requirement for all user accounts on the Aignostics Platform.\n\n### U\n\n**UV**  \nModern Python package manager used for dependency management and project setup in the SDK documentation.\n\n**UVX**  \nTool for running Python applications directly without explicit installation, used to execute Aignostics CLI commands.\n\n### W\n\n**Whole Slide Image (WSI)**  \nHigh-resolution digital image of an entire histopathology slide, the primary input format for computational pathology applications.\n\n**Workflow**  \nSequence of automated processing steps within an application that transform input images into analytical results.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faignostics%2Fpython-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faignostics%2Fpython-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faignostics%2Fpython-sdk/lists"}