{"id":21432871,"url":"https://github.com/himsr-lab/cu-cellseg","last_synced_at":"2026-01-31T07:03:45.576Z","repository":{"id":102908918,"uuid":"341700514","full_name":"himsr-lab/CU-CellSeg","owner":"himsr-lab","description":"Cell segmentation of multi-channel images","archived":false,"fork":false,"pushed_at":"2023-05-08T19:46:53.000Z","size":210744,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T22:38:37.573Z","etag":null,"topics":["akoya-biosciences","batch","bio-formats","cell-matrix","cell-segmentation","cells","cytoplasm","ihc","imagej2","immunohistochemistry","ionpath","macro","membrane","mibiscope","multi-channel","nuclei","pixel-classifier","polaris","trainable-weka-segmentation","vectra"],"latest_commit_sha":null,"homepage":"","language":"ImageJ Macro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/himsr-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-02-23T21:52:58.000Z","updated_at":"2024-09-25T16:42:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"398a12a8-0cc9-4500-a440-a37337507369","html_url":"https://github.com/himsr-lab/CU-CellSeg","commit_stats":null,"previous_names":["himsr-lab/cu-cellseg","christianrickert/cu-cellseg"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/himsr-lab/CU-CellSeg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himsr-lab%2FCU-CellSeg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himsr-lab%2FCU-CellSeg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himsr-lab%2FCU-CellSeg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himsr-lab%2FCU-CellSeg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/himsr-lab","download_url":"https://codeload.github.com/himsr-lab/CU-CellSeg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himsr-lab%2FCU-CellSeg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261559918,"owners_count":23177290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["akoya-biosciences","batch","bio-formats","cell-matrix","cell-segmentation","cells","cytoplasm","ihc","imagej2","immunohistochemistry","ionpath","macro","membrane","mibiscope","multi-channel","nuclei","pixel-classifier","polaris","trainable-weka-segmentation","vectra"],"created_at":"2024-11-22T23:22:20.408Z","updated_at":"2026-01-31T07:03:45.568Z","avatar_url":"https://github.com/himsr-lab.png","language":"ImageJ Macro","funding_links":[],"categories":[],"sub_categories":[],"readme":"![header](https://user-images.githubusercontent.com/19319377/126721984-ac2d2df2-6017-4073-806d-7667f6c600d5.png)\n# CU-CellSeg\n## Cell segmentation of multi-channel images\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4599644.svg)](https://doi.org/10.5281/zenodo.4599644)\n### Segmentation method\nThe CU-CellSeg macro implements a \"classic\" cell segmentation method with a marker-based cell expansion: In short, pixel probability maps for nucleus channels (mandatory) and cell matrix channels (optional) are thresholded and segmented by ImageJ's [watershed algorithm](https://imagej.nih.gov/ij/docs/guide/146-29.html#sub:Watershed) (nuclei) and by the [\"Find maxima...\" function](https://imagej.nih.gov/ij/docs/guide/146-29.html#sub:Find-Maxima) (cell matrix) to create individual cellular compartments. Typical nucleus channels would be markers for DAPI, dsDNA, or histone. Cell matrix channels could be cytoplasm markers (beta-tubulin, keratin, vimentin, ...) or membrane markers (V-ATPase, HLA class 1, CD8, ...), or both. If no cell matrix channel is specified (default), cell outlines are generated from the expansion of the nuclei outlines by a fixed radius. Both cell matrix options generate non-overlapping cell outlines.\n\n![segmentation](https://user-images.githubusercontent.com/19319377/126821004-dcab1ab1-d0f5-40fc-84b4-8a2baa3b062a.png)\n\n**Figure 1: Segmentation example.** Segmentation of the composite image (top). The dsDNA channel was used to segment nuclei (gold). The beta-tubulin channel allowed for the cell expansion (white) with a minimum [`cellExpansion`](https://github.com/christianrickert/CU-CellSeg/blob/main/CU-CellSeg.ijm#L87) of 1.5 µm and a maximum [`cellExpansionLimit`](https://github.com/christianrickert/CU-CellSeg/blob/main/CU-CellSeg.ijm#L88) of 100 µm.\n\n### Software documentation\nThe documentation of our macros is in the corresponding source code: You can view the source code on GitHub by following the links to the macros.\n\n### Software requirements\nCU-CellSeg requires a recent version of the [Fiji](https://fiji.sc/) image processing package:\n* ImageJ2 executable (\u003e= 1.52u)\n* Trainable Weka Segmentation plugin (\u003e= 3.2.24)\n\nAny multi-channel image that can be imported with the Bio-Formats plugin can be processed by CU-CellSeg. However, you might have to adjust the [`suffixes`](https://github.com/christianrickert/CU-CellSeg/blob/main/CU-CellSeg.ijm#L74) variable to select the file extensions for your specific instrument. In addition, if the metadata extraction and therefore the slice labeling fails, you will have to refer to individual channels explicitly by slice number, e.g. `\"1\", \"14\"` instead of using the convenient pattern matching available for labeled channels, e.g. `\"beta-tubulin\", \"dsdna\"`.\n\n**CU-CellSeg requires a recent version of [CU-MacroLibrary](https://github.com/christianrickert/CU-MacroLibrary/) to be installed.**\n\n### Example files\nThe [example folder](https://github.com/christianrickert/CU-CellSeg/tree/main/example) contains a single [MIBIscope™ image](https://github.com/christianrickert/CU-CellSeg/blob/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil.tiff?raw=true) (800x800 px) and two corresponding pixel-classifier models - trained with dsDNA ([nu.model](https://github.com/christianrickert/CU-CellSeg/blob/main/example/nu.model?raw=true)) and beta-tubulin ([ce.model](https://github.com/christianrickert/CU-CellSeg/blob/main/example/ce.model?raw=true)), respectively.\nRunning CU-CellSeg with the default [`userThresholds`](https://github.com/christianrickert/CU-CellSeg/blob/main/CU-CellSeg.ijm#L80) and with the [`cellMatrixChannels`](https://github.com/christianrickert/CU-CellSeg/blob/main/CU-CellSeg.ijm#L83) variable set to `newArray(\"beta-tubulin\")`, should yield results similar (within numerical precision limits) to the data in the [results subfolder](https://github.com/christianrickert/CU-CellSeg/tree/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil). However, the measurements table (\u003e500 MiB) has been compressed with [7-zip](https://www.7-zip.org/download.html) before uploading.\n\nCU-CellSeg produces distinct result files for every multi-channel image in the batch:\n* `*.csv` - [measurements table](https://github.com/christianrickert/CU-CellSeg/blob/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil/cells/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil.7z?raw=true)\n* `*.tif` - [overview image](https://github.com/christianrickert/CU-CellSeg/blob/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil/cells/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil.tif?raw=true)\n* `*.txt` - [log file](https://github.com/christianrickert/CU-CellSeg/blob/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil/cells/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil.txt)\n* `*.zip` - [rois](https://github.com/christianrickert/CU-CellSeg/blob/main/example/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil/cells/20200109_3232_Run-16_FOV1_Final_3232_Top_R3C1_Tonsil.zip?raw=true)\n\n### Copyright notices\nThe [MIBIscope™ image](https://mibi-share.ionpath.com/tracker/overlay/sets/16/116) was kindly provided by Ionpath for demonstration purposes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhimsr-lab%2Fcu-cellseg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhimsr-lab%2Fcu-cellseg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhimsr-lab%2Fcu-cellseg/lists"}