Skip to content

Python implementation of the Gaussian peak detection described in Segré et al. Nature Methods (2008).

License

Notifications You must be signed in to change notification settings

jonathan-fouchard/peak_detection

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

peak_detection - Gaussian Peak detection algorithm

Python implementation of the Gaussian peak detection described in Segré et al. Nature Methods (2008).

Contributors

peak_detection is part of the BNOI Project https://github.com/bnoi.

Dependence

  • Python 2.7 and Python 3
  • numpy >= 1.7
  • scipy >= 0.12
  • scikit-image >= 0.8
  • pandas >= 0.11
  • matplotlib (optional) >= 1.2

Installation

You can directly clone this repo and manually import peak_detection in your project. Or you can install peak_detection via pip:

pip install -e git+https://github.com/bnoi/peak_detection.git#egg=master

Usage example

from peak_detection import detect_peaks
from peak_detection import show_peaks

from tifffile import TiffFile

fname = 'sample.tif'

detection_parameters = {'w_s': 10,
                        'peak_radius': 4.,
                        'threshold': 60.,
                        'max_peaks': 10
                        }

sample = TiffFile(fname)
arr = sample.asarray()
peaks = detect_peaks(arr,
                     shape_label=('t', 'z', 'x', 'y'),
                     parallel=True,
                     **detection_parameters)
2013-06-28 19:52:38:INFO:peak_detection.detection: Parallel mode enabled: 5 cores will be used to process 9 stacks
2013-06-28 19:52:40:INFO:peak_detection.detection: Detection done for stack number 3: 4 peaks detected (1/9 - 11%)
2013-06-28 19:52:40:INFO:peak_detection.detection: Detection done for stack number 2: 3 peaks detected (2/9 - 22%)
2013-06-28 19:52:40:INFO:peak_detection.detection: Detection done for stack number 4: 5 peaks detected (3/9 - 33%)
2013-06-28 19:52:40:INFO:peak_detection.detection: Detection done for stack number 1: 2 peaks detected (4/9 - 44%)
2013-06-28 19:52:41:INFO:peak_detection.detection: Detection done for stack number 0: 1 peaks detected (5/9 - 55%)
2013-06-28 19:52:41:INFO:peak_detection.detection: Detection done for stack number 5: 6 peaks detected (6/9 - 66%)
2013-06-28 19:52:42:INFO:peak_detection.detection: Detection done for stack number 6: 7 peaks detected (7/9 - 77%)
2013-06-28 19:52:42:INFO:peak_detection.detection: Detection done for stack number 7: 8 peaks detected (8/9 - 88%)
2013-06-28 19:52:42:INFO:peak_detection.detection: Detection done for stack number 8: 9 peaks detected (9/9 - 100%)
2013-06-28 19:52:42:INFO:peak_detection.detection: Reordering stacks
2013-06-28 19:52:42:INFO:peak_detection.detection: Add original shape to DataFrame as columns. Shape = (3, 3, 54, 209)
2013-06-28 19:52:42:INFO:peak_detection.detection: Detection is done
2013-06-28 19:52:42:INFO:peak_detection.detection: 45 peaks detected in 9 stacks
# matplotlib is needed
show_peaks(arr, peaks, stack_id=3)

Outlined peaks

print(peaks)
                   x           y       w           I  t  z
stacks id
0      0   19.022877   28.102197  2.9038  195.396065  0  0
1      0   19.022877   28.102197  2.9038  195.396065  0  1
       1   25.022877  189.102197  2.9038  195.396065  0  1
2      0   14.022877  133.102197  2.9038  195.396065  0  2
       1   29.022877   44.102197  2.9038  195.396065  0  2
       2   29.022877   97.102197  2.9038  195.396065  0  2
3      0   19.022877   28.102197  2.9038  195.396065  1  0
       1   24.022877  132.102197  2.9038  195.396065  1  0
       2   24.022877  178.102197  2.9038  195.396065  1  0
       3   29.022877   79.102197  2.9038  195.396065  1  0
4      0   19.022877   27.102197  2.9038  195.396065  1  1
       1   26.022877  181.102197  2.9038  195.396065  1  1
       2   28.022877   80.102197  2.9038  195.396065  1  1
       3   28.022877  128.102197  2.9038  195.396065  1  1
       4   45.022877   43.102197  2.9038  195.396065  1  1
5      0   15.022877  147.102197  2.9038  195.396065  1  2
       1   17.022877   55.102197  2.9038  195.396065  1  2
       2   18.022877   88.102197  2.9038  195.396065  1  2
       3   27.022877   22.102197  2.9038  195.396065  1  2
       4   35.022877  122.102197  2.9038  195.396065  1  2
       5   38.022877   66.102197  2.9038  195.396065  1  2
6      0   14.022877  131.102197  2.9038  195.396065  2  0
       1   15.022877   75.102197  2.9038  195.396065  2  0
       2   32.022877   39.102197  2.9038  195.396065  2  0
       3   34.022877   99.102197  2.9038  195.396065  2  0
       4   36.022877   67.102197  2.9038  195.396065  2  0
       5   36.022877  157.102197  2.9038  195.396065  2  0
       6   37.022877  125.102197  2.9038  195.396065  2  0
7      0   14.022877  131.102197  2.9038  195.396065  2  1
       1   15.022877   75.102197  2.9038  195.396065  2  1
       2   16.022877  176.102197  2.9038  195.396065  2  1
       3   32.022877   39.102197  2.9038  195.396065  2  1
       4   34.022877   99.102197  2.9038  195.396065  2  1
       5   36.022877   67.102197  2.9038  195.396065  2  1
       6   36.022877  157.102197  2.9038  195.396065  2  1
       7   37.022877  125.102197  2.9038  195.396065  2  1
8      0   14.022877    8.102197  2.9038  195.396065  2  2
       1   14.022877  131.102197  2.9038  195.396065  2  2
       2   15.022877   75.102197  2.9038  195.396065  2  2
       3   16.022877  176.102197  2.9038  195.396065  2  2
       4   32.022877   39.102197  2.9038  195.396065  2  2
       5   34.022877   99.102197  2.9038  195.396065  2  2
       6   36.022877   67.102197  2.9038  195.396065  2  2
       7   36.022877  157.102197  2.9038  195.396065  2  2
       8   37.022877  125.102197  2.9038  195.396065  2  2

License

BSD license. See LICENSE for details.

About

Python implementation of the Gaussian peak detection described in Segré et al. Nature Methods (2008).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%