csi_images
csi_images: image and data utilities for CSI-Cancer
This package is a library for interacting with data, mainly from immunoflourescent microscopy, such as cells and the images thereof. While much of the functionality is specific to the CSI-Cancer organization, some of the functionality and structure may be beneficial for the broader community. Other packages in the CSI-Cancer organization may depend on this package.
Install with:
pip install csi_images
or
pip install csi_images[imageio,rds,dev,all]
The base version of the package includes only core data structures and manipulations.
Optional dependencies include:
imageio: for reading and writing images, include .czi files.rds: for reading and writing RDS files, such as OCULAR outputs.dev: for development dependencies, including documentation, tests, building, etc.all: for all optional dependencies.
Structure
This package contains these modules:
csi_scans.py: a module for interacting with scan-level files, such as .czi files.Scan: a class that contains all of the scan metadata. for interacting with scan metadata, such as the slide ID, the path to the scan, and scan parameters. Recommend importing viafrom csi_images.csi_scans import Scan
csi_tiles.py: a module for interacting with tiles, which have a particular (x, y) position in the scan. Tiles have several frames taken at the same position.Tile: a class for containing a tile's positional data. Importscsi_scans.py. This class unifies multiple scanners' tile positioning to convert between index and (x, y). Recommend importing viafrom csi_images.csi_tiles import Tile
csi_frames.py: a module for interacting with frames, which are individual images. Importscsi_scans.pyandcsi_tiles.py. Recommend importing viafrom csi_images.csi_frames import FrameFrame: a class for containing a frame's metadata. Each frame in a tile has a different channel, or light spectrum. The frame only contains metadata, but enables gathering of the image data through theget_image()method. For a list of frames, useget_frames(). For all frames in a scan, useget_all_frames(). For many frames, use[frame.get_image() for frame in frames]. Recommend importing viafrom csi_images.csi_frames import Frame
csi_events.py: a module for interacting with individual events. Importscsi_scans.py,csi_tiles.py, andcsi_frames.py.Event: a class for containing a single event's metadata and feature data. Key metadata (scan, tile, x, y) is required; the others are optional and flexible. Contains a convenience function for getting crops of an event, as well as functions for determining the position of the event in the slide coordinate frame. Recommend importing viafrom csi_images.csi_events import EventEventArray: a class for containing a list of events, holding their data in pandas dataframes. Contains functions converting back and forth fromEvents and files. Recommend importing viafrom csi_images.csi_events import EventArray
Planned Features
Event.montage(): Combines crops for an event into side-by-side montages.
Documentation
For more detailed documentation, check the API docs.
Alternatively, once you have cloned the repository, you
can open up docs/index.html in your browser.
To regenerate the documentation, ensure that you have installed the package and then run:
make_docs_for_csi_images
Development Installation
- Activate your
conda(conda activate yourenv) orvenv(source path/to/your/venv/bin/activate) environment first. - Clone
csi_imagesand install:
cd ~/path/to/your/repositories
git clone git@github.com:CSI-Cancer/csi_images.git
pip install ./csi_images
Alternatively, you can "editable" install the package, which will allow you to make changes to the package and have them reflected in your environment without reinstalling:
pip install -e ./csi_images
This will add symbolic links to your site-packages directory instead of copying the
package files over.