Example tracking analysis for ShuttleTracker

This notebook demonstrates how quantifications and tracks generated by ShuttleTracker (http://pmbm.ippt.pan.pl/software/shuttletracker) can be loaded, joined, and analyzed using the shuttletracker Python module. Below, it's shown how the module can be used to search for the most suspicious outliers among all tracks (→ section Reporting global outliers) or to scrutinize the tracks one-by-one (→ section Checking tracks individually), and how to obtain cell lineage (→ section Separate use of subroutines).

In [1]:
# Likely, you have just finished working on microscopic images.
# A dark theme in Jupyter may be easier on your eyes.
!pip3 install jupyterthemes
!${HOME}/.local/bin/jt -t monokai -fs 110 -tfs 12 -nfs 115 -ofs 11 -cellw 70% -T -f roboto
from jupyterthemes import jtplot
jtplot.style(theme='monokai', context='talk', fscale=1.45, spines=True, ticks=True)

Loading and joining tracks and quantifications

In [2]:
import shuttletracker
In [3]:
# Quantification files (*_quant.csv) and tracking files (tracks.csv, tracks_meta.csv)
# shoud be located in the below-specified folder.
my_dir = '../March26_WellB_Pos09'
delta_t = shuttletracker.read_time_interval(my_dir)
qtracks = shuttletracker.load_tracks(my_dir,
                                     ntracks=300,
                                     exclude_tracks_with_incomplete_nuclei=True)
Found 241 quantification file sets (nuc,per,img).
Found 425 tracks.
Merging 300 tracks with quantifications... done.
Excluding 80 tracks with incomplete nuclei... done.

Accessing quantifications along the track

In [4]:
# Print columns available in quantified tracks.
first_track_name, first_track_data, first_track_is_revised = qtracks[0]
print('\n'.join(first_track_data.keys()))
time_point_index
nuc_nucleus_id
nuc_area
nuc_masked_area
nuc_eccentricity
nuc_is_complete
nuc_center_x
nuc_center_y
nuc_NFkB_intensity_min
nuc_NFkB_intensity_max
nuc_NFkB_intensity_median
nuc_NFkB_intensity_quartile1
nuc_NFkB_intensity_quartile3
nuc_NFkB_intensity_mean
nuc_NFkB_intensity_stddev
nuc_NFkB_intensities_sum
nuc_H2B_intensity_min
nuc_H2B_intensity_max
nuc_H2B_intensity_median
nuc_H2B_intensity_quartile1
nuc_H2B_intensity_quartile3
nuc_H2B_intensity_mean
nuc_H2B_intensity_stddev
nuc_H2B_intensities_sum
per_area
per_NFkB_intensity_min
per_NFkB_intensity_max
per_NFkB_intensity_median
per_NFkB_intensity_quartile1
per_NFkB_intensity_quartile3
per_NFkB_intensity_mean
per_NFkB_intensity_stddev
per_NFkB_intensities_sum
per_H2B_intensity_min
per_H2B_intensity_max
per_H2B_intensity_median
per_H2B_intensity_quartile1
per_H2B_intensity_quartile3
per_H2B_intensity_mean
per_H2B_intensity_stddev
per_H2B_intensities_sum
img_area
img_area_masked
img_NFkB_intensity_min
img_NFkB_intensity_max
img_NFkB_intensity_median
img_NFkB_intensity_quartile1
img_NFkB_intensity_quartile3
img_NFkB_intensity_mean
img_NFkB_intensity_stddev
img_NFkB_intensities_sum
img_H2B_intensity_min
img_H2B_intensity_max
img_H2B_intensity_median
img_H2B_intensity_quartile1
img_H2B_intensity_quartile3
img_H2B_intensity_mean
img_H2B_intensity_stddev
img_H2B_intensities_sum
In [5]:
# For several tracks, plot a proxy of nuclear translocation based on available quantifications.
%matplotlib inline
import matplotlib.pyplot as plot
import matplotlib.ticker as ticker

n_curves = 30
skip_initial = 10
secs_per_min = 60
fig, ax = plot.subplots(figsize=(16, 5))
ax.set_xlabel('Time [min]')
ax.set_ylabel('Nuclear translocation of NF-κB')
ax.xaxis.set_major_locator(ticker.MultipleLocator(secs_per_min))

for track_name, q, is_revised in qtracks[skip_initial:skip_initial + n_curves]:
    x = q['time_point_index']*delta_t/secs_per_min
    y = q['nuc_NFkB_intensity_mean']/q['per_NFkB_intensity_mean']
    key = 'track ' + track_name
    ax.plot(x, y, label=key, linewidth=0.75)

Reporting global outliers

This mode of use aids priority fixing of the most outstanding errors in segmentation or tracking.

In [6]:
shuttletracker.inspect(qtracks)
Largest nuclear displacements [showing largest 30]:
  track 205 [@ time-point 203]: nucleus displacement of 17.0x median displacement
  track 68  [@ time-point  23]: nucleus displacement of 15.5x median displacement
  track 268 [@ time-point 158]: nucleus displacement of 14.7x median displacement
  track 104 [@ time-point  23]: nucleus displacement of 14.6x median displacement
  track 155 [@ time-point 158]: nucleus displacement of 14.5x median displacement
  track 71  [@ time-point 203]: nucleus displacement of 14.5x median displacement
  track 70  [@ time-point 116]: nucleus displacement of 14.4x median displacement
  track 216 [@ time-point 203]: nucleus displacement of 14.2x median displacement
  track 166 [@ time-point  68]: nucleus displacement of 14.0x median displacement
  track 50  [@ time-point  26]: nucleus displacement of 13.6x median displacement
  track 233 [@ time-point 116]: nucleus displacement of 13.1x median displacement
  track 65  [@ time-point  49]: nucleus displacement of 13.0x median displacement
  track 94  [@ time-point  68]: nucleus displacement of 12.9x median displacement
  track 56  [@ time-point  48]: nucleus displacement of 12.9x median displacement
  track 124 [@ time-point 136]: nucleus displacement of 12.9x median displacement
  track 130 [@ time-point 204]: nucleus displacement of 12.7x median displacement
  track 118 [@ time-point 113]: nucleus displacement of 12.7x median displacement
  track 60  [@ time-point 203]: nucleus displacement of 12.6x median displacement
  track 59  [@ time-point  45]: nucleus displacement of 12.4x median displacement
  track 103 [@ time-point 181]: nucleus displacement of 12.3x median displacement
  track 294 [@ time-point   1]: nucleus displacement of 12.2x median displacement
  track 54  [@ time-point 181]: nucleus displacement of 12.2x median displacement
  track 58  [@ time-point 139]: nucleus displacement of 12.1x median displacement
  track 130 [@ time-point 138]: nucleus displacement of 11.8x median displacement
  track 67  [@ time-point  26]: nucleus displacement of 11.8x median displacement
  track 166 [@ time-point  26]: nucleus displacement of 11.8x median displacement
  track 122 [@ time-point  68]: nucleus displacement of 11.7x median displacement
  track 71  [@ time-point 204]: nucleus displacement of 11.7x median displacement
  track 146 [@ time-point 158]: nucleus displacement of 11.6x median displacement
  track 51  [@ time-point 113]: nucleus displacement of 11.6x median displacement

Nuclear area drops [larger than 25.0%]:
  track 144 [@ time-point 139]: nucleus area -49.6%
  track 46  [@ time-point 227]: nucleus area -48.7%
  track 115 [@ time-point  21]: nucleus area -47.1%
  track 254 [@ time-point  21]: nucleus area -46.4%
  track 135 [@ time-point 129]: nucleus area -46.1%
  track 105 [@ time-point   7]: nucleus area -46.0%
  track 74  [@ time-point  57]: nucleus area -45.9%
  track 146 [@ time-point 158]: nucleus area -45.5%
  track 215 [@ time-point 202]: nucleus area -45.5%
  track 103 [@ time-point  90]: nucleus area -45.2%
  track 45  [@ time-point 174]: nucleus area -45.1%
  track 224 [@ time-point 161]: nucleus area -45.0%
  track 185 [@ time-point 170]: nucleus area -44.8%
  track 45  [@ time-point 168]: nucleus area -44.4%
  track 228 [@ time-point  33]: nucleus area -44.2%
  track 147 [@ time-point 142]: nucleus area -44.1%
  track 63  [@ time-point  28]: nucleus area -44.0%
  track 234 [@ time-point 208]: nucleus area -43.9%
  track 224 [@ time-point 169]: nucleus area -43.3%
  track 72  [@ time-point  39]: nucleus area -43.0%
  track 130 [@ time-point 205]: nucleus area -42.7%
  track 52  [@ time-point 214]: nucleus area -42.2%
  track 52  [@ time-point 210]: nucleus area -42.2%
  track 74  [@ time-point  66]: nucleus area -42.1%
  track 224 [@ time-point 183]: nucleus area -42.1%
  track 224 [@ time-point 180]: nucleus area -42.0%
  track 74  [@ time-point  72]: nucleus area -41.8%
  track 190 [@ time-point  64]: nucleus area -41.7%
  track 228 [@ time-point  34]: nucleus area -41.6%
  track 269 [@ time-point 161]: nucleus area -40.8%
  track 157 [@ time-point 110]: nucleus area -40.7%
  track 74  [@ time-point  79]: nucleus area -40.3%
  track 112 [@ time-point  68]: nucleus area -39.2%
  track 294 [@ time-point   4]: nucleus area -37.5%
  track 254 [@ time-point  19]: nucleus area -37.1%
  track 266 [@ time-point   6]: nucleus area -36.9%
  track 234 [@ time-point 213]: nucleus area -36.5%
  track 156 [@ time-point  33]: nucleus area -36.4%
  track 145 [@ time-point 208]: nucleus area -35.3%
  track 241 [@ time-point 189]: nucleus area -35.2%
  track 112 [@ time-point  71]: nucleus area -35.0%
  track 92  [@ time-point 171]: nucleus area -34.1%
  track 156 [@ time-point  27]: nucleus area -31.9%
  track 86  [@ time-point 203]: nucleus area -31.8%
  track 145 [@ time-point 209]: nucleus area -30.4%
  track 179 [@ time-point  79]: nucleus area -29.8%
  track 35  [@ time-point 195]: nucleus area -29.6%
  track 46  [@ time-point 220]: nucleus area -29.4%
  track 63  [@ time-point  23]: nucleus area -28.3%
  track 202 [@ time-point 206]: nucleus area -28.3%
  track 42  [@ time-point  68]: nucleus area -27.6%
  track 128 [@ time-point 121]: nucleus area -27.2%
  track 94  [@ time-point   8]: nucleus area -27.0%
  track 202 [@ time-point 217]: nucleus area -26.8%
  track 85  [@ time-point 207]: nucleus area -26.8%
  track 254 [@ time-point   6]: nucleus area -26.7%
  track 256 [@ time-point 235]: nucleus area -26.3%
  track 72  [@ time-point  35]: nucleus area -25.8%

Nuclear area surges [larger than 25.0%]:
  track 89  [@ time-point  45]: nucleus area +185.1%
  track 234 [@ time-point 207]: nucleus area +165.6%
  track 266 [@ time-point   3]: nucleus area +162.2%
  track 52  [@ time-point 215]: nucleus area +160.1%
  track 74  [@ time-point  58]: nucleus area +90.3%
  track 224 [@ time-point 196]: nucleus area +88.7%
  track 224 [@ time-point 160]: nucleus area +88.0%
  track 128 [@ time-point 145]: nucleus area +84.3%
  track 74  [@ time-point   1]: nucleus area +82.3%
  track 74  [@ time-point  78]: nucleus area +82.0%
  track 224 [@ time-point 182]: nucleus area +77.7%
  track 224 [@ time-point 177]: nucleus area +77.7%
  track 224 [@ time-point 164]: nucleus area +74.0%
  track 74  [@ time-point  71]: nucleus area +72.9%
  track 74  [@ time-point  81]: nucleus area +71.3%
  track 112 [@ time-point  72]: nucleus area +69.7%
  track 234 [@ time-point 212]: nucleus area +69.0%
  track 254 [@ time-point  22]: nucleus area +59.7%
  track 112 [@ time-point  70]: nucleus area +58.7%
  track 154 [@ time-point  48]: nucleus area +54.9%
  track 251 [@ time-point 214]: nucleus area +48.4%
  track 157 [@ time-point 111]: nucleus area +47.3%
  track 89  [@ time-point  46]: nucleus area +46.9%
  track 115 [@ time-point  13]: nucleus area +44.2%
  track 202 [@ time-point 208]: nucleus area +42.8%
  track 157 [@ time-point 112]: nucleus area +42.2%
  track 81  [@ time-point  28]: nucleus area +39.5%
  track 202 [@ time-point 205]: nucleus area +37.8%
  track 128 [@ time-point  21]: nucleus area +37.4%
  track 94  [@ time-point  19]: nucleus area +36.1%
  track 94  [@ time-point   9]: nucleus area +35.8%
  track 130 [@ time-point 204]: nucleus area +33.3%
  track 112 [@ time-point  32]: nucleus area +33.0%
  track 89  [@ time-point  48]: nucleus area +33.0%
  track 94  [@ time-point   5]: nucleus area +31.8%
  track 52  [@ time-point 211]: nucleus area +31.3%
  track 52  [@ time-point 212]: nucleus area +31.2%
  track 128 [@ time-point 118]: nucleus area +30.7%
  track 256 [@ time-point 236]: nucleus area +30.6%
  track 94  [@ time-point   1]: nucleus area +30.5%
  track 256 [@ time-point 230]: nucleus area +30.3%
  track 254 [@ time-point   9]: nucleus area +30.2%
  track 112 [@ time-point  46]: nucleus area +29.8%
  track 27  [@ time-point 227]: nucleus area +29.4%
  track 128 [@ time-point 133]: nucleus area +28.8%
  track 256 [@ time-point 238]: nucleus area +28.4%
  track 27  [@ time-point  48]: nucleus area +27.8%
  track 52  [@ time-point 200]: nucleus area +27.7%
  track 128 [@ time-point 147]: nucleus area +27.2%
  track 52  [@ time-point 227]: nucleus area +25.8%
  track 112 [@ time-point  42]: nucleus area +25.4%
  track 27  [@ time-point  54]: nucleus area +25.0%

Possible track mergers [showing at most best 50]:
  match: [183:195] @ track 286 -&- track 219 @ [197:240]  gap: 1  displacement: 1.4  lengths: 13+ 44
  match: [142:156] @ track 281 -&- track 170 @ [157:240]  gap: 0  displacement: 2.9  lengths: 15+ 84
  match: [  0: 24] @ track 254 -&- track 81  @ [ 27:240]  gap: 2  displacement: 4.5  lengths: 25+214

Inferred cell division events:
  track 124 [@ time point 160] --> track 180 [@161] -&- track 182 [@162]
  track 128 [@ time point 147] --> track 224 [@157] -&- track 169 [@153]
  track 131 [@ time point 121] --> track 135 [@122] -&- track 143 [@129]
  track 134 [@ time point 119] --> track 133 [@120] -&- track 132 [@120]
  track 190 [@ time point  69] --> track 100 [@ 70] -&- track 101 [@ 70]
  track 224 [@ time point 196] --> track 218 [@197] -&- track 219 [@197]
  track 241 [@ time point 194] --> track 244 [@195] -&- track 245 [@195]
  track 263 [@ time point 155] --> track 269 [@156] -&- track 181 [@161]
  track 266 [@ time point  19] --> track 157 [@ 21] -&- track 128 [@ 20]
  track 286 [@ time point 195] --> track 219 [@197] -&- track 218 [@197]
  track 294 [@ time point   9] --> track 187 [@ 10] -&- track 129 [@ 10]

Checking tracks individually

This mode is useful for revising tracks one-by-one in conjunction with viewing them in ShuttleTracker. The call to inspect() is still exposed in API to allow changing default assessment parameters.

In [7]:
inspection = shuttletracker.inspect(qtracks, print_results=False)
shuttletracker.print_inspection_per_track(qtracks, inspection)
Track 2 -- OK (but NOT revised)

Track 3 -- OK (but NOT revised)

Track 4 -- OK (but NOT revised)

Track 5 -- OK (but NOT revised)

Track 6 -- OK (but NOT revised)

Track 7 -- OK (but NOT revised)

Track 8 -- OK (but NOT revised)

Track 9 -- OK (but NOT revised)

Track 10 -- OK (but NOT revised)

Track 11 -- OK (but NOT revised)

Track 12 -- OK (but NOT revised)

Track 13 -- OK (but NOT revised)

Track 15 -- OK (but NOT revised)

Track 16 -- OK (but NOT revised)

Track 17 -- OK (but NOT revised)

Track 18 -- OK (but NOT revised)

Track 19 -- OK (but NOT revised)

Track 20 -- OK (but NOT revised)

Track 21 -- OK (but NOT revised)

Track 23 -- OK (but NOT revised)

Track 24 -- OK (but NOT revised)

Track 25 -- OK (but NOT revised)

Track 26 -- OK (but NOT revised)

Track 27:
  @ time point 227: nucleus area change (+29.4%)
  @ time point 48: nucleus area change (+27.8%)
  @ time point 54: nucleus area change (+25.0%)
  NOT revised.

Track 28 -- OK (but NOT revised)

Track 29 -- OK (but NOT revised)

Track 30 -- OK (but NOT revised)

Track 32 -- OK (but NOT revised)

Track 33 -- OK (but NOT revised)

Track 34 -- OK (but NOT revised)

Track 35:
  @ time point 195: nucleus area change (-29.6%)
  NOT revised.

Track 36 -- OK (but NOT revised)

Track 37 -- OK (but NOT revised)

Track 38 -- OK (but NOT revised)

Track 39 -- OK (but NOT revised)

Track 40 -- OK (but NOT revised)

Track 41 -- OK (but NOT revised)

Track 42:
  @ time point 68: nucleus area change (-27.6%)
  NOT revised.

Track 43 -- OK (but NOT revised)

Track 44 -- OK (but NOT revised)

Track 45:
  @ time point 168: nucleus area change (-44.4%)
  @ time point 174: nucleus area change (-45.1%)
  NOT revised.

Track 46:
  @ time point 220: nucleus area change (-29.4%)
  @ time point 227: nucleus area change (-48.7%)
  NOT revised.

Track 47 -- OK (but NOT revised)

Track 48 -- OK (but NOT revised)

Track 49 -- OK (but NOT revised)

Track 50:
  @ time point 26: nucleus displacement (13.6x median)
  NOT revised.

Track 51:
  @ time point 113: nucleus displacement (11.6x median)
  NOT revised.

Track 52:
  @ time point 200: nucleus area change (+27.7%)
  @ time point 210: nucleus area change (-42.2%)
  @ time point 211: nucleus area change (+31.3%)
  @ time point 212: nucleus area change (+31.2%)
  @ time point 214: nucleus area change (-42.2%)
  @ time point 215: nucleus area change (+160.1%)
  @ time point 227: nucleus area change (+25.8%)
  NOT revised.

Track 53 -- OK (but NOT revised)

Track 54:
  @ time point 181: nucleus displacement (12.2x median)
  NOT revised.

Track 55 -- OK (but NOT revised)

Track 56:
  @ time point 48: nucleus displacement (12.9x median)
  NOT revised.

Track 57 -- OK (but NOT revised)

Track 58:
  @ time point 139: nucleus displacement (12.1x median)
  NOT revised.

Track 59:
  @ time point 45: nucleus displacement (12.4x median)
  NOT revised.

Track 60:
  @ time point 203: nucleus displacement (12.6x median)
  NOT revised.

Track 61 -- OK (but NOT revised)

Track 62 -- OK (but NOT revised)

Track 63:
  @ time point 23: nucleus area change (-28.3%)
  @ time point 28: nucleus area change (-44.0%)
  NOT revised.

Track 64 -- OK (but NOT revised)

Track 65:
  @ time point 49: nucleus displacement (13.0x median)
  NOT revised.

Track 66 -- OK (but NOT revised)

Track 67:
  @ time point 26: nucleus displacement (11.8x median)
  NOT revised.

Track 68:
  @ time point 23: nucleus displacement (15.5x median)
  NOT revised.

Track 70:
  @ time point 116: nucleus displacement (14.4x median)
  NOT revised.

Track 71:
  @ time point 203: nucleus displacement (14.5x median)
  @ time point 204: nucleus displacement (11.7x median)
  NOT revised.

Track 72:
  @ time point 35: nucleus area change (-25.8%)
  @ time point 39: nucleus area change (-43.0%)
  NOT revised.

Track 74:
  @ time point 1: nucleus area change (+82.3%)
  @ time point 57: nucleus area change (-45.9%)
  @ time point 58: nucleus area change (+90.3%)
  @ time point 66: nucleus area change (-42.1%)
  @ time point 71: nucleus area change (+72.9%)
  @ time point 72: nucleus area change (-41.8%)
  @ time point 78: nucleus area change (+82.0%)
  @ time point 79: nucleus area change (-40.3%)
  @ time point 81: nucleus area change (+71.3%)
  NOT revised.

Track 75 -- OK (but NOT revised)

Track 76 -- OK (but NOT revised)

Track 78 -- OK (but NOT revised)

Track 79 -- OK (but NOT revised)

Track 80 -- OK (but NOT revised)

Track 81:
  @ time point 28: nucleus area change (+39.5%)
  Likely, a continuation of track 254
  NOT revised.

Track 82 -- OK (but NOT revised)

Track 83 -- OK (but NOT revised)

Track 84 -- OK (but NOT revised)

Track 85:
  @ time point 207: nucleus area change (-26.8%)
  NOT revised.

Track 86:
  @ time point 203: nucleus area change (-31.8%)
  NOT revised.

Track 87 -- OK (but NOT revised)

Track 88 -- OK (but NOT revised)

Track 89:
  @ time point 45: nucleus area change (+185.1%)
  @ time point 46: nucleus area change (+46.9%)
  @ time point 48: nucleus area change (+33.0%)
  NOT revised.

Track 91 -- OK (but NOT revised)

Track 92:
  @ time point 171: nucleus area change (-34.1%)
  NOT revised.

Track 93 -- OK (but NOT revised)

Track 94:
  @ time point 19: nucleus area change (+36.1%)
  @ time point 1: nucleus area change (+30.5%)
  @ time point 5: nucleus area change (+31.8%)
  @ time point 68: nucleus displacement (12.9x median)
  @ time point 8: nucleus area change (-27.0%)
  @ time point 9: nucleus area change (+35.8%)
  NOT revised.

Track 95 -- OK (but NOT revised)

Track 96 -- OK (but NOT revised)

Track 98 -- OK (but NOT revised)

Track 99 -- OK (but NOT revised)

Track 100:
  Daughter of track 190 (division @ time point 69)
  NOT revised.

Track 101:
  Daughter of track 190 (division @ time point 69)
  NOT revised.

Track 102 -- OK (but NOT revised)

Track 103:
  @ time point 181: nucleus displacement (12.3x median)
  @ time point 90: nucleus area change (-45.2%)
  NOT revised.

Track 104:
  @ time point 23: nucleus displacement (14.6x median)
  NOT revised.

Track 105:
  @ time point 7: nucleus area change (-46.0%)
  NOT revised.

Track 110 -- OK (but NOT revised)

Track 112:
  @ time point 32: nucleus area change (+33.0%)
  @ time point 42: nucleus area change (+25.4%)
  @ time point 46: nucleus area change (+29.8%)
  @ time point 68: nucleus area change (-39.2%)
  @ time point 70: nucleus area change (+58.7%)
  @ time point 71: nucleus area change (-35.0%)
  @ time point 72: nucleus area change (+69.7%)
  NOT revised.

Track 113 -- OK (but NOT revised)

Track 115:
  @ time point 13: nucleus area change (+44.2%)
  @ time point 21: nucleus area change (-47.1%)
  NOT revised.

Track 116 -- OK (but NOT revised)

Track 117 -- OK (but NOT revised)

Track 118:
  @ time point 113: nucleus displacement (12.7x median)
  NOT revised.

Track 119 -- OK (but NOT revised)

Track 121 -- OK (but NOT revised)

Track 122:
  @ time point 68: nucleus displacement (11.7x median)
  NOT revised.

Track 123 -- OK (but NOT revised)

Track 124:
  @ time point 136: nucleus displacement (12.9x median)
  Parent of tracks 180 and 182 (division @ time point 160)
  NOT revised.

Track 125 -- OK (but NOT revised)

Track 127 -- OK (but NOT revised)

Track 128:
  @ time point 118: nucleus area change (+30.7%)
  @ time point 121: nucleus area change (-27.2%)
  @ time point 133: nucleus area change (+28.8%)
  @ time point 145: nucleus area change (+84.3%)
  @ time point 147: nucleus area change (+27.2%)
  @ time point 21: nucleus area change (+37.4%)
  Parent of tracks 224 and 169 (division @ time point 147)
  Daughter of track 266 (division @ time point 19)
  NOT revised.

Track 129:
  Daughter of track 294 (division @ time point 9)
  NOT revised.

Track 130:
  @ time point 138: nucleus displacement (11.8x median)
  @ time point 204: nucleus displacement (12.7x median)
  @ time point 204: nucleus area change (+33.3%)
  @ time point 205: nucleus area change (-42.7%)
  NOT revised.

Track 131:
  Parent of tracks 135 and 143 (division @ time point 121)
  NOT revised.

Track 132:
  Daughter of track 134 (division @ time point 119)
  NOT revised.

Track 133:
  Daughter of track 134 (division @ time point 119)
  NOT revised.

Track 134:
  Parent of tracks 133 and 132 (division @ time point 119)
  NOT revised.

Track 135:
  @ time point 129: nucleus area change (-46.1%)
  Daughter of track 131 (division @ time point 121)
  NOT revised.

Track 137 -- OK (but NOT revised)

Track 138 -- OK (but NOT revised)

Track 140 -- OK (but NOT revised)

Track 141 -- OK (but NOT revised)

Track 143:
  Daughter of track 131 (division @ time point 121)
  NOT revised.

Track 144:
  @ time point 139: nucleus area change (-49.6%)
  NOT revised.

Track 145:
  @ time point 208: nucleus area change (-35.3%)
  @ time point 209: nucleus area change (-30.4%)
  NOT revised.

Track 146:
  @ time point 158: nucleus displacement (11.6x median)
  @ time point 158: nucleus area change (-45.5%)
  NOT revised.

Track 147:
  @ time point 142: nucleus area change (-44.1%)
  NOT revised.

Track 149 -- OK (but NOT revised)

Track 150 -- OK (but NOT revised)

Track 151 -- OK (but NOT revised)

Track 152 -- OK (but NOT revised)

Track 153 -- OK (but NOT revised)

Track 154:
  @ time point 48: nucleus area change (+54.9%)
  NOT revised.

Track 155:
  @ time point 158: nucleus displacement (14.5x median)
  NOT revised.

Track 156:
  @ time point 27: nucleus area change (-31.9%)
  @ time point 33: nucleus area change (-36.4%)
  NOT revised.

Track 157:
  @ time point 110: nucleus area change (-40.7%)
  @ time point 111: nucleus area change (+47.3%)
  @ time point 112: nucleus area change (+42.2%)
  Daughter of track 266 (division @ time point 19)
  NOT revised.

Track 158 -- OK (but NOT revised)

Track 159 -- OK (but NOT revised)

Track 160 -- OK (but NOT revised)

Track 166:
  @ time point 26: nucleus displacement (11.8x median)
  @ time point 68: nucleus displacement (14.0x median)
  NOT revised.

Track 169:
  Daughter of track 128 (division @ time point 147)
  NOT revised.

Track 170:
  Likely, a continuation of track 281
  NOT revised.

Track 172 -- OK (but NOT revised)

Track 176 -- OK (but NOT revised)

Track 178 -- OK (but NOT revised)

Track 179:
  @ time point 79: nucleus area change (-29.8%)
  NOT revised.

Track 180:
  Daughter of track 124 (division @ time point 160)
  NOT revised.

Track 181:
  Daughter of track 263 (division @ time point 155)
  NOT revised.

Track 182:
  Daughter of track 124 (division @ time point 160)
  NOT revised.

Track 183 -- OK (but NOT revised)

Track 185:
  @ time point 170: nucleus area change (-44.8%)
  NOT revised.

Track 186 -- OK (but NOT revised)

Track 187:
  Daughter of track 294 (division @ time point 9)
  NOT revised.

Track 188 -- OK (but NOT revised)

Track 190:
  @ time point 64: nucleus area change (-41.7%)
  Parent of tracks 100 and 101 (division @ time point 69)
  NOT revised.

Track 191 -- OK (but NOT revised)

Track 192 -- OK (but NOT revised)

Track 197 -- OK (but NOT revised)

Track 198 -- OK (but NOT revised)

Track 199 -- OK (but NOT revised)

Track 200 -- OK (but NOT revised)

Track 202:
  @ time point 205: nucleus area change (+37.8%)
  @ time point 206: nucleus area change (-28.3%)
  @ time point 208: nucleus area change (+42.8%)
  @ time point 217: nucleus area change (-26.8%)
  NOT revised.

Track 203 -- OK (but NOT revised)

Track 205:
  @ time point 203: nucleus displacement (17.0x median)
  NOT revised.

Track 207 -- OK (but NOT revised)

Track 209 -- OK (but NOT revised)

Track 212 -- OK (but NOT revised)

Track 213 -- OK (but NOT revised)

Track 214 -- OK (but NOT revised)

Track 215:
  @ time point 202: nucleus area change (-45.5%)
  NOT revised.

Track 216:
  @ time point 203: nucleus displacement (14.2x median)
  NOT revised.

Track 218:
  Daughter of track 286 (division @ time point 195)
  Daughter of track 224 (division @ time point 196)
  NOT revised.

Track 219:
  Daughter of track 286 (division @ time point 195)
  Daughter of track 224 (division @ time point 196)
  Likely, a continuation of track 286
  NOT revised.

Track 221 -- OK (but NOT revised)

Track 224:
  @ time point 160: nucleus area change (+88.0%)
  @ time point 161: nucleus area change (-45.0%)
  @ time point 164: nucleus area change (+74.0%)
  @ time point 169: nucleus area change (-43.3%)
  @ time point 177: nucleus area change (+77.7%)
  @ time point 180: nucleus area change (-42.0%)
  @ time point 182: nucleus area change (+77.7%)
  @ time point 183: nucleus area change (-42.1%)
  @ time point 196: nucleus area change (+88.7%)
  Daughter of track 128 (division @ time point 147)
  Parent of tracks 218 and 219 (division @ time point 196)
  NOT revised.

Track 227 -- OK (but NOT revised)

Track 228:
  @ time point 33: nucleus area change (-44.2%)
  @ time point 34: nucleus area change (-41.6%)
  NOT revised.

Track 232 -- OK (but NOT revised)

Track 233:
  @ time point 116: nucleus displacement (13.1x median)
  NOT revised.

Track 234:
  @ time point 207: nucleus area change (+165.6%)
  @ time point 208: nucleus area change (-43.9%)
  @ time point 212: nucleus area change (+69.0%)
  @ time point 213: nucleus area change (-36.5%)
  NOT revised.

Track 235 -- OK (but NOT revised)

Track 240 -- OK (but NOT revised)

Track 241:
  @ time point 189: nucleus area change (-35.2%)
  Parent of tracks 244 and 245 (division @ time point 194)
  NOT revised.

Track 244:
  Daughter of track 241 (division @ time point 194)
  NOT revised.

Track 245:
  Daughter of track 241 (division @ time point 194)
  NOT revised.

Track 246 -- OK (but NOT revised)

Track 248 -- OK (but NOT revised)

Track 249 -- OK (but NOT revised)

Track 251:
  @ time point 214: nucleus area change (+48.4%)
  NOT revised.

Track 252 -- OK (but NOT revised)

Track 253 -- OK (but NOT revised)

Track 254:
  @ time point 19: nucleus area change (-37.1%)
  @ time point 21: nucleus area change (-46.4%)
  @ time point 22: nucleus area change (+59.7%)
  @ time point 6: nucleus area change (-26.7%)
  @ time point 9: nucleus area change (+30.2%)
  Likely, could be continued as track 81
  NOT revised.

Track 256:
  @ time point 230: nucleus area change (+30.3%)
  @ time point 235: nucleus area change (-26.3%)
  @ time point 236: nucleus area change (+30.6%)
  @ time point 238: nucleus area change (+28.4%)
  NOT revised.

Track 257 -- OK (but NOT revised)

Track 259 -- OK (but NOT revised)

Track 260 -- OK (but NOT revised)

Track 261 -- OK (but NOT revised)

Track 262 -- OK (but NOT revised)

Track 263:
  Parent of tracks 269 and 181 (division @ time point 155)
  NOT revised.

Track 264 -- OK (but NOT revised)

Track 266:
  @ time point 3: nucleus area change (+162.2%)
  @ time point 6: nucleus area change (-36.9%)
  Parent of tracks 157 and 128 (division @ time point 19)
  NOT revised.

Track 267 -- OK (but NOT revised)

Track 268:
  @ time point 158: nucleus displacement (14.7x median)
  NOT revised.

Track 269:
  @ time point 161: nucleus area change (-40.8%)
  Daughter of track 263 (division @ time point 155)
  NOT revised.

Track 271 -- OK (but NOT revised)

Track 273 -- OK (but NOT revised)

Track 275 -- OK (but NOT revised)

Track 276 -- OK (but NOT revised)

Track 277 -- OK (but NOT revised)

Track 280 -- OK (but NOT revised)

Track 281:
  Likely, could be continued as track 170
  NOT revised.

Track 282 -- OK (but NOT revised)

Track 283 -- OK (but NOT revised)

Track 284 -- OK (but NOT revised)

Track 286:
  Parent of tracks 219 and 218 (division @ time point 195)
  Likely, could be continued as track 219
  NOT revised.

Track 289 -- OK (but NOT revised)

Track 290 -- OK (but NOT revised)

Track 292 -- OK (but NOT revised)

Track 294:
  @ time point 1: nucleus displacement (12.2x median)
  @ time point 4: nucleus area change (-37.5%)
  Parent of tracks 187 and 129 (division @ time point 9)
  NOT revised.

Track 298 -- OK (but NOT revised)

Separate use of subroutines

Functions called by inspect() can be used separetly. You can then set individual parameter values and store results in a variable.

In [8]:
from shuttletracker import read_time_interval
from shuttletracker import load_tracks
from shuttletracker import check_displacements_sanity
from shuttletracker import check_nuclear_area_consistency
from shuttletracker import suggest_merging
from shuttletracker import infer_cell_divisions

divs = infer_cell_divisions(qtracks, min_time_points_sep=1,
                                     max_time_points_sep=8,
                                     max_displacement_in_median_displacements_sq_per_step=7**2,
                                     skip_tracks_shorter_than_n_timepoints=2,
                                     print_results=False)
for parent_track, (division_frame_index, daughter1_track, daughter2_track) in divs.items():
    print(f'{parent_track} --@time_frame:{division_frame_index}--< '
          f'{daughter1_track}, {daughter2_track}')
286 --@time_frame:195--< 219, 218
224 --@time_frame:196--< 218, 219
294 --@time_frame:9--< 187, 129
134 --@time_frame:119--< 133, 132
190 --@time_frame:69--< 100, 101
241 --@time_frame:194--< 244, 245
131 --@time_frame:121--< 135, 143
263 --@time_frame:155--< 269, 181
266 --@time_frame:19--< 157, 128