Comments (9)
One particular place in the code that needs 3D support is here: https://github.com/chanzuckerberg/starfish/blob/master/starfish/assign.py
The goal of this function is to assign 'spots' to 'cells'. The algorithm is a 2D point in polygon method based on ray tracing. This algorithm does not generalize readily to 3D data. What should the proper 3D implementation be?
from starfish.
Do you actually need point in polygon for assignment in 3D? It assumes that your polygon perfectly represents the cell which it hardly will so lots of transcripts that strictly do not meet the point-in-polygon requirements will be left out.
I have several examples of FISSEQ (2000-4000 amplicons per cell) with z-stack 30 steps (can share one FOV to the example data for this package if desirable). My current reasoning is however that affinity propagation clustering solves this better than point-in-polygon in 3D as well as 2D since for cases where the provided polygon is not a perfect description of the cell transcripts will be correctly assigned and also given a probability of membership to that cell.
The reason for why the probability of membership is important is because cross-linking of amplicons to tissue is not always perfect resulting in transcripts "floating around" in the tissue. If using strict point-in-polygon algorithm you will get high Poisson shot noise in your counts per cell making the analysis of low-expressing genes difficult. Being able to give different weight to transcripts based on the probability of membership is desirable.
Affinity propagation clustering:
http://www.psi.toronto.edu/affinitypropagation/FreyDueckScience07.pdf
http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AffinityPropagation.html
Now a point in polygon for 3D could be nice for other reasons and probably easiest to start with one for convex polyhedrons only.
from starfish.
#261 touches on some ideas that we could incorporate here.
from starfish.
@dganguli can you break this up into issues for specific algorithms?
from starfish.
After consultation with @shanaxel42 and @ttung, proposing the following...
Let's make sure that we support 3D where underlying algorithms support 3D, but we shouldn't develop new 3D algorithms.
Practically, as of 0.1.9, that means the following...
Target assignment and segmentation need 3D support, but we should NOT try to upgrade the 2D spot finders.
Then we close this issue :D
from starfish.
Which spotfinders are 2D and are the underlying algorithms also 2D-only?
from starfish.
LocalMaxPeakFinder, which wraps the 2D skimage.feature.peak_local_max
from starfish.
Thanks to @ttung for diving in and noting that I was wrong about LocalMaxPeakFinder (silly me for relying on our docs).
Details here: #1679
from starfish.
note from @ttung : waiting for skimage release
from starfish.
Related Issues (20)
- Quickstart and napari HOT 2
- Update open napari window? HOT 1
- Displaying example from data formatting tutorial HOT 3
- Include output in example notebooks HOT 2
- JOSS paper does not mention alternative tools
- JOSS MS comments HOT 1
- "ValueError: in1 and in2 should have the same dimensionality" when "is_volume=True" for Filter.DeconvolvePSF
- make install-dev got error
- 'Visualizing Data' tutorial crashes at viewer.add_image step HOT 3
- Tutorials making use of Napari should include screenshots of expected output. HOT 1
- Are the masks in the left in the tutorial really two cells? HOT 2
- JOSS paper should mention how starfish compares to the other available tools
- error importing scikit's 'match_histograms' HOT 2
- Link to raw data is not working HOT 2
- starfish is incompatible with Python 3.9 HOT 1
- AttributeError: 'DataArray' object has no attribute 'flags' in quick start run HOT 9
- Couldn't install without specifying an older version of scikit-image (0.17.2) HOT 5
- Update installation section in the README.rst and readthedocs.io
- ValueError when running BlobDetector HOT 2
- Unable to run dev install on Mac M2 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from starfish.