Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
8d1f827
initial work towards feature scroll filters
d33bs Mar 13, 2026
c552eee
scroll bars for filters
d33bs Mar 14, 2026
ed5e466
relative spacing for scroll plot
d33bs Mar 15, 2026
7e7f83f
scroll filter plot threshold indicators
d33bs Mar 15, 2026
a8f92be
binning and such
d33bs Mar 15, 2026
51ea9cc
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Mar 15, 2026
8a79ee7
fine tuning and docs
d33bs Mar 16, 2026
9c80a86
linting
d33bs Mar 16, 2026
95dfd02
address coderabbit review suggestions
d33bs Mar 16, 2026
b5731b9
ignore notebook file imports
d33bs Mar 16, 2026
f91c1cf
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Mar 16, 2026
a3304e0
addressing copilot review suggestions
d33bs Mar 16, 2026
f08ca48
Merge branch 'multi-scroll-filter' of https://github.com/d33bs/CytoDa…
d33bs Mar 16, 2026
1093e25
Merge remote-tracking branch 'upstream/main' into multi-scroll-filter
d33bs Mar 17, 2026
8be4632
tighter kde plotting for y-axis visuals
d33bs Mar 17, 2026
2a61bed
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Mar 17, 2026
928f4ef
address coderabbit comment
d33bs Mar 17, 2026
fe716e6
Merge branch 'multi-scroll-filter' of https://github.com/d33bs/CytoDa…
d33bs Mar 17, 2026
4251f1f
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Mar 17, 2026
6f6e604
address coderabbit comments
d33bs Mar 17, 2026
bf1c517
Merge branch 'multi-scroll-filter' of https://github.com/d33bs/CytoDa…
d33bs Mar 17, 2026
2c7f2e6
updates from jennas review
d33bs Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ repos:
- id: check-yaml
- id: detect-private-key
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.18.1"
rev: "v2.19.0"
hooks:
- id: pyproject-fmt
- repo: https://github.com/codespell-project/codespell
Expand Down Expand Up @@ -50,7 +50,7 @@ repos:
hooks:
- id: actionlint
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: "v0.15.5"
rev: "v0.15.6"
hooks:
- id: ruff-format
- id: ruff-check
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ For 3D notebook display behavior:
- Disable automatic trame switching with `display_options={"auto_trame_for_3d": False}`.
- Force trame layout regardless of auto-detection with `display_options={"view": "trame"}`.

For row display in notebook/widget tables:

- CytoDataFrame respects pandas display settings (`display.max_rows`, `display.min_rows`).
- When the table is larger than `display.max_rows`, the widget table inserts a midpoint ellipsis row (`…`) to indicate omitted rows.
- You can control truncation behavior by changing pandas display options before rendering.

📓 ___Want to see CytoDataFrame in action?___ Check out our [example notebook](docs/src/examples/cytodataframe_at_a_glance.ipynb) for a quick tour of its key features.

> ✨ CytoDataFrame development began within **[coSMicQC](https://github.com/cytomining/coSMicQC)** - a single-cell profile quality control package.
Expand Down
708 changes: 621 additions & 87 deletions docs/src/examples/cytodataframe_at_a_glance.ipynb

Large diffs are not rendered by default.

24 changes: 23 additions & 1 deletion docs/src/examples/cytodataframe_at_a_glance.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
[
"Metadata_ImageNumber",
"Cells_Number_Object_Number",
"Nuclei_Texture_Variance_RNA_5_03_256",
"Image_FileName_OrigAGP",
"Image_FileName_OrigDNA",
"Image_FileName_OrigRNA",
Expand Down Expand Up @@ -305,6 +306,28 @@
]
][:3]

# %%time
# view nuclear speckles data with images and overlaid outlines from masks
# and also apply a filter to only show rows where the value for
# "Nuclei_Texture_Variance_DAPI_3_03_256".
CytoDataFrame(
data=f"{nuclear_speckles_path}/test_slide1_converted.parquet",
data_context_dir=f"{nuclear_speckles_path}/images/plate1",
data_mask_context_dir=f"{nuclear_speckles_path}/masks/plate1",
display_options={
"filter_columns": ["Nuclei_Texture_Variance_DAPI_3_03_256"],
},
)[
[
"Metadata_ImageNumber",
"Nuclei_Number_Object_Number",
"Nuclei_Texture_Variance_DAPI_3_03_256",
"Image_FileName_A647",
"Image_FileName_DAPI",
"Image_FileName_GOLD",
]
]

# %%time
# view ALSF pediatric cancer atlas plate BR00143976 with images
cdf = CytoDataFrame(
Expand Down Expand Up @@ -356,7 +379,6 @@
cdf[["ImageNumber", "ObjectNumber", "FileName_Nuclei"]][:3]
# +
# %%time

# read 3d images with segmentation masks and show the
# segmentation masks are also 3D.
cdf = CytoDataFrame(
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ lint.select = [
]
# Ignore `E402` and `F401` (unused imports) in all `__init__.py` files
lint.per-file-ignores."__init__.py" = [ "E402", "F401" ]
lint.per-file-ignores."docs/src/examples/cytodataframe_at_a_glance.py" = [ "E402" ]
lint.per-file-ignores."src/cytodataframe/*.py" = [ "ANN401", "PLC0415" ]
lint.per-file-ignores."src/cytodataframe/image.py" = [ "PLR2004" ]
# ignore typing rules for tests
Expand Down
Loading
Loading