CytoDataFrame at a Glance#

This notebook demonstrates various capabilities of CytoDataFrame using examples.

CytoDataFrame is intended to provide you a Pandas-like DataFrame experience which is enhanced with single-cell visual information which can be viewed directly in a Jupyter notebook.

from cytodataframe.frame import CytoDataFrame

# create paths for use with CytoDataFrames below
jump_data_path = "../../../tests/data/cytotable/JUMP_plate_BR00117006"
nf1_cellpainting_path = "../../../tests/data/cytotable/NF1_cellpainting_data_shrunken/"
nuclear_speckles_path = "../../../tests/data/cytotable/nuclear_speckles"
pediatric_cancer_atlas_path = (
    "../../../tests/data/cytotable/pediatric_cancer_atlas_profiling"
)
%%time
# view JUMP plate BR00117006 with images
CytoDataFrame(
    data=f"{jump_data_path}/BR00117006_shrunken.parquet",
    data_context_dir=f"{jump_data_path}/images/orig",
)[
    [
        "Metadata_ImageNumber",
        "Cells_Number_Object_Number",
        "Image_FileName_OrigAGP",
        "Image_FileName_OrigDNA",
        "Image_FileName_OrigRNA",
    ]
][:3]
CPU times: user 666 ms, sys: 450 ms, total: 1.12 s
Wall time: 333 ms
Metadata_ImageNumber Cells_Number_Object_Number Image_FileName_OrigAGP Image_FileName_OrigDNA Image_FileName_OrigRNA
0 1 1
1 1 2
2 1 3
%%time
# view JUMP plate BR00117006 with images and overlaid outlines for segmentation
CytoDataFrame(
    data=f"{jump_data_path}/BR00117006_shrunken.parquet",
    data_context_dir=f"{jump_data_path}/images/orig",
    data_outline_context_dir=f"{jump_data_path}/images/outlines",
)[
    [
        "Metadata_ImageNumber",
        "Cells_Number_Object_Number",
        "Image_FileName_OrigAGP",
        "Image_FileName_OrigDNA",
        "Image_FileName_OrigRNA",
    ]
][:3]
CPU times: user 658 ms, sys: 417 ms, total: 1.08 s
Wall time: 291 ms
Metadata_ImageNumber Cells_Number_Object_Number Image_FileName_OrigAGP Image_FileName_OrigDNA Image_FileName_OrigRNA
0 1 1
1 1 2
2 1 3
%%time
# view NF1 Cell Painting data with images
CytoDataFrame(
    data=f"{nf1_cellpainting_path}/Plate_2_with_image_data_shrunken.parquet",
    data_context_dir=f"{nf1_cellpainting_path}/Plate_2_images",
)[
    [
        "Metadata_ImageNumber",
        "Metadata_Cells_Number_Object_Number",
        "Image_FileName_GFP",
        "Image_FileName_RFP",
        "Image_FileName_DAPI",
    ]
][:3]
CPU times: user 204 ms, sys: 128 ms, total: 333 ms
Wall time: 103 ms
Metadata_ImageNumber Metadata_Cells_Number_Object_Number Image_FileName_GFP Image_FileName_RFP Image_FileName_DAPI
353 31 4
1564 113 17
1275 94 5
%%time
# view NF1 Cell Painting data with images and overlaid outlines from masks
CytoDataFrame(
    data=f"{nf1_cellpainting_path}/Plate_2_with_image_data_shrunken.parquet",
    data_context_dir=f"{nf1_cellpainting_path}/Plate_2_images",
    data_mask_context_dir=f"{nf1_cellpainting_path}/Plate_2_masks",
)[
    [
        "Metadata_ImageNumber",
        "Metadata_Cells_Number_Object_Number",
        "Image_FileName_GFP",
        "Image_FileName_RFP",
        "Image_FileName_DAPI",
    ]
][:3]
CPU times: user 214 ms, sys: 131 ms, total: 345 ms
Wall time: 105 ms
Metadata_ImageNumber Metadata_Cells_Number_Object_Number Image_FileName_GFP Image_FileName_RFP Image_FileName_DAPI
353 31 4
1564 113 17
1275 94 5
%%time
# view nuclear speckles data with images and overlaid outlines from masks
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",
)[
    [
        "Metadata_ImageNumber",
        "Nuclei_Number_Object_Number",
        "Image_FileName_A647",
        "Image_FileName_DAPI",
        "Image_FileName_GOLD",
    ]
][:3]
CPU times: user 87.6 ms, sys: 49 ms, total: 137 ms
Wall time: 47.1 ms
Metadata_ImageNumber Nuclei_Number_Object_Number Image_FileName_A647 Image_FileName_DAPI Image_FileName_GOLD
0 1 1 slide1_A1_M10_CH1_Z09_illumcorrect.tiff slide1_A1_M10_CH2_Z09_illumcorrect.tiff
1 1 2 slide1_A1_M10_CH1_Z09_illumcorrect.tiff slide1_A1_M10_CH2_Z09_illumcorrect.tiff
2 1 3 slide1_A1_M10_CH1_Z09_illumcorrect.tiff slide1_A1_M10_CH2_Z09_illumcorrect.tiff
%%time
# view ALSF pediatric cancer atlas plate BR00143976 with images
CytoDataFrame(
    data=f"{pediatric_cancer_atlas_path}/BR00143976_shrunken.parquet",
    data_context_dir=f"{pediatric_cancer_atlas_path}/images/orig",
    data_outline_context_dir=f"{pediatric_cancer_atlas_path}/images/outlines",
    segmentation_file_regex={
        r"CellsOutlines_BR(\d+)_C(\d{2})_\d+\.tiff": r".*ch3.*\.tiff",
        r"NucleiOutlines_BR(\d+)_C(\d{2})_\d+\.tiff": r".*ch5.*\.tiff",
    },
)[
    [
        "Metadata_ImageNumber",
        "Metadata_Nuclei_Number_Object_Number",
        "Image_FileName_OrigAGP",
        "Image_FileName_OrigDNA",
    ]
][:3]
CPU times: user 253 ms, sys: 159 ms, total: 412 ms
Wall time: 117 ms
Metadata_ImageNumber Metadata_Nuclei_Number_Object_Number Image_FileName_OrigAGP Image_FileName_OrigDNA
0 3 3
1 3 4
2 3 6