Giter VIP home page Giter VIP logo

cytoflow's Introduction

Cytoflow

Python tools for quantitative, reproducible flow cytometry analysis

Welcome to a different style of flow cytometry analysis. Take a look at some example Jupyter notebooks:

or some screenshots from the GUI

Note: My 'day job' is teaching at a regional comprehensive college, so during the semester I may not have a huge amount of time to respond to bugs and feature requests. I'm still activately developing Cytoflow, so please continue to file bugs!

What's wrong with other packages?

Packages such as FACSDiva and FlowJo are focused on primarily on identifying and counting subpopulations of cells in a multi-channel flow cytometry experiment. While this is important for many different applications, it reflects flow cytometry's origins in separating mixtures of cells based on differential staining of their cell surface markers.

Cytometers can also be used to measure internal cell state, frequently as reported by fluorescent proteins such as GFP. In this context, they function in a manner similar to a high-powered plate-reader: instead of reporting the sum fluorescence of a population of cells, the cytometer shows you the distribution of the cells' fluorescence. Thinking in terms of distributions, and how those distributions change as you vary an experimental variable, is something existing packages don't handle gracefully.

What's different about Cytoflow?

A few things.

  • Free and open-source. Use the software free-of-charge; modify it to suit your own needs, then contribute your changes back so the rest of the community can benefit from them.

  • A point-and-click interface for easy analysis.

  • Python modules to integrate into larger apps, automation, or for use in a Jupyter notebook

  • An emphasis on metadata. Cytoflow assumes that you are measuring fluorescence on several samples that were treated differently: either they were collected at different times, treated with varying levels of inducers, etc. You specify the conditions for each sample up front, then use those conditions to facet the analysis.

  • Cytometry analysis conceptualized as a workflow. Raw cytometry data is usually not terribly useful: you may gate out cellular debris and aggregates (using FSC and SSC channels), then compensate for channel bleed-through, and finally select only transfected cells before actually looking at the parameters you're interested in experimentally. Cytoflow implements a workflow paradigm, where operations are applied sequentially; a workflow can be saved and re-used, or shared with your coworkers.

  • Easy to use. Sane defaults; good documentation; focused on doing one thing and doing it well.

  • Good visualization. I don't know about you, but I'm getting really tired of FACSDiva plots.

  • Versatile. Built on Python, with a well-defined library of operations and visualizations that are well separated from the user interface. Need an analysis that Cytoflow doesn't have? Export your workflow to a Jupyter notebook and use any Python module you want to complete your analysis. Data is stored in a pandas.DataFrame, which is rapidly becoming the standard for Python data analysis (and will make R users feel right at home.)

  • Extensible. Adding a new analysis or visualization module is simple; the interface to implement is only two or three functions.

  • Quantitative and statistically sound. Ready access to useful data-driven tools for analysis, such as fitting 2-dimensional Gaussians for automated gating and mixture modeling.

Installation

If you just want the point-and-click version (not the Python modules), you can install it from http://cytoflow.github.io/

See the installation notes on ReadTheDocs. Installation has been tested on Linux, Windows (x86_64) and Mac. Cytoflow is distributed as an Anaconda package (recommended) as well as a traditional Python package.

Documentation

Cytoflow's documentation lives at ReadTheDocs. Perhaps of most use is the module index. The example Jupyter notebooks, above, demonstrate how the package is intended to be used interactively.

cytoflow's People

Contributors

bpteague avatar dmarcbriers avatar dvanegeren avatar ejayawant avatar gjvargas avatar kristjaneerik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cytoflow's Issues

Install error: 'module' object has no attribute 'utility'

Hi, I installed cytoflow-0.4.1 and got the following error while importing it in a Jupyter notebook. I am using anaconda, and I wonder if this error is related to that? I did have a lot of trouble while installing/updating dependencies before the initial install of cytoflow (it broke my matplotlib somehow, and was fixed when I updated all of anaconda), and I uninstalled and reinstalled cytoflow after the update. Please let me know if you need more information to fix this error. Thank you!

AttributeError Traceback (most recent call last)
in ()
----> 1 import cytoflow as flow

//anaconda/lib/python2.7/site-packages/cytoflow/init.py in ()
24 # basics
25 from .experiment import Experiment
---> 26 from .operations.import_op import ImportOp, Tube
27
28 # gates

//anaconda/lib/python2.7/site-packages/cytoflow/operations/init.py in ()
20
21 # gates
---> 22 from .threshold import ThresholdOp
23 from .range import RangeOp
24 from .range2d import Range2DOp

//anaconda/lib/python2.7/site-packages/cytoflow/operations/threshold.py in ()
28 from matplotlib.lines import Line2D
29
---> 30 import cytoflow.utility as util
31 import cytoflow.views
32

AttributeError: 'module' object has no attribute 'utility'

Install Error: No logicle.h file

Trying to install using pip on ubuntu 14.04. I get a fatal error:

cytoflow/utility/logicle_ext/FastLogicle.cpp:1:21: fatal error: logicle.h: No such file or directory

and the error:

Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-OiGqUZ/cytoflow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-RrwiKa-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-OiGqUZ/cytoflow/

I tried to build both 0.3.0 and 0.3.2 and experienced the same thing.

Histogram analysis

Hi,

This isn't an 'issue' as such, but rather a general inquiry:

We're looking for a scriptable tool that we can use for histogram analysis. We are working on plant polyploids, and need to determine the size of a sample peak relative to a co-chopped internal standard. We currently do this with ModFit, but would like to move to a system we can script & customize to our needs.

Does Cytoflow have this capacity? I see you can display univariate histograms, but can you fit models to the histograms too (debris, S-phase, and G1, G2, & aneuploid peaks)? If not, can you suggest other Python or R alternatives that can do this? I've checked through the Bioconductor packages. The closest I found was flowFit which deals specifically with proliferating cell lines, not quite what we are after, but close.

Thanks for your time,

Tyler

Import dialog - bad multiedit

When inputting a log number, then pressing the down arrow, then inputting another number, the top number updates.

Installation failed: no file logicle.h

Hi,

I'm trying to install cytoflow on Ubuntu 14.04 fully up-to-date.

"pip install cytoflow" fails with error:
cytoflow/utility/logicle_ext/FastLogicle.cpp:1:21: fatal error: logicle.h: No such file or directory

Thanks

Logicle CI for Mac OS

Consider releasing a the Logicle component continuously for Mac OS (and maybe even Linux) for users who can't install Swig.

BioCEL error: "same voltages"

When I try to follow the "small molecule induction curve with yeast" example using the data from BioCEL, I get the error "CytoflowError: Tube G2-Y_LitR-1_0uM_DOX_P3_015.fcs doesn't have the same voltages" when I enter the following:

inputs = {
"G2-Y_LitR-0_01uM_DOX_P3_011.fcs" : 0.01,
"G2-Y_LitR-0_10uM_DOX_P3_012.fcs" : 0.10,
"G2-Y_LitR-0_50uM_DOX_P3_013.fcs" : 0.50,
"G2-Y_LitR-0_75uM_DOX_P3_014.fcs" : 0.75,
"G2-Y_LitR-0uM_DOX_P3_010.fcs" : 0,
"G2-Y_LitR-1_0uM_DOX_P3_015.fcs" : 1.0,
}

tubes = []
for filename, dox in inputs.iteritems():
tubes.append(flow.Tube(file = filename, conditions = {'DOX' : dox}))

ex = flow.ImportOp(conditions = {'DOX' : "log"}, tubes = tubes).apply()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.