{ "cells": [ { "cell_type": "markdown", "id": "c000", "metadata": {}, "source": [ "# JUMP-Lite\n", "\n", "{func}`~mantispy.ds.jump_lite` reads JUMP-Lite Target-2 {cite:p}`Munoz_2026`: four plates of the JUMP Target-2\n", "plate map, one from each of four laboratories, with the same 1,536 wells measured six ways. Four are learned\n", "embeddings, one is the same architecture as one of them with untrained weights, and `cp_measure` is a\n", "CellProfiler-equivalent feature set. {func}`~mantispy.ds.jump_lite_targets` returns the RefChemDB gene\n", "annotations of its compounds, in the shape {func}`~mantispy.metrics.known_relationships` reads.\n", "\n", "## Source\n", "\n", "Three things about how the features were made bound every result computed from them.\n", "\n", "\n", "- **The images are lossy.** Every one of the six blocks was computed on JPEG-XL medium-quality images. Texture\n", " measurements and convolutional features are the two things most sensitive to compression, so this is not a\n", " neutral choice, and it is a property of the benchmark rather than of your screen.\n", "- **One field of view per well.** Full Target-2 acquires nine; JUMP-Lite keeps one. So every cell count below\n", " is cells *in one field*, and [Bringing your own embedding](../tutorials/data/embeddings.ipynb) says how to\n", " aggregate a model's per-field output when there is more than one.\n", "- **Only one of the six blocks needed segmentation.** `cp_measure` measures objects, so it needs a nucleus and\n", " a cell body found for every cell. The five embeddings read the whole field and segment nothing. That is the\n", " real difference between the embeddings and `cp_measure`, and it cuts both ways.\n", "\n", "## Used in\n", "\n", "- [Bringing your own embedding](../tutorials/data/embeddings.ipynb)\n", "- [Which measurements moved](../tutorials/phenotypes/which_features_moved.ipynb)\n", "- [Learned embeddings against CellProfiler](../case_studies/learned_embeddings.ipynb)" ] }, { "cell_type": "code", "execution_count": 1, "id": "c001", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T00:58:31.426331Z", "iopub.status.busy": "2026-10-21T00:58:31.425936Z", "iopub.status.idle": "2026-10-21T00:58:34.807020Z", "shell.execute_reply": "2026-10-21T00:58:34.805523Z" } }, "outputs": [ { "data": { "text/plain": [ "('openphenom', 'dinov2', 'dinov2_random', 'subcell', 'morphem', 'cp_measure')" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import mantispy as mt\n", "\n", "mt.ds.JUMP_LITE_MODELS" ] }, { "cell_type": "code", "execution_count": 2, "id": "c002", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T00:58:34.811495Z", "iopub.status.busy": "2026-10-21T00:58:34.811267Z", "iopub.status.idle": "2026-10-21T00:58:34.932126Z", "shell.execute_reply": "2026-10-21T00:58:34.930941Z" } }, "outputs": [ { "data": { "text/plain": [ "AnnData object with n_obs × n_vars = 1536 × 384\n", " obs: 'Metadata_id', 'Metadata_Source', 'Metadata_Batch', 'Metadata_Plate', 'Metadata_Well', 'Metadata_Site', 'Metadata_model', 'Metadata_dataset', 'Metadata_compression', 'Metadata_Row', 'Metadata_Col', 'Metadata_CellCount', 'Metadata_JCP2022', 'Metadata_InChIKey', 'Metadata_Perturbation', 'Metadata_Perturbation_Type', 'Metadata_Control_Type', 'Metadata_Control'\n", " var: 'object', 'feature_group', 'feature', 'channel', 'scale', 'angle', 'gray_levels', 'radial_bin', 'params', 'is_feature', 'feature_kind'\n", " uns: 'mantispy'\n", " layers: None (.X)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adata = mt.ds.jump_lite(\"openphenom\")\n", "adata" ] }, { "cell_type": "markdown", "id": "c003", "metadata": {}, "source": [ "The four batches are four different laboratories running one plate map, which makes this a batch-correction\n", "problem with a clean design: whatever separates `source_3` from `source_6` is not biology, because they\n", "received the same compounds in the same wells." ] }, { "cell_type": "code", "execution_count": 3, "id": "c004", "metadata": { "execution": { "iopub.execute_input": "2026-10-21T00:58:34.936449Z", "iopub.status.busy": "2026-10-21T00:58:34.936296Z", "iopub.status.idle": "2026-10-21T00:58:34.958088Z", "shell.execute_reply": "2026-10-21T00:58:34.956945Z" } }, "outputs": [ { "data": { "text/html": [ "
| \n", " | plate | \n", "wells | \n", "controls | \n", "median_cells | \n", "median_cells, controls | \n", "compounds | \n", "wells under 50 cells | \n", "
|---|---|---|---|---|---|---|---|
| Metadata_Source | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| source_3 | \n", "JCPQC016 | \n", "384 | \n", "64 | \n", "264.0 | \n", "282.0 | \n", "302 | \n", "28 | \n", "
| source_4 | \n", "BR00121438 | \n", "384 | \n", "64 | \n", "189.0 | \n", "210.0 | \n", "302 | \n", "61 | \n", "
| source_5 | \n", "ACPJUM012 | \n", "384 | \n", "64 | \n", "336.0 | \n", "357.0 | \n", "302 | \n", "13 | \n", "
| source_6 | \n", "110000293081 | \n", "384 | \n", "64 | \n", "254.0 | \n", "266.0 | \n", "302 | \n", "37 | \n", "