from pathlib import Path
import utils
import trackmate_utils
import holoviews as hv
import panel as pn
pn.extension('tabulator')
hv.extension('bokeh')
import numpy as np
1. Exploring Metric & Merged Tracks¶
Define data paths for data and configs. Using the utils.run_analysis()
method we get a segmentation map and TrackMate results.
from pathlib import Path
import pandas as pd
import utils
import trackmate_utils
base_data_path = Path(r"data/fucci_60_frames")
red_stack_path = base_data_path / "red.tif"
green_stack_path = base_data_path / "green.tif"
base_model_path = Path(r"models")
red_segmentation_model = base_model_path / "cellpose/nuclei_red_v2"
green_segmentation_model = base_model_path / "cellpose/nuclei_green_v2"
red_segmentation_map = utils.read_stack(base_data_path / "red_segmented.tiff")
green_segmentation_map = utils.read_stack(base_data_path / "green_segmented.tiff")
tm_red = trackmate_utils.TrackmateXML(base_data_path / "red_segmented.tiff.xml")
tm_green = trackmate_utils.TrackmateXML(base_data_path / "green_segmented.tiff.xml")
red_stack = utils.read_stack(base_data_path / "red.tif")
green_stack = utils.read_stack(base_data_path / "green.tif")
# metric = trackmate_utils.CartesianSimilarity(tm_red, tm_green)
# metric_df = metric.calculate_metric_for_all_tracks()
# metric_df.to_hdf(base_data_path / "metric.h5", key="metric")
metric_df = pd.read_hdf(base_data_path / "metric.h5", key="metric")
metric = trackmate_utils.CartesianSimilarityFromFile(tm_red, tm_green, metric_df)
print(f'we have {len(tm_red.tracks.TrackID.unique())} red, {len(tm_green.tracks.TrackID.unique())} green tracks')
we have 145 red, 72 green tracks
2. Measure Flouresence Over Time¶
Add plot
%load_ext autoreload
%autoreload 2
metric_df.query('2 < metric < 10')
red_track | green_track | metric | |
---|---|---|---|
29 | 30 | 21 | 2.004808 |
30 | 3 | 52 | 2.027253 |
31 | 22 | 59 | 2.470495 |
32 | 15 | 66 | 2.984784 |
33 | 55 | 63 | 3.131836 |
34 | 43 | 19 | 6.059927 |
valid_tracks = metric_df.query('metric < 2.1')
valid_tracks.describe()
red_track | green_track | metric | |
---|---|---|---|
count | 31.000000 | 31.000000 | 31.000000 |
mean | 36.580645 | 31.967742 | 1.513820 |
std | 21.734418 | 19.147644 | 0.295953 |
min | 0.000000 | 0.000000 | 1.018302 |
25% | 24.500000 | 17.000000 | 1.208442 |
50% | 34.000000 | 35.000000 | 1.515348 |
75% | 53.500000 | 47.500000 | 1.754014 |
max | 71.000000 | 62.000000 | 2.027253 |
excluded_tracks = pd.concat([valid_tracks.query('red_track == @r and green_track == @g') for r,g in ((53,62),(6,14),(71, 31),(24, 27),(19, 9))]).index
valid_tracks = valid_tracks.drop(excluded_tracks)
valid_tracks.describe()
red_track | green_track | metric | |
---|---|---|---|
count | 26.000000 | 26.000000 | 26.000000 |
mean | 36.961538 | 32.615385 | 1.523143 |
std | 21.270601 | 19.193909 | 0.297460 |
min | 0.000000 | 0.000000 | 1.018302 |
25% | 28.250000 | 20.250000 | 1.227805 |
50% | 34.500000 | 38.000000 | 1.515829 |
75% | 53.250000 | 47.750000 | 1.750306 |
max | 70.000000 | 58.000000 | 2.027253 |
track = valid_tracks.iloc[0]
track
red_track 32.000000 green_track 40.000000 metric 1.018302 Name: 0, dtype: float64
merged_track = metric.merge_tracks(32,40)
merged_track
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | ELLIPSE_MAJOR | ELLIPSE_MINOR | color | source_track | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 736 | 0 | 65.728445 | 202.089107 | 116.11824370003114 | 26 | 866.0 | [(1.7715550423402533, 14.41089299461126), (3.7... | POLYGON ((68 217, 70 216, 72 216, 73 215, 75 2... | 20.291765089571808 | 13.70531505224533 | red | red |
1 | 760 | 1 | 71.391949 | 196.740581 | 115.39641876807232 | 23 | 871.5 | [(14.108051252629565, 14.759418626888504), (14... | POLYGON ((86 212, 86 210, 88 209, 90 206, 91 2... | 21.374369189708005 | 13.399444522800408 | red | red |
2 | 494 | 2 | 71.042601 | 189.803625 | 120.58961482031928 | 23 | 892.0 | [(11.45739910313901, 16.69637518684604), (12.4... | POLYGON ((83 207, 84 205, 86 205, 86 203, 88 2... | 20.40135288822979 | 13.965682099487488 | red | red |
3 | 391 | 3 | 74.068707 | 186.231001 | 116.3744297518984 | 21 | 857.5 | [(11.43129251700681, 16.26899902818269), (12.4... | POLYGON ((86 203, 87 201, 89 201, 90 199, 91 1... | 20.399578962898765 | 14.070220428457475 | red | red |
4 | 444 | 4 | 82.523703 | 180.657591 | 114.95010692219705 | 27 | 780.5 | [(11.97629724535554, 15.842408712363863), (15.... | POLYGON ((95 197, 99 190, 100 188, 100 184, 10... | 20.334182996872435 | 12.662916516494565 | red | red |
5 | 339 | 5 | 91.56938 | 176.723927 | 107.8440407924095 | 26 | 749.5 | [(8.930620413609077, 15.776072937513874), (11.... | POLYGON ((101 193, 104 191, 106 190, 107 188, ... | 19.75199745076159 | 12.34746985943662 | red | red |
6 | 1599 | 6 | 99.556633 | 171.751282 | 108.24163657932809 | 27 | 747.5 | [(6.943366778149397, 15.748717948717967), (8.9... | POLYGON ((107 188, 109 187, 111 187, 112 186, ... | 19.572237562684293 | 12.616880908415732 | red | red |
7 | 771 | 7 | 111.74149 | 168.659517 | 111.0764782026885 | 29 | 827.5 | [(9.758509566968783, 16.840483383685807), (13.... | POLYGON ((122 186, 126 182, 128 181, 130 177, ... | 21.12904241487818 | 12.862358732803552 | red | red |
8 | 2107 | 8 | 118.414195 | 170.740411 | 109.3563041130157 | 29 | 843.0 | [(3.085804665875841, 17.75958877026494), (5.08... | POLYGON ((122 189, 124 188, 126 188, 129 186, ... | 19.280903420341502 | 14.34783113238613 | red | red |
9 | 742 | 9 | 123.609063 | 172.62404 | 111.3521091648572 | 27 | 868.0 | [(6.890937019969272, 18.875960061443948), (11.... | POLYGON ((131 192, 136 186, 138 185, 138 183, ... | 20.297499900252678 | 14.002487234289353 | red | red |
10 | 932 | 10 | 128.309751 | 174.805423 | 117.85407190410241 | 28 | 943.5 | [(5.1902490726020005, 21.69457692987106), (8.1... | POLYGON ((134 197, 137 194, 139 194, 140 192, ... | 21.883407857379485 | 13.993156941709945 | red | red |
11 | 926 | 11 | 132.018802 | 171.702995 | 119.41223997479155 | 22 | 979.5 | [(8.481197890079955, 19.797005274800057), (11.... | POLYGON ((141 192, 144 190, 146 189, 147 185, ... | 22.238618483986546 | 14.331585951373167 | red | red |
12 | 1088 | 12 | 138.011852 | 169.775298 | 123.72726948395658 | 24 | 1019.5 | [(7.488147784861837, 20.7247016511362), (10.48... | POLYGON ((146 191, 149 189, 151 188, 155 183, ... | 22.60726816764416 | 14.524438723918653 | red | red |
13 | 1231 | 13 | 142.618794 | 160.895712 | 122.58311404261416 | 22 | 1034.0 | [(7.881205673758842, 20.604287556415215), (8.8... | POLYGON ((151 182, 152 180, 154 180, 158 176, ... | 22.183475397887342 | 15.139483794105766 | red | red |
14 | 997 | 14 | 150.315073 | 148.52005 | 116.72921462019963 | 21 | 931.0 | [(5.184926602219832, 19.979949874686724), (7.1... | POLYGON ((156 169, 158 168, 159 167, 162 164, ... | 20.49377315803756 | 14.704651861993371 | red | red |
15 | 126 | 15 | 154.636106 | 146.383226 | 111.20916221628806 | 20 | 853.5 | [(5.8638937707479215, 19.116774067564933), (7.... | POLYGON ((161 166, 163 163, 164 161, 170 156, ... | 19.415746732400837 | 14.61030428827945 | red | red |
16 | 1255 | 16 | 162.668709 | 147.5103 | 117.57152710834744 | 23 | 938.5 | [(8.831291067305983, 17.98969987568816), (10.8... | POLYGON ((172 166, 174 165, 175 164, 178 161, ... | 21.00608140822603 | 14.636174866599342 | red | red |
17 | 1256 | 17 | 168.9485 | 150.571808 | 120.6614177273773 | 25 | 972.5 | [(8.551499571551005, 18.928191945158517), (11.... | POLYGON ((178 170, 181 167, 182 166, 184 166, ... | 21.168613687183537 | 15.042433876580322 | red | red |
18 | 921 | 18 | 174.48235 | 154.967305 | 120.29186150469945 | 22 | 991.5 | [(6.017650025214323, 18.532694570516043), (8.0... | POLYGON ((181 174, 183 173, 185 173, 188 171, ... | 21.530132238319275 | 14.743861682565539 | red | red |
19 | 62 | 19 | 178.590729 | 155.676407 | 116.45701582740757 | 26 | 924.0 | [(9.909271284271284, 16.82359307359306), (13.9... | POLYGON ((189 173, 193 169, 195 168, 197 164, ... | 20.892016825017176 | 14.52020993492408 | red | red |
20 | 1113 | 20 | 182.900713 | 156.213012 | 118.24709943782678 | 29 | 935.0 | [(9.599286987522305, 17.286987522281663), (12.... | POLYGON ((193 174, 196 171, 198 171, 199 169, ... | 20.43092323866347 | 14.789647338887233 | red | red |
21 | 155 | 21 | 185.487459 | 156.238095 | 119.41348240555209 | 28 | 917.0 | [(9.01254089422028, 18.26190476190476), (10.01... | POLYGON ((195 175, 196 173, 198 173, 199 171, ... | 20.582639699001785 | 14.42099676813598 | red | red |
22 | 153 | 22 | 192.547256 | 158.620088 | 118.48769254872398 | 29 | 984.0 | [(11.95274390243901, 17.879911924119256), (14.... | POLYGON ((205 177, 208 172, 210 171, 211 159, ... | 21.284755391810073 | 15.195173339653872 | red | red |
23 | 1195 | 23 | 197.982806 | 154.678331 | 118.8756897169512 | 26 | 964.5 | [(11.517193710039749, 17.821669258683244), (12... | POLYGON ((210 173, 211 171, 213 171, 214 169, ... | 21.43305300355499 | 14.710901953372462 | red | red |
24 | 1634 | 24 | 204.461785 | 155.853535 | 120.16909925048742 | 27 | 990.0 | [(8.038215488215485, 20.646464646464636), (14.... | POLYGON ((213 177, 219 172, 221 171, 221 165, ... | 22.072990112755598 | 14.570070673424956 | red | red |
25 | 1636 | 25 | 206.212968 | 152.10557 | 118.6064053696176 | 26 | 957.5 | [(4.2870322019147125, 19.39442993907744), (6.2... | POLYGON ((211 172, 213 171, 215 171, 218 169, ... | 20.542740181176683 | 14.964421416750909 | red | red |
26 | 1807 | 26 | 207.437396 | 137.793207 | 117.92703272504544 | 24 | 1001.0 | [(11.062604062604066, 17.706793206793208), (17... | POLYGON ((219 156, 225 151, 226 149, 226 141, ... | 21.24463148132436 | 15.371200487363355 | red | red |
27 | 1942 | 27 | 211.625281 | 128.103946 | 122.55025591783964 | 21 | 1039.0 | [(10.874719281360285, 17.396053897978817), (13... | POLYGON ((223 146, 226 143, 228 143, 229 141, ... | 21.601933255197757 | 15.689790281500299 | red | red |
28 | 2048 | 28 | 217.412929 | 115.897897 | 120.13888808576206 | 20 | 1014.5 | [(8.087070806637115, 16.602102842122548), (10.... | POLYGON ((226 133, 228 132, 229 131, 231 131, ... | 20.86133357675962 | 15.555337354387452 | red | red |
29 | 1341 | 29 | 213.428847 | 101.455485 | 116.33514833812384 | 18 | 951.0 | [(7.071153172099542, 15.044514546091833), (9.0... | POLYGON ((221 117, 223 116, 225 116, 227 116, ... | 20.98690323787094 | 14.670076341560621 | red | red |
30 | 2328 | 30 | 211.173929 | 88.751024 | 112.82286368397108 | 16 | 895.0 | [(1.326070763500951, 15.748975791433892), (3.3... | POLYGON ((213 105, 215 104, 216 103, 226 101, ... | 20.013190419211078 | 14.688402789364249 | red | red |
31 | 26 | 31 | 211.111431 | 82.658611 | 113.29503427027856 | 16 | 869.0 | [(8.388569236670492, 14.84138856923667), (11.3... | POLYGON ((220 98, 223 96, 225 95, 227 91, 229 ... | 19.285968730936283 | 14.544419262507274 | red | red |
32 | 564 | 32 | 213.140527 | 80.534086 | 106.52388923243727 | 16 | 797.0 | [(2.3594730238393993, 14.965913843580097), (4.... | POLYGON ((216 96, 218 95, 219 93, 226 90, 228 ... | 18.85278914637469 | 14.095173259973349 | red | red |
33 | 460 | 33 | 216.308993 | 77.98453 | 108.33332741146353 | 16 | 808.0 | [(1.1910066006600744, 14.515470297029708), (10... | POLYGON ((218 93, 227 89, 229 88, 234 82, 235 ... | 19.064033544644598 | 13.686073950799944 | red | red |
34 | 1774 | 34 | 217.770898 | 79.522592 | 107.52326888036792 | 18 | 811.5 | [(-0.27089751489012315, 15.977408092010677), (... | POLYGON ((218 96, 228 90, 230 89, 235 83, 236 ... | 18.804825492688472 | 14.299392501195987 | red | red |
39 | 2156 | 35 | 218.378501 | 83.182325 | 106.83468312837819 | 19 | 791.5 | [(2.1214992630027325, 15.031375026321328), (5.... | POLYGON ((221 98, 224 96, 226 96, 229 93, 231 ... | 18.844243298328518 | 13.81513080304294 | yellow | red |
40 | 1899 | 36 | 218.680683 | 86.017933 | 107.01288875487856 | 22 | 761.0 | [(4.819316688567682, 14.89575120455541), (6.81... | POLYGON ((224 101, 226 100, 226 98, 228 98, 22... | 17.53115188500524 | 14.248301019329121 | yellow | red |
41 | 2228 | 37 | 218.197835 | 91.137032 | 103.30508929922131 | 23 | 770.0 | [(6.302164502164487, 14.725108225108215), (9.3... | POLYGON ((225 106, 228 104, 230 103, 233 98, 2... | 16.71794828268125 | 15.10075936015021 | yellow | red |
42 | 2405 | 38 | 218.186362 | 91.795643 | 105.91250223741798 | 23 | 787.0 | [(5.313638288860659, 15.015883100381188), (7.3... | POLYGON ((224 107, 226 106, 228 106, 229 104, ... | 16.94191734680013 | 15.284064995179081 | yellow | red |
43 | 2615 | 39 | 217.521277 | 91.30479 | 103.41687417265716 | 21 | 775.5 | [(3.9787234042553052, 14.385772619815185), (5.... | POLYGON ((222 106, 224 105, 226 105, 229 103, ... | 17.52449159199243 | 14.599792751538097 | yellow | red |
44 | 3084 | 40 | 219.023748 | 91.158047 | 107.67892090902448 | 20 | 779.0 | [(-0.5237483953787034, 13.555626872058184), (4... | POLYGON ((219 105, 224 103, 226 103, 230 101, ... | 19.07557387593079 | 13.52330730878993 | yellow | red |
45 | 3463 | 41 | 224.028936 | 89.69076 | 107.94767771994808 | 21 | 803.5 | [(-5.528935905413817, 14.017216345156598), (-3... | POLYGON ((219 104, 221 103, 223 103, 225 103, ... | 20.52708946899041 | 12.799747346282482 | yellow | red |
46 | 3261 | 42 | 233.199168 | 86.063961 | 115.62083409522423 | 19 | 841.0 | [(-2.6991676575505323, 14.684304399524379), (-... | POLYGON ((231 101, 233 100, 235 100, 243 95, 2... | 22.542124824356815 | 12.267042258889465 | yellow | red |
47 | 3287 | 43 | 237.634815 | 83.899027 | 114.86839366538844 | 18 | 787.5 | [(-6.134814814814803, 14.812275132275133), (-4... | POLYGON ((232 99, 234 98, 235 97, 237 97, 239 ... | 22.698134341929453 | 11.249174871071286 | yellow | red |
48 | 2475 | 44 | 242.556855 | 83.655277 | 111.96090316542035 | 17 | 727.0 | [(-6.0568546538285375, 15.336084364970205), (-... | POLYGON ((237 99, 240 97, 242 96, 244 96, 248 ... | 22.13965946812896 | 10.865698002244075 | yellow | red |
49 | 2544 | 45 | 245.485528 | 81.128107 | 108.83049521739171 | 18 | 702.5 | [(-3.985527876631096, 14.653855278766315), (6.... | POLYGON ((242 96, 252 90, 254 89, 254 87, 257 ... | 22.828693886050488 | 10.257889523665987 | yellow | red |
50 | 3057 | 46 | 246.560833 | 80.876782 | 111.52935425969349 | 19 | 668.5 | [(-7.06083271004735, 15.060334081276494), (-5.... | POLYGON ((240 96, 242 95, 243 93, 245 93, 246 ... | 22.099318550429302 | 9.849607900611668 | yellow | red |
51 | 2686 | 47 | 247.410141 | 78.870321 | 106.58318341313534 | 17 | 664.0 | [(-2.910140562249012, 11.962349397590359), (2.... | POLYGON ((245 91, 250 88, 252 87, 256 86, 258 ... | 22.288453200065845 | 9.779043137139972 | yellow | red |
52 | 903 | 48 | 251.905195 | 84.599728 | 110.58229965913571 | 13 | 770.0 | [(3.59480519480519, 12.78311688311689), (10.59... | POLYGON ((256 98, 263 94, 265 93, 265 91, 267 ... | 21.42531062433394 | 11.815366666788258 | yellow | green |
53 | 985 | 49 | 248.816795 | 90.524167 | 120.3272226708876 | 14 | 977.5 | [(6.683205456095493, 14.631884057971021), (7.6... | POLYGON ((256 106, 257 104, 262 101, 264 100, ... | 23.10645662458693 | 13.889286573264329 | yellow | green |
54 | 1058 | 50 | 243.853229 | 92.434794 | 126.19690621118964 | 13 | 1089.0 | [(1.646770737679816, 17.5754514845424), (3.646... | POLYGON ((246 111, 248 110, 250 110, 255 107, ... | 22.53293727713466 | 16.291730272105433 | yellow | green |
55 | 1021 | 51 | 242.183908 | 93.715079 | 129.91287125032758 | 14 | 1160.0 | [(3.316091954022994, 17.436350574712648), (5.3... | POLYGON ((246 112, 248 111, 250 111, 253 109, ... | 22.734219225270902 | 16.628738788116344 | yellow | green |
56 | 1097 | 52 | 240.704864 | 97.399249 | 128.80137306505006 | 15 | 1165.0 | [(4.7951359084406135, 17.685693848354788), (6.... | POLYGON ((246 116, 248 115, 249 114, 252 111, ... | 22.357377886606056 | 16.718468184377684 | yellow | green |
57 | 1202 | 53 | 240.922222 | 95.655919 | 130.5049334495447 | 15 | 1200.0 | [(1.5777777777777544, 18.41083333333333), (10.... | POLYGON ((243 115, 252 111, 254 110, 260 100, ... | 23.395698169359886 | 16.91659746786962 | yellow | green |
58 | 1280 | 54 | 243.494198 | 90.377168 | 130.1159309136902 | 15 | 1206.5 | [(1.0058019063406505, 17.851636966431826), (4.... | POLYGON ((245 109, 248 107, 250 106, 252 106, ... | 23.76582596982824 | 16.449634542371665 | yellow | green |
59 | 1289 | 55 | 246.158782 | 85.040545 | 131.6973474161899 | 14 | 1226.0 | [(-0.6587819467101781, 18.4184339314845), (10.... | POLYGON ((246 104, 257 100, 259 99, 261 96, 26... | 22.985828831614352 | 17.138055214068775 | yellow | green |
35 | 1236 | 56 | 248.417777 | 82.971134 | 131.88291495639214 | 14 | 1238.5 | [(6.082223119364812, 17.52886556318127), (9.08... | POLYGON ((255 101, 258 99, 260 98, 261 96, 263... | 23.25770672129052 | 17.401466053846903 | green | green |
36 | 1135 | 57 | 247.543466 | 81.087209 | 129.60892096092562 | 15 | 1204.0 | [(5.956533776301228, 17.412790697674424), (15.... | POLYGON ((254 99, 264 93, 266 92, 269 87, 270 ... | 22.796772308990608 | 17.26152532871113 | green | green |
37 | 1193 | 58 | 248.17074 | 81.75852 | 131.00663191374827 | 15 | 1227.5 | [(6.329260013577738, 17.741479972844544), (11.... | POLYGON ((255 100, 260 97, 262 96, 264 96, 266... | 22.999463921251163 | 17.412546098156817 | green | green |
38 | 1313 | 59 | 249.813302 | 83.264847 | 127.59110780359201 | 15 | 1181.5 | [(10.68669770066299, 17.235153054027364), (13.... | POLYGON ((261 101, 264 99, 266 98, 270 93, 271... | 23.063837581979733 | 16.626352282097233 | green | green |
df = trackmate_utils.measure_merged(merged_track, green_segmentation_map, green_stack, red_segmentation_map, red_stack)
df
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | ELLIPSE_MAJOR | ... | color | source_track | mean_red | std_red | mean_green | std_green | low_red | high_red | low_green | high_green | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 736 | 0 | 65.728445 | 202.089107 | 116.11824370003114 | 26 | 866.0 | [(1.7715550423402533, 14.41089299461126), (3.7... | POLYGON ((68 217, 70 216, 72 216, 73 215, 75 2... | 20.291765089571808 | ... | red | red | 0.285170 | 0.128388 | 0.087745 | 0.077448 | 0.156783 | 0.413558 | 0.010297 | 0.165193 |
1 | 760 | 1 | 71.391949 | 196.740581 | 115.39641876807232 | 23 | 871.5 | [(14.108051252629565, 14.759418626888504), (14... | POLYGON ((86 212, 86 210, 88 209, 90 206, 91 2... | 21.374369189708005 | ... | red | red | 0.295008 | 0.120923 | 0.049924 | 0.079961 | 0.174085 | 0.415931 | -0.030037 | 0.129884 |
2 | 494 | 2 | 71.042601 | 189.803625 | 120.58961482031928 | 23 | 892.0 | [(11.45739910313901, 16.69637518684604), (12.4... | POLYGON ((83 207, 84 205, 86 205, 86 203, 88 2... | 20.40135288822979 | ... | red | red | 0.289602 | 0.138168 | 0.000000 | 0.075685 | 0.151434 | 0.427770 | -0.075685 | 0.075685 |
3 | 391 | 3 | 74.068707 | 186.231001 | 116.3744297518984 | 21 | 857.5 | [(11.43129251700681, 16.26899902818269), (12.4... | POLYGON ((86 203, 87 201, 89 201, 90 199, 91 1... | 20.399578962898765 | ... | red | red | 0.346440 | 0.141443 | 0.063597 | 0.081153 | 0.204996 | 0.487883 | -0.017556 | 0.144751 |
4 | 444 | 4 | 82.523703 | 180.657591 | 114.95010692219705 | 27 | 780.5 | [(11.97629724535554, 15.842408712363863), (15.... | POLYGON ((95 197, 99 190, 100 188, 100 184, 10... | 20.334182996872435 | ... | red | red | 0.410676 | 0.142739 | 0.097041 | 0.075581 | 0.267937 | 0.553416 | 0.021461 | 0.172622 |
5 | 339 | 5 | 91.56938 | 176.723927 | 107.8440407924095 | 26 | 749.5 | [(8.930620413609077, 15.776072937513874), (11.... | POLYGON ((101 193, 104 191, 106 190, 107 188, ... | 19.75199745076159 | ... | red | red | 0.410029 | 0.143001 | 0.020484 | 0.078858 | 0.267028 | 0.553029 | -0.058374 | 0.099342 |
6 | 1599 | 6 | 99.556633 | 171.751282 | 108.24163657932809 | 27 | 747.5 | [(6.943366778149397, 15.748717948717967), (8.9... | POLYGON ((107 188, 109 187, 111 187, 112 186, ... | 19.572237562684293 | ... | red | red | 0.468155 | 0.153945 | 0.089358 | 0.075129 | 0.314211 | 0.622100 | 0.014228 | 0.164487 |
7 | 771 | 7 | 111.74149 | 168.659517 | 111.0764782026885 | 29 | 827.5 | [(9.758509566968783, 16.840483383685807), (13.... | POLYGON ((122 186, 126 182, 128 181, 130 177, ... | 21.12904241487818 | ... | red | red | 0.435630 | 0.157703 | 0.074146 | 0.076080 | 0.277927 | 0.593334 | -0.001934 | 0.150227 |
8 | 2107 | 8 | 118.414195 | 170.740411 | 109.3563041130157 | 29 | 843.0 | [(3.085804665875841, 17.75958877026494), (5.08... | POLYGON ((122 189, 124 188, 126 188, 129 186, ... | 19.280903420341502 | ... | red | red | 0.462927 | 0.143977 | 0.098798 | 0.074690 | 0.318950 | 0.606905 | 0.024108 | 0.173489 |
9 | 742 | 9 | 123.609063 | 172.62404 | 111.3521091648572 | 27 | 868.0 | [(6.890937019969272, 18.875960061443948), (11.... | POLYGON ((131 192, 136 186, 138 185, 138 183, ... | 20.297499900252678 | ... | red | red | 0.448082 | 0.134867 | 0.085831 | 0.077782 | 0.313215 | 0.582949 | 0.008049 | 0.163613 |
10 | 932 | 10 | 128.309751 | 174.805423 | 117.85407190410241 | 28 | 943.5 | [(5.1902490726020005, 21.69457692987106), (8.1... | POLYGON ((134 197, 137 194, 139 194, 140 192, ... | 21.883407857379485 | ... | red | red | 0.438709 | 0.134207 | 0.090692 | 0.077265 | 0.304502 | 0.572915 | 0.013427 | 0.167958 |
11 | 926 | 11 | 132.018802 | 171.702995 | 119.41223997479155 | 22 | 979.5 | [(8.481197890079955, 19.797005274800057), (11.... | POLYGON ((141 192, 144 190, 146 189, 147 185, ... | 22.238618483986546 | ... | red | red | 0.422886 | 0.120466 | 0.082897 | 0.077427 | 0.302419 | 0.543352 | 0.005469 | 0.160324 |
12 | 1088 | 12 | 138.011852 | 169.775298 | 123.72726948395658 | 24 | 1019.5 | [(7.488147784861837, 20.7247016511362), (10.48... | POLYGON ((146 191, 149 189, 151 188, 155 183, ... | 22.60726816764416 | ... | red | red | 0.435315 | 0.142490 | 0.084443 | 0.080801 | 0.292825 | 0.577805 | 0.003642 | 0.165244 |
13 | 1231 | 13 | 142.618794 | 160.895712 | 122.58311404261416 | 22 | 1034.0 | [(7.881205673758842, 20.604287556415215), (8.8... | POLYGON ((151 182, 152 180, 154 180, 158 176, ... | 22.183475397887342 | ... | red | red | 0.453756 | 0.136354 | 0.086885 | 0.079014 | 0.317402 | 0.590111 | 0.007871 | 0.165899 |
14 | 997 | 14 | 150.315073 | 148.52005 | 116.72921462019963 | 21 | 931.0 | [(5.184926602219832, 19.979949874686724), (7.1... | POLYGON ((156 169, 158 168, 159 167, 162 164, ... | 20.49377315803756 | ... | red | red | 0.514422 | 0.144622 | 0.095644 | 0.077009 | 0.369800 | 0.659043 | 0.018636 | 0.172653 |
15 | 126 | 15 | 154.636106 | 146.383226 | 111.20916221628806 | 20 | 853.5 | [(5.8638937707479215, 19.116774067564933), (7.... | POLYGON ((161 166, 163 163, 164 161, 170 156, ... | 19.415746732400837 | ... | red | red | 0.568665 | 0.138583 | 0.091990 | 0.079130 | 0.430081 | 0.707248 | 0.012860 | 0.171120 |
16 | 1255 | 16 | 162.668709 | 147.5103 | 117.57152710834744 | 23 | 938.5 | [(8.831291067305983, 17.98969987568816), (10.8... | POLYGON ((172 166, 174 165, 175 164, 178 161, ... | 21.00608140822603 | ... | red | red | 0.539604 | 0.124982 | 0.094654 | 0.075592 | 0.414622 | 0.664586 | 0.019063 | 0.170246 |
17 | 1256 | 17 | 168.9485 | 150.571808 | 120.6614177273773 | 25 | 972.5 | [(8.551499571551005, 18.928191945158517), (11.... | POLYGON ((178 170, 181 167, 182 166, 184 166, ... | 21.168613687183537 | ... | red | red | 0.568870 | 0.126345 | 0.148925 | 0.076883 | 0.442524 | 0.695215 | 0.072043 | 0.225808 |
18 | 921 | 18 | 174.48235 | 154.967305 | 120.29186150469945 | 22 | 991.5 | [(6.017650025214323, 18.532694570516043), (8.0... | POLYGON ((181 174, 183 173, 185 173, 188 171, ... | 21.530132238319275 | ... | red | red | 0.528195 | 0.143308 | 0.084726 | 0.075086 | 0.384887 | 0.671504 | 0.009640 | 0.159812 |
19 | 62 | 19 | 178.590729 | 155.676407 | 116.45701582740757 | 26 | 924.0 | [(9.909271284271284, 16.82359307359306), (13.9... | POLYGON ((189 173, 193 169, 195 168, 197 164, ... | 20.892016825017176 | ... | red | red | 0.580624 | 0.123004 | 0.094927 | 0.079263 | 0.457619 | 0.703628 | 0.015665 | 0.174190 |
20 | 1113 | 20 | 182.900713 | 156.213012 | 118.24709943782678 | 29 | 935.0 | [(9.599286987522305, 17.286987522281663), (12.... | POLYGON ((193 174, 196 171, 198 171, 199 169, ... | 20.43092323866347 | ... | red | red | 0.620549 | 0.129632 | 0.125887 | 0.079245 | 0.490917 | 0.750180 | 0.046642 | 0.205133 |
21 | 155 | 21 | 185.487459 | 156.238095 | 119.41348240555209 | 28 | 917.0 | [(9.01254089422028, 18.26190476190476), (10.01... | POLYGON ((195 175, 196 173, 198 173, 199 171, ... | 20.582639699001785 | ... | red | red | 0.652733 | 0.143318 | 0.117107 | 0.078463 | 0.509415 | 0.796052 | 0.038644 | 0.195570 |
22 | 153 | 22 | 192.547256 | 158.620088 | 118.48769254872398 | 29 | 984.0 | [(11.95274390243901, 17.879911924119256), (14.... | POLYGON ((205 177, 208 172, 210 171, 211 159, ... | 21.284755391810073 | ... | red | red | 0.608483 | 0.156621 | 0.081050 | 0.079037 | 0.451862 | 0.765104 | 0.002013 | 0.160086 |
23 | 1195 | 23 | 197.982806 | 154.678331 | 118.8756897169512 | 26 | 964.5 | [(11.517193710039749, 17.821669258683244), (12... | POLYGON ((210 173, 211 171, 213 171, 214 169, ... | 21.43305300355499 | ... | red | red | 0.680469 | 0.143481 | 0.129001 | 0.075977 | 0.536989 | 0.823950 | 0.053025 | 0.204978 |
24 | 1634 | 24 | 204.461785 | 155.853535 | 120.16909925048742 | 27 | 990.0 | [(8.038215488215485, 20.646464646464636), (14.... | POLYGON ((213 177, 219 172, 221 171, 221 165, ... | 22.072990112755598 | ... | red | red | 0.651663 | 0.135318 | 0.122854 | 0.078299 | 0.516345 | 0.786981 | 0.044555 | 0.201152 |
25 | 1636 | 25 | 206.212968 | 152.10557 | 118.6064053696176 | 26 | 957.5 | [(4.2870322019147125, 19.39442993907744), (6.2... | POLYGON ((211 172, 213 171, 215 171, 218 169, ... | 20.542740181176683 | ... | red | red | 0.697712 | 0.140687 | 0.125190 | 0.075497 | 0.557026 | 0.838399 | 0.049693 | 0.200687 |
26 | 1807 | 26 | 207.437396 | 137.793207 | 117.92703272504544 | 24 | 1001.0 | [(11.062604062604066, 17.706793206793208), (17... | POLYGON ((219 156, 225 151, 226 149, 226 141, ... | 21.24463148132436 | ... | red | red | 0.712731 | 0.131604 | 0.170525 | 0.076659 | 0.581127 | 0.844334 | 0.093865 | 0.247184 |
27 | 1942 | 27 | 211.625281 | 128.103946 | 122.55025591783964 | 21 | 1039.0 | [(10.874719281360285, 17.396053897978817), (13... | POLYGON ((223 146, 226 143, 228 143, 229 141, ... | 21.601933255197757 | ... | red | red | 0.678145 | 0.127676 | 0.152555 | 0.076267 | 0.550469 | 0.805820 | 0.076288 | 0.228821 |
28 | 2048 | 28 | 217.412929 | 115.897897 | 120.13888808576206 | 20 | 1014.5 | [(8.087070806637115, 16.602102842122548), (10.... | POLYGON ((226 133, 228 132, 229 131, 231 131, ... | 20.86133357675962 | ... | red | red | 0.707885 | 0.141205 | 0.185136 | 0.075670 | 0.566680 | 0.849090 | 0.109466 | 0.260806 |
29 | 1341 | 29 | 213.428847 | 101.455485 | 116.33514833812384 | 18 | 951.0 | [(7.071153172099542, 15.044514546091833), (9.0... | POLYGON ((221 117, 223 116, 225 116, 227 116, ... | 20.98690323787094 | ... | red | red | 0.749624 | 0.148988 | 0.203990 | 0.078850 | 0.600636 | 0.898612 | 0.125140 | 0.282840 |
30 | 2328 | 30 | 211.173929 | 88.751024 | 112.82286368397108 | 16 | 895.0 | [(1.326070763500951, 15.748975791433892), (3.3... | POLYGON ((213 105, 215 104, 216 103, 226 101, ... | 20.013190419211078 | ... | red | red | 0.837930 | 0.174839 | 0.281621 | 0.086489 | 0.663092 | 1.012769 | 0.195132 | 0.368111 |
31 | 26 | 31 | 211.111431 | 82.658611 | 113.29503427027856 | 16 | 869.0 | [(8.388569236670492, 14.84138856923667), (11.3... | POLYGON ((220 98, 223 96, 225 95, 227 91, 229 ... | 19.285968730936283 | ... | red | red | 0.818347 | 0.162746 | 0.273464 | 0.093108 | 0.655601 | 0.981093 | 0.180356 | 0.366572 |
32 | 564 | 32 | 213.140527 | 80.534086 | 106.52388923243727 | 16 | 797.0 | [(2.3594730238393993, 14.965913843580097), (4.... | POLYGON ((216 96, 218 95, 219 93, 226 90, 228 ... | 18.85278914637469 | ... | red | red | 0.973233 | 0.156409 | 0.418751 | 0.093105 | 0.816825 | 1.129642 | 0.325646 | 0.511856 |
33 | 460 | 33 | 216.308993 | 77.98453 | 108.33332741146353 | 16 | 808.0 | [(1.1910066006600744, 14.515470297029708), (10... | POLYGON ((218 93, 227 89, 229 88, 234 82, 235 ... | 19.064033544644598 | ... | red | red | 0.950550 | 0.159047 | 0.388872 | 0.089148 | 0.791503 | 1.109597 | 0.299724 | 0.478020 |
34 | 1774 | 34 | 217.770898 | 79.522592 | 107.52326888036792 | 18 | 811.5 | [(-0.27089751489012315, 15.977408092010677), (... | POLYGON ((218 96, 228 90, 230 89, 235 83, 236 ... | 18.804825492688472 | ... | red | red | 0.885376 | 0.162624 | 0.355225 | 0.090839 | 0.722751 | 1.048000 | 0.264386 | 0.446064 |
39 | 2156 | 35 | 218.378501 | 83.182325 | 106.83468312837819 | 19 | 791.5 | [(2.1214992630027325, 15.031375026321328), (5.... | POLYGON ((221 98, 224 96, 226 96, 229 93, 231 ... | 18.844243298328518 | ... | yellow | red | 0.968401 | 0.173102 | 0.428093 | 0.085032 | 0.795299 | 1.141504 | 0.343061 | 0.513124 |
40 | 1899 | 36 | 218.680683 | 86.017933 | 107.01288875487856 | 22 | 761.0 | [(4.819316688567682, 14.89575120455541), (6.81... | POLYGON ((224 101, 226 100, 226 98, 228 98, 22... | 17.53115188500524 | ... | yellow | red | 1.000000 | 0.184038 | 0.494434 | 0.090789 | 0.815962 | 1.184038 | 0.403645 | 0.585223 |
41 | 2228 | 37 | 218.197835 | 91.137032 | 103.30508929922131 | 23 | 770.0 | [(6.302164502164487, 14.725108225108215), (9.3... | POLYGON ((225 106, 228 104, 230 103, 233 98, 2... | 16.71794828268125 | ... | yellow | red | 0.999728 | 0.184762 | 0.528833 | 0.096152 | 0.814966 | 1.184490 | 0.432681 | 0.624984 |
42 | 2405 | 38 | 218.186362 | 91.795643 | 105.91250223741798 | 23 | 787.0 | [(5.313638288860659, 15.015883100381188), (7.3... | POLYGON ((224 107, 226 106, 228 106, 229 104, ... | 16.94191734680013 | ... | yellow | red | 0.915916 | 0.164160 | 0.500845 | 0.086608 | 0.751756 | 1.080076 | 0.414237 | 0.587453 |
43 | 2615 | 39 | 217.521277 | 91.30479 | 103.41687417265716 | 21 | 775.5 | [(3.9787234042553052, 14.385772619815185), (5.... | POLYGON ((222 106, 224 105, 226 105, 229 103, ... | 17.52449159199243 | ... | yellow | red | 0.909171 | 0.161841 | 0.540220 | 0.090758 | 0.747330 | 1.071013 | 0.449463 | 0.630978 |
44 | 3084 | 40 | 219.023748 | 91.158047 | 107.67892090902448 | 20 | 779.0 | [(-0.5237483953787034, 13.555626872058184), (4... | POLYGON ((219 105, 224 103, 226 103, 230 101, ... | 19.07557387593079 | ... | yellow | red | 0.937284 | 0.174932 | 0.642302 | 0.094959 | 0.762352 | 1.112216 | 0.547343 | 0.737261 |
45 | 3463 | 41 | 224.028936 | 89.69076 | 107.94767771994808 | 21 | 803.5 | [(-5.528935905413817, 14.017216345156598), (-3... | POLYGON ((219 104, 221 103, 223 103, 225 103, ... | 20.52708946899041 | ... | yellow | red | 0.897866 | 0.149499 | 0.690332 | 0.092654 | 0.748368 | 1.047365 | 0.597679 | 0.782986 |
46 | 3261 | 42 | 233.199168 | 86.063961 | 115.62083409522423 | 19 | 841.0 | [(-2.6991676575505323, 14.684304399524379), (-... | POLYGON ((231 101, 233 100, 235 100, 243 95, 2... | 22.542124824356815 | ... | yellow | red | 0.797878 | 0.137336 | 0.653282 | 0.090829 | 0.660542 | 0.935215 | 0.562453 | 0.744111 |
47 | 3287 | 43 | 237.634815 | 83.899027 | 114.86839366538844 | 18 | 787.5 | [(-6.134814814814803, 14.812275132275133), (-4... | POLYGON ((232 99, 234 98, 235 97, 237 97, 239 ... | 22.698134341929453 | ... | yellow | red | 0.838053 | 0.147450 | 0.764694 | 0.097315 | 0.690603 | 0.985502 | 0.667379 | 0.862008 |
48 | 2475 | 44 | 242.556855 | 83.655277 | 111.96090316542035 | 17 | 727.0 | [(-6.0568546538285375, 15.336084364970205), (-... | POLYGON ((237 99, 240 97, 242 96, 244 96, 248 ... | 22.13965946812896 | ... | yellow | red | 0.847670 | 0.149881 | 0.849601 | 0.100268 | 0.697789 | 0.997551 | 0.749332 | 0.949869 |
49 | 2544 | 45 | 245.485528 | 81.128107 | 108.83049521739171 | 18 | 702.5 | [(-3.985527876631096, 14.653855278766315), (6.... | POLYGON ((242 96, 252 90, 254 89, 254 87, 257 ... | 22.828693886050488 | ... | yellow | red | 0.792854 | 0.159972 | 0.832449 | 0.100094 | 0.632882 | 0.952826 | 0.732355 | 0.932542 |
50 | 3057 | 46 | 246.560833 | 80.876782 | 111.52935425969349 | 19 | 668.5 | [(-7.06083271004735, 15.060334081276494), (-5.... | POLYGON ((240 96, 242 95, 243 93, 245 93, 246 ... | 22.099318550429302 | ... | yellow | red | 0.834427 | 0.168367 | 1.000000 | 0.109938 | 0.666060 | 1.002795 | 0.890062 | 1.109938 |
51 | 2686 | 47 | 247.410141 | 78.870321 | 106.58318341313534 | 17 | 664.0 | [(-2.910140562249012, 11.962349397590359), (2.... | POLYGON ((245 91, 250 88, 252 87, 256 86, 258 ... | 22.288453200065845 | ... | yellow | red | 0.723494 | 0.160034 | 0.920759 | 0.112462 | 0.563461 | 0.883528 | 0.808297 | 1.033220 |
52 | 903 | 48 | 251.905195 | 84.599728 | 110.58229965913571 | 13 | 770.0 | [(3.59480519480519, 12.78311688311689), (10.59... | POLYGON ((256 98, 263 94, 265 93, 265 91, 267 ... | 21.42531062433394 | ... | yellow | green | 0.588110 | 0.145967 | 0.836388 | 0.103356 | 0.442143 | 0.734077 | 0.733032 | 0.939743 |
53 | 985 | 49 | 248.816795 | 90.524167 | 120.3272226708876 | 14 | 977.5 | [(6.683205456095493, 14.631884057971021), (7.6... | POLYGON ((256 106, 257 104, 262 101, 264 100, ... | 23.10645662458693 | ... | yellow | green | 0.440164 | 0.146223 | 0.687557 | 0.099044 | 0.293941 | 0.586386 | 0.588512 | 0.786601 |
54 | 1058 | 50 | 243.853229 | 92.434794 | 126.19690621118964 | 13 | 1089.0 | [(1.646770737679816, 17.5754514845424), (3.646... | POLYGON ((246 111, 248 110, 250 110, 255 107, ... | 22.53293727713466 | ... | yellow | green | 0.351567 | 0.134351 | 0.656282 | 0.100711 | 0.217216 | 0.485918 | 0.555571 | 0.756994 |
55 | 1021 | 51 | 242.183908 | 93.715079 | 129.91287125032758 | 14 | 1160.0 | [(3.316091954022994, 17.436350574712648), (5.3... | POLYGON ((246 112, 248 111, 250 111, 253 109, ... | 22.734219225270902 | ... | yellow | green | 0.303865 | 0.124952 | 0.685436 | 0.098547 | 0.178914 | 0.428817 | 0.586888 | 0.783983 |
56 | 1097 | 52 | 240.704864 | 97.399249 | 128.80137306505006 | 15 | 1165.0 | [(4.7951359084406135, 17.685693848354788), (6.... | POLYGON ((246 116, 248 115, 249 114, 252 111, ... | 22.357377886606056 | ... | yellow | green | 0.251089 | 0.121489 | 0.658426 | 0.096912 | 0.129600 | 0.372578 | 0.561513 | 0.755338 |
57 | 1202 | 53 | 240.922222 | 95.655919 | 130.5049334495447 | 15 | 1200.0 | [(1.5777777777777544, 18.41083333333333), (10.... | POLYGON ((243 115, 252 111, 254 110, 260 100, ... | 23.395698169359886 | ... | yellow | green | 0.200703 | 0.114593 | 0.659935 | 0.096220 | 0.086110 | 0.315297 | 0.563715 | 0.756155 |
58 | 1280 | 54 | 243.494198 | 90.377168 | 130.1159309136902 | 15 | 1206.5 | [(1.0058019063406505, 17.851636966431826), (4.... | POLYGON ((245 109, 248 107, 250 106, 252 106, ... | 23.76582596982824 | ... | yellow | green | 0.153571 | 0.103614 | 0.655110 | 0.098401 | 0.049957 | 0.257186 | 0.556709 | 0.753511 |
59 | 1289 | 55 | 246.158782 | 85.040545 | 131.6973474161899 | 14 | 1226.0 | [(-0.6587819467101781, 18.4184339314845), (10.... | POLYGON ((246 104, 257 100, 259 99, 261 96, 26... | 22.985828831614352 | ... | yellow | green | 0.126221 | 0.096435 | 0.740154 | 0.093846 | 0.029786 | 0.222656 | 0.646308 | 0.834000 |
35 | 1236 | 56 | 248.417777 | 82.971134 | 131.88291495639214 | 14 | 1238.5 | [(6.082223119364812, 17.52886556318127), (9.08... | POLYGON ((255 101, 258 99, 260 98, 261 96, 263... | 23.25770672129052 | ... | green | green | 0.083804 | 0.087922 | 0.759840 | 0.091644 | -0.004118 | 0.171727 | 0.668197 | 0.851484 |
36 | 1135 | 57 | 247.543466 | 81.087209 | 129.60892096092562 | 15 | 1204.0 | [(5.956533776301228, 17.412790697674424), (15.... | POLYGON ((254 99, 264 93, 266 92, 269 87, 270 ... | 22.796772308990608 | ... | green | green | 0.052204 | 0.088779 | 0.794799 | 0.094798 | -0.036575 | 0.140983 | 0.700001 | 0.889597 |
37 | 1193 | 58 | 248.17074 | 81.75852 | 131.00663191374827 | 15 | 1227.5 | [(6.329260013577738, 17.741479972844544), (11.... | POLYGON ((255 100, 260 97, 262 96, 264 96, 266... | 22.999463921251163 | ... | green | green | 0.017624 | 0.086703 | 0.797485 | 0.103413 | -0.069080 | 0.104327 | 0.694072 | 0.900898 |
38 | 1313 | 59 | 249.813302 | 83.264847 | 127.59110780359201 | 15 | 1181.5 | [(10.68669770066299, 17.235153054027364), (13.... | POLYGON ((261 101, 264 99, 266 98, 270 93, 271... | 23.063837581979733 | ... | green | green | 0.000000 | 0.084420 | 0.878646 | 0.103917 | -0.084420 | 0.084420 | 0.774729 | 0.982564 |
60 rows × 21 columns
df['sign'] = np.sign(df.mean_red - df.mean_green)
df['sign_diff'] = df.sign.diff()
(df.hvplot.line(x='frame', y='sign', responsive=True) * df.hvplot.line(x='frame', y='sign_diff', color='red', responsive=True) + trackmate_utils.draw_fucci_measurement_merged_track(merged_track, red_segmentation_map, green_segmentation_map, red_stack, green_stack)).cols(1)
def calculate_frame_offset(merged_track, green_segmentation_map, green_stack, red_segmentation_map, red_stack):
df = trackmate_utils.measure_merged(merged_track, green_segmentation_map, green_stack, red_segmentation_map, red_stack)
df['sign'] = np.sign(df.mean_red - df.mean_green)
df['sign_diff'] = df.sign.diff()
result = df.query('sign_diff == -2')
# print(len(result))
return None if result.empty or len(result) != 1 else result.frame.item()
frame_offsets = [calculate_frame_offset(metric.merge_tracks(row.red_track,row.green_track), green_segmentation_map, green_stack, red_segmentation_map, red_stack) for row in valid_tracks.itertuples(index=False)]
valid_tracks['frame_offset'] = frame_offsets
valid_tracks
red_track | green_track | metric | frame_offset | |
---|---|---|---|---|
0 | 32 | 40 | 1.018302 | 44.0 |
2 | 10 | 53 | 1.123107 | 51.0 |
3 | 31 | 1 | 1.134302 | 22.0 |
4 | 29 | 11 | 1.153568 | 6.0 |
6 | 40 | 47 | 1.197313 | 47.0 |
7 | 25 | 58 | 1.197919 | 55.0 |
8 | 0 | 41 | 1.218965 | 47.0 |
9 | 63 | 22 | 1.254325 | 40.0 |
10 | 59 | 56 | 1.431540 | NaN |
11 | 68 | 37 | 1.435427 | 46.0 |
12 | 65 | 45 | 1.470829 | 48.0 |
13 | 54 | 35 | 1.493277 | 43.0 |
14 | 51 | 48 | 1.505361 | 50.0 |
16 | 2 | 34 | 1.526296 | 46.0 |
17 | 4 | 0 | 1.550255 | 23.0 |
18 | 34 | 54 | 1.581644 | NaN |
19 | 50 | 20 | 1.650130 | 41.0 |
20 | 46 | 2 | 1.682199 | 23.0 |
21 | 61 | 42 | 1.744963 | 43.0 |
22 | 28 | 39 | 1.752087 | 44.0 |
24 | 33 | 23 | 1.757821 | 37.0 |
26 | 35 | 4 | 1.841479 | 19.0 |
27 | 70 | 8 | 1.901044 | 26.0 |
28 | 38 | 55 | 1.947493 | NaN |
29 | 30 | 21 | 2.004808 | NaN |
30 | 3 | 52 | 2.027253 | NaN |
tracks_with_valid_offsets = valid_tracks.dropna()
tracks_with_valid_offsets.describe()
red_track | green_track | metric | frame_offset | |
---|---|---|---|---|
count | 21.000000 | 21.000000 | 21.000000 | 21.000000 |
mean | 37.952381 | 29.047619 | 1.457570 | 38.142857 |
std | 21.900859 | 18.610417 | 0.268677 | 12.966440 |
min | 0.000000 | 0.000000 | 1.018302 | 6.000000 |
25% | 28.000000 | 11.000000 | 1.197919 | 26.000000 |
50% | 35.000000 | 35.000000 | 1.493277 | 43.000000 |
75% | 54.000000 | 42.000000 | 1.682199 | 47.000000 |
max | 70.000000 | 58.000000 | 1.901044 | 55.000000 |
l = []
for row in tracks_with_valid_offsets.itertuples(index=False):
merged_track = metric.merge_tracks(row.red_track,row.green_track)
measured_track = trackmate_utils.measure_merged(merged_track, green_segmentation_map, green_stack, red_segmentation_map, red_stack)
measured_track['aspect'] = pd.to_numeric(measured_track.ELLIPSE_MAJOR)/pd.to_numeric(measured_track.ELLIPSE_MINOR)
measured_track['frame'] = measured_track.frame - row.frame_offset
measured_track['id'] = f'{row.red_track}_{row.green_track}'
l.append(measured_track)
df2 = pd.concat(l)
df2.hvplot(kind='line', x='frame', y='aspect', by='id')
df3 = pd.DataFrame()
df3['aspect'] = df2.groupby('frame').aspect.mean()
df3['std'] = df2.groupby('frame').aspect.std()
df3['aspect_top'] = df3.aspect + df3['std']
df3['aspect_bottom'] = df3.aspect - df3['std']
#
df3.aspect.hvplot() * df3.hvplot.area(
x="frame", y="aspect_bottom", y2="aspect_top", responsive=True, min_height=200
).opts(alpha=0.3)
# df3.columns
df3 = pd.DataFrame()
df3['aspect'] = df2.groupby('frame').AREA.mean()
df3['std'] = df2.groupby('frame').AREA.std()
df3['aspect_top'] = df3.aspect + df3['std']
df3['aspect_bottom'] = df3.aspect - df3['std']
#
df3.aspect.hvplot() * df3.hvplot.area(
x="frame", y="aspect_bottom", y2="aspect_top", responsive=True, min_height=200
).opts(alpha=0.3)
# df3.columns
df3 = pd.DataFrame()
df3['ar_2'] = df2.groupby('frame').PERIMETER / np.sqrt(df2.groupby('frame').AREA)
df3['aspect'] = df3.groupby('frame').ar_2.mean()
df3['std'] = df3.groupby('frame').ar_2.std()
df3['aspect_top'] = df3.aspect + df3['std']
df3['aspect_bottom'] = df3.aspect - df3['std']
#
df3.aspect.hvplot() * df3.hvplot.area(
x="frame", y="aspect_bottom", y2="aspect_top", responsive=True, min_height=200
).opts(alpha=0.3)
C:\Users\leo\AppData\Local\Temp\ipykernel_20300\2399088044.py:2: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray. df3['ar_2'] = df2.groupby('frame').PERIMETER / np.sqrt(df2.groupby('frame').AREA)
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) AttributeError: 'float' object has no attribute 'sqrt' The above exception was the direct cause of the following exception: TypeError Traceback (most recent call last) Input In [36], in <cell line: 2>() 1 df3 = pd.DataFrame() ----> 2 df3['ar_2'] = df2.groupby('frame').PERIMETER / np.sqrt(df2.groupby('frame').AREA) 3 df3['aspect'] = df3.groupby('frame').ar_2.mean() 4 df3['std'] = df3.groupby('frame').ar_2.std() TypeError: loop of ufunc does not support argument 0 of type float which has no callable sqrt method
3. Identify Matching Tracks¶
As S phase progresses, contrast on red channel decreases while increasing in the green channel. These contrast dynamics bleed into the segmentation and vary the size of a segment. As such, the S phase, during which segmentation on both channels is possible, provides an option to both merge tracks from each channel and getting a better estimate of the size of the nucleus.
For a given pair of tracks $R$, $G$ that overlap for $t_{overlap}$ we can define a Cartesian similarity metric of the form: $$S=\frac{\sum_{t_{overlap,min}}^{t_{overlap,max}}\sqrt{[R_{X}(t)-G_{X}(t)]^{2}+[R_{Y}(t)-G_{Y}(t)]^{2}}}{t_{overlap,max}-t_{overlap,min}}$$ Where $$min(t_{R})<=t_{overlap}<=max(t_{G})$$ Which estimates the average deviation between the two tracks in units of $\frac{pixel}{frame}$
green_segmentation_map = utils.read_stack(base_data_path / 'green_segmented.tiff')
tm_green = trackmate_utils.TrackmateXML(base_data_path / 'green_segmented.tiff.xml')
red_track = tm_red.trace_track(0)
green_track = tm_green.trace_track(0)
Let's look at candidate tracks red-0 and green-0:
red_track.head()
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | mean_red | std_red | mean_green | std_green | low_red | high_red | low_green | high_green | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 856 | 0 | 247.581341 | 293.123523 | 95.61413819380628 | 41 | 606.5 | [(5.918658972245112, 18.376477054135762), (8.9... | POLYGON ((254 312, 257 307, 258 305, 259 299, ... | 0.010738 | 0.104057 | 0.077642 | 0.076447 | -0.093318 | 0.114795 | 0.001195 | 0.154089 |
1 | 894 | 1 | 262.158762 | 285.241765 | 105.93964862074475 | 38 | 759.0 | [(6.34123847167325, 18.258234519104064), (8.34... | POLYGON ((269 304, 271 303, 271 301, 274 298, ... | 0.000000 | 0.112771 | 0.043456 | 0.080206 | -0.112771 | 0.112771 | -0.036750 | 0.123662 |
2 | 518 | 2 | 275.38465 | 265.978358 | 104.46013970824129 | 34 | 747.0 | [(7.1153502900490935, 14.521642124051766), (9.... | POLYGON ((283 281, 285 280, 286 278, 288 278, ... | 0.001430 | 0.118055 | 0.000000 | 0.077172 | -0.116626 | 0.119485 | -0.077172 | 0.077172 |
3 | 401 | 3 | 283.703855 | 262.742857 | 104.04837559547113 | 31 | 735.0 | [(7.796145124716531, 13.757142857142867), (12.... | POLYGON ((292 277, 297 274, 299 273, 300 271, ... | 0.059190 | 0.143261 | 0.052387 | 0.079176 | -0.084072 | 0.202451 | -0.026789 | 0.131563 |
4 | 517 | 4 | 288.930523 | 260.915313 | 100.04485365944433 | 40 | 646.5 | [(8.569476669244636, 11.584686774941986), (13.... | POLYGON ((298 273, 303 270, 305 269, 306 267, ... | 0.145866 | 0.128231 | 0.098255 | 0.074736 | 0.017635 | 0.274098 | 0.023519 | 0.172990 |
green_track.head()
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | |
---|---|---|---|---|---|---|---|---|---|
0 | 247 | 5 | 263.440317 | 291.522857 | 88.41281378798725 | 10 | 525.0 | [(11.05968253968257, 11.977142857142837), (12.... | POLYGON ((275 304, 276 302, 278 301, 278 299, ... |
1 | 166 | 6 | 272.387504 | 287.83557 | 87.00580543253196 | 10 | 521.5 | [(9.112496005113428, 11.664429530201346), (11.... | POLYGON ((282 300, 284 299, 286 296, 287 294, ... |
2 | 17 | 7 | 280.07243 | 287.447819 | 94.78718006414792 | 10 | 642.0 | [(6.427570093457916, 14.05218068535828), (10.4... | POLYGON ((287 302, 291 298, 293 297, 294 295, ... |
3 | 288 | 8 | 286.350168 | 286.534632 | 99.54663927460682 | 10 | 693.0 | [(7.14983164983164, 12.965367965367989), (9.14... | POLYGON ((294 300, 296 299, 297 297, 299 297, ... |
4 | 389 | 9 | 288.332898 | 284.215622 | 105.08835412502395 | 10 | 766.0 | [(5.16710182767622, 13.284377719756321), (7.16... | POLYGON ((294 298, 296 297, 298 297, 300 297, ... |
The frame column indicates the tracks are overlapping temporally. Let's see if they overlap spatially:
trackmate_utils.view_red_green_track([red_stack, green_stack], red_track, green_track, frame=8)
As seen above, the tracks intersect, but do not follow a similar path. It's also clear that at frame 8, the cell location does not overlap. As indicated above, we can calculate a similarity metric for these two tracks:
metric = trackmate_utils.CartesianSimilarity(tm_red, tm_green)
metric.calculate_metric(red_track_id=0, green_track_id=0)
53.954147393090814
Similarly, we can calculate a metric for all possible track pairs:
metric_df = metric.calculate_metric_for_all_tracks()
metric_df.sort_values('metric', ascending=True).head()
100%|██████████| 5184/5184 [00:14<00:00, 346.86it/s]
red_track | green_track | metric | |
---|---|---|---|
2344 | 32 | 40 | 1.018302 |
1377 | 19 | 9 | 1.101308 |
773 | 10 | 53 | 1.123107 |
2233 | 31 | 1 | 1.134302 |
2099 | 29 | 11 | 1.153568 |
Based on the table above, red track 32 and green track 40 should match up pretty well:
red_track = tm_red.trace_track(32)
green_track = tm_green.trace_track(40)
trackmate_utils.view_red_green_track([red_stack, green_stack], red_track, green_track)
metric_df.query('metric < 10').metric.hvplot.hist()
metric_df.query('2 < metric < 10')
red_track | green_track | metric | |
---|---|---|---|
268 | 3 | 52 | 2.027253 |
1146 | 15 | 66 | 2.984784 |
1643 | 22 | 59 | 2.470495 |
2181 | 30 | 21 | 2.004808 |
3115 | 43 | 19 | 6.059927 |
4023 | 55 | 63 | 3.131836 |
# red_track = tm_red.trace_track(43)
# green_track = tm_green.trace_track(19)
red_track = tm_red.trace_track(30)
green_track = tm_green.trace_track(21)
trackmate_utils.view_red_green_track([red_stack, green_stack], red_track, green_track, frame=42)
4. Measure Merged Tracks¶
Colorful plot showing red/yellow/green tracks and a flouresence time plot\
df = metric.merge_tracks(red_track_id=30, green_track_id=21)
df.sort_values('frame')
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | color | source_track | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 718 | 0 | 145.030227 | 163.693012 | 125.33054812633623 | 22 | 901.5 | [(11.4697726012202, 11.806988352745435), (13.4... | POLYGON ((157 176, 159 175, 163 175, 164 174, ... | red | red |
1 | 741 | 1 | 149.173954 | 168.741993 | 128.99426723294698 | 20 | 983.5 | [(20.326046432808, 12.758007117437728), (21.32... | POLYGON ((170 182, 171 180, 171 178, 173 177, ... | red | red |
2 | 492 | 2 | 152.348485 | 171.77013 | 130.94655166861943 | 21 | 962.5 | [(17.151515151515156, 13.729870129870136), (18... | POLYGON ((170 186, 171 184, 173 184, 174 182, ... | red | red |
3 | 390 | 3 | 156.796843 | 176.663781 | 129.06424194635238 | 20 | 982.0 | [(15.703156822810598, 14.836218601493528), (22... | POLYGON ((173 192, 180 188, 181 186, 183 183, ... | red | red |
4 | 443 | 4 | 169.444444 | 177.348399 | 131.4679621358243 | 26 | 1062.0 | [(16.055555555555543, 16.151600753295668), (19... | POLYGON ((186 194, 189 192, 191 191, 194 186, ... | red | red |
5 | 338 | 5 | 181.742109 | 173.718119 | 131.36082021898807 | 25 | 1056.0 | [(15.757891414141426, 17.781881313131294), (17... | POLYGON ((198 192, 200 191, 202 188, 204 187, ... | red | red |
6 | 1585 | 6 | 194.315309 | 170.128553 | 130.98605948579228 | 26 | 1049.5 | [(8.184691122756874, 20.37144672066063), (10.1... | POLYGON ((203 191, 205 190, 207 190, 209 190, ... | red | red |
7 | 763 | 7 | 206.218106 | 167.849004 | 123.60216180843078 | 28 | 978.5 | [(14.281894055527175, 18.650996423096586), (18... | POLYGON ((221 187, 225 183, 226 181, 226 175, ... | red | red |
8 | 2101 | 8 | 214.156015 | 164.848577 | 120.86521463430552 | 27 | 907.5 | [(7.343985307621665, 19.651423324150585), (10.... | POLYGON ((222 185, 225 183, 227 182, 229 182, ... | red | red |
9 | 731 | 9 | 220.131111 | 167.885185 | 121.22565986229465 | 25 | 900.0 | [(10.368888888888875, 18.61481481481482), (13.... | POLYGON ((231 187, 234 185, 236 184, 239 179, ... | red | red |
10 | 944 | 10 | 225.79107 | 172.066755 | 123.95114441827712 | 29 | 942.5 | [(11.708930150309442, 19.43324491600356), (15.... | POLYGON ((238 192, 242 188, 244 187, 245 183, ... | red | red |
11 | 960 | 11 | 232.071949 | 171.887614 | 123.61291164546542 | 25 | 915.0 | [(7.428051001821473, 20.612386156648455), (9.4... | POLYGON ((240 193, 242 192, 244 192, 245 191, ... | red | red |
12 | 1101 | 12 | 233.151844 | 168.834816 | 118.24712223146368 | 25 | 899.5 | [(8.34815638317582, 19.665184361682435), (13.3... | POLYGON ((242 189, 247 186, 249 185, 250 181, ... | red | red |
13 | 1247 | 13 | 235.302352 | 160.544058 | 126.27382070233604 | 23 | 949.5 | [(10.197647884851676, 19.955941723714233), (12... | POLYGON ((246 181, 248 180, 249 179, 252 176, ... | red | red |
14 | 1032 | 14 | 238.531952 | 152.851473 | 128.5628046122555 | 23 | 1001.5 | [(11.968047928107836, 18.648527209186227), (13... | POLYGON ((251 172, 253 171, 255 171, 259 167, ... | red | red |
15 | 127 | 15 | 240.522328 | 148.489549 | 132.82193283195625 | 21 | 1052.5 | [(13.977672209026139, 19.0104513064133), (14.9... | POLYGON ((255 168, 256 166, 258 166, 260 165, ... | red | red |
16 | 1237 | 16 | 241.973095 | 141.511344 | 141.2619136665493 | 21 | 1146.0 | [(13.526905177428716, 19.988656195462482), (15... | POLYGON ((256 162, 258 161, 260 161, 264 157, ... | red | red |
17 | 1226 | 17 | 248.769481 | 136.605597 | 136.82378353388197 | 22 | 1078.0 | [(16.73051948051949, 18.894403215831773), (18.... | POLYGON ((266 156, 268 155, 269 154, 272 149, ... | red | red |
18 | 891 | 18 | 249.824427 | 131.430821 | 134.0791209031914 | 19 | 1048.0 | [(14.675572519083971, 19.06917938931298), (17.... | POLYGON ((265 151, 268 149, 270 148, 272 144, ... | red | red |
19 | 54 | 19 | 250.445381 | 127.749376 | 135.48573019755784 | 22 | 1068.0 | [(17.054619225967514, 17.75062421972534), (19.... | POLYGON ((268 146, 270 145, 272 142, 274 141, ... | red | red |
20 | 1051 | 20 | 254.497906 | 125.766338 | 136.086419052908 | 23 | 1114.5 | [(14.002093614475825, 19.733662329893818), (16... | POLYGON ((269 146, 271 145, 272 144, 275 141, ... | red | red |
21 | 142 | 21 | 256.189006 | 126.409906 | 137.79744455399282 | 22 | 1134.0 | [(17.310993533215765, 19.090094062316282), (19... | POLYGON ((274 146, 276 145, 276 143, 278 142, ... | red | red |
22 | 141 | 22 | 258.955238 | 126.993333 | 141.5390818709381 | 23 | 1225.0 | [(15.544761904761913, 19.50666666666666), (18.... | POLYGON ((275 147, 278 145, 280 144, 282 140, ... | red | red |
23 | 1144 | 23 | 261.845357 | 128.93807 | 136.8748279180853 | 21 | 1150.5 | [(15.654642908880191, 17.561929595827905), (17... | POLYGON ((278 147, 280 146, 281 145, 284 142, ... | red | red |
24 | 1608 | 24 | 259.566951 | 126.989837 | 136.812267298496 | 21 | 1172.5 | [(14.933049040511719, 17.51016346837241), (19.... | POLYGON ((275 145, 280 142, 282 141, 283 139, ... | red | red |
27 | 1615 | 25 | 266.878741 | 125.806623 | 135.1169069292797 | 21 | 1141.5 | [(16.621258577894594, 16.404730617608408), (18... | POLYGON ((284 142, 286 141, 287 140, 290 137, ... | yellow | red |
28 | 1799 | 26 | 271.636779 | 115.25946 | 140.48433766379102 | 20 | 1132.0 | [(19.863221436984702, 16.462897526501763), (21... | POLYGON ((292 132, 294 131, 296 131, 296 129, ... | yellow | red |
29 | 1932 | 27 | 284.954156 | 110.713004 | 142.9881729591448 | 19 | 1127.0 | [(19.545844424726454, 17.251848565513157), (20... | POLYGON ((305 128, 306 126, 308 126, 312 119, ... | yellow | red |
30 | 2042 | 28 | 292.859839 | 103.279019 | 144.94307400523576 | 18 | 1201.0 | [(15.640160976963614, 18.862614487926734), (20... | POLYGON ((309 122, 314 119, 316 118, 316 116, ... | yellow | red |
31 | 1315 | 29 | 294.923801 | 87.094489 | 140.6249006881293 | 16 | 1133.0 | [(18.57619888202413, 18.987202118270076), (20.... | POLYGON ((314 106, 316 105, 316 103, 317 101, ... | yellow | red |
32 | 2325 | 30 | 293.779073 | 74.822738 | 139.99034726589903 | 13 | 1136.5 | [(17.720926822114677, 18.10881360903359), (19.... | POLYGON ((312 93, 314 92, 315 91, 316 89, 318 ... | yellow | red |
33 | 18 | 31 | 299.536421 | 67.359804 | 139.11984777958693 | 12 | 1112.0 | [(14.963579136690669, 17.547362110311752), (15... | POLYGON ((315 85, 316 83, 318 83, 319 81, 321 ... | yellow | red |
34 | 554 | 32 | 301.627546 | 59.920107 | 134.74052824587886 | 10 | 1088.5 | [(13.872454448017152, 16.780278670953912), (15... | POLYGON ((316 77, 318 76, 320 76, 321 74, 322 ... | yellow | red |
35 | 454 | 33 | 304.127693 | 53.814788 | 133.6679912674727 | 10 | 1013.5 | [(15.37230718631804, 16.051307350764674), (16.... | POLYGON ((320 70, 321 68, 323 68, 324 66, 326 ... | yellow | red |
36 | 444 | 34 | 309.374932 | 53.813522 | 127.3604291992227 | 5 | 919.5 | [(15.125067971723752, 15.4205183976799), (18.1... | POLYGON ((325 70, 328 67, 330 67, 331 65, 333 ... | yellow | green |
37 | 637 | 35 | 308.934026 | 53.79858 | 129.91010582746156 | 5 | 890.5 | [(16.565974171813593, 14.505334081976414), (17... | POLYGON ((326 69, 327 67, 329 67, 331 66, 332 ... | yellow | green |
38 | 591 | 36 | 310.106737 | 51.838931 | 132.04286187524482 | 6 | 851.0 | [(18.393262828045465, 13.527614571092833), (20... | POLYGON ((329 66, 331 65, 331 63, 333 62, 334 ... | yellow | green |
39 | 671 | 37 | 307.409933 | 50.207912 | 122.2625311414868 | 7 | 792.0 | [(17.090067340067378, 11.292087542087543), (22... | POLYGON ((325 62, 330 59, 331 57, 331 51, 331 ... | yellow | green |
40 | 720 | 38 | 307.700038 | 51.625051 | 128.3373467592068 | 7 | 876.5 | [(15.799961969956314, 12.932876972808515), (20... | POLYGON ((324 65, 329 62, 331 61, 332 57, 333 ... | yellow | green |
41 | 534 | 39 | 305.75884 | 52.343755 | 127.5163814176686 | 6 | 839.0 | [(17.741160111243573, 11.981922924116013), (19... | POLYGON ((324 65, 326 64, 326 62, 328 61, 329 ... | yellow | green |
42 | 706 | 40 | 307.257904 | 51.633318 | 130.85965406226356 | 7 | 922.5 | [(19.242095754290858, 10.84878048780488), (22.... | POLYGON ((327 63, 330 61, 332 60, 334 54, 334 ... | yellow | green |
43 | 499 | 41 | 312.977087 | 49.130937 | 121.44125444160726 | 6 | 796.5 | [(16.52291274325171, 11.262816488805193), (20.... | POLYGON ((330 61, 334 57, 336 56, 336 52, 337 ... | yellow | green |
25 | 753 | 42 | 301.775593 | 42.119199 | 99.02562265223223 | 6 | 470.5 | [(-2.27559334041797, 18.38080056677294), (2.72... | POLYGON ((300 61, 305 52, 306 51, 306 49, 306 ... | green | green |
26 | 562 | 43 | 300.408819 | 35.671898 | 59.64942284741085 | 6 | 223.0 | [(2.091180866965601, 9.828101644245145), (3.09... | POLYGON ((303 46, 304 44, 306 43, 306 41, 306 ... | green | green |
red_track.hvplot.line(x='frame', y='AREA').opts(color='red') * green_track.hvplot.line(x='frame', y='AREA').opts(color='green')
df.sort_values('frame').hvplot.line(x='frame', y='AREA')
trackmate_utils.draw_fucci_measurement_merged_track(df.sort_values('frame'), red_segmentation_map=red_segmentation_map, green_segmentation_map=green_segmentation_map, red_stack=red_stack, green_stack=green_stack)
metric_df.query('red_track == 0').sort_values('metric')
red_track | green_track | metric | |
---|---|---|---|
41 | 0 | 41 | 1.218965 |
0 | 0 | 0 | 53.954147 |
51 | 0 | 51 | 59.848973 |
54 | 0 | 54 | 69.392551 |
23 | 0 | 23 | 71.639376 |
... | ... | ... | ... |
18 | 0 | 18 | inf |
26 | 0 | 26 | inf |
70 | 0 | 70 | inf |
12 | 0 | 12 | inf |
71 | 0 | 71 | inf |
72 rows × 3 columns
red_track = tm_red.trace_track(0)
green_track = tm_green.trace_track(41)
(trackmate_utils.draw_fucci_measurement(red_track, segmentation_map=red_segmentation_map, red_stack=red_stack, green_stack=green_stack) + trackmate_utils.draw_fucci_measurement(green_track, segmentation_map=green_segmentation_map, red_stack=red_stack, green_stack=green_stack)).cols(1)
merged_track = metric.merge_tracks(red_track_id=0, green_track_id=41).sort_values('frame')
trackmate_utils.draw_fucci_measurement_merged_track(merged_track, red_segmentation_map=red_segmentation_map,green_segmentation_map=green_segmentation_map, red_stack=red_stack, green_stack=green_stack)
green_track
ID | frame | POSITION_X | POSITION_Y | PERIMETER | image_id | AREA | ROI | roi_polygon | mean_red | std_red | mean_green | std_green | low_red | high_red | low_green | high_green | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 649 | 35 | 316.717593 | 136.551768 | 79.64602509175263 | 17 | 396.0 | [(5.782407407407391, 13.948232323232332), (8.7... | POLYGON ((323 151, 326 148, 326 146, 326 138, ... | 0.984145 | 0.099880 | 0.000000 | 0.077061 | 0.884264 | 1.084025 | -0.077061 | 0.077061 |
1 | 611 | 36 | 308.494175 | 131.378475 | 96.16906101941909 | 17 | 629.5 | [(7.00582472862061, 17.121525019857017), (7.00... | POLYGON ((316 149, 316 147, 318 146, 319 144, ... | 0.947828 | 0.162661 | 0.050474 | 0.081992 | 0.785167 | 1.110489 | -0.031518 | 0.132466 |
2 | 682 | 37 | 305.209424 | 126.599767 | 93.03889558186627 | 18 | 573.0 | [(4.2905759162303525, 16.900232693426403), (6.... | POLYGON ((310 144, 312 143, 313 141, 315 141, ... | 1.000000 | 0.124225 | 0.127877 | 0.076111 | 0.875775 | 1.124225 | 0.051766 | 0.203988 |
3 | 743 | 38 | 303.868108 | 124.014528 | 104.16852474999983 | 18 | 728.5 | [(5.631892015557071, 19.48547243193778), (6.63... | POLYGON ((310 144, 311 142, 313 141, 313 137, ... | 0.860234 | 0.166754 | 0.098167 | 0.082747 | 0.693480 | 1.026988 | 0.015420 | 0.180914 |
4 | 546 | 39 | 302.888387 | 121.191983 | 110.21802579685925 | 18 | 829.5 | [(5.611613421740003, 19.30801687763713), (11.6... | POLYGON ((309 141, 315 131, 316 129, 317 113, ... | 0.803333 | 0.183644 | 0.099482 | 0.088451 | 0.619689 | 0.986978 | 0.011031 | 0.187933 |
5 | 730 | 40 | 305.293521 | 121.343872 | 111.78886654398724 | 19 | 854.0 | [(7.206479313036709, 19.156128024980475), (9.2... | POLYGON ((313 141, 315 140, 315 138, 316 136, ... | 0.829141 | 0.175254 | 0.219876 | 0.088124 | 0.653887 | 1.004395 | 0.131753 | 0.308000 |
6 | 512 | 41 | 310.334758 | 119.324311 | 114.83058307593892 | 19 | 877.5 | [(6.165242165242148, 21.175688509021853), (7.1... | POLYGON ((317 141, 318 139, 320 138, 320 136, ... | 0.785522 | 0.164038 | 0.256289 | 0.093470 | 0.621484 | 0.949560 | 0.162819 | 0.349759 |
7 | 784 | 42 | 316.46057 | 111.020709 | 121.53816309898573 | 17 | 1006.0 | [(8.039430086149764, 22.479290921139835), (11.... | POLYGON ((325 134, 328 129, 329 127, 329 123, ... | 0.683811 | 0.185125 | 0.214465 | 0.096208 | 0.498686 | 0.868935 | 0.118258 | 0.310673 |
8 | 581 | 43 | 319.328647 | 105.826591 | 120.91893629983507 | 18 | 1013.5 | [(9.171353395823076, 21.673408978786384), (12.... | POLYGON ((329 128, 332 125, 333 124, 333 114, ... | 0.688070 | 0.180238 | 0.312774 | 0.100902 | 0.507832 | 0.868307 | 0.211872 | 0.413676 |
9 | 893 | 44 | 318.343868 | 102.169112 | 113.47044022127878 | 17 | 886.0 | [(7.15613243039877, 20.3308878856283), (10.156... | POLYGON ((326 123, 329 121, 331 120, 331 118, ... | 0.752405 | 0.183564 | 0.450146 | 0.100994 | 0.568840 | 0.935969 | 0.349152 | 0.551140 |
10 | 819 | 45 | 321.270005 | 95.925367 | 118.88603011049838 | 13 | 943.5 | [(7.2299947005829495, 21.574633456986405), (10... | POLYGON ((329 118, 332 113, 333 111, 333 109, ... | 0.635602 | 0.168242 | 0.368562 | 0.100882 | 0.467360 | 0.803843 | 0.267680 | 0.469443 |
11 | 851 | 46 | 317.308411 | 96.886812 | 118.45237633064113 | 14 | 963.0 | [(5.191588785046747, 20.613187954309453), (12.... | POLYGON ((323 118, 330 114, 331 112, 331 98, 3... | 0.640369 | 0.185819 | 0.509983 | 0.115486 | 0.454550 | 0.826188 | 0.394497 | 0.625469 |
12 | 955 | 47 | 317.889931 | 108.548371 | 123.42534410025003 | 16 | 1013.0 | [(12.610069101678164, 19.95162882527147), (13.... | POLYGON ((331 129, 332 127, 334 127, 335 125, ... | 0.539567 | 0.195965 | 0.452740 | 0.122367 | 0.343602 | 0.735532 | 0.330372 | 0.575107 |
13 | 912 | 48 | 326.427583 | 117.284287 | 125.88430863308278 | 17 | 1084.0 | [(13.072416974169755, 19.21571340713406), (16.... | POLYGON ((340 137, 343 135, 345 134, 346 132, ... | 0.495641 | 0.181212 | 0.519599 | 0.119652 | 0.314430 | 0.676853 | 0.399947 | 0.639251 |
14 | 990 | 49 | 330.797491 | 126.255947 | 125.24046302168784 | 19 | 1023.0 | [(13.702508960573482, 19.244053437601835), (17... | POLYGON ((345 146, 349 142, 351 141, 351 135, ... | 0.471791 | 0.180427 | 0.585780 | 0.123954 | 0.291364 | 0.652218 | 0.461825 | 0.709734 |
15 | 1064 | 50 | 327.622528 | 136.044461 | 125.4265307879459 | 19 | 1036.5 | [(13.877472262421634, 19.455539475799952), (15... | POLYGON ((342 156, 344 155, 347 150, 348 148, ... | 0.421247 | 0.171965 | 0.628832 | 0.123622 | 0.249282 | 0.593212 | 0.505209 | 0.752454 |
16 | 1028 | 51 | 328.277471 | 142.018314 | 129.50062541763197 | 21 | 1087.5 | [(11.222528735632181, 21.481685823754788), (14... | POLYGON ((340 164, 343 162, 345 161, 346 159, ... | 0.374320 | 0.168580 | 0.694100 | 0.120334 | 0.205740 | 0.542900 | 0.573767 | 0.814434 |
17 | 1103 | 52 | 328.740119 | 147.224087 | 129.6986529196534 | 21 | 1117.5 | [(9.759880686055226, 22.275913497390007), (12.... | POLYGON ((339 170, 342 167, 344 167, 345 165, ... | 0.309009 | 0.157665 | 0.686471 | 0.123432 | 0.151344 | 0.466674 | 0.563039 | 0.809902 |
18 | 1247 | 53 | 328.544781 | 148.780991 | 128.93006675505313 | 22 | 1124.0 | [(8.955219454329779, 22.719009489916942), (11.... | POLYGON ((338 172, 341 170, 343 169, 344 167, ... | 0.257684 | 0.131923 | 0.695434 | 0.120218 | 0.125761 | 0.389606 | 0.575216 | 0.815652 |
19 | 1329 | 54 | 329.162236 | 152.193248 | 132.29021509448825 | 23 | 1091.0 | [(8.337763519706698, 24.306752215093184), (9.3... | POLYGON ((338 177, 339 175, 341 174, 341 172, ... | 0.214178 | 0.127807 | 0.743948 | 0.117663 | 0.086371 | 0.341986 | 0.626285 | 0.861610 |
20 | 1346 | 55 | 330.191879 | 154.64417 | 132.57310695979845 | 24 | 1196.5 | [(6.308120908204501, 25.85582950271626), (11.3... | POLYGON ((337 181, 342 175, 343 173, 343 167, ... | 0.163897 | 0.118372 | 0.811582 | 0.121828 | 0.045524 | 0.282269 | 0.689755 | 0.933410 |
21 | 1295 | 56 | 330.390826 | 152.86468 | 138.89179099420363 | 23 | 1233.5 | [(4.1091744358870415, 25.635319551411953), (7.... | POLYGON ((335 179, 338 177, 340 177, 344 170, ... | 0.113736 | 0.108379 | 0.807228 | 0.125445 | 0.005357 | 0.222115 | 0.681783 | 0.932672 |
22 | 1144 | 57 | 331.084755 | 153.957338 | 140.78973357123965 | 24 | 1318.5 | [(3.41524459613197, 26.542662116040958), (8.41... | POLYGON ((335 181, 340 178, 342 177, 343 175, ... | 0.062697 | 0.102544 | 0.774885 | 0.124644 | -0.039846 | 0.165241 | 0.650241 | 0.899530 |
23 | 1234 | 58 | 330.702821 | 152.36401 | 138.84001574920967 | 23 | 1217.0 | [(4.7971788551082, 25.13599013968775), (7.7971... | POLYGON ((336 178, 339 176, 341 175, 344 170, ... | 0.027535 | 0.087361 | 0.877299 | 0.127565 | -0.059826 | 0.114896 | 0.749734 | 1.004864 |
24 | 1360 | 59 | 329.141154 | 155.600516 | 137.9833994372124 | 23 | 1195.5 | [(5.358845671267261, 25.899484176774024), (6.3... | POLYGON ((335 182, 336 180, 338 180, 339 178, ... | 0.000000 | 0.085407 | 1.000000 | 0.130722 | -0.085407 | 0.085407 | 0.869278 | 1.130722 |
tv = trackmate_utils.TrackViewer(red_stack,green_stack, tm_red, tm_green, metric)
Calculating similarity metric: 100%|██████████| 5184/5184 [00:15<00:00, 344.21it/s]
tv.view()
tv.view_type_wdgt