WellShuffled 🎲
Quickstart
-
Create a simple
samples.txtfile:echo -e "SampleA\nSampleB\nSampleC\nSampleD" > samples.txt
-
Run
wellshuffledusinguvxto instantly generate a plate map:uvx wellshuffled shuffle samples.txt my_first_plate.csv
-
View your new plate map!
cat my_first_plate.csv
Installation
There are two ways to install wellshuffled:
Option 1: Install using uv or pip
You can install the latest version of wellshuffled by running the following
commands:
- Using
uv:
uv pip install wellshuffled
- Using
pip:
pip install wellshuffled
Option 2: Install from a local clone
-
Clone the repository:
git clone https://github.com/exfab/wellshuffled.git cd wellshuffled -
Install using
pip:pip install .
Usage
The main command is wellshuffled. It has two subcommands: shuffle and
trace.
After installation, you can run the tool from your terminal like this:
wellshuffled --help
shuffle Command
The shuffle command generates randomized plate maps from a list of sample IDs.
wellshuffled shuffle <sample_file> <output_path> [OPTIONS]
Options:
--plates, -n: Number of plates to generate. Default is 1.--size: Well plate size (96 or 384). Default is 96.--simple: Use simple randomization (disables neighbor-awareness).--separate-files: Save each plate map to a separate CSV file.--seed: Set the random seed for reproducible results.--control-prefix: Prefix used to identify control samples.--fixed-map: Manually specify fixed control locations (e.g., "A1:control-85,H12:control-96").--fixed-map-file: Manually specify fixed control locations from a CSV file.--nonstandard: Allow for the use of non-standard plate dimensions.--nonstandard_dims: The dimensions (x, y) for the nonstandard plate.
Plates with more than 26 rows are supported, and follow the convention used by
1536-well plates: rows are labelled A through Z, then continue with multiple
letters, so row 27 is AA, row 28 is AB, and so on. For example, a 1536-well
plate is given as --nonstandard_dims 32,48, and its wells are labelled from
A1 through AF48.
trace Command
The trace command traces the locations of samples across multiple plates.
wellshuffled trace <input_path> [OPTIONS]
Options:
--output-csv: Optional path to save the full trajectory map as a CSV file.--numeric: Return the plate positions as 1-based column major numeric values.
Examples
Note: The following examples assume you have cloned the repository and are running the commands from the project's root directory.
1. Generate a single 96-well plate with neighbor-awareness:
wellshuffled shuffle example_files/samples.csv single_plate.csv --size 96
2. Generate 5 plates and save to a single combined file:
wellshuffled shuffle example_files/samples.csv combined_layouts.csv --plates 5
3. Generate 3 plates and save them to separate files in a directory: The
output path my_layouts will be created if it doesn't exist.
wellshuffled shuffle example_files/samples.csv my_layouts --plates 3 --separate-files
4. Generate a reproducible layout using a seed: Running this command
multiple times with --seed 123 will always produce the exact same output file.
wellshuffled shuffle example_files/samples.csv reproducible_run.csv --plates 4 --seed 123
5. Use the simple randomization logic (disabling neighbor-awareness):
wellshuffled shuffle example_files/samples.csv simple_run.csv --simple
6. Generate a plate with a predefined layout for the first plate: The
samples_with_positions.csv file contains a second column with the initial well
positions.
wellshuffled shuffle example_files/samples_with_positions.csv predefined_layout.csv
7. Provide Nonstandard plate dimensions: We use the --nonstandard flag to
ensure you are explicitly meaning to pass in nonstandard plate dimensions along
with the --nonstandard_dims=[RowsxColumns] or [Rows,Columns]
wellshuffled shuffle example_files/60_samples_w_controls_initial_pos.csv nonstandard_layout.csv --nonstandard --nonstandard_dims=6,10
8. View all available options and help:
wellshuffled --help
Development Installation
If you want to contribute to the development of wellshuffled, you can set up a
development environment by following these steps:
-
Clone the repository:
git clone https://github.com/exfab/wellshuffled.git cd wellshuffled -
Sync the project using
uv:This project is managed with
uv, a fast Python package installer and resolver.uv sync -
Installing without
uv syncor usingvenvIf you encounter errors with
uv sync, you can install the project manually in editable mode:Using
uv:uv run python -m pip install -e .Using
venv:python -m venv .venv source .venv/bin/activate python -m pip install -e .
Metadata
Release files for wellshuffled 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wellshuffled-0.2.0.tar.gz | 62.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wellshuffled-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.6 kB
Release files / wellshuffled-0.2.0.tar.gz
| Download URL | wellshuffled-0.2.0.tar.gz |
|---|---|
| Size | 62.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6c6e8943f0d6e5b1f73f7996a85a2a70b882888549d9186e88ac903af1ad1e2
|
|
BLAKE2b-256 checksum How to use checksums |
fcbe08e48d75e6c5df95f4ca770a707e68cd2249618b5213fb735e243445171e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / wellshuffled-0.2.0-py3-none-any.whl
| Download URL | wellshuffled-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6d6dbb3e191f517185d1e5b26e5cf969bca45be4c13426adc1b72e7d3e98b81
|
|
BLAKE2b-256 checksum How to use checksums |
7952ba05215839542b91c7190484056faf629e5478ff40a5b50813fd11b5578e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|