{"id":19669238,"url":"https://github.com/whitews/flowkit","last_synced_at":"2026-04-02T13:48:29.036Z","repository":{"id":40831071,"uuid":"138655889","full_name":"whitews/FlowKit","owner":"whitews","description":"A Python toolkit for flow cytometry analysis supporting GatingML and FlowJo workspaces","archived":false,"fork":false,"pushed_at":"2024-05-29T00:04:21.000Z","size":154676,"stargazers_count":148,"open_issues_count":10,"forks_count":33,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-29T11:54:13.315Z","etag":null,"topics":["cytometry","data-science","fcs","fcs-files","flow-cytometry","flow-cytometry-analysis","flowjo","gatingml","immunology","python"],"latest_commit_sha":null,"homepage":"https://flowkit.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whitews.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-25T22:19:17.000Z","updated_at":"2024-06-26T23:06:53.255Z","dependencies_parsed_at":"2023-02-16T22:31:45.565Z","dependency_job_id":"fee836e9-995d-45e7-83ee-fe3194a55a30","html_url":"https://github.com/whitews/FlowKit","commit_stats":{"total_commits":1317,"total_committers":2,"mean_commits":658.5,"dds":0.0007593014426727773,"last_synced_commit":"e539236c7b480582b80eeacbf47533ff12bb19de"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitews%2FFlowKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitews%2FFlowKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitews%2FFlowKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitews%2FFlowKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whitews","download_url":"https://codeload.github.com/whitews/FlowKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378149,"owners_count":20929297,"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":["cytometry","data-science","fcs","fcs-files","flow-cytometry","flow-cytometry-analysis","flowjo","gatingml","immunology","python"],"created_at":"2024-11-11T16:39:48.832Z","updated_at":"2026-04-02T13:48:29.021Z","avatar_url":"https://github.com/whitews.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FlowKit\n\n[![\"FlowKit\"](https://raw.githubusercontent.com/whitews/FlowKit/master/docs/_static/flowkit.png)](https://github.com/whitews/flowkit)\n\n[![PyPI license](https://img.shields.io/pypi/l/flowkit.svg?colorB=dodgerblue)](https://pypi.python.org/pypi/flowkit/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/flowkit.svg)](https://pypi.python.org/pypi/flowkit/)\n[![PyPI version](https://img.shields.io/pypi/v/flowkit.svg?colorB=blue)](https://pypi.python.org/pypi/flowkit/)\n[![DOI](https://zenodo.org/badge/138655889.svg)](https://zenodo.org/badge/latestdoi/138655889)\n\n\n[![Test (master)](https://github.com/whitews/FlowKit/actions/workflows/tests_master.yml/badge.svg)](https://github.com/whitews/FlowKit/actions/workflows/tests_master.yml)\n[![Test (develop)](https://github.com/whitews/FlowKit/actions/workflows/tests_develop.yml/badge.svg)](https://github.com/whitews/FlowKit/actions/workflows/tests_develop.yml)\n[![codecov](https://codecov.io/gh/whitews/flowkit/branch/master/graph/badge.svg?token=joeOIVWmHi)](https://codecov.io/gh/whitews/flowkit)\n[![Documentation Status](https://readthedocs.org/projects/flowkit/badge/?version=latest)](https://flowkit.readthedocs.io/en/latest/?badge=latest)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/flowkit)\n\n\n* [Overview](#overview)\n* [Features](#features)\n* [Requirements](#requirements)\n* [Installation](#installation)\n* [Documentation](#documentation)\n  * [Tutorials](#tutorials)\n  * [Advanced Examples](#advanced-examples)\n* [Contributing](#contributing)\n* [Cite FlowKit](#cite-flowkit)\n* [Projects \u0026 Research Using FlowKit](#projects--research-using-flowkit)\n\n## Overview\n\nFlowKit is a Python toolkit for flow cytometry analysis and visualization, with full support for the [GatingML 2.0 standard](https://sourceforge.net/projects/flowcyt/files/Gating-ML/Gating-ML%202.0/) and limited support for FlowJo 10 workspace files. Please see the [changelogs for the latest API changes](https://github.com/whitews/FlowKit/releases).\n\n\u003cimg alt=\"FlowKit Overview\" src=\"https://raw.githubusercontent.com/whitews/FlowKit/master/docs/_static/flowkit_overview.jpg\" style=\"width:400px;\" /\u003e\n\n## Features\n\n* Read / Write FCS Files\n  * Read FCS files, supporting FCS versions 2.0, 3.0, and 3.1\n  * Export FCS data as:\n    * A new FCS 3.1 file\n    * NumPy array\n    * Pandas DataFrame\n    * CSV text file\n* Compensation\n  * Compensate events using spillover matrices from:\n    * $SPILL or $SPILLOVER keyword value\n    * FlowJo tab-delimited text\n    * NumPy array\n    * GatingML 2.0 spectrumMatrix XML element\n* Transformation\n  * Logicle\n  * Inverse hyperbolic sine (ArcSinh)\n  * FlowJo Bi-exponential\n  * Hyperlog\n  * Logarithmic\n  * Channel ratios\n  * Linear\n* Gating\n  * Full support for the GatingML 2.0 specification\n    * Import GatingML XML documents as gating strategies\n    * Export gating strategies as a valid GatingML XML document\n  * Import FlowJo 10 workspace files, supporting the following features:\n    * Linear, logarithmic, bi-exponential, and logicle transforms\n    * Polygon, rectangle, ellipse, quadrant and Boolean gates\n  * Programmatically create gating strategies including polygon, rectangle, range, ellipsoid, quadrant, and boolean gates\n  * Retrieve gating results as a Pandas DataFrame \n* Visualization\n  * Histogram of single channel data\n  * Contour density plot of two channels\n  * Interactive scatter plot of two channels\n  * Interactive scatter plot matrix of any combination of channels\n  * Interactive scatter plots of gates with sample events\n\n## Requirements\n\nFlowKit supports Python version 3.10 - 3.14. All dependencies are installable \nvia pip, and are listed below.\n\n\u003e **NOTE**: FlowUtils uses C extensions for significant performance \n\u003e improvements. For most platforms and Python versions, pre-built \n\u003e binaries of FlowUtils are available in PyPI (i.e. installable via \n\u003e `pip`). If a pre-built binary is not available for your environment, \n\u003e the C extensions must be compiled using the source package.\n\nRequired Python dependencies:\n\n* [flowio](https://github.com/whitews/flowio) \u003e= 1.4.0\n* [flowutils](https://github.com/whitews/flowutils) \u003e= 1.2.2\n* anytree \u003e= 2.13\n* bokeh \u003e= 3.5\n* contourpy \u003e= 1.3.1\n* lxml \u003e= 6.0\n* networkx \u003e= 3.3\n* numpy \u003e2\n* pandas \u003e= 2.2\n* psutils \u003e= 7\n* pyarrow\u003e=18\n* scipy \u003e= 1.14\n\n## Installation\n\n\u003e **NOTE**: For macOS users running on Apple Silicon, the version of `pip` may need to be upgraded prior to installing FlowKit in order to install the required dependencies.\n\n### From PyPI\n\n```\npip install flowkit\n```\n\n### From source\n\nClone the repository and ensure `pip` is up-to-date.\n\n```\ngit clone https://github.com/whitews/flowkit\ncd flowkit\npip install --upgrade pip\npip install .\n```\n\n## Documentation\n\nThe FlowKit API documentation is available [on ReadTheDocs here](https://flowkit.readthedocs.io/en/latest/?badge=latest). The tutorial notebooks in the `docs/notebooks` directory are a great place to get started with FlowKit, and are linked below.\nIf you have any questions about FlowKit, find any bugs, or feel something is missing from the tutorials below [please submit an issue to the GitHub repository here](https://github.com/whitews/FlowKit/issues/new/).\n\n### Changelogs\n\n[Changelogs for versions are available here](https://github.com/whitews/FlowKit/releases)\n\n### Tutorials\n\nThe series of Jupyter notebook tutorials can be found in the `docs/notebooks` directory of this repository. Note, the interactive scatterplots do not render on GitHub. The rendered versions are available on our [documentation page here](https://flowkit.readthedocs.io/en/latest/?badge=latest). Or, clone the repo and run them locally to see the fully interactive plots.\n\n* [Part 1 - Sample Class](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part01-sample-class.ipynb)\n* [Part 2 - transforms Module \u0026 Matrix Class](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part02-transforms-module-matrix-class.ipynb)\n* [Part 3 - GatingStrategy \u0026 GatingResults Classes](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part03-gating-strategy-and-gating-results-classes.ipynb)\n* [Part 4 - gates Module](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part04-gates-module.ipynb)\n* [Part 5 - Session Class](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part05-session-class.ipynb)\n* [Part 6 - Workspace Class](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/flowkit-tutorial-part06-workspace-class.ipynb)\n\n### Advanced Examples\n\nBelow are more advanced and practical examples for using FlowKit. If you have an example you would like to submit for consideration in this list (preferably with data), please [submit an issue](https://github.com/whitews/FlowKit/issues/new/).\n\n* [Compare mean fluorescence intensity (MFI) in gated populations](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/compare-mfi-of-gated-events.ipynb)\n* [Importing a FlowJo 10 WSP file \u0026 replicating analysis in FlowKit](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/replicate-flowjo-wsp.ipynb)\n* [Boolean Combinations of Gates](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/boolean_combinations_of_gates.ipynb)\n* [Dimension reduction on gated populations](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/dimension_reduction_on_gated_populations.ipynb)\n* [Comparison between Leiden \u0026 Louvain clustering](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/clustering_comparison_leiden_vs_louvain.ipynb)\n* [Saving Flow Analysis Data as AnnData objects for ScanPy](https://github.com/whitews/FlowKit/blob/master/docs/notebooks/advanced/scanpy_creating_and_using_AnnData_objects.ipynb)\n\n## Contributing\n\nWant to get involved in the development of FlowKit? \n\n[Read our CONTRIBUTING guidelines](https://github.com/whitews/FlowKit/blob/master/CONTRIBUTING.md)\n\n## Cite FlowKit\n\n[White, S., Quinn, J., Enzor, J., Staats, J., Mosier, S. M., Almarode, J., Denny, T. N., Weinhold, K. J., Ferrari, G., \u0026 Chan, C. (2021). FlowKit: A Python toolkit for integrated manual and automated cytometry analysis workflows. Frontiers in Immunology, 12. https://doi.org/10.3389/fimmu.2021.768541](https://www.frontiersin.org/articles/10.3389/fimmu.2021.768541/full)\n\n## Projects \u0026 Research Using FlowKit \n\nThe following projects and publications have utilized FlowKit. If you have a package or publication where FlowKit was used, and you want it listed here, feel free to [submit an issue](https://github.com/whitews/FlowKit/issues/new/) letting me know.\n\n* van den Berg, Nathan et al. \"Emergent collective alignment gives competitive advantage to longer cells during range expansion.\" Nature Communications (December 2025), [doi:10.1038/s41467-025-67791-5](https://doi.org/10.1038/s41467-025-67791-5) \n* Furtwängler, Benjamin et al. \"Mapping early human blood cell differentiation using single-cell proteomics and transcriptomics.\" Science, 390(6770), eadr8785 (October 2025), [doi:https:10.1126/science.adr8785](https://doi.org/10.1126/science.adr8785)\n* Yue, Alice et al. \"AI in flow cytometry: Current applications and future directions.\" Cytometry Part B Clinical Cytometry, 108(5), 404-420 (September 2025), [doi:10.1002/cyto.b.22255](https://doi.org/10.1002/cyto.b.22255) \n* Prigge, Michael J. et al. \"Comparative mutant analyses reveal a novel mechanism of ARF regulation in land plants.\" Nature Plants 821-835 - (April 2025), [doi:10.1038/s41477-025-01973-3](https://doi.org/10.1038/s41477-025-01973-3)\n* Spies, Nicholas C. et al. \"Machine Learning Methods in Clinical Flow Cytometry.\" Cancers 17(3), 483 (February 2025), [doi:10.3390/cancers17030483](https://doi.org/10.3390/cancers17030483) \n* Ishii, Hiroto et al. \"Establishing a method for the cryopreservation of viable peripheral blood mononuclear cells in the International Space Station.\" npj Microgravity vol. 10, Article number: 84 (2024), [doi:10.1038/s41526-024-00423-2](https://doi.org/10.1038/s41526-024-00423-2)\n* Dyikanov, Daniiar et al. \"Comprehensive peripheral blood immunoprofiling reveals five immunotypes with immunotherapy response characteristics in patients with cancer.\" Cancer Cell vol. 42,5 (2024), [doi:10.1016/j.ccell.2024.04.008](https://doi.org/10.1016/j.ccell.2024.04.008)\n* Mortelecque, Justine et al. \"A selection and optimization strategy for single-domain antibodies targeting the PHF6 linear peptide within the Tau intrinsically disordered protein.\" Journal of Biological Chemistry (2024), [doi:10.1016/j.jbc.2024.107163](https://www.jbc.org/article/S0021-9258(24)01658-2/fulltext)\n* Schmidt, Florian et al. \"In-depth analysis of human virus-specific CD8+ T cells delineates unique phenotypic signatures for T cell specificity prediction.\" Cell Reports vol. 42,10 (2023), [doi:10.1016/j.celrep.2023.113250](https://www.cell.com/cell-reports/fulltext/S2211-1247(23)01262-7)\n* Schuster, Jonas et al. “Combining real-time fluorescence spectroscopy and flow cytometry to reveal new insights in DOC and cell characterization of drinking water.” Frontiers in Environmental Chemistry (2022), [doi:10.3389/fenvc.2022.931067](https://www.frontiersin.org/articles/10.3389/fenvc.2022.931067/full)\n* Rendeiro, André F et al. \"Profiling of immune dysfunction in COVID-19 patients allows early prediction of disease progression.\" Life science alliance vol. 4,2 e202000955. 24 Dec. 2020, [doi:10.26508/lsa.202000955](https://www.life-science-alliance.org/content/4/2/e202000955.full)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitews%2Fflowkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhitews%2Fflowkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitews%2Fflowkit/lists"}