Skip to main content

WellMapper

A flexible, configurable well plate layout designer and exporter for napari. Design plate layouts with dynamic field configuration and export to local or cloud storage (AWS S3, Azure Blob, Google Cloud Storage).

License Python Version napari hub

Features

  • Flexible Configuration: Define experiment and well metadata fields via YAML config
  • Visual Plate Design: Interactive grid for selecting and annotating wells
  • Color-Coded Wells: Automatic color assignment based on well metadata for easy visualization
  • Multiple Storage Backends: Export to local filesystem, AWS S3, Azure Blob Storage, or Google Cloud Storage
  • Dynamic Field Types: Support for text, integer, date fields with autocompletion
  • Incomplete Well Detection: Visual warnings for partially filled wells
  • Configuration GUI: Built-in editors for plate parameters and storage settings

Installation

Basic Installation

pip install WellMapper

With Cloud Storage Support

For AWS S3:

pip install WellMapper[s3]

For Azure Blob Storage:

pip install WellMapper[azure]

For Google Cloud Storage:

pip install WellMapper[gcs]

For all storage backends:

pip install WellMapper[all]

Quick Start

  1. Launch napari and open the plugin:

    • Plugins → WellMapper → Well Plate Layout
  2. Configure your plate (optional):

    • Plugins → WellMapper → Set Plate Layout Parameters
    • Add/remove experiment and well information fields
  3. Set up storage (optional):

    • Plugins → WellMapper → Set Storage Solution
    • Configure local or cloud storage backend
  4. Design your layout:

    • Fill in experiment information (barcode, date, etc.)
    • Select wells and apply metadata
    • Export to CSV

Usage

Basic Workflow

  1. Enter Experiment Information

    • Barcode (required)
    • Number of rows and columns
    • Date and any custom fields
    • Click "Confirm Experiment Info"
  2. Annotate Wells

    • Fill in well metadata fields (donor, condition, concentration, etc.)
    • Select one or multiple wells in the plate grid
    • Click "Apply to Selected"
    • Wells are automatically color-coded based on their metadata
  3. Export Layout

    • Click "Export CSV"
    • File is saved to configured storage backend
    • Default location: ./data/{barcode}/layout.csv

Configuration

Plate Parameters (plate_config.yaml)

Define custom fields for your experiments:

experiment_information:
  barcode:
    label: Barcode
    type: text
    required: true
  date:
    label: Date
    type: date
    default: today
    required: true
  interval:
    label: Interval (min)
    type: int
    default: 10
    min: 1
    max: 1440

well_information:
  donor:
    label: Donor ID
    type: text
  condition:
    label: Treatment
    type: text
    completer:
      - Control
      - Drug A
      - Drug B
  concentration:
    label: Concentration (µM)
    type: text
    completer:
      - "0"
      - "0.1"
      - "1"
      - "10"

Field Types:

  • text: Free text input with optional autocomplete
  • int: Integer input with min/max constraints
  • date: Date picker

Mandatory Fields:

  • rows, cols, barcode, date in experiment_information

Storage Configuration

Configure storage via GUI (Plugins → Set Storage Solution) or manually create .env:

Local Storage (default):

STORAGE_TYPE=local
STORAGE_PATH=./data

AWS S3:

STORAGE_TYPE=s3
S3_BUCKET=my-bucket
S3_PREFIX=plate-layouts
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=your-key
AWS_SECRET_ACCESS_KEY=your-secret

Azure Blob Storage:

STORAGE_TYPE=azure
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_CONTAINER=data
AZURE_PREFIX=plate-layouts

Google Cloud Storage:

STORAGE_TYPE=gcs
GCS_BUCKET=my-bucket
GCS_PREFIX=plate-layouts
GCS_PROJECT=my-project
GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json

CSV Output Format

The exported CSV includes all configured fields:

barcode,date,interval,well,donor,condition,concentration
ABC123,2024-01-15,10,A1,D001,Control,0
ABC123,2024-01-15,10,A2,D001,Drug A,0.1
ABC123,2024-01-15,10,A3,D001,Drug A,1
ABC123,2024-01-15,10,B1,D002,Control,0
...

Advanced Features

Color Coding

Wells are automatically assigned distinct colors based on their complete metadata profile. This helps visually identify:

  • White: Empty wells
  • Colored: Wells with complete metadata (same metadata = same color)
  • Yellow "!" marker: Incomplete wells (partial metadata)

Multi-Well Selection

  • Click individual wells or drag to select multiple wells
  • Apply the same metadata to all selected wells at once
  • Efficient for replicates and structured plate designs

Configuration Editor

Use the built-in GUI to:

  • Add/remove experiment and well fields
  • Set field types and constraints
  • Define autocomplete options
  • Configure default values

Storage Backend Testing

The storage configuration widget includes a "Test Connection" button to verify:

  • Credentials are valid
  • Bucket/container exists and is accessible
  • Write permissions are correct

File Structure

WellMapper/
├── WellMapper/
│   ├── __init__.py
│   ├── _layout_widget.py       # Main plate layout widget
│   ├── _parameter_widget.py    # Configuration editor
│   ├── _storage_widget.py      # Storage setup widget
│   ├── storage_backends.py     # Storage implementations
│   ├── plate_config.yaml       # Default plate configuration
│   └── .env                    # Storage configuration (user-created)
├── napari.yaml                 # Plugin manifest
├── pyproject.toml             # Package configuration
└── README.md

Examples

Example 1: Drug Screening Plate

experiment_information:
  barcode:
    label: Plate Barcode
    type: text
    required: true
  assay_date:
    label: Assay Date
    type: date
    default: today
    required: true
  cell_line:
    label: Cell Line
    type: text
  passage:
    label: Passage Number
    type: int
    min: 1
    max: 100

well_information:
  compound:
    label: Compound
    type: text
    completer:
      - DMSO (Control)
      - Compound A
      - Compound B
      - Compound C
  concentration:
    label: Concentration (µM)
    type: text
    completer:
      - "0"
      - "0.01"
      - "0.1"
      - "1"
      - "10"
      - "100"
  replicate:
    label: Replicate
    type: text
    completer:
      - "1"
      - "2"
      - "3"

Troubleshooting

Storage Configuration Not Found

Error: "Could not initialize storage backend"

Solution: Create .env file in napari by Plugins -> WellMapper -> Set Storage Solution

Cloud Storage Dependencies Missing

Error: "boto3 required for S3 storage"

Solution: Install with storage extras:

pip install WellMapper[s3]

Wells Not Updating Colors

Issue: Wells stay white after applying metadata

Solution: Ensure all fields are filled. Partial data triggers incomplete well warning (yellow "!").

CSV Export Path Issues

Issue: Can't find exported files

Solution: Check storage configuration. Default is ./data/{barcode}/layout.csv relative to where napari was launched.

License

This project is licensed under the Apache License 2.0 License - see the LICENSE file for details.

Citation

If you use this plugin in your research, please cite:

@software{WellMapper,
  author = {van der Steen, Krijn H.},
  affiliation = {Lab of Cellular Disease Models, Regenerative Medicine Center Utrecht, UMC Utrecht, The Netherlands},
  title = {WellMapper: Well Plate Layout Designer for napari},
  year = {2026},
  url = {https://github.com/Living-Technologies/WellMapper}
}

Acknowledgments

Metadata

Release files for WellMapper 0.2.0

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

Source distribution (sdist)

Source distribution for WellMapper 0.2.0
File Size Uploaded Provenance Actions
wellmapper-0.2.0.tar.gz 27.5 kB Without provenance Details for wellmapper-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for WellMapper 0.2.0
File Interpreter ABI Platform Actions
wellmapper-0.2.0-py3-none-any.whl Python 3 none any Details for wellmapper-0.2.0-py3-none-any.whl

Total release size: 54.4 kB

Release files / wellmapper-0.2.0.tar.gz

Download URL wellmapper-0.2.0.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
92f3ce4f6468a2a6a2e8bef6c5cd11c0114207040f13b3cb4403044fc12fd99b
BLAKE2b-256 checksum
How to use checksums
05d4d1f2933eea95c1277d307d03e4c350e28069e30721c4e6fddaff66493838
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release files / wellmapper-0.2.0-py3-none-any.whl

Download URL wellmapper-0.2.0-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
821eec284607a52b82a9b2075e019c0067ec3e4c1cc8ec326e317e3b29133a66
BLAKE2b-256 checksum
How to use checksums
d2a2c0142b1bdae95b38c342a89e436813c29ab096986f282ddbc9910273bf51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Security for WellMapper 0.2.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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